Skip to content

Commit

Permalink
- breaking change: added HISE_USE_WRONG_VOICE_RENDERING_ORDER (with d…
Browse files Browse the repository at this point in the history
…efault==0) to keep old behaviour of wrong voice rendering order
  • Loading branch information
christoph-hart committed Sep 16, 2024
1 parent 36583a5 commit 75d7a52
Show file tree
Hide file tree
Showing 13 changed files with 451 additions and 7 deletions.
2 changes: 1 addition & 1 deletion currentGitHash.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
583f242851c4ddf1e5b8759cedde2cb6ea162ec4
36583a589be5f79b354ee038dd40f1b6526162ab
2 changes: 1 addition & 1 deletion hi_backend/backend/currentGit.h
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#define PREVIOUS_HISE_COMMIT "583f242851c4ddf1e5b8759cedde2cb6ea162ec4"
#define PREVIOUS_HISE_COMMIT "36583a589be5f79b354ee038dd40f1b6526162ab"
1 change: 1 addition & 0 deletions hi_backend/backend/dialog_library/dialog_library.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,7 @@ var AboutWindow::initValues(const var::NativeFunctionArgs& args)
set(HISE_MAX_DELAY_TIME_SAMPLES);
set(HISE_USE_SVF_FOR_CURVE_EQ);
set(USE_MOD2_WAVETABLESIZE);
set(HISE_USE_WRONG_VOICE_RENDERING_ORDER);

return var();

