How do you Tempo Sync ADSR?
-
@d-healey I just took out the last 'mod2sig' and it seems to work as desired....
@Delamere
check this...HiseSnippet 2003.3oc6ZszaaarEdnrG6XmD2FffBTftP3hhhzf.A8v1MAcgT7qTiV4HD536cUMFSNxZfImQkjx1pO.5xt61scW2zeDcUu.2Uc2cycu61Bzh7On8L7g4PIRYJ4WoE1Zi4Lygy24aNOGoVNBCpqqvAoM+186RQZ2Aq2m60Y0NDFGs4ZHsEvMItdTmhACsR+tDWWpIRSapmIGPatoQ9+8p5qPrHbCZ7PHzNBlA8SX1Lu3Qa03iYVVaPLoayrUV8hM1zPvWUXI5A3YJbYTWhwAj8oaQjKq.F8QD2NHsGhqVsswiKW9w0psTYBolIgrXEZsmPaubaikJ+jxl6sTY3yxHsYV2j4Ibz8HdTWj1zqHL6q2QbDOXC1g4x1yhJenBRG14fg2PXYJUQ4nnU6vrLaEQTtHjFtULsMU.scebSlI6zwiou2zehhwRnRfZERBuoR.uJpvqrB7RARZJPZ5.HcOrtgCqqW7LR7ba7lb3zrMANmTgRvZQZ+DdUAr.tWIaxAzMbfGNUfGr7xkeTwOn76+gs6wM7XBdQAeKgG847G79y+EyO27e07EGbp1sScN4t3HrrnNoNszxvYTB9.dO68nNOp3gDqdzSWHn8IoTb1Tp5ItQfRqrPAeSNy64co7rrCPgLkzhHDUvR87I+EBIecKlI0Aw.NdV7GyE6UA4C3Xq92qAJ2BWcPgKMFBWaPge3XH7hID96e1u7q0yuvKM3N+nFnWt4ZDOhzxMjEAlsK0wiIOzzVidHD2HvNdN7ZT2C7Dc8oY6tBtjy0V3LI5ii2v2sQe0GrYllVzVBWlznJdl+QCHRWWc1mSUCqYSTdSUazMxDXSXudmvsu357CoVfFTrovrmEAr.q.gubfHWfyibk2B+TOOHdFxVXRk9gaSAcAB1Zf7nG6orfiXldch2wOsQGJa+NJAP2rgIsMomk2NoXJkaBppBA80jqeBZF7GAgcyjdBm9JhbpoPNmz85mblEbBLH8yjchl+Bhdt8YFNPQo5mO54j5SntOGVumqmLgZftF+7DqsmTebLFVRQa+1u952XXN7KnVThKMSyg3UbdLHFtlBnZlHLoVhirPvvIjjfZcExhG3.4zWkFtvp6IuP7d3VLOiNoiwBofQHwzkAFCqV7t30a2lZ3ECvowa7utbJMTc6WHX6uMVmwo9046u4uk+yE+mjCoEeFkScBr4xtT++WdK0uatK0+4Fdv1usCg61U3l3EqSsYaCtptpC9RWn3T5m8B4oo53qJHNoN0qpuAnjoJiNwqmiuYwSsE83dILClZTcPTYB6fX5W65f3u.N6IZxY1.L91gAMihYdJh8A6HCopB7lBtnaGAmYnd1+BpmCa+8gbAJpSp5XT2SOBONspfyMwTYzmcm1HBZKp2QBmC7Yqv+G3p.tv0Gj6RC4hcsi4hmZYINRlQjEdpBbh+XsDV8iHFsBAqfBVCbN0JxYAqU.1Yn27sILK4xfzyPaSlOmqCK1OJg1T6Pcb8ewyhKWB9.wW2xO40s1fX.XneKhLO08vxNw.KLpSIiSM5FI1UOGCtofQtb4tFE3AqEDxv11uNfBXjj9aEkqU1IRgHOYvWaJkdTBrFkOAFBEjf7N3Mc2QNqAwBElLEXF49IW9rAp6rAK0SlvdWWYF6D5+880evnojxJTyUEngKD1qPQ+D+mgNkkFfh8h2l3rO0yMrcLN0HvHv+HJn7SRGSWGTqT6nAovXxXaQOAKoIiOPcEv1RNdfwp1POkhkzOfdT.4jv+aMIbBz6gJYYsDkxLCtREvR6o87D1fKlO+gTP2rCitWUeXzUdLQ2cvMALv5ZwfMYn2+ZoVs0qpeF.KMZC.wXAr4vqyIPDEy7hJDZ7QUi+8fz02+ce2ONBTs.9kboYN0zuFgg1gzgFqARwg5tJNTUlHOp632d40p+TXGt23Mci2zqOdSUmHuo6FbcDWqtSQWIxM9S23O85i+TsIxe5MhtOmqUOp3aU5Fepa7ot17olIPybY6WE5qKo+zBX3buSon4Ft2vX4FsOjVgDdNIr20tXN3PnQYuG7Bx+wlR7lHm2DLyahi5FtTvrCyMQxk6nK3Q1P7af2pmsBwEh4fqK.oej7FYiiCUPcfjwkbGX4COq7hIrnGG8UJtFysqEo+J8Z2N7DKwHR7wMoGKwxe.+st8dTSPm7EWphIOtmarCu8M+274QzXql+r+w8osRmSeg2sw3Dh6hvf7tgH7SnfQzjEi6Rh6BaaJmL2hYybWR3KpNz7Av+iy4Efi8Qa72mVjGJtbokxf+No9UM+EW0w4+H9R14X0dNGNDLOodVL4UPA.2FGeI14j9ljR.FabMC9Yv4yX.oTJcMY4.PJ8pPp8TKGHZtgKrNVt+lUNPBDhGeDNtEnmUFrLpPefD3YzERh6Iefl6C5G.c4qYomeoz4QuRdckWWJVFIld3EklU8BSyN2Yzla5e+Kq+++gC9sAbXBxzkOUKiVhi1oqfCrLyDdgYLVKiirUDhCrI9euhSzubuKjemFS826emFuPzyiw2uIAxWKaMAZdRGxFYD80s5F05T3ykixSoS4lki5kIbxJxm0BmrRzjWI6gMwvQra30ZIM6tk+HfdyCS41T9bwg9kvhP1LS1tFFIeUCIX0IUvZSpfKNoBtzjJ3xSpfevjJ3iOaAk+NTBKsV5ZBgzZsdPOyZQWyD3Qf9SDUcmDA
-
@Chazrox @d-healey thanks a lot guys, this works. I’ve just realised there’s an issue in doing this though, the fastest tempo the tempo sync can reach is 1/16T and say for example you were making a pluck, there doesn’t seem to be a way to change the Attack, Hold & Release to be 0ms to turn them off. Any idea if there’s a way?
-
@Delamere I was gonna say that but I figured you had thought it through after all that so I didn't mention that. Thats a pretty crucial aspect. Its possible to script some case switches or something. Not impossible but definitely complicates the script a tad.
-
@Delamere compile with
HISE_USE_EXTENDED_TEMPO_VALUES=1
-
@d-healey Sorry how do I do that? Thanks.
-
@Delamere Have you compiled HISE before?
-
@d-healey I'm not sure, I think so. Do you mean in Projucer? I have searched how to compile in HISE and the steps it's saying to take I have already done, not sure I've done them 100% correct. Do you mean to open, HISE Standalone.jucer? Then if I select Exporters > Xcode (macOS) there is a section to add Extra Preprocessor Definitions? Or am I misunderstanding? Thanks again.
-
@Delamere Yes, it's the Extra Preprocessor Definitions where you need to add it. Then recompile HISE
You also need to add it in your project preferences within HISE.
-
@d-healey when you say "Then recompile HISE" do you mean to do this?
And is this what you mean by adding it in my project preferences?
-
@Delamere yes and yes and you'll also need to add it to the script node extra definitions, also in project preferences
-
@d-healey okay thanks, I can't see the script node extra definitions in the project preferences, is it called something else?
-
@Delamere Extra Definitions Network Dll - you may as well add it to all the extra definitions boxes except iOS.
-
@d-healey Okay thanks, I thought it may be that and I've now added it to the others. There is now a difference but it's still not working. Say for example I change the knobs maximum value to be 20 instead of 18, the tempo knob goes past 1/64t, but the beats values no longer appear and the value in ms still doesn't go any further than 20ms.
-
@Delamere Did you recompile HISE?
-
@d-healey Yeah, just done it after you said but there's still no difference.
The value of the attack in the first screenshot is at 19.0, but it hasn't gone past 1/64t (20ms) despite moving.
In the second screenshot, I have changed the value from 18 to 20 in tempo sync mode expecting the attack to go past 1/64t?
-
@Delamere said in How do you Tempo Sync ADSR?:
but it hasn't gone past 1/64t (20ms) despite moving
tempo_sync node faster than 1/64t
I would like to know if there is a trick to set the node 'tempo_sync' faster than 1/64t? Intuitively I think I should use .getHostBPM and .setHostBPM or is t...
Forum (forum.hise.audio)
it is not possible without modifying the HISE source code and recompiling it. The solution is in the link.
-
@Delamere said in How do you Tempo Sync ADSR?:
In the second screenshot, I have changed the value from 18 to 20 in tempo sync mode expecting the attack to go past 1/64t?
23 is the top value I think. But yeah 1/64t is the highest.
-
@Mighty23 thanks, I'm fairly new to HISE so I'm not sure I understand. Do you mean, to replace this..
with..
Then Recompile?
Thanks.
-
@Delamere
hi_tools/hi_tools/MiscToolClasses.cpp
in HISE source code.Find this line and edit as you need, adding tempo values:
void TempoSyncer::initTempoData() { tempoNames.add("32/1"); tempoFactors[ThirtyTwouple] = 128.0f; tempoNames.add("16/1"); tempoFactors[Sixteenthuple] = 64.0f; tempoNames.add("8/1"); tempoFactors[Octuple] = 32.0f; tempoNames.add("4/1"); tempoFactors[Quadruple] = 16.0f; tempoNames.add("2/1"); tempoFactors[Double] = 8.0f; tempoNames.add("1/1"); tempoFactors[Whole] = 4.0f; tempoNames.add("1/2D"); tempoFactors[HalfDuet] = 2.0f * 1.5f; tempoNames.add("1/2"); tempoFactors[Half] = 2.0f; tempoNames.add("1/2T"); tempoFactors[HalfTriplet] = 4.0f / 3.0f; tempoNames.add("1/4D"); tempoFactors[QuarterDuet] = 1.0f * 1.5f; tempoNames.add("1/4"); tempoFactors[Quarter] = 1.0f; tempoNames.add("1/4T"); tempoFactors[QuarterTriplet] = 2.0f / 3.0f; tempoNames.add("1/8D"); tempoFactors[EighthDuet] = 0.5f * 1.5f; tempoNames.add("1/8"); tempoFactors[Eighth] = 0.5f; tempoNames.add("1/8T"); tempoFactors[EighthTriplet] = 1.0f / 3.0f; tempoNames.add("1/16D"); tempoFactors[SixteenthDuet] = 0.25f * 1.5f; tempoNames.add("1/16"); tempoFactors[Sixteenth] = 0.25f; tempoNames.add("1/16T"); tempoFactors[SixteenthTriplet] = 0.5f / 3.0f; tempoNames.add("1/32D"); tempoFactors[ThirtyTwoDuet] = 0.125f * 1.5f; tempoNames.add("1/32"); tempoFactors[ThirtyTwo] = 0.125f; tempoNames.add("1/32T"); tempoFactors[ThirtyTwoTriplet] = 0.25f / 3.0f; tempoNames.add("1/64D"); tempoFactors[SixtyForthDuet] = 0.125f * 0.5f * 1.5f; tempoNames.add("1/64"); tempoFactors[SixtyForth] = 0.125f * 0.5f; tempoNames.add("1/64T"); tempoFactors[SixtyForthTriplet] = 0.125f / 3.0f; }
and this:
MiscToolClasses.h
/** The note values. */ enum Tempo { ThirtyTwouple = 0, Sixteenthuple, Octuple, Quadruple, Double, Whole, ///< a whole note (1/1) HalfDuet, ///< a half note duole (1/2D) Half, ///< a half note (1/2) HalfTriplet, ///< a half triplet note (1/2T) QuarterDuet, ///< a quarter note duole (1/4D) Quarter, ///< a quarter note (1/4) QuarterTriplet, ///< a quarter triplet note (1/4T) EighthDuet, ///< a eight note duole (1/8D) Eighth, ///< a eighth note (1/8) EighthTriplet, ///< a eighth triplet note (1/8T) SixteenthDuet, ///< a sixteenth duole (1/16D) Sixteenth, ///< a sixteenth note (1/16) SixteenthTriplet, ///< a sixteenth triplet (1/16T) ThirtyTwoDuet, ///< a 32th duole (1/32D) ThirtyTwo, ///< a 32th note (1/32) ThirtyTwoTriplet, ///< a 32th triplet (1/32T) SixtyForthDuet, ///< a 64th duole (1/64D) SixtyForth, ///< a 64th note (1/64) SixtyForthTriplet, ///> a 64th triplet 1/64T) numTempos };
once you find these lines in the HISE source code, you will need to add the timing parameters you want to add, something like this: .cpp
// (..........) setTempo(ThirtyTwo, "1/32", 0.125f); setTempo(ThirtyTwoTriplet, "1/32T", 0.25f / 3.0f); setTempo(SixtyForthDuet, "1/64D", 0.125f * 0.5f * 1.5f); setTempo(SixtyForth, "1/64", 0.125f * 0.5f); setTempo(SixtyForthTriplet, "1/64T", 0.125f / 3.0f); // new tempos setTempo(HundredTwentyEighthDuet, "1/128D", 0.125f * 0.25f * 1.5f); setTempo(HundredTwentyEighth, "1/128", 0.125f * 0.25f); setTempo(HundredTwentyEighthTriplet, "1/128T", 0.0625f / 3.0f); setTempo(TwoHundredFiftySixthDuet, "1/256D", 0.125f * 0.125f * 1.5f); setTempo(TwoHundredFiftySixth, "1/256", 0.125f * 0.125f); setTempo(TwoHundredFiftySixthTriplet, "1/256T", 0.03125f / 3.0f); setTempo(FiveHundredTwelfthDuet, "1/512D", 0.125f * 0.0625f * 1.5f); setTempo(FiveHundredTwelfth, "1/512", 0.125f * 0.0625f); setTempo(FiveHundredTwelfthTriplet, "1/512T", 0.015625f / 3.0f);
in .h:
SixtyForthDuet, ///< a 64th duole (1/64D) SixtyForth, ///< a 64th note (1/64) SixtyForthTriplet, ///> a 64th triplet 1/64T) // add those lines for faster tempos: HundredTwentyEighthDuet, ///< a 128th note with dot HundredTwentyEighth, ///< a 128th note HundredTwentyEighthTriplet, ///< a 128th note triplet TwoHundredFiftySixthDuet, ///< a 256th note with dot TwoHundredFiftySixth, ///< a 256th note TwoHundredFiftySixthTriplet, ///< a 256th note triplet FiveHundredTwelfthDuet, ///< a 512th note with dot FiveHundredTwelfth, ///< a 512th note FiveHundredTwelfthTriplet, ///< a 512th note triplet numTempos };
I suggest a double check of the values but it should work.
Once you have modified the two files (.cpp and .h) you will have to recompile HISE again from its source code.
-
@Delamere Also it's worth noting that any changes you make to the source code will be overwritten the next time you grab the latest version from github, unless you fork the source code and use git to manage changes.