Jump to content

Magic MIDI Delay


TK.
 Share

Recommended Posts

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! :)

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! :)

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! ;-)

Best Regards, Thorsten.

Link to comment
Share on other sites

  • 2 months later...
  • Replies 69
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Hey T...

Just been having some fun with this lil app - very nice ;)

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...;)

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...:)

Great stuff!

Dan

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Hi Dan,

yes, this should work :)

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.

Link to comment
Share on other sites

;D

Hey T...

Yup, project made and sysex'ed all fine ;) workin just dandy with 1 pot controlling BPM value...

On to the logic enviro now ;) 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

Link to comment
Share on other sites

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

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

Best...

Dan

Link to comment
Share on other sites

Hi Dan,

thanks for the additions :)

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

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
Guest IainDuncan

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

Link to comment
Share on other sites

  • 1 year later...
  • 1 year later...
  • 2 months later...

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

Link to comment
Share on other sites

Ahh yeh, it's kinda hardcoded...

You could move it around a bit though. The idea is that the buttons have to be in one series. By default it's button 1-30, and depending on which button it is, it jumps to the correct menu using the table below:

;; --------------------------------------------------------------------------
;;  This function is called by MIOS when an button has been toggled
;;  Input:
;;     o Button number in WREG and MIOS_PARAMETER1

USER_DIN_NotifyToggle
	movwf	TMP1			; save number of button in TMP1

.........snip........

	;; branch depending on pressed button
	movf	TMP1, W
	JUMPTABLE_2BYTES 30	; max. 30 entries
	rgoto	MMD_BUTTON_Delay0Down
	rgoto	MMD_BUTTON_Delay0Up

So if you wanted the encoders attached first, then maybe the first button might be on pin 8, then pin 9, pin 10, etc until pin 38, you could just subtract the 8 from the TMP1 variable before the table jump, and it'll work OK.

What'd you have in mind?

Link to comment
Share on other sites

  • 3 weeks later...

Hey M8,

Sorry for the long delay! excuse the bad pun :)

Im not sure on what I want to do, looking for some suggestions from someone who knows more about it or has used it.

Basically I cant imagine how the interface would normally work ie is there a menu encoder, buttons under the screen like in the sid, would/could you use the 30 buttons and 8 encoders or whatever (and would that make sense??). How would it be laid out on a panel ie would 3 rows of 10 buttons and a screen be a good layout or are the buttons grouped by function etc??

I really want to buildone of these and ive got all the hardware ready, but I dont want to build a case etc not knowing how it would work.....

Obviously looking at the code hasnt revealed inspiration for a layout for me...Suggestions???

Cheers,

John

Link to comment
Share on other sites

Has anyone got any suggestions on the panel layout for this one? Ive got all the hardware ready to go but im not too keen on drilling into a box yet until I have an idea of the layout, which isnt clear to me from the software.

What I need to know is if there are particular menu controls (ie buttons for screen, menu encoder etc) and if there are logical groupings of the 30 buttons, and if the 8 encoders would replace or compliment the 30 buttons.

Anyone built one? If so got any suggestions, pictures, FPD files?

Thanks,

John

Link to comment
Share on other sites

Ok then, ive gone out on a limb and made a panel design for people to comment on as to if it would be enough to control all aspects of the MMD. Does anyone know what the 8 encoders would control and if they are needed to be added? This design is using all buttons only so all the holes are for momentary switches. I would have liked to add LED's too but im not sure as to what they may indicate other than that a button was pressed. It is also for a 20x2 LCD,

Would this configuation do? Any suggestions?

Cheers,

John

PS: This design was measured up for this enclosure (can be ordered easily in Australia and maybe elsewhere) http://www.jaycar.com.au/productView.asp?ID=HB6130&CATID=5&keywords=&SPECIAL=&form=CAT&ProdCodeOnly=&Keyword1=&Keyword2=&pageNumber=&priceMin=&priceMax=&SUBCATID=644

MMD_Prototype.zip

795_MMD_Panel_Prototype_giff909e3c7639c3

Link to comment
Share on other sites

Hi All,

Just incase anyone was interested I thought I'd post a couple of pics of the MMD so far. Not sure if its going to work, but it powers up and the screen comes on. Still have to cut the holes for the midi out and thru and wire up all the front panel buttons to the DIN board.

All the best,

John

805_MMD_1_jpgd5fc434d0ce6fbd3795befc8c48

807_MMD_2_jpg340eb39268252e8368ccc5389cc

809_MMD_3_jpgf765387aaecb7e4f35f230f1760

811_MMD_4_jpg115a91b88acb5dd7a941d1da82b

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...