|
Post by klay2000 on May 9, 2021 16:44:22 GMT
Is there any way I can send clock into a stream byter block with a +C and have the copy of midi clock get processed to the lighting controller and the original clock message pass through unaffected ?
Thanks
|
|
|
Post by uncledave on May 9, 2021 17:08:32 GMT
Posting some diagrams would be very helpful, since we cannot see what you're seeing. Just use the green button and Attach File. It will let you select from Photos. Beyond that, it may be some special property of MIDI clock messages in MIDIFire. nic ?
|
|
|
Post by klay2000 on May 10, 2021 1:03:07 GMT
|
|
|
Post by klay2000 on May 10, 2021 1:32:54 GMT
|
|
|
Post by klay2000 on May 10, 2021 1:34:21 GMT
Vl3 controller block
B6 70 = B6 53 +C B6 1B = BE 46 +C #TAP TEMPO HX B6 13 = BE 13 +C # guitar comp B6 11 = BE 11 +C # delay GUIT B6 10 = B6 50 +C # cc80 down rc B6 17 = B6 51 +C # cc81 up rc B6 2E = B6 52 +C # cc82 random rc B6 63 00 = FC +C # cc47 stop B6 2F 40 = B6 42 40 +C #66 reselbh B6 63 40 = FA +C # start B6 6F = B0 44 +C # lyr prev B6 68 = B0 45 +C # Lyr next BX 71 = XX 41 +C # page up rc B6 74 40 = B0 71 01 +C B6 74 00 = B0 71 00 +C B6 32 40 = B0 71 02 +C B6 32 00 = B0 71 00 +C B6 38 40 = B0 71 03 +C B6 38 00 = B0 71 00 +C B6 15 = B6 40 +C #cc21pagedown rc B6 70 = B6 42 +C
CX = 9X XX 40 +C
# handle ticks IF M0 == F8 # 24 ticks == 1 beat, so determine # bar modulo into variable I0 which # will have a range of 0 to 95 MAT I0 = G0 % 60 # first beat of bar, I0 is 0 IF I0 == 0 # turn light on (note on) SND 9C 14 40 END # second beat of bar, I0 is 24 IF I0 == 18 # turn light on (note on) SND 9C 15 40 END # third beat of bar, I0 is 48 IF I0 == 30 # turn light on (note on) SND 9C 16 40 END # 4th beat of bar, I0 is 72 IF I0 == 48 # turn light on (note on) SND 9C 17 40 END # increase tick counter MAT G0 = G0 + 1 END
# reset tick count on start, continue or stop IF M0 >= FA IF M0 <= FC ASS G0 = 0 END END #
XX = XX +B
|
|
|
Post by klay2000 on May 10, 2021 1:35:29 GMT
2nd stream byter block before event monitor
# Enter rules here # Press 'Install Rules' when done 9X XX 00 = 8X IF MT == 90 IF M0 == GF0 GF1 XX = XX +B END ASS GF0 = M0 M1 END
|
|
|
Post by uncledave on May 10, 2021 14:15:12 GMT
The link does not work because it is not publicly accessible. I get Access Denied, and Ask for Access. I see you've already figured out how to attach a file, though.
|
|
|
Post by klay2000 on May 10, 2021 15:01:14 GMT
Yes I went to desktop version on my mobile phone and the attachment option is available there.
Is there any other way I can send the midi fire file? I think you mentioned zip file? I'll need to learn how to create a zip file of it on the iPhone Bcs I'm not on the computer at the moment
|
|
|
Post by klay2000 on May 10, 2021 15:13:08 GMT
|
|
|
Post by uncledave on May 10, 2021 16:22:18 GMT
Ok. I got your file. It looks like the script was created for the older version of StreamByter which didn't have the Block command. So you had to use the overall blocking rule, and clone the CC messages that you're transposing to different CCs. I revised your script to not clone, and to explicitly Block the items you don't want to send on. You could just remove the Block of the clock messages, if you want them to be output.
If MT == B0 B6 70 = B6 53 B6 1B = BE 46 #TAP TEMPO HX B6 13 = BE 13 # guitar comp B6 11 = BE 11 # delay GUIT B6 10 = B6 50 # cc80 down rc B6 17 = B6 51 # cc81 up rc B6 2E = B6 52 # cc82 random rc #B6 63 00 = FC # stop B6 2F 40 = B6 42 40 #cc66 reselbh #B6 63 40 = FA # start B6 6F = B0 44 # lyr prev B6 68 = B0 45 # Lyr next BX 71 = XX 41 # page up rc B6 74 40 = B0 71 01 B6 74 00 = B0 71 00 B6 32 40 = B0 71 02 B6 32 00 = B0 71 00 B6 38 40 = B0 71 03 B6 38 00 = B0 71 00 B6 15 = B6 40 #cc21pagedown rc B6 70 = B6 42 End
CX = 9X XX 40 # convert program change to note on
# handle CC$99 because message length changes If M0 == B6 63 If M2 == 0 Snd FC # stop Ass G0 = 0 End If M2 == 40 Snd FA # start Ass G0 = 0 End Block End
# handle ticks IF M0 == F8 # 24 ticks == 1 beat, so determine # bar modulo into variable I0 which # will have a range of 0 to 95 MAT I0 = G0 % 60 # first beat of bar, I0 is 0 IF I0 == 0 # turn light on (note on) SND 9C 14 40 END # second beat of bar, I0 is 24 IF I0 == 18 # turn light on (note on) SND 9C 15 40 END # third beat of bar, I0 is 48 IF I0 == 30 # turn light off (note off) SND 9C 16 40 END # 4th beat of bar, I0 is 72 IF I0 == 48 # turn light off (note off) SND 9C 17 40 END # increase tick counter MAT G0 = G0 + 1 Block END
# reset tick count on start, continue or stop IF M0 >= FA IF M0 <= FC ASS G0 = 0 Block END END #
# XX = XX +B
I changed the conversion of CC$99 to an If block because the output length is different from the input. That should have worked the old way, but required cloning and the overall block. This compiles and ought to work, I think.
I hate the idea of checking all those CC rules for every clock; it's a lot of extra CPU work for zero benefit. Maybe I can rewrite them cleaner. Edit: I added If MT== B0 so the CC rules are only checked when a CC is received.
|
|
|
Post by uncledave on May 10, 2021 16:48:46 GMT
I tried my script using the MIDIFire Dynamic Clock, and it seems to work as expected. Normally, only the notes are sent. But if I comment out the Block after increase tick counter, it transmits all the clocks as well. Be sure to Install Rules whenever you change the script.
Edit: I added the double note blocker as well. The clocks still pass through, if they are not blocked. This is about as close as I can get to your setup without BandHelper or your MIDI interface.
|
|
|
Post by uncledave on May 10, 2021 18:07:08 GMT
Also, there's an error in the double note blocker. I didn't catch it until I tried it. The block action sets the message (M0, M1) to zero, which clears the memory, so it only blocks every second note. This works better:
9X XX 00 = 8X IF MT == 90 IF M0 == GF0 GF1 XX = XX +B Else Ass GF0 = M0 M1 END Set lb0 GF0 Set lb1 GF1 END
The set LBs at the end display the memory values, and revealed this glitch.
|
|
|
Post by uncledave on May 10, 2021 18:12:53 GMT
Here's my test setup. The Nektar keyboard can send some of the CCs. The Channel Strip moves them to MIDI channel 7. It all seems to work for me, clock blocked or passed through. I sent the output to Audiobus, which sees it all fine, so it should work with your hardware. .
|
|
|
Post by klay2000 on May 11, 2021 4:15:41 GMT
I copied this into the block and the quarter notes arepulsing but the midi clock is blocked
Is there a way the ticks can be let through?
I still can’t grt midi clock and note messages to lighting controller simultaneously. Clock seems blocked on your diagram too?
I also copied and pasted your duplicate block script into a separate block.
Do I need to adjust the script to let midi clock through ?
Thankyou again
|
|
|
Post by klay2000 on May 11, 2021 4:18:46 GMT
|
|