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](< base_url >/applications/core/interface/file/attachment.php?id=11613)