Magic MIDI Delay

The intention of this new board is to publish and to document “small but useful” MIOS applications. This isnt my private board, everbody is welcome to introduce his own creations and modifications here! :slight_smile:

The toy for this weekend is a MIDI delay which works different from the existing ones, because it allows to route the delayed notes to different channels. In this way very interesting sequences can be realized without much effort. My favourite configuration consists of four instances of virtual synthesizers which are playing the same base sound, but with slight modifications (Cutoff-frequency, octave, volume, panorama).

4 independent delay lines are available, they can be clocked by an internal BPM generator or via external MIDI clock (when BPM is set to zero)

Here a short demo tune:

http://www.midibox.org/mios/magic_midi_delay_demo.mp3

However, this is just a (not well mixed) example - most important point is that I had a lot of fun during live-playing! :slight_smile:

Link to the application:

http://www.ucapps.de/mios_download.html

(search for “magic_midi_delay”)

The source code is also a good example, how to interact with the LCD, buttons, pots, encoders, LEDs

Minimal configuration: one core module

parameters can be controlled via MIDI (see main.asm)

Options: one LCD (character or graphical) which shows the parameters

30 buttons to control the parameters directly

alternatively 8 encoders to control delay and transpose value of 4 channels and one jog wheel to control the BPM

alternatively 14 pots or faders to control the parameters directly

mods are welcome!

Have fun! :wink:

Best Regards, Thorsten.

Hey T…

Just been having some fun with this lil app - very nice :wink:

I’m trying my best to impletment it in my current setup - hard with one midi i/o and a midi merger handling a keyboard, 2 midiboxes (3rd on com) and a SID!

So, i was thinking - could it be possible to just have a single pot connected direct to the core just controlling the bpm value - as i cant see this is implemented via ext midi in main.asm. Then mebbe just have 3 seven-digit LEDs to display the bpm and no LCD - possible? I’d then whip up a logic enviro to control all the other params and display info…:wink:

Would be a great primer to MIOS - 1 core, 1 pot, 3 7digit LEDs…and if ur a logic user an enviro to go with it…:slight_smile:

Great stuff!

Dan

hmm, it appears the zip doesnt contain the project file for MPLAB so i cant edit mmd_init to change the AIN tag to umuxed mode and then assemble a new hex file to test etc…

Would this be correct:

;; initialize the AIN driver 
   movlw   0x01     ; use 1 pot 
   call    MIOS_AIN_NumberSet 
   call    MIOS_AIN_UnMuxed   ; don't service multiplexer interface

the ain.inc file could be left as is i guess as pot 1 is already assigned to bpm…

Cheers…

Dan

Hi Dan,

yes, this should work :slight_smile:

For assembling you have to create a new project and to insert the “main.asm” file into the source list (nothing else).

Alternatively you could also start mpasmwin (the assembler) directly. It can be found somewhere under /Program Files/MPLAB IDE/MCHIP_Tools

I prefer this way, because it simplifies the update procedure: push the assembler button, run the convert script, upload via MIDI-Ox.

Best Regards, Thorsten.

;D

Hey T…

Yup, project made and sysex’ed all fine :wink: workin just dandy with 1 pot controlling BPM value…

On to the logic enviro now :wink: might have a problem fitting this in my midi setup tho, havnt got much i/o atm - even having just made a midi merger and gameport midi interface. Still, i’ll see how i get on and post the results as and when ;)…

Best…

Dan

Okay…

A simple Logic macro made for Magic MIDI Delay:

And the LSO:

http://www.notapplicable.co.uk/mbhp/mmd.lso

Requirements:

1x18F Core

1x10k Pot (Control BPM value)

Here’s the syx file for the adaption of MMD to a single pot if u dont wanna go in MPLAB and rejig the code urself:

http://www.notapplicable.co.uk/mbhp/main.syx

Njoi :wink:

Dan

hmm, just realised an LCD would be needed to see the BPM value as u adjust the pot…:confused:

T, could 3 seven-segment LEDs be used instead? If so, could ya give us a few pointers with the code :wink: Or perhaps, make the BPM pot transmit MIDI so it could drive a text fader with the bpm values in logic?

Best…

Dan

Hi Dan,

thanks for the additions :slight_smile:

Yes, a LED digit display could be used. A demonstrator is still in the queue :wink:

A SysEx message which contains the value could also be possible, but maybe it’s better just to send out a CC or NRPN and to visualize the value with Logic? You can use the MIOS_MIDI_TxBufferPut function to send out values.

Best Regards, Thorsten.

Hey T…

Yes, a LED digit display could be used. A demonstrator is still in the queue

Great!

…but maybe it’s better just to send out a CC or NRPN and to visualize the value with Logic? You can use the MIOS_MIDI_TxBufferPut function to send out values.

Yup, having it send out a CC or NRPN would be great but i’m abit at a lost with what to do with that MIOS_MIDI_TxBufferPut function you mentioned… ???

Thanks…

Dan

meanwhile…

Had enough bits layin about to knock up a lil box, so y not eh…:wink:

Peace…

Dan

Oh man, it’s time to dedicate an own gallery page for your designs :wink:

Well made! :slight_smile:

Best Regards, Thorsten.

That sounds cool! I have done a similar thing with my home brew sequencer programmed in Csound. Another fun feature to add is attenuation controls for continuous controller messages. For instance, lets say the midi delay rings out 4 times, to four channels after the main one. In addition to sending the note, it can send CC signals at the same time that are controlled in relation to the CC signals sent with the first note, but scaled by an attenuation factor. These can be hooked up to filter cutoff, resonance, what have you. This way you can do hella cool sounding things like have resonance increase while filter cutoff goes down with each tap. The data would look like this:

  • first note, bundled with say two CC messages,

  • first delay, same note, velocity is v * velatn, and CCs going out are the first two * atnfactor for each.

Another trick we do that sounds awesome is attach controls for each particular note so that the delay level and time can be different for each step. It sounds very cool to do the above with say beat 1 delaying heavily on dotted eights, while beat 1& delays less heavily with different CC vals and delay on eights. The two mix up together for a really cool effect.

Iain

What do you mean with Csound? This/?

Hiya,

I was keen to try the application out, but the download link is not working. Has anyone made a front panel for this yet?

Thanks,

John

magic_midi_delay_v1_5.zip :slight_smile:

Thanks m8 :}

Also, I know its not about the midi delay, but I recall seeing an mios LFO box which would send CC#'s but couldnt find it anywhere. Do you recall it? Know where the info is at??

Cheers,

John

I think you mean Analog Toolbox :slight_smile:

Am I missing something or is there nowhere to define the SRs and pins for the buttons? I can see where to connect up the encoders I think (odd the SR’s start at 13, are the precious ones for the buttons??). Would the intended use be 9 encoders and 30 buttons or would 9 encoders (8+jog) be enough and the best config?

Thanks!

John

In the toolbox or in the delay?

Sorry I should have been more specific, in the delay :slight_smile: