I want to make a dedicated controller for a software synth.
I built a prototype midibox64 with 32 potentiometers for controlling the software synth and everything works.
The problem is that whenever I turn off the controller and power back up, the midibox64 resets all values ​​to zero. (sends all controller value of 0)
I wish at the power-on, midibox64 automatically send the actual values ​​marked by the position of the potentiometer.
I tried SNAPSHOT_AT_POWERON - enabled without success.
Is there a way for read all the position of pots at startup of midibox64 ad send the exact cc value to software synth without save current snapshot before turn off the midibox64.
I generated a .syx file with the “mk_syx.pl” script.
But every time i turn on the midibox64 i have this message in mios studio
[959553.937] f0 00 00 7e 40 00 01 f7
[959557.559] b0 15 00 Chn# 1 CC# 21 = 0
[959557.559] b0 05 00 Chn# 1 CC# 5 = 0
[959557.563] b0 3a 00 Chn# 1 CC# 58 = 0
[959557.563] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.563] b0 50 00 Chn# 1 CC# 80 = 0
[959557.565] b0 10 00 Chn# 1 CC# 16 = 0
[959557.565] b0 48 00 Chn# 1 CC# 72 = 0
[959557.567] b0 53 00 Chn# 1 CC# 83 = 0
[959557.567] b0 14 00 Chn# 1 CC# 20 = 0
[959557.569] b0 55 00 Chn# 1 CC# 85 = 0
[959557.571] b0 56 00 Chn# 1 CC# 86 = 0
[959557.571] b0 19 00 Chn# 1 CC# 25 = 0
[959557.571] b0 1a 00 Chn# 1 CC# 26 = 0
[959557.573] b0 1b 00 Chn# 1 CC# 27 = 0
[959557.573] b0 22 00 Chn# 1 CC# 34 = 0
[959557.575] b0 26 00 Chn# 1 CC# 38 = 0
[959557.577] b0 4a 00 Chn# 1 CC# 74 = 0
[959557.577] b0 47 00 Chn# 1 CC# 71 = 0
[959557.577] b0 49 00 Chn# 1 CC# 73 = 0
[959557.579] b0 11 00 Chn# 1 CC# 17 = 0
[959557.579] b0 12 00 Chn# 1 CC# 18 = 0
[959557.581] b0 13 00 Chn# 1 CC# 19 = 0
[959557.581] b0 0d 00 Chn# 1 CC# 13 = 0
[959557.583] b0 0e 00 Chn# 1 CC# 14 = 0
[959557.583] b0 0f 00 Chn# 1 CC# 15 = 0
[959557.585] a0 47 00 Chn# 1 Aftertouch B-3 0
[959557.585] a0 49 00 Chn# 1 Aftertouch C#4 0
[959557.587] a0 48 00 Chn# 1 Aftertouch C-4 0
[959557.587] a0 4a 00 Chn# 1 Aftertouch D-4 0
[959557.589] a0 51 00 Chn# 1 Aftertouch A-4 0
[959557.591] b0 77 00 Chn# 1 CC#119 = 0
[959557.591] a0 54 00 Chn# 1 Aftertouch C-5 0
[959557.623] b0 41 00 Chn# 1 CC# 65 = 0
[959557.625] b0 3b 00 Chn# 1 CC# 59 = 0
[959557.627] b0 16 00 Chn# 1 CC# 22 = 0
[959557.627] b0 57 00 Chn# 1 CC# 87 = 0
[959557.629] b0 1c 00 Chn# 1 CC# 28 = 0
[959557.631] b0 1d 00 Chn# 1 CC# 29 = 0
[959557.631] b0 1e 00 Chn# 1 CC# 30 = 0
[959557.631] b0 22 00 Chn# 1 CC# 34 = 0
[959557.633] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.633] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.634] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.636] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.636] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.638] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.638] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.638] b0 4f 00 Chn# 1 CC# 79 = 0
[959557.640] 90 3c 00 Chn# 1 Note Off C-3 (optimized)
[959557.640] 90 3d 00 Chn# 1 Note Off C#3 (optimized)
[959557.643] 90 3e 00 Chn# 1 Note Off D-3 (optimized)
[959557.645] 90 3f 00 Chn# 1 Note Off D#3 (optimized)
[959557.645] 90 7c 00 Chn# 1 Note Off E-8 (optimized)
[959557.645] 90 7d 00 Chn# 1 Note Off F-8 (optimized)
[959557.647] 90 7e 00 Chn# 1 Note Off F#8 (optimized)
[959557.647] 90 7f 00 Chn# 1 Note Off G-8 (optimized)
[959557.649] b0 50 00 Chn# 1 CC# 80 = 0
[959557.651] b0 50 00 Chn# 1 CC# 80 = 0
[959557.651] b0 50 00 Chn# 1 CC# 80 = 0
[959557.651] b0 50 00 Chn# 1 CC# 80 = 0
[959557.653] b0 50 00 Chn# 1 CC# 80 = 0
[959557.653] b0 50 00 Chn# 1 CC# 80 = 0
[959557.655] 90 2e 00 Chn# 1 Note Off A#1 (optimized)
[959557.655] 90 2f 00 Chn# 1 Note Off B-1 (optimized)
[959557.657] 90 30 00 Chn# 1 Note Off C-2 (optimized)
[959557.659] 90 31 00 Chn# 1 Note Off C#2 (optimized)
[959557.659] 90 32 00 Chn# 1 Note Off D-2 (optimized)
[959557.659] 90 33 00 Chn# 1 Note Off D#2 (optimized)
[959557.661] 90 34 00 Chn# 1 Note Off E-2 (optimized)
[959557.661] 90 35 00 Chn# 1 Note Off F-2 (optimized)
[959557.663] 90 36 00 Chn# 1 Note Off F#2 (optimized)
[959557.665] 90 37 00 Chn# 1 Note Off G-2 (optimized)
[959557.665] 90 38 00 Chn# 1 Note Off G#2 (optimized)
[959557.665] 90 39 00 Chn# 1 Note Off A-2 (optimized)
[959557.667] 90 3a 00 Chn# 1 Note Off A#2 (optimized)
[959557.667] 90 3b 00 Chn# 1 Note Off B-2 (optimized)
[959557.669] 90 3c 00 Chn# 1 Note Off C-3 (optimized)
[959557.669] 90 3d 00 Chn# 1 Note Off C#3 (optimized)
[959557.671] 90 3e 00 Chn# 1 Note Off D-3 (optimized)
[959557.673] 90 3f 00 Chn# 1 Note Off D#3 (optimized)
[959557.673] 90 40 00 Chn# 1 Note Off E-3 (optimized)
[959557.673] 90 41 00 Chn# 1 Note Off F-3 (optimized)
[959557.675] 90 42 00 Chn# 1 Note Off F#3 (optimized)
[959557.675] 90 43 00 Chn# 1 Note Off G-3 (optimized)
[959557.676] 90 44 00 Chn# 1 Note Off G#3 (optimized)
[959557.676] 90 45 00 Chn# 1 Note Off A-3 (optimized)
[959557.678] 90 46 00 Chn# 1 Note Off A#3 (optimized)
[959557.678] 90 47 00 Chn# 1 Note Off B-3 (optimized)
[959557.680] 90 48 00 Chn# 1 Note Off C-4 (optimized)
[959557.680] 90 49 00 Chn# 1 Note Off C#4 (optimized)
[959557.682] 90 4a 00 Chn# 1 Note Off D-4 (optimized)
[959557.682] 90 4b 00 Chn# 1 Note Off D#4 (optimized)
[959557.685] 90 4c 00 Chn# 1 Note Off E-4 (optimized)
[959557.687] 90 4d 00 Chn# 1 Note Off F-4 (optimized)
[959557.687] 90 4e 00 Chn# 1 Note Off F#4 (optimized)
[959557.687] 9f 4f 00 Chn#16 Note Off G-4 (optimized)
As you can see all the CC are set to zero but on the controller all the pot are at half turn (12.00 o’clock position)
As i turn a pot a little the value jump immediately to the real value.
that’s why i ask help about a programming solution of this problem
like this
unsigned char i;
unsigned char MyArray[num_ains];
for (i = 0 ; i <= num_ains ; i++) {
MyArray[(i)] = MIOS_AIN_Pin7bitGet(i);
}
The problem for me is where i can put this code.
At this time, everytime i turn on the controller, it not reflect the current pot position so for the musician is impossible to know what are the current synth setting.
Of course, with SNAPSHOT_AT_POWERON it is intended to send the current pot and button positions, otherwise this function wouldn’t really make sense (like you are saying).
If only 0x00 values are sent, it seems to be a bug!
I will fix this soon.
Btw.: the MIDIbox64 firmware is assembly based, coding in assembly is difficult and error prone.
Thats one of the reason why this function doesn’t work - I have to try and fix it by myself.
Btw2.: MIOS32 based projects are programmed in C and C++, so that such bugs are less likely
For the buttons (DIN), the situation is different.
The solution is not valid but i think this problem is in the nature of momentary switch.
The momentary switch don’t have a memory or a continuous value (from 0-1-2-3… to 127 like the pots)so they must always be used to change value.
This is true for a momentary button, especially if the toggle function is used, as the state (on or off) is stored in software.
A workaround would be to store a snapshot before power-off (press&hold SNAPSHOT button for two seconds), and to recall the snapshot after power-on (press the SNAPSHOT button shortly)
But if a “real switch” is connected instead, the state is stored “mechanically” and therefore can be recalled after power-on without a manual snapshot (if you are using the new firmware)
The solution is wire the button like a pot on AIN so the midibox64 can read the value 0(OFF) or 127(ON).
In this case the midibox64 reflect the real position of buttons.
No, it would be the same problem - you would have to store the state with the SNAPSHOT button.
But just to be sure: when you are speaking about a “momentary switch”, to you really mean a switch like this one:
could it be that the same bug made it into the MB64e as well? Because I also get all the CC messages set to zero every time I switch the box on (with snapshot_at_poweron enabled).
There is only one small problem left: in the middle of the (correct) snapshot values is some sysex data and two pitchbend values (-8192 at Ch. 9 and 13). I don’t know were that comes from, maybe it’s a configuration mistake on my side. This was in version 2.2d as well.
But honestly this is not much of a problem in my case.
Would be a problem to have an electric throw / Edrum 16ch / That I would like to set per channel volume but do not know how. In principle, it can be Midibox64-but how?
Or something else you can give me a solution?
A Yamaha PSR-300 synthesizer controls the drum. And one or two smaller drum sound hangerővelkellene to speak! There are some simple circuit for this? Louis Regards from Hungary!