Hello ,
Is it possible to record the generated Arpeggio notes by the MIDIpal in a sequencer such as Cubase ?
Yes, connect the MIDI out of the MIDIpal to the MIDI in of a MIDI interface connected to your computer.
Hi,
using a MidiREX here to record sequencr notes from the MIDIpal, this way :
master sequencer > MIDIpal > MidiREX
I’m having hang notes problems when playing back sequences from the MidiREX.
I tried to trace the problem and finally found that MIDIpal send its last noteOff AFTER receiving the clock stop, so MidiREX never record that one…
That happen 30% of the times in my system, maybe that’s just me.
Please, could someone confirm this ?
I confirm that the MIDIpal attempts to send the clock stop message before stopping pending notes.
I can change that.
that would be cool !
thanks Olivier!
ps: I love the MIDIpal, especially since the last 1.4 firmware update : the note clocked sequencr is really great.
While your at hanging notes…and maybe feel like adressing some more… I use the scale app a lot and changing the transpose while playing sequences in it also tends to produce a lot off hanging notes. Especially since the new CC supported firmware this is a cool feature. I use a CC LFO from the MidiAlf to change the transpose function while playing sequences. This generates really nice progressing sequences.
Sorry if i have brought this up before, maybe i did i’m not sure.
Fixed (but not tested - don’t have access to a MIDIpal at the moment).
just tested your new build and… argh, sorry, it behave the same as before
Hey, sorry, I misunderstood your problem!
I thought that the MIDIpal was generating the master clock too (in which case, the problem can be solved with the above patch).
When the MIDIpal is used as a slave there’s no way of fixing this. How could it be possible? The MIDIpal doesn’t know in advance it’s going to receive a stop message, so it cannot stop the pending notes before the stop message is received…
ah ok, I guess it’s because the external clock stop is written without processing…
I’m not very comfortable with c++ but i had a look at the 1.2 firmware code and wonder if it would work :
in midipal.cc, there is a call to midi_parser.PushByte(byte)
which seems to be the place where the incoming clock_stop can be processed,
maybe with a call to app.FlushQueue before writing the clock_stop out ?
Actually, a possible fix would be to prevent the Stop message from behind forwarded in Arpeggiator::OnRawMidiData
And then recreate it manually in Arpeggiator::OnStop
cool, thanks for the help !
i did what you told, here it is :
void ShSequencer::OnRawMidiData(
uint8_t status,
uint8_t* data,
uint8_t data_size,
uint8_t accepted_channel) {
// Forward everything except midi_stop and note on for the selected channel.
if (status = (0x80 | channel_) &&
status != (0x90 | channel_)) {
app.Send(status, data, data_size);
}
}
void ShSequencer::OnStop() {
if (clk_mode_ != CLOCK_MODE_INTERNAL) {
Stop();
//midi_stop send at last :
app.Send(0xfc,0 ,0);
}
}
it’s tested and working ok for me.
here is the .syx file :
So happy you fixed that yourself!
I’m also happy to have learn something.
Many thanks for sharing your code.