Soulsby Synths Forum

Technical Support => Atmegatron/Odytron Hardware technical support => Topic started by: Piombo on February 08, 2016, 04:41:32 PM

Title: MIDI Program Changes (changing patch via MIDI)
Post by: Piombo on February 08, 2016, 04:41:32 PM
Hi, i'm setting up my ATM trying the best of it in term of manageability with my ableton live set. Going throu the MIDI implementation chart in the manual of the ATM i can see that the voice "program changes" is crossed off, in fact changing bank sub-bank, program or any combination of them makes no changes at all. Is there a way to control the patches changes via midi from a whatsoever sequencer? (ableton in this case) or is possible to control the librarian from/into a DAW anyhow?
Title: Re: MIDI Program Changes (changing patch via MIDI)
Post by: paulsoulsby on February 11, 2016, 08:02:52 PM
At the moment, the answer is no.  But it is something that could be added.
Reason for not adding it was purely personal.  I've had too many amazing sounds lost forever when the DAWs prog change was accidentally on and I press play!!

The software is continually being developed, so I could add a setting in the settings file to allow program change to be enabled.  Will do this in the next version.
Title: Re: MIDI Program Changes (changing patch via MIDI)
Post by: steholmes on October 07, 2017, 11:18:08 PM
Just bought my Atmegatron at SynthfestUK and was wondering if this was ever implemented? If so where is the settings file and how do i turn it on?

Thanks
Title: Re: MIDI Program Changes (changing patch via MIDI)
Post by: rio on October 10, 2017, 07:59:58 AM
Hi steholmes,

I can post the source modification for both devices here, but I am a bit busy at time and I need a bit time to look... I have implemented it myself sometimes ago for my own requirements.

Greetings rio
Title: Re: MIDI Program Changes (changing patch via MIDI)
Post by: rio on October 10, 2017, 03:15:09 PM
ok here are the changes for both devices:


1. libraries/Midi/Midibase.h
add method declaration after midiControlChangeReceived

virtual void midiProgramChangeReceived(unsigned char pc) = 0;


2. libraries/Midi/Midi.cpp
change following lines in Midi::read

void Midi::read(unsigned char in_byte)
{
..

else if (status_buffer!=0)
{
if (first_byte == true)
{
//note_byte = in_byte; //
//first_byte = false; // replace this both lines with:

if (status_buffer == (PROGRAM_CHANGE | channel_))
{
if (in_byte < 16) base_->midiProgramChangeReceived(in_byte);
} else {

note_byte = in_byte;
first_byte = false;
}
}
else
{

..
}



for Atmegatron:

3a. libraries/AtmEngine/AtmEngine.h
add method declaration after midiControlChangeReceived


void midiProgramChangeReceived(unsigned char pc);



4a. libraries/AtmEngine/AtmEngine.cpp
add method

void AtmEngine::midiProgramChangeReceived(unsigned char pc)
{
getPatchPtr()->readPatch(pc);
}



for Odytron:

3b. libraries/OdyEngine/OdyEngine.h
add method declaration after midiControlChangeReceived


void midiProgramChangeReceived(unsigned char pc);



4b. libraries/OdyEngine/OdyEngine.cpp
add method

void OdyEngine::midiProgramChangeReceived(unsigned char pc)
{
getPatchPtr()->readPatch(pc);
}



5. recompile both projects and upload the binaries to your devices.


I had compiled atmegatron with libraries 2.1 and odytron with libraries 2.3 in the past, but this should work with last libraries sources too. Maybe Paul will add this to last source/build.

Greetings.
Title: Re: MIDI Program Changes (changing patch via MIDI)
Post by: paulsoulsby on October 12, 2017, 09:22:00 PM
Thanks very much for doing this!  I'll add this as a setting for the next software update.