jjonas

Question about MIDIO128 V3 & midi file player

67 posts in this topic

Hi,

I would need a midi file player that I'd use to control various pieces of MIDI equipment live, basically to play the synth/keyboard stuff for a three-piece band (gtr/vx, bs, dr). I would make the files on my computer and save them on an SD card to be played on the player later. It seems MIDIO128 V3 has this feature ("integrated MIDI File Player"), but it seems like it's mostly about other stuff, and I don't know (yet :) if I'll have use for the other stuff.

So the question is, does it make sense to build this just for the midi file player, or are there simpler/cheaper DIY hardware solutions around that you know of? If not, and if I'm interested only in the midi file player, what can I leave out of the MIDIO128..? DIN, DOUT, optional controls (J5A & J5B)? That would leave SD card, LCD and J10 controls. Is this correct?

Share this post


Link to post
Share on other sites

Found this: http://lehmayr.de/e_mrmidi.htm

It looks simpler than MIDIO128, anyone have experience/opinion on it..? Offhand it seems the challenge is to flash the the Atmega chip. Some guy has a version of this running on an arduino, that would make it a lot easier, but unfortunately he's not sharing the code, and doesn't seem like he's answering his viewers' questions either.

Here's the "pipeorganphil" that he's referring to (sorry, the forum doesn't allow me to add more clickable URLs or media):

www.youtube.com/watch?v=YNriw8VyvKM

Could be the same thing that's been advertised here:

www.youtube.com/watch?v=5L6oicVUcvQ

..and sold as a kit for £195(!) here:

http://sdmidicontroller.com/

I think I could use arduino & USBtinyISP to program the chip, if I can translate mrmidi's programming instructions into an avrdude command..

Nonetheless, I would still be interested in an answer to my original question on what I can leave out of the MIDIO128 if for some reason I decide to try that way.

Share this post


Link to post
Share on other sites

I'm also new to the MidiBox forum. I have been looking for a cheaper alternative to the “SD Midi Controller†and the MidiBox was what I wanted to try out. And it has the USB and OSC functions that have interested me for some time now.

I built the LPC_17 unit and added the LCD (J15a), SD card (J16), and Control surface buttons (J10), loaded the Midio128 code, and with a few bumps in the software revisions, it now plays my Midi files just fine. You don't need the Din or Dout boards at all. The player is very basic and doesn't have any other functions other than PLAY, STOP, and FILE select buttons. It also has a SINGLE and PLAY-ALL function but this is about it. I suspect that this feature was added to see now many people would use it. And I don't know if it supports multiple tracks on Midi Type 1 files. Of course these can be converted to type 0 files which only supports 1 track. Midio128 does have a lot of areas that I would like to see expanded on but for the cost, it works for me.

The hardware that goes into the SD Midi Controller would be $50usd or less but it does have all the features one would need in the software which is what they are selling. About 7 years ago I bought one as a kit for about that same cost you show and had to make a case for it. Many years before I believe I saw the software code being available at one time but when I bought my unit, I couldn't find it on the web site. It looks like the code is now available again but I am not sure for how long.

Pete

Share this post


Link to post
Share on other sites

Thanks for your answer!

Share this post


Link to post
Share on other sites

I suspect that this feature was added to see now many people would use it.

Exactly!

Initially I developed the MIDI file player for MBSEQ to play premade tracks in parallel to the step sequencer tracks.

It supports mode 0 and 1 (and now even invalid formats ;-), which means that multiple tracks can be played in parallel.

Timings are very accurate, because the sophisticated MIDI event scheduler of MBSEQ is used.

And it inherits features like external MIDI clock synchronization, song position synchronization (e.g. with DAWs), and even a tap tempo function.

It could also output lyrics...

But these functions are not directly accessible, since nobody asked for this (yet).

Usually I prefer to wait for such requests - in best case from 2..3 different users, so that we are able to define the best fitting user interface together.

So:

I would need a midi file player that I'd use to control various pieces of MIDI equipment live, basically to play the synth/keyboard stuff for a three-piece band (gtr/vx, bs, dr).

Which button functions would you need for this purpose?

Note: at J10 we've already 6 buttons + 1 encoder, I could provide additional button inputs at J5 so that no shift register is required.

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

The pipeorganphil player and the SDMIDIcontroller are the same. Think it only plays one type of MIDI file, which may or may not be a problem for you. Without a doubt MIDIBox will be more flexible and (obviously) better.

Think I saw a method to program the chip for the pipeorganphil and SD using just Arduino and breadbord, but don't have it to hand at the moment. Sure you can Google it.

Pete, I recognise your name from MMD posts, is absolutely correct, just fit the SD card, SCS and LCD. No need for any DIns or DOut boards.

I'd vote for the Lyrics output option especially karaoke style, it would be great.

Share this post


Link to post
Share on other sites

The SDmidicontroller homepage boasts these "unique" :-) features:

