|
Post by jfox815 on Dec 30, 2018 21:18:00 GMT
Is there a way to “stair step” midi notes in MidiFire?
Eg: I press the same note C1 but each press a different note in the octave is spit out. So
Press 1. C1 Press 2. D1 Press 3 E1 Etc.
Thanks!
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Dec 30, 2018 22:24:55 GMT
Hi jfox815 , You can use the StreamByter for this. Maintain a list of notes to 'spit out' and cycle through them on receiving the trigger note. Assuming your trigger note is C1 is as per this table and you wish to have 3 notes in your cycle as per your request, then this is how to do that: IF LOAD # the notes in your cycle numbered from 0 # in this case 0, 1 and 2 using hex codes # (from note to hex table) ASS K0 = 24 26 28
# K80 = last note in cycle # alter this if you have more/less # than 3 notes in your cycle (defined above) ASS K80 = 2
# current cycle position (start at 0) ASS L0 = 0 END
# force note on/vel0 to note off # to make life easier 9X XX 00 = 8X
# handle trigger note ON (C1/CH1) IF M0 == 90 24 # rewrite to current cycle note ASS M1 = KL0 END
# handle trigger note OFF C1/CH1 IF M0 == 80 24 # rewrite to current cycle note ASS M1 = KL0
# move/cycle to next MAT L0 = L0 + 1 IF L0 > K80 ASS L0 = 0 END ENDRegards, Nic.
|
|
|
Post by jfox815 on Dec 31, 2018 1:53:16 GMT
Thanks!
|
|
|
Post by jfox815 on Jan 1, 2019 1:52:04 GMT
So I appreciate your helping me out. I’ve never used stream bryter until now. When I ran your code it would only return the note C-2. Any ideas?
Thanks!
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 1, 2019 9:02:08 GMT
Hi jfox815You're right. I get the same results. Seems to be a problem with the +P flag. I was being too smart. I have amended the code above and it works for me. Regards, Nic.
|
|
|
Post by jfox815 on Jan 1, 2019 20:46:41 GMT
Okay.. last thing i want to be able to do. Each time one of the notes in my sequence is triggered I want it to change the dynamic clock. That should look something like.
IF 24 SEND F0 5A 00 75 00 F7 END
All of this is over my head so I may be way wrong.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 2, 2019 13:06:46 GMT
Hi jfox815 , OK, so after these lines in the above (but before the END): # rewrite to current cycle note ASS M1 = KL0You need some if clauses that trigger when one of your note ons is mapped. Something like: IF M1 == 24 SND F0 5A 00 75 00 F7 END IF M1 == 26 SND F0 5A 01 20 00 F7 END IF M1 == 28 SND F0 5A 00 95 00 F7 ENDRegards, Nic.
|
|
|
Post by jfox815 on Jan 2, 2019 19:25:42 GMT
Thank you so much!
Essentially I've been trying to get my "setlist" an tempo across two apps who both have limited midi capabilities to be sync. This is it! Thanks again!
|
|
|
Post by jfox815 on Jan 7, 2019 5:41:29 GMT
Here is another question for you when you have time.
If I try to send a tempo in the “80s or “90s” I get an ERR message.
Eg
IF M1 == 24 SND F0 5A 00 87 00 F7 END
It gives me an error. I can however do the reverse 78. Same with tempos beginning with 9.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Jan 7, 2019 10:34:24 GMT
Hi jfox815 , Aah, good find! Because of course 87 is not a valid midi data byte (well above the maximum of 7F). This had never occurred to me and it means that some tempos can not be set via this technique from external devices. You can work around this since it is all happening inside MidiFire by just adding in a +F flag at the end of your SND: SND F0 5A 00 87 00 F7 +FThis bypasses validity checking of the message and gets your tempo correctly to the clock. Regards, Nic.
|
|