Expand Down
2 changes: 1 addition & 1 deletion hi_backend/backend/dialog_library/dialog_library.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ struct AboutWindow: public multipage::EncodedDialogBase
AboutWindow(BackendRootWindow* bpe):
EncodedDialogBase(bpe)
{
loadFrom("2155.jNB..LEB........nT6K8C1EZzjP.ncYvJQKv5paaHOAbnDhHgLBkVao0lBmQuQtq3hETvTXZhKeBz4OZNw+4C5+f91QcSQ.lDfEAHR.OnZXqxhZlq2ziYTvZqpVGDd51RQdL1oYdYsagHw.nnjnYz9q1DTcr0asHfBrf.Zl+w+ys9M3m.dX3EAI3m+xbZcPYe8Q3EgK7hfTxwLOBg312eA7vAbB8Kb6k+LqI5m9oEjCKHTiaqbGBbnmp3TbeMUDpHRddKirFmdKby2vx1CusgdKdBY61GGtu+ponNh93Q+oWowglwgj6OxPOdgCLnZ.XoawbaawPQrLCIStLIBKW3W6tVVieMHpIUhnBUjuV1C6p1+RDTt.QDXpDwDJQ7av+EKQbgRDT30tJXpPwBlI3K2BhIUpPohDLSnnYbDmty2jUQEAiDMiC1BsnGNL.VGYQPjuUTAtb9DOb3+Bxglww+bJbnppA3BZFG6ubX2oWjCUCvEBXs5lXrbpmbOW1ZiTCDQ57psSRMaVwW50aUoE5s9gt9SW6aS565Y0ie7rTkslsNL8WsWw9.cHHiI5vgTmMYj.InPgh.zq14RcCXjuhd0l+uWAglA5OjWmE2MUhMlRDIZF1BsTk3x4UZFSablYoWtlcvsVjDb33pEjGhpBF1Hqld9FA5yM4Zhd9+yI7nIWM86sM2R+FAaSmugByE6p1WmO+F7HGXHSFNg9LwEt7MRM990bdd+VuIEOriVxszlfW1ffmF4PUHvwKWqsghxB6ghhAYtaaNG.pxV6UK0e8eqIc5mTmiTxUvR2sYK1XOdF+nCMwsFZYc7mvWuAjByDqEJ8muoYN45sECx+brMfUzLYu95ZgNLIhFP6hNlxa8qmVGeou9rHHpTwBnKpPiHRcp3yHRNPCnNbr5mqAO47KjbCn3hubqq35QeMW8tSpt4kuQwwhJH0.JHwoCGK1vACMdzHrb532a0rzs4VuwtMABPcBERimMjZflJh9uQ9wYpTiLT4esbmakrU6kTLW+2z2Vk0FYoxDQc17wBMHs4SHK7bgC.YwEjpHiPtMN4Pi.oAiL5DhzHt+2AgQmOiFYAHLL4WulA5yc8VZaPOE2XU6zKtHiHN.AxE+6Eb9fEJWr7vCdeM2HbjGdHiD9uVCRvpg9qayniAgMOhYMiu70lbm6sbrzpoNW+fgSo9x4RwZJxZOqwfQhxPCEj5vICPaB8gzVjgpaiNVkxxkcbTYWC8W43TpLE1M+oQ7m+WG..LD.IHApHUh.AWoYuFzROtsdq9V9WNZ8lzhnxlirW3Fb74RqIGZUyp0LE+G7YBMi5ngFFPZhCBvxCUfIwkhSKRjvJImjfTAFhUGedaiK7ApITt7uszy8pU4nuoWKiAGm+Di2bodwYayJ8z2ttBxUbME420X50NqPWoTvxe4T+dAcH0QCLxXCILrfBRTngnHxrW+WNt6Wiwb13uQmWqNX4RELTnjnOvfYBkIUzGTnHYhkI5iIWnj.gjFzRZjyx5JcUmk8Fmf9.pwmlredTS9sJYo6tq2pWLDtV5yYOj7fjK15cRpNbiecydtyk5C40ysXoVIhjLnVvCEnP4s716lKFeomlPi3l9Haxg5Kma5+QiHYGbakR45rT9EDHhnFXlxnTHBjA.C.AAwf..XrbPtrL.BBLNIKKFESALLA.f.EH.fAjnJbhDP.0.i0YXesANXvJBFu10zEvKvpQGnco96lI0PusoQZtIdDg5S.hN..nYPvLiHQK8Hm0yHLhylOpDMQ.sCGZMct8o3garLIzi6FLgCTJdszVcZdNXx.HMZaT5sbUVEbdOXodRLy.Hv5AP9S+nVyQhCVNsanUB7VHfpUsYAzl6C8Z.ASEKMffAi7ilFHkhjZi8V4g6kcGY+7OlQ6Ni5esc7+KpCnph0MRCRjb62hznbXCLHjzMMpB+FxY+9FUT3mu8CKBUfWTKd.A3o4eblfy2KMKeSJDJjoInUP4ZIIyboXMRyJyzgukrI8pLFUcaijkoqSsBEalPcPL2+4ojcP5p5Za1XPBSCs49sQjMdWolaYsuDMZl2vv0YcB0sRxHTiJLHieUaBhm5pF.8m3hG0VS.6ifE2YHYePlKKtLafRUK.kVRB2H18SvcQImC3Zs.wqxHmxlz5D6oIAlLjpKR4eQG8hSG5js501gztM5u0jZqFcsiIPSiNLSaCjx0+crBGkexuc3Bk2Q5nLdFrvxEAK0OQycUI5pM0yPIRKs+9uDoP8iEcvnvWWPT8InBz6zyXmI53KDsqqrAslRgYy6RCDXAlK4q6IOvJdUghxgofDAQzr0idbH3KnKwLWBf3iyVKTges.80CodqXbF06l4gHIBSSHUz1kjAyY7OPjBsRU+INXzJckGJXv1WWyOAZfE.zf1JpHqUpJBpf2s09DurPRJg8+NNcyJHjaLk7PQ8VJCIZc2SZ10D90RwWkI.fV35PxXHSx0A5KIme9ISUt8c4vUDA9Ub8yET+bsWzJm6DFOh09.bKh0.GF.ewxlAXi.JTLNEDv5vzcBY6uXFE69GORF8o0qCgWkYnjZMtjJjd3z3Ss.fhJi.opUYhjVHOtaoTzRidaRzZa1KDlzERBAfuTBqgsIWNIMB.yA9Sf8a+p0AMmIohd2IQjoRhHO8P6lM+f0TtBajbjv5nJuoii7igw4fPIRDCZE0sGYjf7Q0s8zznfYXMhMXg9PNnwRIwE3sCxWlNCiAV+TliIkPqEq6HiU4C884WVh3ESOUh9uQobdnw0u8E392wXqlDZiIIit2KjIIhpQ+r9BbnOpA8GfRCE0fNcwPq3TmPSInu4AjHwQmBD6LyWOEsifADSwjX6h3YMTd7GUkj5unnajPeuXsW5H..foi...rNB...");
loadFrom("2356.sNB..D...............35H...oi...Hj.........J09R+fkGG0eD.pvFvSzBrt51FxS.GJgHRHiPo0VZsovYzaj2Fo6TvC3gTyQd7C19ewiPqeP+Gz8yVfF.NALR.zDPusXP9misArhhI60WWKzgIT5iHMrUYQEy0a5wLJXsUUqCBOcaIpGicJlWV6VHEX.QhHQwn8WsIn5Xq2ZQ.EbAATL+i+ma8avOA7vvKBEfe9Cyo0Ak80GgWDtvKBRIGy7HDhae+EvCGvIzwvsW9yrlne5m1ONrfvLtsxcU3POYwo395HTQnj77VFYMN8V3lqgkcGdaA8V7Dx1MONbe+USQbD4oi9SuJiCEiCI2ejgdDCGXP0.vR2h411hghXYFRlbYhDVtvu1csrF+5OQlTQhJQh70xcXW09WjfxEHjHhJRLghD+F7ewhDWnHAEdsqRDUnXIhI3K2BhIUpPohjHlPQw3HNcmqIqJBUDRTLNXKzhd33.XcjEAQ9VQF3x4S7vg+6GGJFG+yovgppFfKnXbr+tgcmdQNTM.WnFPdHsEYn51niUorbYGGU10P+UNNkJSgcyeJk+7+ZrVcSLVN0StmKasQ5AnjNuZ6jTylU7kd8VUZgdqenq+z091j9tdV83GOKUYqYqCS+U6ULOPWEYLAmMj3nIiDT.JTnH.8pctT2.F4qnWs4+6UPnXf9C40YwcSKvFSgRhhgsPK0Bb47JEioMNyrzKWyN3VKRBNbb09wAEoBFzHqlc9tB84lbMQO++4Dczjql981laoeWw1z4ZhDwE6p1GGO+F7HGX.ClMf7LwEtbMRM990add+VuIEOriVxszlfW1efmF4PUHvwKWqoIRDKbmHQXPl61dCBfpr0d0R8W+2ZRm9I02HkrErzcZ1hM1imwO5PSbqgVVG+I70a.iDwDqEJ8muoXN4R1yctTeHudtEK0JTRxfZgNTfBk2xauatX7kdZBkxM8Q1jC0WN2z2iRIYGbakR45rT90tnio7V+5o0wW5qOKBhJUr7ACKxHhDGK7LhjCx7gyFq94ZvSNGCI2.Jt3K25JtczWyUu6jpad4aQ1bgEjZ.Ej1vYyEZ1DJSGkhkSG+dqlktM25M1sIP7gCHPY5ngTCxXQz+MxONSkZjgJ+qk6bqjsZujh45+l91pr1HKUlHhiFOWnAIMd.cQGLbvmKvfjEY.xswICZzmLgxfCHRi39e+SHNdFM5hOgL4WulA5yc8VZaPOE2XU6TLvHCJGf.4h+8BNevBkKVd3AuulKES8vCXjv+0ZPBVMzecaFcLHr4QLqY7ku1j6bukikVM045GLbJ0WNWJVSQV6YMFLRTFYnfDmMY7I..LD.IHgnKkrkGgOV9rjk8FrJWKpuubR+WqWuYJjqT4awXXrF4qm5.b5wJft+Qj9nBkAMnxStS96kIzEdBwYCHNgHUAnKBw.VlgCQnpPAAWoYuFzROtsdq9V9WNZ8lznTYuQ1KbCN9bo0jCspY0Zlh+C7LQlQbzHCCHMwAAX4gJvj3RwoEIRXkjSRPp.CwpiOuswE9PjITt7uszy8pU4nuoWKGhiyehwatTu3rsYkd5aWWA4Jtlh76ZL8ZmUnqTJX4ubpeu.Nj3nQnLzPJzETPhBMDQIyd8e43teMFuYi+Fbds5fkKUhfRDI5iHhXBkIUzGTnHYhkI5iIWhHABIMnkzHmk0U5pNK6MNA8ATiOMY+7nl7aUxR2cWuUuXHbszmydH4AIWr06jTc3F+5Vf1hZbYLiRgHQF.L.DDDCB.fghA4TlGHJrzjnvXPLEvvD...EH.fAjnJbBIf.5BLVm6QDYPFdXCXfjojfHv1gSCDEwDiZnWFg8GFdLJWDC3RzaEQHcMTzvFCFAyj8p.zXz5LPSpTjPkvqWffJHHObn2gyK33M4pJiUbxk0hX9dzufcucn.8QzeONFiNJLsOZPQt2ApgMpe.zT5Rxbi72ltm.xQKH+Ahb60z306Y0rSZWp34Yx.n21fJMgiGsT84snA..ZZIXnQcvnG5Y8rAm1SBEUvmHD8CGpgZ2dEvCXqQVnSzFtEGvZd0Dqt9dtQX.vlMb.81DzqRLuWDpESyL.oVi81muG2mNRjt1oclOEo2h8UkrMKdL25zKQE.YrXLBFA4QQMPzORpB680CKocGU+AvXlZ2w070bt6eQq.Q.S21ePBaa+VciRFNvaBYJrQk82Pj2uG4iB948ryhEZ4E05wwB7F8msIXR7RTh27CgBYZDZEPnxZxrtDYCvrxf.wyP1LjUFa1tQdxlzOpV+mMSFFDy1+zAwtucUiZ6YLHSS63bqIHxlssTnpz2YhFky6kvIbLgpVQxnSQuNnBeUXj3AcR6.8St8PG2DZ9HfDaFx0GjTwfayFkrpEezB0vMeE+IaeTP8ANVKc8UY1oroFcBCzHSSFJwhH6vnCcwoypvnHa6fa2FY3ZRsUCpsIKPGNg45a.yr9ifqAK4A6aG6P4djN6wyLNrgHCT8yB9KLwSZ6pYnbmWK.5GRn3jwCDn370IXqlDT0hcNY7YIpUEZr0EpkIldpYy4ByGD.yovWnLuRJdWjhamoUEAanIEid1F7uPJxdWBq3ANsEpP0bAf9GMeEXNtzql4ggHBeIjx.2axfM1kPffnOUV+6FrNHcLMfkw8ZWyeBvnH.wAAIj9rRnJtpPKt0IDKUH0NgAKNtIyJ8yGfRBthT.JyNRc4S135q4K3hUnIviubcqxXHgxUN6CIG34SlLG7Q.HLcFNRbckITK3ayaqv6ImyQV3CjvBRlRv3k.VCX3rHXhJNCAK0d.VSX69y9PwuOhQFiNDd8q0CMSpRsavnrOuMZ7iJHTQDUNnp+wjmW.dbeQosjl1CjLycrt30TmQ5lADmR7Nb2bQ6wHI.+oO9FZ6qVUQSjZUs2iSBzqj.vK6zdKyObAJKh8sNRbdrYqwnj4imygBgKWDi3J5HejgA4WqaqSyfAa8Z94.d7CtgFlPDXn27Gewc5NFo+SSN1HCsx.tiDVAeHPm62RDDXZW5T3MhjlGfsltebmOZiOJl7FFmdJrbr5EGTE6uDD.a9irQ+UqzBQMnSJl5KMDI37ADx9.NJ4XngBsl4yCVcbsfB3oIdQVL9GN27UTkT+uIqaJQeBXuCT5H..foi...rNB...");
}

