Announcement

Collapse
No announcement yet.

Packed Parameters - i.e., Masked MIDI CC Messages

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Packed Parameters - i.e., Masked MIDI CC Messages

    I have set up an iPad using TouchOSC in order to issue MIDI CC commands to my keyboard. Everything works fine for cases where a single parameter is associated with a single CC number. For example, I can change the "Random Oscillator Detune" by issuing a RAW midi command "B0 67 00" (B0 = CC message, 67 = "Random Oscillator Detune" for my synth", and 00 = the value I want to set it to which actually gets masked with the incoming value based on the knob I'm turning in TouchOSC.)

    However, my question comes in for those MIDI CC's which have multiple parameters packed into a single number (byte). For example, two bits are used for each of three oscillator waveforms, and a single bit is used for another function. If I used the masking function with Raw MIDI messages, using the same "B0 43 00" format as I used before, I'm able to grab the correct value and put it into the correct bits - but it overwrites the rest of the byte! This means I can't change (in this example) the oscillator 1 waveform without having oscillator 2's waveform, oscillator 3's waveform, and the other single bit parameter reset to zero each time. The same goes for the case that I adjust any of the other parameters - I need a way to first grab the current values, mask the new value with the current values to preserve them, then send that final combined message to the synth.

    This is a pretty complicated question, I know, having to do with bitmasking in Osculator - something I have found ZERO information about on the net, the dialog box for which took hours to decipher through trial and error, and which is not covered AT ALL in the manual.

    Does anyone else have experience with this? Thanks!

  • #2
    Hi Aaron,

    The Raw MIDI feature you have undiscovered has mistakenly made its way through the second beta of version 2.12. Shortly after in beta 3, it has been removed. This explains why it is not covered at all in the manual. It is not even finished in terms of concepts. I would like to give you an answer but we would lose time to discuss on this unfinished work.

    I don't really understand how the bits are laid in your MIDI message. Could you please share more details on this?

    Thank you!
    Cam

    Comment


    • #3
      Hi Cam, thanks for noticing this post and for responding!

      Originally posted by camille View Post

      I don't really understand how the bits are laid in your MIDI message. Could you please share more details on this?
      Certainly! If you go to the following URL and download the manual for the Novation KS4/KS5 Synthesizer, and turn to page 62, you'll see the MIDI CC commands which this synth receives in order to adjust various parameters in a patch.
      www.novationmusic.com/download/127/

      Most parameters are relatively simple to set up in Osculator; however, the ones I'm having trouble with are the ones which say "See packed parameter" afterwords. If you go down to page 64, you'll see the details of the "packed parameters" - bytes in the synth's memory where more than one parameter is stored, within various bits of the byte.

      I'm familiar with the packed parameters, bitmasking, etc., so the concept isn't the problem. The problem is that when you send a MIDI CC message, it's got to be the entire contents of the byte you're sending all at once. It's not possible to send a MIDI CC message to the synth and say "only overwrite the last two bits of the value". It overwrites the entire byte. This means when I try to change a parameter which is stored only in the low two bits of a particular byte, I wind up affecting the entire byte rather than just those two bits.

      Ideally I would be able to first ask the synth what the value that entire byte is FIRST, then mask the incoming value (as is being controlled by TouchOsc) onto THAT value, and send the resulting value back to the synth. As it stands right now, I have to choose a pre-determined value onto which I mask the incoming value (For example, "B0 43 00" would issue a MIDI CC message to parameter number 67, with the PRE-DETERMINED value of 00, masked with the incoming value)

      Ideally I'd like to be able to:
      1) Ask the synth for the current value of this byte and store this in variable $CurrentValue for example
      2) Send a message to the synth, masking the current incoming value from TouchOSC onto "B0 43 $CurrentValue"

      Hope this makes sense!

      Comment


      • #4
        Thanks for the link and the fine details, that's very instructive.

        I understand that you would like to store the state of the synth in variables and use those variables to send bit masked MIDI messages. This seems to be an important concept to take in account for the raw MIDI feature.

        Just a few questions:
        How do you ask the synth the current value?
        Do you have a practical example at hand?

        Thank you.
        Camille

        Comment


        • #5
          Hi Camille,

          I've attached a manual for another synth, which requires neither the bit-level masking nor the "asking for a parameter" I had mentioned before. Beginning on page 80, this manual helpfully lists out the full MIDI CC command needed to accomplish each parameter change.

          On page 82, you begin to see sets of three bytes separated by commas (such as Bn 63 02, 62 02, 06 vv ). These are examples where multiple consecutive bytes are being sent to the synth as part of a single message. Finally, on page 85, you can see cases where two sets of those messages are necessary to accomplish something.

          Hope this is a bit more helpful than my previous examples. I don't expect immediate support on this, just wanted to pass the information along since you'd requested it.

          -Aaron

          Venom User Guide_EN.pdf

          Comment


          • #6
            Thank you Aaron!
            Real world examples are extremely useful.

            On page 82, you begin to see sets of three bytes separated by commas (such as Bn 63 02, 62 02, 06 vv ). These are examples where multiple consecutive bytes are being sent to the synth as part of a single message. Finally, on page 85, you can see cases where two sets of those messages are necessary to accomplish something.
            It looks like they are using the "running status" technique.

            Let me clean a bit the user interface for the Raw MIDI events and I will come back to you — offline — to see how we can make this happen. I expect to be able to work on this next week.


            Best,
            Camille

            Comment


            • #7
              Awesome!! I look forward to it. Thanks again.

              Comment

              Working...
              X