GM-800 MIDI Controller using Nano

Started by keitht, November 29, 2023, 06:39:02 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

keitht

Yes this deserves a thread! Here's a public link to the software (preliminary!!!) https://create.arduino.cc/editor/KeithT/dfa3caee-d9ba-4a90-bdf3-f1827d1fd1c9/preview

Quote from: keitht on November 28, 2023, 04:37:18 PMYou cannot view this attachment.You cannot view this attachment.You cannot view this attachment.You cannot view this attachment.

Yes, it really works. Full control of all the foot things done with my fingers with a wireless midi controller. Software isn't quite ready to publish, there's an occasional bug in switching modes from expression to switches, but it really works! Having customizable software in between midi and hardware opens up some amazing possibilities. I can switch the CTL signals with adjustable pulse times. A LFO expression modulator is easy, for example.

The design is all solid state, no relays. LED indicators are outboard so they can be located away from the connections. Parts are cheap. Here are the main ones:

https://www.amazon.com/dp/B07G99NNXL
https://www.mouser.com/ProductDetail/579-MCP42010-I-P
https://www.mouser.com/ProductDetail/onsemi-Fairchild/HCPL2731SDM

I will open source this for anyone who wants the design. But I can't wait to show it off!! 8)
https://www.mouser.com/ProductDetail/595-SN74HC05NE4


keitht

Quote from: keitht on November 29, 2023, 05:32:53 AMI might even do that circuit board thing, but hopefully someone who is better set up to handle the business side will pick it up.

The power that this device unleashes is just incredible. The ability to precisely control an expression "pedal" with software is utterly amazing. With its two digital pedals, this can turn a note in a three part scene into a changing sequence of triad chords, using varying amounts of pitch bend on two of the parts. How they vary and when is up to the software, triggered by midi messages as you wish. Try doing that with your feet!

But that's just one of an infinitely long list of new possibilities. I got the triad idea while sending increasing CC values to a -12 pitch bend control. You can get any pitch between (with reasonable precision) so scales, harmonies, whatever, varying anyway you can code, times two expression controllers. Wow.

You cannot view this attachment.

You cannot view this attachment.

keitht

I see that Luminite has a new model, the Graviton M2, that has relay and control voltage outputs.

That may be another solution to the lack of midi control for external EXP and CTL on the GM-800.

https://luminitefx.com/products/graviton-m2-midi-controller-xy-controller-bundle

keitht

I might be the only person who cares, but I made a code change today, updated in the Arduino Cloud link above. There was a delay in the loop based on someone's example. That was unnecessary and caused a slow response when there was significant midi traffic. The delay is now commented out.

Fixing that enabled a slick new way to play a held cord. Using controller sent midi notes to Part 4, including sysex to enable part 4 midi, and a pulse toggle on CTL4 from the Nano (CC#24 value 40), that allows that same midi sequence to toggle on/off part 4 on any scene, play the desired chord to hold, and then stop the chord by toggling off part 4 by repeating the same midi sequence. Setting CONTROL ASSIGN/CONTROL FUNCTION/CTRL4/PART ON-OFF/TOGGLE/SYSTEM/ PART4 ON gives the Nano the ability to turn part4 on and off in any scene.

One touch of a footswitch or XY controller plays a held chord on any scene, a second touch turns it off. It does take another midi sysex message to restore Part4 to GK IN whenever that is desired. But the on state of part 4 is only temporarily changed.

See this post https://www.vguitarforums.com/smf/index.php?topic=36295.msg268301#msg268301

void loop() {
  MIDI.read();
  //delay(100);
}

SYSEX PART 4 SOURCE = MIDI   F0 41 10 00 00 00 00 26 12 00 00 06 0C 01 6D F7

ElliotG

#4
FYI:  There is nothing in the midi spec for a delay, and no indication that a device is ready to received another message.  I had a discussion with a guy that runs a company that makes a popular line of midi controllers.  He said that he has found it is best to include a 65ms delay between sent midi messages.   It is not surprising the GM800 does not required a delay, but keep in mind that if you use any equipment between the GM-800 and the device sending the messages you may have some trouble.