Need Help Building a MIDI Controller Patch

So this is a very niche project that will only benefit people who have both an Organelle and a Montreal Assembly 856 for Zellersasn, but I think parts of it could easily be recycled and used as a way to control most MIDI-capable devices.
Basically here’s what I want the various parts of the Organelle’s hardware to do. I’ll avoid specifics as much as possible since very frew people are probably familiar with the 856:

  • Knob 1: Selects which CC channel is receiving a message that’s sent by the keys. There would be 9 channels possible (5, 6, 7, 22, 23, 24, 39, 40, and 41) and each one would have a different readout printed on the screen. I can’t figure out how to break down the continuous knob evenly into these 9 discrete values, nor am I sure how to change the screen text accordingly (cc5 would read N1P1, cc6 - N1P2, cc7 - N1P3, cc22 N2P1, …, cc41 N3P3). To clarify, this is not sending any message, but simply choosing a channel along which a message is sent.
  • Knob 2: Sends a cc message along CC13, continuously from 0 to 127. I would like it to avoid sending any messages downstream until the knob is turned (for the 856 this controls the spacing between notes).
  • Knob 3: sends a cc message along CC14, continuously from 0 to 127. Again, I’d like it to not broadcast any cc messages until turned. (controls repeat amount on the 856)
  • Knob 4: Undefined; maybe similar to Knobs 2 & 3, except for cc8.

Basically as I understand knobs 2-4, what I need is some kind of ‘bang’ signal that sends a message when the knobs are turned so that the Organelle remains silent until then. I understand how to make a MIDI cc send object, but I’m unsure how to map the knobs to change the value sent along those cc channels. I think I’d need something like "~r knob2/3/4 connected to some kind of number box, connected to some kind of math to keep the knobs allowable values between 0 and 127, and then connect that to the inlet on the right side of the MIDI out command. The screen for these 3 knobs would read “[FUNCTION]: (value from 0-127)”.

  • Keys: The default behavior to send MIDI notes would need to be removed. Instead, the keys would determine the value of the message is being sent along the cc determined by Knob 1. The lowest note would send a cc note of 48, the highest would send a cc value of 71, and you can fill in the in-between.

  • Aux: The aux would send a cc note of 72 along the cc determined by Knob 1 (basically acting as a high C key)
    (The keys and aux will dictate the pitch transformation applied to the notes/pitches, for those of you who are familiar with an 856 - instead of relying upon the knob you can have a keyboard to choose what intervals you want)

  • Pedal: Sends a message along cc57. The first stomp on the pedal would send a single message of 1, while the second stomp would send a message of 0. The time between the first and second stomps would also ideally pair with the LED lighting up red. (This controls recording on the 856)

I hope this makes sense - please let me know if anyone can help me sort out the logic here.

1 Like

Fuck yeah this sounds amazing!!! I have the 856 but I cant do shit in pure data… But this must happen haha. I would love this patch and make a long as fucking video on it on my youtube!!

I’m just now getting around to actually working on it, but my 856 has been in the shop for repairs for a few weeks so I can’t test what I’ve got. It arrived with the ‘skip’ function not working at all. But I’ll definitely shoot it your way when I have some kind of prototype completed. Having another person who can do some play-testing would be invaluable.
Also I love your videos, so that’d be absolutely killer!

This seems like a cool project. The first step is using the ctlout object. ctlout has three inlets the left one is the 0-127 message, the middle is the CC number and the right one is the channel. one way to handle this is to make a ctlout with any cc number say 50 and then the MIDI channel you want (ctlout 50 1). then the middle inlet can always be changed later from 50 to whatever with number boxes or messages. and just to clarify this is all you need for sending cc in pd.

and in regards to silencing the knobs I made a pd patch called Knob-Thing that you can find in the feedback 4 patch folder link. just drop knob-thing.pd into your patch folder than use it like any other object, in this case run the knob1-4 receives through it. knob-thing doesn’t send data until it’s moved more than the argument( i usually use .05) and then it opens and there’s a half second delay and then closes. This way you get the mute function but when you actually start moving the knob you still get a very fine definition.

good luck :slight_smile:

I actually got it all figured out myself and have it working!! It was actually super simple once I read up on ctlin/ctlout & had a few other patches open as references so I could Frankenstein my functionality together.
I very much appreciate your help though - I didn’t use the knob-thing object, but I might implement that instead of my current solution (I add a 200 ms delay triggered by loadbang, then set that delay to send out 0’s to both knobs 2 & 3 through the “change” object - it works for a little while at least).

Now my only issue is that my MIDI out cable also has a port for MIDI In, which I believe is overriding my USB MIDI keyboard (iirc I read that the Organelle only accepts one MIDI in at a time). Long story short this means I’m not able to extend the range of the Organelle’s keyboard like I want to. I’m thinking up a few workarounds currently, and might look through the rest of the forums here for a solution. I had it working for an older version of the patch, but something changed even though I didn’t really mess with any ctlin functions during my revisions.