Jump to content

Midi File Player/Recorder


kpete
 Share

Recommended Posts

My reason for creating this Midi Player/Recorder (MidiFiler) project was to replace a Yamaha MDF-3 Midi Filer unit that is used on a huge Theatre Pipe organ at "Organ Stop Pizza" in Mesa AZ. http://www.organstoppizza.com/  The organist plays along with specific drum tracks that are loaded into a BOSS drum machine.  The drum machine controls real drums and trap instruments around the large dinning room while the organist plays the large 4/78 rank Wurlitzer Pipe organ.  This provides entertainment for the patrons while enjoying their pizza, beer and ice cream.  They can seat over 600 people at one time in the dinning area and during the winter months its hard to find a table for 6 people.

Some of the design criteria for the Organ Midi player are:


    a) Save data on the newer SD cards.  Not the old floppy disks.
    b) One button to start playing a selected Midi file that doesn't toggle between PLAY/STOP.
    c) Only play back the selected file once and stop.
    d) Buttons or dial to select the song or track to be played/loaded.
    e) Be able to play and record songs in a selected directory that exists on the SD-Card.  This allows   2 or more organists to store their specific tracks in special areas on a single SD-Card.
    f) Include a button to change to the next directory found in the root directory.  Tree directory selection is not needed.
    g) Use a display that is easy to read.  With the unit being inside a special drawer and only visible when wanting to load different patterns, allow the display to be turned off to help extend the life of the display.
    h) Record and play large blocks of SYSEX data packets.
    
I also wanted to use this Midi Player/Recorder for my other organ projects so I included the following:


    i) Be able to select the looping parameters for playing the files.
    j) Be able to change the tempo of the song being played.
    
Needed Hardware:

    LPC17 Core.
    SD card slot for storing the files.
    20 x 2 line display.
    Standard Control Surface (SCS).

 

Software

The software base used for this project was Midio128 V3.019 with a different user interface.  You can't go into the MENU page and most of the Shift functions are missing except for the record and loop functions.  In fact most of the Midio128 software is still operational since that code was not changed and is included in the .HEX file.  So you should be able to configure alternate values by editing the DEFAULT.MIO file which gets created when the SD card is first inserted in the SD-Card reader, but using the project like this was not intended.       

Functions of the buttons and encoder dial.

Soft 1 - PLAY starts playing of the selected file
Soft 2 - PAUSE/STOP the playing of the file.  If in middle of file, PAUSE mode will be shown.
Soft 3 - DIR change directory.  Cycles between the root directory and any other directories in the root.
Soft 4 - REC is a shift function and allows changing the LOOP parameters or recording a new Midi file.
Soft 5&Exit - Next and Previous file select.
Encoder - Changes the Tempo (BPM) as the file is playing or recording.

 

Display OFF Function


For the function of turning off the display, Analog 4 pin on J5B has been changed to a digital input with an internal pull-up.  To turn the display off you just short J5B pin 4 to pin 1 which is ground.  This is connected to a switch that shorts the line when the drawer is closed.  

The path of the files changed are found in the trunk/apps/controllers/midio128_v3/src directory.
The files that were changed are:
    mid_file.c
    mid_file.h
    midio_file.c
    mios32_config.h
    scs_config.c
    seq.c
    
The project.hex file can be found in the midio128_v3 directory in the zip file.

 

midifiler128_v3.zip

 
  

 

Link to comment
Share on other sites

I haven't changed out the hardware at Organ Stop Pizza yet since all of the .SEQ files need to be translated to .MID files.  The plan is to just play the files on the MDF hardware and record it on the MidiBox.  I also want to make sure that the file name sequence found of the SD card is the same that the organists are familiar with on the old hardware.  You are right about Lew and Charlie being the very best at playing for OSP.  And they are great to be working with.

 

And thanks TK for your support and endless hours to provide such quality open source software.  Its sometime hard to figure things out at first but as I understand more it becomes apparent why these things are done this way.  Having so many modules being common between so many projects can be hard to juggle sometimes.  I know my source code will become obsolete as new changes go in the system.  It's good you are using a robust library control system for the source code (which I don't have a complete understanding of yet).  Being able to retrieve a specific version of code is very important for projects like this. 

 

Something I should also add about this project: I removed some of the clearing functions that are sent over Midi when the playing file is stopped.  It doesn't send any any ALL NOTES OFF for channels 8, 9, or 10 when going into PAUSE mode.  The CC 123 0 sequence was clearing stops on the Devtronics organ hardware which was being used on a friends and my organ hardware.  Of course this can be added back in by anyone who has issues with this by retrieving the old rev V3.019 of Midio128 and recompiling the changes in the seq.c file.

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