|
Post by manatee on Aug 27, 2018 11:45:18 GMT
Hello would it be possible to create a streambyter script that generates from incoming chord-notes (e.g. from rozetta cells) the single notes from each chord, where each note (except the lowest - for strumming up - or - the highest for strumming down) gets an amount of delay from a variable or maybe more usefull from an incoming CC? Many Thanks in advance!
|
|
|
Post by manatee on Aug 27, 2018 12:04:48 GMT
For Example: when a chord with 3 notes comes in then the lowest note should have no delay, the next higher note gets a delay of 40ms and the next higher (highest in this example) gets a delay of 80ms. in this case the adding delay value would be 40ms for each following note. Thx.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Aug 27, 2018 12:52:48 GMT
Hi manatee, This can be done using MidiFire, but not StreamByter AU as we need MidiFire's fancy inject technique to determine which of the sounding notes is lowest or highest. this thread covers something very similar (clone lowest note in chord to new channel) and its techniques could well be adapted for this. If you were looking for the StreamByter AU to do this, then I'm afraid this is currently not possible (as per the above thread). However, if you wanted this for MidiFire, let me know and I will come up with something specific for this use case for you if you did not want to decipher and modify my crazy Stream Byter code. Regards, Nic.
|
|
|
Post by manatee on Aug 27, 2018 13:31:18 GMT
Hi Nic and many thanks for your record setting fast reaction Even if its sad that the mighty „streambyter-AU-presets-statesaving-cubasis“ combination doesnt work, so I just installed midifire from the appstore. So it would exceptional kindly if you could create that „chord to strummed notes“ midifirescene. It would be great to controll the strumdelay value by a CC and be able to flip the „up-down“ direction by another CC so that the user could bring „guitar-like“ expression onto input chords. again many thx in advance for your lightninglike response!
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Aug 27, 2018 13:35:52 GMT
Hi manatee,
OK, got it (CC controlled delay and up/down).
Leave it with me. As this is a bit complex I can't guarantee as quick turnaround as the last response. Sometime this week I should have something to try out.
I will look into adding the inject feature to the AU also so this may work with the AU too in the future (no promises though, not 100% sure it's technically possible).
Regards, Nic.
|
|
|
Post by manatee on Aug 27, 2018 13:49:30 GMT
Great!! at least now i know why it couldnt work when i tried to solve it the last days in Streambyter... Im happy to read from you in the next days or so THX!
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Aug 28, 2018 10:18:27 GMT
Hi manatee, Right, so here is my first attempt at this. Download the attached scene and install into MidiFire. There are some comments in the scene explaining how to hook up and what the block labels indicate. Here is some more important detail though: At the top of the script are some constants that you may wish to alter: # constants # K: 0=latency, 1=max strum length ASS K0 = 7F 3E8
# K 2=CC/chan, 3=strum length, 4=up/dn ASS K2 = B0 15 16K0 is the latency/cycle width - this is set to 127ms which is just a safe value. If the source of the notes is a sequencer, chances are that the notes will come in very, very close to each other, so you could try reducing this value to 1 and see how you go. If you get doubling of notes, increase this value until they stop. K1 is the maximum strum length (ie. the maximum when you turn the strum length CC). I have set this to 1 second but this can be changed if you want to dial in longer (or shorter strums). K2 is the remote control channel (set to 1) and CC 21 (K3) changes the strum length between minimum and maximum. K4 is the up/down CC, set to CC 22. Now, the way this works is that each strum will have the same length (I think this is better musically) so if say the strum length was 500 ms and you played 4 notes in a chord, each note would be 125ms apart, but if you played 2 notes then each would be 250ms apart. Something like that. Anyway, maybe best if you try it out for yourself and play around. Any questions, please post them here. Regards, Nic.
|
|
|
Post by manatee on Aug 28, 2018 12:53:08 GMT
Hello Nic, thank you for your fast coding work, you are great! I just have tried the strum scene in midifire together with cubasis for midi in/out and at after some setup time i could get the strummed notes from midifire into cubasis, so it seems you have made it! I will need some time to check it all out in Detailed examples but it looks fine. Many thanks again for your great work!
|
|
|
Post by kcl627 on Oct 26, 2023 7:52:37 GMT
Hello, I searched strumming script for a while and recently found the midifire script here. I tried yesterday with iPad midifire and it works great, worth for update and improvement. Is it possible to make some modification on the script such that: 1) only strum chords with 3 or more notes. Strumming is not required for me when there is only 2 notes. (i.e. In the current script, strumming would be triggered when 2 notes or more detected at the same time. Modify the script such that any strum would be triggered only for 3 notes or more instead of 2. When only 2 notes detected, just simply play whenever they are pressed normally without noticable latency.) 2) only strum midinotes/chord which the midinote-on-time within the "latency width/cycle (K0)". Do not count/strum any long holding notes which is already played in the previous moment but still holding inside another particular "latency width/cycle (K0)". (maybe hard to understand, please see example below) e.g: for the current script, if I press a single C4 at time zero and holding it for 2 seconds (i.e. time=0s to 2s), the C4 would be played at time=0s (it is fine), But if I further press E4, G4, B4 together after 1 second (i.e. at time=1s), the C4 would be played again and the strum would become C,E,G,B. It sounds weird that I just press the C once but played twice, just because I am still holding it. I guess it would sounds more right and natural if the strum at time=1s only includes E, G, B. (i.e. C played at time=0s, EGB strummed at time=1s) even when I am stilling holding the C. Otherwise with the current setting, I have to make sure that all the previous notes were cut off before I press another new note/chord every single time in my playing. Many thanks in advance. Hi manatee, Right, so here is my first attempt at this. Download the attached scene and install into MidiFire. There are some comments in the scene explaining how to hook up and what the block labels indicate. Here is some more important detail though: At the top of the script are some constants that you may wish to alter: # constants # K: 0=latency, 1=max strum length ASS K0 = 7F 3E8
# K 2=CC/chan, 3=strum length, 4=up/dn ASS K2 = B0 15 16K0 is the latency/cycle width - this is set to 127ms which is just a safe value. If the source of the notes is a sequencer, chances are that the notes will come in very, very close to each other, so you could try reducing this value to 1 and see how you go. If you get doubling of notes, increase this value until they stop. K1 is the maximum strum length (ie. the maximum when you turn the strum length CC). I have set this to 1 second but this can be changed if you want to dial in longer (or shorter strums). K2 is the remote control channel (set to 1) and CC 21 (K3) changes the strum length between minimum and maximum. K4 is the up/down CC, set to CC 22. Now, the way this works is that each strum will have the same length (I think this is better musically) so if say the strum length was 500 ms and you played 4 notes in a chord, each note would be 125ms apart, but if you played 2 notes then each would be 250ms apart. Something like that. Anyway, maybe best if you try it out for yourself and play around. Any questions, please post them here. Regards, Nic.
|
|