void bindCallbacks() override
Expand Down
7 changes: 7 additions & 0 deletions hi_core/LibConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,13 @@
#define HISE_USE_SQUARED_TIMEVARIANT_MOD_VALUES_BUG 0
#endif

/** Annoyingly some sound generators (Waveform Generator, Sampler, Looper, Group) were rendering
* the voice effects before the polyphonic gain modulation which causes the sound to be slightly different.
* If you care about backwards compatibility of your existing user presets, you will have to enable this preprocessor. */
#ifndef HISE_USE_WRONG_VOICE_RENDERING_ORDER
#define HISE_USE_WRONG_VOICE_RENDERING_ORDER 0
#endif

#ifndef HISE_PLAY_ALL_CROSSFADE_GROUPS_WHEN_EMPTY
#define HISE_PLAY_ALL_CROSSFADE_GROUPS_WHEN_EMPTY 1
#endif
Expand Down
6 changes: 6 additions & 0 deletions hi_core/hi_dsp/modules/ModulatorSynthGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,10 @@ void ModulatorSynthGroupVoice::calculateBlock(int startSample, int numSamples)
calculateNoFMBlock(startSample, numSamples);
}

#if HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startSample, numSamples);
#endif

if (auto modValues = getOwnerSynth()->getVoiceGainValues())
{
FloatVectorOperations::multiply(voiceBuffer.getWritePointer(0, startSample), modValues + startSample, numSamples);
Expand All @@ -272,7 +276,9 @@ void ModulatorSynthGroupVoice::calculateBlock(int startSample, int numSamples)
FloatVectorOperations::multiply(voiceBuffer.getWritePointer(1, startSample), constantGain, numSamples);
}

