MrDham / OpenTheremin_V4_with_MIDI

Open Source Theremin Instrument
GNU General Public License v3.0
8 stars 2 forks source link

Configuration save/load to EEPROM or via MIDI? #13

Open doctea opened 2 years ago

doctea commented 2 years ago

Hi, first off I'd like to thank you implementing this! Its working really well in my setup, in conjunction with a Teensy-based sequencer/MIDI interface/USB host that I'm building (https://github.com/doctea/usb_midi_clocker).

I'd like to be able to configure the settings - eg timbre, pitch bend range, that sort of thing - by sending it some MIDI messages (probably CCs, but maybe sysex?) to the device. Also would be good to go the other way and send the current config to the host so that it knows what the current setup of the theremin is. The idea being that I could save presets and configure the theremin from the host app's interface.

I've had a poke around in the code and couldn't see anything like this built in yet -- and also found that it doesn't seem to store the configuration between boots, is that right?

I just wanted to check if this is correct before I duplicate any functionality - and also check if there are any reasons why this would be a fruitless endeavour?

MrDham commented 1 year ago

Hello,

I was not active on github recently and didn't receive notification about the issue... Sorry for the late answer.

"I just wanted to check if this is correct before I duplicate any functionality - and also check if there are any reasons why this would be a fruitless endeavour?"

First, I'd be lying if I said that I never think about such an idea... I think that Sysex could be the way to go. But I never found the time for that.

"I've had a poke around in the code and couldn't see anything like this built in yet -- and also found that it doesn't seem to store the configuration between boots, is that right?"

True. Saving parameters in EEPROM could be quickly done.

MrDham commented 1 year ago

Ah... Open Theremin V4 somewhat complicate bi-directionnal MIDI (compare to V3) :

MrDham commented 1 year ago

I keep the ticket opened. I keep the Idea of saving in EEPROM.

MrDham commented 1 year ago

EEPROM save configuration causes several problem in term of user interface. We don't want to save our configuration each time we move a parameter. Then we need a switch to decide when we want to save configuration. The existing one is already used for Mute/Play/Calibrate and using more complex long/bold/short press could be cumbersome in term of user experience.

Still we need to find a smart solution.

Meanwhile, peolple can change their default configuration (line 48 in application.cpp) to a more suitable one.

I keep the ticket opened just in case an idea comes up.

doctea commented 1 year ago

Hi, many thanks for your thorough reply and thoughts! You make very good points about there being no user-friendly way to trigger saving to EEPROM.

The no-native-USB/no-RX-pin part is not a problem for my setup, as I am connecting it to a device that knows to treat the OpenTheremin as a plain serial device that happens to speak MIDI, but it would not be so useful a feature for others.

Maybe I could add controls to my host app that would trigger save/loading of config on the theremin, but again this would be of limited usage to others.

It seems like maybe it will just be easier to do as you say, to just hard-code the preferred configuration -- I'll take another look at this.

Thank you for your time and thought on this and on the original MIDI code :D. If I have any further ideas or code to contribute on this then I will let you know :)