1. In addition to just Play, you can Transpose your original midi track by + or – 24 semitones to a maximum 2 Octaves either way.

2. Tempo of the original midi file can also be changed + or - 15 steps. Eg. A 120bpm track could be played up to 75bpm faster or slower. A 250bpm track could be taken up to 325bpm or down to 175 bpm.

I couldn't find them offhand having already been implemented in the MIDIO128 page. These would be really handy, there's always going to be issues about tempo and key changes when you rehearse new (or even old :-) stuff with the band. At present I'm plain-and-simple recording backgrounds and keyboard melodies on a multitracker, so if there's going to be tempo and key changes later on, I will have to record all the tracks again.

As to tempo change, SDmidicontroller's 5bpm step size seems fine, though offhand one could think that it isn't harder to implement 1bpm step size..? If that's the case, I'd go for 1bpm step size.

Also if I've understood correctly, there's two midi file play modes, ALL and SINGLE, ALL playing all the files in the SD card root (on repeat or not?) and SINGLE playing the selected file in a loop. If this is correct, it would be good to have a third mode that would just play the selected file, and stop when the file is played - i.e. no loop. Or maybe there could just be a separate loop flag, which would apply to both ALL and SINGLE..?

Probably these won't require any new hardware, you can use the existing CS for them..?

How does this sound?

Edited by jjonas

Share this post


Link to post
Share on other sites

It wouldn't be so difficult for me to add a transpose function for selectable MIDI channels.

Also the Karaoke function can be realized (just a special display mode).

Changing the tempo: no problem as well, since the MIDI scheduler can be clocked at any BPM rate (therefore it's also possible to synchronize the MIDI player with an external clock)

And I guess that you would like to scrub through the tracks (fast forward/backward, e.g. with the rotary encoder), which is already possible as well - just not accessible ;-)

Also if I've understood correctly, there's two midi file play modes, ALL and SINGLE, ALL playing all the files in the SD card root (on repeat or not?) and SINGLE playing the selected file in a loop. If this is correct, it would be good to have a third mode that would just play the selected file, and stop when the file is played - i.e. no loop. Or maybe there could just be a separate loop flag, which would apply to both ALL and SINGLE..?

Currently ALL plays the files one by one, and restarts after the last file has been played. And single plays the song only once.

Yes, it would be possible to provide a separate loop function.

Probably these won't require any new hardware, you can use the existing CS for them..?

yes...

But for live usage it's important that all these functions have a dedicated button, so that you can do the changes quickly with one hand, right?

Anything else?

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Also if I've understood correctly, there's two midi file play modes, ALL and SINGLE, ALL playing all the files in the SD card root (on repeat or not?) and SINGLE playing the selected file in a loop. If this is correct, it would be good to have a third mode that would just play the selected file, and stop when the file is played - i.e. no loop. Or maybe there could just be a separate loop flag, which would apply to both ALL and SINGLE..?

One of the changes that I asked for was implemented by Thorsten in revision 3.009 of Midio128 in post This change involved just as you ask to stop playing at the end of the song, but not as an option. Guess this change hasn't been described very well in the documentation. In fact very little of the operation of the player is described which is why I wanted to try it and see how it worked.

All I want to do with the player right now is load SYSEX messages to a drum machine. The current operation of the buttons is perfect for this as it is designed. All I have to do is make sure that the SINGLE play mode is defined in the DEFAULT configuration file. The front panel on the unit will have only 3 buttons (Soft 1,2,and 3) and a LCD display. When Midio128 powers up it allows you to select the file name using Soft 2 & 3 buttons and starting the playing by pressing the Soft 1 button. If you want to pause the playing in the middle of the file, just press the Soft 1 button again. Of course you wouldn't want to do this in my case.

