MIDI IN Chop not correctly reading Roland drum triggers?

I’ve been working on trying to read MIDI in from a Roland SPD-SX and running into an issue with MIDI IN Chop. It will recognize channels as they’re hit but not give an ON/OFF response one might expect.

When using a MIDI IN Dat the message shows only Note On values. I have also tested MIDI from a Roland TM-2 with similar results. But using a TD-11 module to read an electronic kit sends perfectly fine.

I can swap those messages to Note Off’s, but unsure of how to get that back into usable Chop data.

What happens if you use a midi in chop in the first place? (Instead of midi in dat I mean)

It sees the index fairly sporadically, but never the value and everything always sits at zero. I’ve tried adding samples and running to other chops.

When comparing the messages to a TD-11, the only difference was the Note Off message. Sadly I don’t have the module to test one hand, but will post a screen of what MIDI In chop looks like. Any insight on this is greatly appreciated.

Hey Matthew, welcome to the forum.

I have put together a quick example on how I would convert MidiIN DAT to CHOP.
MidiIN DAT to CHOP.toe (4.2 KB)

I don’t have a MIDI device with me right now, so I used a couple of LFO to simulate two Midi notes, note 20 and note 64. These notes were sent out using a Midi out CHOP, and received with a Midi IN DAT internally using LoopBe.

The notes received in the Midi IN DAT are converted to CHOP using some python written in the callbacks.


This is one possible approach, I hope it helps!

[EDIT] Based on my readings I think that receiving a note OFF or a note ON = 0 produce exactly the same outcome. I have skipped the note ON/ note OFF conversion in my example but feel free to implement the way it works for you in case note OFFs are important in your application

1 Like

Fausto, this definitely looks like it’ll do it!! I’ll have to test the actual module, possibly tomorrow, but I hooked up 9 ‘notes’ to simulate the 9 pads on the Roland and have everything firing at different times with success. I’ll report back with official results.

Thank you so much for taking the time to look into this. This is a much cleaner pythonic solution than what I had breaking in a Dat Execute. I was unsure of how to use the callback function on Midi In and this clarified a lot.

1 Like

Reporting back with a little bad news and a realization of what’s actually happening with the signals. For whatever reason both notes are being sent at the same time with the velocity value being first and 0 following. Since that last table row doesn’t change it constantly reads 0 for every channel.

Is there a way to set each channel to zero, change to the value one row above last in the table, and return to zero? Or any other way to read the high value when triggered and return to 0.

You could try a reorder DAT, and then when you are in chop land maybe you can use something like a trigger chop to get the values to go back to 0 if needed, or to “amplify” the midi data a little bit.

If that seems a possible solution that works with your midi hardware, your python code that was in the midi in callbacks will have to go in a DAT execute connected to the reorder DAT, or a null DAT even better

If all fails perhaps look into the midi device settings and see if there are some parameters that you can adjust.

something like this for example
MidiIN DAT to CHOP v2.toe (5.0 KB)