#if !HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startSample, numSamples);
#endif
};


Expand Down
5 changes: 5 additions & 0 deletions hi_core/hi_modules/synthesisers/synths/AudioLooper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,9 @@ void AudioLooperVoice::calculateBlock(int startSample, int numSamples)
}


#if HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startIndex, samplesToCopy);
#endif

if (auto modValues = getOwnerSynth()->getVoiceGainValues())
{
Expand All @@ -289,7 +292,9 @@ void AudioLooperVoice::calculateBlock(int startSample, int numSamples)
looper->getBuffer().sendDisplayIndexMessage((float)samplePos);
}

#if !HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startIndex, samplesToCopy);
#endif

if (resetAfterBlock)
resetVoice();
Expand Down
8 changes: 6 additions & 2 deletions hi_core/hi_modules/synthesisers/synths/WaveSynth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -561,9 +561,11 @@ void WaveSynthVoice::calculateBlock(int startSample, int numSamples)



applyGainModulation(startIndex, samplesToCopy, false);
#if HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startIndex, samplesToCopy);
#endif


applyGainModulation(startIndex, samplesToCopy, false);

if (enableSecondOsc)
{
Expand Down Expand Up @@ -614,7 +616,9 @@ void WaveSynthVoice::calculateBlock(int startSample, int numSamples)
FloatVectorOperations::addWithMultiply(rightSamples, tBuffer.getReadPointer(1, startIndex), balance2Right, samplesToCopy);
}