Wanting the functions found in the SDMIDIcontroller would be great and I even thought that adding software to the encoder to change the TEMPO when on first menu panel could be added easily since it doesn't do anything right now anyway. And if it was able to record a Midi file then it could replace the other units all together. By just holding the SHIFT button the normal PLAY button (Soft 1) could be changed to a REC function. All I use on my home organ MDF-2 midi filler is the song select buttons, Play, Record and Tempo functions. And I want to replace the MDF-2 player with something else since I have had problems recording on the 2.25 disks.

Pete Knobloch

Share this post


Link to post
Share on other sites

For the record function I could just re-use the "MIDI file export" function of MBSEQ to directly stream incoming MIDI events into a .mid file - so: confirmed that it will be available. :)

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Boy Thorsten, I am really surprised at your willingness for functional changes/additions. Its refreshing.

While we are talking about changes, I was wondering if you could also add sending the START/CONTINUE/STOP messages when the mode of the player is changed. My organ system uses these commands for saving and restoring stop states when the player is starting a new file or just continuing the playing from a PAUSE state. Whenever the MDF-2 player is put into the STOP or PAUSE mode it sends a Midi STOP command. If the player was stopped in the middle of the file (PAUSE mode) and the file is made to continue playing the file, than a Midi CONTINUE command be sent out before continuing sending the file data. If a new file is selected (file pointer is at start of the song) then a Midi START command would be sent. My MDF-2 Midi Filler supports this function which works well with my organ. But when I use other players I have problems with them not supporting the Midi CONTINUE command which tells my organ system to restore the blind stops to the last playing states so the song can continue with the last stops set in the Midi file. I don't know now many people would use this but it might be best to also include an option for supporting this type of function since sending START might cause other issues with other Midi equipment. This change would make me very happy indeed and would replace all of the functions that are used with the MDF-2 player. I also know a few other people looking for a DIY Midi player that uses SD cards for a reasonable price.

Pete

Share this post


Link to post
Share on other sites

Hi

I'm going to ask about this: "..multiple tracks can be played in parallel."

Obviously with the MBSEQ I can have different tracks outputted to different ports, but is this feature extended to

the midi file player?

For example, is it possible to route different midi channels of the midi file to different output ports?

Or maybe there is another way to do it?

Most of midi file players out there have only one independent midi output port,

The MIDIBOX platform up to twelve (!?), great stuff :)

Share this post


Link to post
Share on other sites

Boy Thorsten, I am really surprised at your willingness for functional changes/additions. Its refreshing.

you're welcome! For me it's nice to see, on which way functions can be re-used without much effort at my side, that I initially developed for different purposes. :)

And of course it's always a nice challenge to create something which matches the needs of multiple users.

While we are talking about changes, I was wondering if you could also add sending the START/CONTINUE/STOP messages when the mode of the player is changed.

Ok, I will make it optional and consider the possibility to define the MIDI events which should be sent on the different "states" of the player. This should work at your side.

For example, is it possible to route different midi channels of the midi file to different output ports?

Or maybe there is another way to do it?

Most of midi file players out there have only one independent midi output port,

The MIDIBOX platform up to twelve (!?), great stuff :)

It's possible to send the same MIDI events to selected ports in parallel.

The idea is, that then you would do the MIDI channel filtering at the receiver side (your synths)

But it wouldn't be a big problem to add a channel filter at the transmitter side (MIDIO128) as well in order to save some MIDI bandwidth.

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Hi

I'm going to ask about this: "..multiple tracks can be played in parallel."

Obviously with the MBSEQ I can have different tracks outputted to different ports, but is this feature extended to

the midi file player?

For example, is it possible to route different midi channels of the midi file to different output ports?

Or maybe there is another way to do it?

Most of midi file players out there have only one independent midi output port,

The MIDIBOX platform up to twelve (!?), great stuff :)

