tap
Converser
Posts: 35
|
Post by tap on Apr 5, 2018 12:04:46 GMT
Hi Nic. I just picked up the new MiniMoog app and it sounds great... it supports lots of CC mapping, but I can't do any CC mapping to the pitch wheel. I want to be able to bend pitch with a pedal since my hands will both be occupied playing.
I'm struggling to get this to work. Expression pedal is coming in on channel 1, #11 (0A), and I want to try to use it to drive a pitch bend. An added complication is that I only want to bend UP, so that I have an easily-located base pitch. So, that way, when the pedal is all the way "off" (i.e. expression is at zero) I'd like that to map to hex 40 rather than whatever negative number pitch bend would be getting from the pedal. I'm thinking that a MAT expression that uses something like (40 + (.5 * the value passed)) but in decimal?
Any insights here would be much appreciated. Thanks. Tom
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 5, 2018 13:43:28 GMT
Hi tap , The reason this is going to be tricky is that pitchbend is a 14 bit value and a CC is a 7 bit value so we want to scale 0-127 to 16384-32767 but pitchbend has the LSB in the message first so we have extra gymnastics to swap the bytes. Here's an attempt: # map CC11 to bend up IF M0 == B0 0A # scale raw into J0 MAT J0 = M2 * 40 MAT J0 = 2000 + J0
# bit gymnastics J1=lsb, J2=msb MAT J1 = J0 & 7F MAT J2 = J0 & 3F80 MAT J2 = J2 / 80
# convert to pitchbend ASS M0 = E0 J1 J2 END
Regards, Nic
|
|
tap
Converser
Posts: 35
|
Post by tap on Apr 6, 2018 1:45:04 GMT
Hi Nic. This didn't work at first, so I stuck a monitor on both sides and saw that I was sending message B0 0B. Once I changed the IF statement to reflect this, it worked perfectly. This was my first experience with using the M variable... good learning experience. Thank you, once again, for your assistance!
|
|
tap
Converser
Posts: 35
|
Post by tap on Apr 6, 2018 11:22:34 GMT
Also, a general question if you don't mind: I know that in Stream Byter we can use operators + - * / ^ & and | . What are & and | used for? In Excel & means concatenate and | is usually used as a delimiter. I also see "==" in your solution - how does that differ from traditional = ? I don't know what language your app is written in, or I could probably figure this out myself. Thanks.
|
|
nic
Soapbox Supremo
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Apr 6, 2018 11:32:02 GMT
Hi tap , & and | are bitwise operators (AND and OR) so MAT L0 = M0 & 0F for example is how you can get the channel out of the first byte of a message. == means is equal to and = means assign MidiFire is written mainly in C but Objective-C parts for UI stuff. Regards, Nic.
|
|
tap
Converser
Posts: 35
|
Post by tap on Apr 6, 2018 11:43:24 GMT
Thank you. That would be a good tweak to the on-line manual... it's not evident to old goats like me who didn't progress beyond COBOL or don't write code much at all. :-)
|
|