Closed yatli closed 3 years ago
C:\Users\Yatao\Documents\Arduino\hardware\MIDICtrl20_MegaCommand\avr\cores\megacommand\MD\MDMessages.cpp:214:57: warning: left shift count >= width of type [-Wshift-count-overflow]
uint8_t MDMachine::get_model() { return model &= ~(1 << 17); }
uint8_t MDMachine::get_model() { return model &= ~(1 << 17); }
Bit 17 is set as tonality. So we must clear it when returning model type ??
Chain write on a tight time budget result in off-beat tracks. The problem goes away if I stop/restart playback.
Yeah this one is on the list.
LEV of all tracks stuck at 127 on chain write
This is expected behaviour. CONFIG -> MACHINEDRUM -> NORMALIZE. (LEV is boosted to 127, and VOL is lowered to compensate.)
uint8_t MDMachine::get_model() { return model &= ~(1 << 17); }
Bit 17 is set as tonality. So we must clear it when returning model type ??
uint8_t return type will automatically clear that
nvm, this should be fine.
This is expected behaviour. CONFIG -> MACHINEDRUM -> NORMALIZE.
I see. I think I hear the difference because I have an LFO on VOL -- should turn normalization off.
uint8_t return type will automatically clear that
good point.
I see. I think I hear the difference because I have an LFO on VOL -- should turn normalization off.
The is normalisation code should scale LFOs accordingly, but i think the relationship is not linear so there may be some differences.
11 void MDMachine::scale_vol(float scale) {
12 DEBUG_PRINT_FN();
13 params[MODEL_VOL] = (uint8_t)((float)params[MODEL_VOL] * scale);
14 if (params[MODEL_VOL] > 127) {
15 params[MODEL_VOL] = 127;
16 }
17 if ((lfo.destinationParam == MODEL_VOL) && (lfo.destinationTrack == track)) {
18 params[MODEL_LFOD] = (uint8_t)((float)params[MODEL_LFOD] * scale);
19
20 if (params[MODEL_LFOD] > 127) {
21 params[MODEL_LFOD] = 127;
22 }
23 lfo.depth = params[MODEL_LFOD];
24 }
25 }
26
27 float MDMachine::normalize_level() {
28 DEBUG_PRINT_FN();
29 if (level == 127) {
30 return 1.0;
31 }
32
33 float scale = (float)level / (float)127;
34 level = 127;
35
36 scale_vol(scale);
37 return scale;
38 }
Seems like the timing issue only occurs when MIDI tracks on grid 2 are loaded.
3ad60ec
Timing feels good now. Can you confirm @yatli
Save results in wrong kit name
In X.04 with trig chain of >=3 tracks, sometimes one of the tracks is double-triggered (b-boom)
I can't replicate these.
I also cant replicate your merge bug with GND-X machines.
I can't repro the trig chain problem now.
Another bug -- chaining while playing result in wrong automation -- I have a track without slides, but chaining to it result in a knob being modulated from 0 to 127 and back again rapidly.
LFOTrack ?
oh didn't thought of that. But when I stop/start it's gone
Can you replicate the chain movement that got you in to the state?
@yatli
/Applications/Arduino_nightly.app/Contents/Java/hardware/MIDICtrl20_MegaCommand/avr/cores/megacommand/CommonTools/RingBuffer.h:111:16: error: invalid conversion from 'volatile void*' to 'void*' [-fpermissive]
memcpy(buf + wr, src, s * sizeof(C));
~~~~^~~~
?
Add -fpermissive
to g++ flags
FYI current arduino platform.txt options:
compiler.cpp.flags=-std=gnu++1z -c -Os {compiler.warning_flags} -MMD -Wno-attributes -Wno-write-strings -fpermissive -fno-exceptions -fno-threadsafe-statics -fno-rtti -ffunction-sections -fdata-sections -flto=jobserver -Wl,--gc-section,--defsym=__stack=0x8021ff,--section-start,.data=0x802100,--defsym=__heap_end=0x80ffff,--relax -I{build.core.path}/Midi -I{build.core.path}/GUI -I{build.core.path}/CommonTools -I{build.core.path}/Elektron -I{build.core.path}/MD -I{build.core.path}/MidiTools -I{build.core.path}/Sequencer -I{build.core.path}/MNM -I{build.core.path}/PageTools -I{build.core.path}/MDSketches -I{build.core.path}/MDPages -I{build.core.path}/A4 -I{build.core.path}/SPI -I{build.core.path}/Wire -I{build.core.path}/Adafruit-GFX-Library -I{build.core.path}/Adafruit_SSD1305_Library -I{build.core.path}/SdFat -I{build.core.path}/SDCard -I{build.core.path}/MCL
nice
Converted the X tunnel song to MCL -- timing is good. Also tight chain writes are robust! 🎖
Trying to extract that project for you via MegaCom:
MegaCom behavior is interesting -- matches the design goals -- more bandwidth on simpler pages (17KB/s on MIXER), and "nicer" on fancy pages (7KB/s on GRID)
Screensaver = 30KB/s
hmm I still cannot activate chain mode
Haven't even had a chance to look at megacom yet. you'll need to recreate the binaries because last time I tried they didnt work.
I'll be heading off for a few hours. back later tonight.
hmm I still cannot activate chain mode
what do you mean?
Set row 0 to chain to row 1, manual Chain write row 0, expecting it to jump to row 1 after playback Not jumping, not displaying the estimated jump time below current time
there used to be a chain bug on row 0. maybe it came back.
Tried row 1 no banana
Did you set chain mode to AUTO
Loops need to be greater than 0 per slot
@yatli can you double check and report back.
⏳
Woke up
Wake up Samurai, we've got a firmware to burn.
Just tested -- chain update on any row, loop=1, row=next, cannot activate. Side effect is, kit name is lost after the update
Chain mode ?
Yes, the button 3 menu, use encoder3 to select all tracks, set row to next, set loop to 1, release button 3 -- kit name is now blank.
No i mean... from grid page.. hold shift 2. Set CHAIN mode from MANUAL to AUTO
It works! AUTO never worked for me before -- I was sticking with MANUAL all along
haha 😆
I think MCL 3.10 is done. I've updated the changelog.
That means it's time.
Yahoooo
preparing binaries...
Ready to go here. I sent you a message elsewhere on github for your verification .
okay tested here.
🚀
Going live...