I wasn't thinking about PLAY/REC multiple ports at all. IMO-This type of feature complicates the setup considerably and I don't think this type of function really belongs in the Midio128 application. This software is usually used for receiving Midi messages to control outputs or having switch contacts create Midi messages (ch1-16) over 1 port. Being able to play or record this information back to the Din/Dout boards would be a plus, but different messages to multiple ports at the same time – NO.

Respectfully, Pete

Share this post


Link to post
Share on other sites

Thank you TK for your clarification and willingness to help, I had this doubt/hope the possibility was already there.

Pete I'm sorry but my question wasn't really related to yours, just another one.

Does this multiple outs thing belongs to Midio128?

I don't know, maybe not, but I chimed in believing to have similar needs to the OP ones, an affordable, small midi player with multiple outs.

I'm curious, what's your opinion about lyrics output, it belongs?

I like MIDIBOX also for his modularity which means to me, in a broader sense, freedom, choice and "something which matches the needs of multiple users".

Agree, with choices could come complexity but maybe your firm "NO" was a little bit drastic in this context.

Or maybe yes you're right, a full fledged midi file player doesn't belong at all and, I'd like to add, is the kind of application that deserve a dedicated hardware project, another smaller MBSEQ variant.

TK, Pete don't shoot me :whistle:, just a thought.

Peace and love :)

Edited by ErMangaver

Share this post


Link to post
Share on other sites

Having added MIDI playback to a large roll playing pipe organ a few years ago using older versions of MIDIO128, V3 is so nearly perfect, but recording via the DIns would be a most useful plus for roll playing mechnaical instruments. Some people have built roll scanners and there is debate as to the value of the scans and subsequent re-cuts produced. Playing a roll back on its intended instrument and being able to "capture" the performance as a MIDI file would simplify the archiving process.

Re multiple outs, isn't 4 enough? :D

Share this post


Link to post
Share on other sites

Thank you TK for your clarification and willingness to help, I had this doubt/hope the possibility was already there.

Pete I'm sorry but my question wasn't really related to yours, just another one.

Does this multiple outs thing belongs to Midio128?

I don't know, maybe not, but I chimed in believing to have similar needs to the OP ones, an affordable, small midi player with multiple outs.

I'm curious, what's your opinion about lyrics output, it belongs?

I like MIDIBOX also for his modularity which means to me, in a broader sense, freedom, choice and "something which matches the needs of multiple users".

Agree, with choices could come complexity but maybe your firm "NO" was a little bit drastic in this context.

Or maybe yes you're right, a full fledged midi file player doesn't belong at all and, I'd like to add, is the kind of application that deserve a dedicated hardware project, another smaller MBSEQ variant.

TK, Pete don't shoot me :whistle:, just a thought.

Peace and love :)

I'm sorry about my last post sounding so opposed to your question and I apologize. When I read it I started thinking about how it would be implemented and just thought I would put out a response which may not have been so smart. I don't really know now each track gets assigned to the Midi port in the file, just that it looks like another Midi file that is appended to the end of the last one and that they play in parallel by the player on different ports. With the response from TK it sounds like he can do this mapping at a channel level which might be good enough. My answer was related to a port implementation and I didn't want something like multiple port support to discourage TK from doing some of the simpler things.

BTW-The lyrics being sent to the display is great. You make a good point that it wouldn't really fit as a Midio123 feature. But as a Midi player it does. Good point about the port question.

Pete

Share this post


Link to post
Share on other sites

Sparx, four independent outs? Yes of course.

Pete, you're a nice guy :)

Share this post


Link to post
Share on other sites

Yes, it will be possible to record DIN events - actually I only have to forward the generated MIDI events into the MIDI file recorder. :)

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Currently ALL plays the files one by one, and restarts after the last file has been played. And single plays the song only once.

Yes, it would be possible to provide a separate loop function.

Ok thanks for the clarification. I guess it's up to you to decide whether to implement a separate loop function, I'm happy now as it turned out that SINGLE plays the selected song only once, i.e. without loop.

But for live usage it's important that all these functions have a dedicated button, so that you can do the changes quickly with one hand, right?

You're right, probably 'play/pause', 'stop', 'next' and 'previous' would be useful. Maybe others have ideas for more useful controls (like 'rec'). As to tempo change and transpose, I don't think there's a need for direct live controls, at least not for me; the correct tempo and key would be defined after a few rehearsals, and once it's decided, it sticks (unless we change the singer :-)