#if !HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startIndex, samplesToCopy);
#endif
}


Expand Down
14 changes: 13 additions & 1 deletion hi_core/hi_sampler/sampler/ModulatorSamplerVoice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,10 @@ void ModulatorSamplerVoice::calculateBlock(int startSample, int numSamples)
resetVoice();
}

#if HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startIndex, samplesInBlock);
#endif



if (auto modValues = getOwnerSynth()->getVoiceGainValues())
Expand Down Expand Up @@ -255,7 +259,9 @@ void ModulatorSamplerVoice::calculateBlock(int startSample, int numSamples)
jassertfalse;
}

#if !HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startIndex, samplesInBlock);
#endif

if (sampler->isLastStartedVoice(this))
{
Expand Down Expand Up @@ -544,8 +550,10 @@ void MultiMicModulatorSamplerVoice::calculateBlock(int startSample, int numSampl
}
}

#if HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startIndex, samplesInBlock);

#endif

if (auto modValues = getOwnerSynth()->getVoiceGainValues())
{
for (int i = 0; i < wrappedVoices.size(); i++)
Expand Down Expand Up @@ -609,6 +617,10 @@ void MultiMicModulatorSamplerVoice::calculateBlock(int startSample, int numSampl
FloatVectorOperations::multiply(voiceBuffer.getWritePointer(2 * i + 1, startIndex), rGain, samplesInBlock);
}

#if !HISE_USE_WRONG_VOICE_RENDERING_ORDER
getOwnerSynth()->effectChain->renderVoice(voiceIndex, voiceBuffer, startIndex, samplesInBlock);
#endif

if (sampler->isLastStartedVoice(this))
{
if (wrappedVoices.size() != 0 && wrappedVoices[0]->getLoadedSound() != nullptr)
Expand Down
12 changes: 11 additions & 1 deletion tools/json_dialog/about_hise/about_hise.json
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,17 @@
"Enabled": false,
"InitValue": "1",
"Height": 80,
"Help": "If this is true (which is the default), then the wavetable synthesizer will expect a wavetable size that is a power of two. Disable this if you want to use .hwt files that you have created with an ancient HISE version (something below 3.5.0)"
"Help": "If this is true (which is the default), then the wavetable synthesizer will expect a wavetable size that is a power of two. Disable this if you want to use .hwt files that you have created with an ancient HISE version (something below 3.5.0)",
"UseInitValue": ""
},
{
"Type": "TextInput",
"Text": "HISE_USE_WRONG_VOICE_RENDERING_ORDER",
"ID": "HISE_USE_WRONG_VOICE_RENDERING_ORDER",
"Enabled": false,
"InitValue": "1",
"Height": 80,
"Help": "Annoyingly some sound generators (Waveform Generator, Sampler, Looper, Group) were rendering the voice effects before the polyphonic gain modulation which causes the sound to be slightly different. If you care about backwards compatibility of your existing user presets, you will have to enable this preprocessor."
}
],
"Text": ""
Expand Down
203 changes: 203 additions & 0 deletions tools/json_dialog/new_project/new_project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
{
"StyleData": {
"Font": "Lato Regular",
"BoldFont": "<Sans-Serif>",
"FontSize": 16.0,
"bgColour": 4281545523,
"codeBgColour": 864585864,
"linkBgColour": 8947967,
"textColour": 4294967295,
"codeColour": 4294967295,
"linkColour": 4289374975,
"tableHeaderBgColour": 864059520,
"tableLineColour": 864059520,
"tableBgColour": 864059520,
"headlineColour": 4287692721,
"UseSpecialBoldFont": false
},
"Properties": {
"Header": "Create New Project",
"Subtitle": "",
"Image": "",
"ProjectName": "MyProject",
"Company": "MyCompany",
"Version": "1.0.0",
"BinaryName": "My Binary",
"UseGlobalAppData": false,
"Icon": ""
},
"LayoutData": {
"StyleSheet": "ModalPopup",
"Style": "label\n{\n\tdisplay: none;\n}\n\n\n\n.top-label\n{\n\tcolor: #ddd;\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.toggle-button\n{\n\tcolor: #ccc;\n\ttext-align: left;\n\tpadding-left: 10px;\n\t\n\t\n}\n\n#total-progress\n{\n\tdisplay: none;\n}\n\n#title\n{\n\ttext-align: left;\n\tpadding-left: 10px;\n\twidth: 100%;\n}\n\n#cancel\n{\n\torder: 1;\n}\n\n#next\n{\n\torder: 1;\n\tcontent: \"Create\";\n}\n\nprogress\n{\n\tmargin-right: 30px;\n\tcolor: #999;\n}",
"UseViewport": true,
"ConfirmClose": false,
"CloseMessage": "Do you want to close this popup?",
"DialogWidth": 1000,
"DialogHeight": 720
},
"GlobalState": {
"DefaultProjectFolder": "",
"UseDefault": "1",
"Template": "0"
},
"Children": [
{
"Type": "List",
"Children": [
{
"Type": "JavascriptFunction",
"ID": "folderInitialiser",
"Code": "{BIND::initFolder}"
},
{
"Type": "SimpleText",
"Text": "Project Name",
"Class": ".top-label"
},
{
"Type": "TextInput",
"Text": "Project Name",
"ID": "ProjectName",
"Height": 80,
"Code": "{BIND::onProjectNameUpdate}",
"Help": "The name of the project folder that you are about to create.\n\n> Every new project will be created as subfolder of this directory.",
"CallOnTyping": true,
"EmptyText": "Enter a project name",
"Required": true
},
{
"Type": "SimpleText",
"Text": "Location",
"Class": ".top-label"
},
{
"Type": "FileSelector",
"Text": "Location",
"ID": "DefaultProjectFolder",
"UseInitValue": true,
"Help": "Choose a folder that will be used as your HISE work folder.\n\n> Every project will be created as a subfolder of this directory.",
"Code": "{BIND::onProjectNameUpdate}",
"Required": true,
"Directory": true
},
{
"Type": "Button",
"Text": "Use as default location",
"ID": "UseDefault",
"InitValue": "1",
"UseInitValue": true,
"Help": "You can choose to set this location as default folder for all projects.\n\n> This setting can also be changed in the **Development Settings** as `DefaultFolderPath`."
},
{
"Type": "JavascriptFunction",
"ID": "writeDefaultLocation",
"EventTrigger": "OnSubmit",
"Code": "{BIND::writeDefaultLocation}"
},
{
"Type": "Column",
"Children": []
},
{
"Type": "MarkdownText",
"Text": "The project folder will be created at: \n$DefaultProjectFolder/$ProjectName",
"Style": "color: #999;",
"ID": "folderPreview"
},
{
"Type": "SimpleText",
"Text": "Project Template",
"Class": ".top-label",
"Style": "margin-top: 30px;"
},
{
"Type": "Choice",
"Text": "Project Template",
"ID": "Template",
"InitValue": "0",
"UseInitValue": true,
"ValueMode": "Index",
"Items": "Empty Project\nImport HXI\nRhapsody Template",
"Help": "You can choose different options for creating the project:\n\n- Empty project will create a blank project\n- Import HXI lets you import a previously exported project or Rhapsody expansion\n- Rhapsody template will create a project with the default Rhapsody Player layout",
"Code": "{BIND::onTemplateSelector}"
},
{
"Type": "Branch",
"Children": [
{
"Type": "List",
"Children": [
{
"Type": "LambdaTask",
"ID": "createEmptyProject",
"EventTrigger": "OnSubmit",
"Function": "createEmptyProject",
"Visibility": "Placeholder"
}
],
"Text": ""
},
{
"Type": "List",
"Children": [
{
"Type": "SimpleText",
"Text": "File to import",
"Class": ".top-label"
},
{
"Type": "FileSelector",
"ID": "hxiFile",
"Visibility": "Default",
"Wildcard": "*.hxi,*.lwc",
"Help": "Select the .hxi (or .lwc) file that contains the project you want to extract",
"UseInitValue": ""
},
{
"Type": "LambdaTask",
"ID": "importHxiTask",
"EventTrigger": "OnSubmit",
"EmptyText": "Click Create to extract the project archive...",
"Function": "importHxiTask"
}
],
"Text": ""
},
{
"Type": "List",
"Children": [
{
"Type": "CoallascatedTask",
"ID": "RhapsodyTask",
"EventTrigger": "OnSubmit",
"Children": [
{
"Type": "DownloadTask",
"Text": "Downloading Rhapsody...",
"ID": "DownloadRhapsody",
"Source": "https://docs.hise.audio/info.hxi",
"Target": "$DefaultProjectFolder/$ProjectName/info.hxi"
},
{
"Type": "LambdaTask",
"Text": "Extract Rhapsody template...",
"ID": "extractRhapsody",
"Function": "extractRhapsody"
}
],
"Text": "",
"EmptyText": "Click Create to download & extract the Rhapsody template"
}
],
"Text": ""
}
],
"ID": "Template"
}
],
"Text": "",
"Style": "gap:10px; width: 65%"
}
],
"Assets": []
}
Loading

0 comments on commit 75d7a52

Please sign in to comment.