Share this post


Link to post
Share on other sites

As I understand it, MIDIO128 was designed for the control of mechanical instruments, from my own experience, I ended up using just the DOuts so being able to record via Dins would take the application to a new level of completeness, perhaps it’s at 14 now!

Adding lyrics, tempo and key change would match any other application/product currently available so why not?

That said, I too am beginning to think that the file player could well be a solo application, what about MIDIBox Karaoke?

File player as above, but with the ability to turn off/on individual channels to MIDI Out ports by pressing a switch with corresponding LED. For what I’m planning, Outs 3 & 4 would be perfect :-)

Core, LCD, SD Card, SCS, 2 DOuts x 4 and 2 Dins x 4?

Share this post


Link to post
Share on other sites

Sparx, sounds like a sweet plan :)

Re-reading the entire thread from the player perspective: lyrics, tempo and key changes, a loop function, a filter/routing function, I see a lot of possibilities.

From a first, yet functional and small midi player (Core, LCD, SD Card, SCS) with lyrics, tempo and transpose functions.

Toward even more hypothetical (not being a programmer I can only suppose :sad: ) advanced configurations where for example with a button matrix it would be possible to recall snapshots of different settings of more advanced functions like loop points and routing.

..now you can definitely shoot me :whistle:

Edited by ErMangaver

Share this post


Link to post
Share on other sites

Toward even more hypothetical (not being a programmer I can only suppose :sad: ) advanced configurations where for example with a button matrix it would be possible to recall snapshots of different settings of more advanced functions like loop points and routing.

we are looping to MBSEQ V4 where something like this could be added ;-)

Today I implemented the MIDI recorder part - it's up & running! :)

For those who want to beta-test: upload this preliminary firmware to your core http://www.ucapps.de/mios32/midio128_v3_011_pre1.zip

From the ChangeLog:


MIDIO128 V3.011 (pre1)
~~~~~~~~~~~~~~~

o It's now possible to record MIDI files!
Press EXIT + first softbutton (under REC)

o Fast Forward and Fast Rewind are now available by pressing EXIT
[/code]

It's currently not possible to set the tempo, we are always recording at 120 BPM in master mode, and at the incoming tempo in slave/auto mode.

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Hi Thorsten,

I tried your beta test V3_011_pre and it records beautifully. As it is recording it outputs a message like OUT2:91???? which is displaying the last command that was received. Along with the message flashing REC on the display which is great but shouldn't the OUT2 message say IN2 since the data is being received from the input port? When I record on Midi IN port 1 is shows OUT1 port.

Something else happened that locked up the MidiBox has to do with the file system processing. I am not sure how I got it into this mode and don't know if what I am going to tell you is 100% correct as to the sequence, but here goes anyway. I recorded 3 files called REC1.mid REC2.mid and REC3.mid. Because I reused an SD card with other files on it, it placed the REC1 file at the head of the directory table and REC2 and REC3 as the last ones. This isn't the problem in fact I understand why this happens. But after I recorded the REC3 file, it played back fine but when it was in the STOP mode I could use the > and < functions and display all 3 files in sequence. I could go between the 3 files multiple times even though REC1 was at the beginning of the list and REC3 was at the end. If I tried to back up too far and display some of the other files in the directory, the display just locked up and I had to do a POR to get it back again. I don't know if I can duplicate this again, just that it happened.

I know that the original player outputs its data to all ports when playing. Was it in the plan to add both the REC and PLAY options to the Router tables so that you can select the patches? I can only assume it is since there was talk about masking channels from the playback function.

Something else I don't understand is the “Def.†selection in the “Rout†tables. All I can think of is that it stands for “Define†and when selected, the table entry is not used. Is this the case?

Another question also has to do with the “Rout†function. I was wondering why there is a 2nd “Chn.†entry following the last “SrcD†entry. I would think that only the first channel value would be needed?

I know I am getting a little anal here but when I first read about the router entries, it confused me with the names of ScrP and SrcD. I would have thought that the SrcD field would have been labeled something like “Dest†for destination.

Pete

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now