Jump to content
RobG

MIDI Booster Pack

Recommended Posts

Store Links:
The MIDI BoosterPack
The MIDI Standalone

MIDI BoosterPack Kit


This is a second version of my SoundPad booster pack, but I am calling it MIDI booster pack this time because it is meant to be used as a MIDI experimenter's board.

What's new?
MIDI out
Opto isolator can be SMDIP or SOIC
Got rid of all expansion headers (the new board is intended to be used with 2553 only.)

Intended uses? How about this:
MIDI controller (4 digital/analog inputs accessible via 6 pin header, can connect pots or switches, keep in mind that 1.3 has cap/resistor attached to it on the LP board.)
MIDI arpeggiator
MIDI delay/echo
Mapping MIDI channels/notes
Just use your imagination :smile:

post-197-135135537073_thumb.png

Share this post


Link to post
Share on other sites

I've never worked on MIDI, so cannot appreciate this BP enough. Can someone explain it to me like I'm five .. an application.

Sorry, I'm a bit behind on this tech. I know it's a protocol for musical instruments to talk to each other, but what is it used for?

Share this post


Link to post
Share on other sites

Here are few example applications for this booster pack:

MIDI Controller - connect photo cell/LDR or joystick to analog inputs and use it to control pitch with one axis/light stream and volume/filter with the other.

MIDI Arpeggiator - receive note, repeat 3 times with different notes. Think Jean Michelle Jarre.

MIDI Echo - receive note, repeat decreasing velocity

MIDI Monitor - display on LCD what's going on, good for troubleshooting.

MIDI Splitter - receive notes on one channel, send on two different depending on octave. Left keys can control bass, right lead.

MIDI Filter - get rid of those unwanted MIDI messages.

Many more :)

Share this post


Link to post
Share on other sites
Thanks Rog. :thumbup:

Who's Rog? :)

 

I was working on turning this booster pack into a MIDI Monitor when I realized that one more thing should be included on the board (actually two, SPI/LCD connection would be useful,) SD card. The card could be very useful for turning this booster pack into a MIDI Player.

Share this post


Link to post
Share on other sites

Here's the fully assembled board, with SMDIP opto and optional DAC.

 

post-197-135135545924_thumb.jpg

 

midipad.sch

 

BOM

MIDI

Two 5-pin 180 DIN sockets

OK1 or OK2 - 6N138/6N139/HCPL0700/HCPL0701

IC2 - 74LVC1G07DBV

D1 - 1N4148/1N914 SMD

R1 - 220 0805

R2 - 270 0805

R7 - 68 0805

R8 - 68 0805

 

optional DAC

IC1 - MCP4822SN

C1 - 10uF/6.3V B (can be 1u - 10u)

C2 - 0.1uF 0805

C3 - 4n7 0805 (C3 and C4 are filter caps, so they can be anything from 1n - 10n)

C4 - 4n7 0805

C5 - 2u2/10V B (C5 and C6 can be 1u - 4u7)

C6 - 2u2/10V B

R3 - 22k 0805 (can be larger)

R4 - 22k 0805 (can be larger)

R5 - 1k 0805

R6 - 1k 0805

Share this post


Link to post
Share on other sites

Hi Rob

 

I'm having difficulty getting even a simple test working with the Midi booster and I wonder if you can help.

 

Your midi arpeggiator and harmonizer compile, load and run fine through CCS. I seem to get no signal from midi out though when I send a note to midi in. What would you suggest I check?

 

Ideally I'd like to be able to print some debug messages via USB to a terminal emulator on the computer so I can start picking things apart. I found oPossum's nice compact printf function (link below), but I haven't succeeded in getting it to coexist with your midi code.

 

viewtopic.php?f=10&t=1732

 

Apologies for the rather noobish questions. If I can get a wee bit of help, I think I can start figuring a few more things out.

 

Thanks

 

Richard

Share this post


Link to post
Share on other sites

Can you receive MIDI?

 

First thing, make sure your RXD/TXD jumpers are removed from J3.

 

Load the harmonizer and put a break point in midi.c at line 24 handleMIDI...

#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void) {
handleMIDI(UCA0RXBUF);
}

 

Send MIDI, your debug session should pause at the break point.

Remove break point and put it on line 29 sendMIDI...

#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void) {
sendMIDI(); // done sending previous byte, see if there's anything else to send
}

Send MIDI, your debug session should pause at the break point.

Remove break point and put a LED in MIDI OUT socket, anode to pin 4, cathode to pin 5.

When sending MIDI, the LED should be blinking.

 

Let me know the results.

 

BTW, I have improved my arpeggiator code, but I need to test it before posting it, will do that next week.

Share this post


Link to post
Share on other sites

Thanks Rob

 

I had indeed neglected to remove the TXD and RXD jumpers from J3, so I removed those.

 

I think for a brief moment I succeeded in having it pause on the breakpoint on line 24 of midi.c. It paused immediately from the MIDI clock transmitted from my drum machine. So I disabled the clock, but then for some reason since then I haven't been able to repeat receiving any kind of MIDI.

 

I've tried:

 

- midi output from different sources

- testing the output from each source with a usb midi interface and midi monitor software

- checking the midi cables

- checking the DIN socket connections for continuity

- swapping in a new 2553

- creating a fresh CCS project

- testing the 6N139 for a short between collector and emitter

 

hmm :think:

Share this post


Link to post
Share on other sites

You have to specify MIDI channel, 0 = channel 1, 1 = channel 2, etc.

char channel = 0;

Drum machine would most likely be sending on channel 10.

 

I guess you can start testing from the beginning.

Connect pin 5 of the MIDI IN to ground and pin 4 to Vcc (+3.6V,) you should see ~5mA current.

Connect your volt meter to P1.1 and do above, you should see changes, ~5mA.

If that works, that means MIDI IN hardware is OK.

 

To test MIDI OUT, connect your volt meter to pin 4 and GND, you should see +3.6V.

Remove 2553 chip from the board.

Connect your amp meter to pin 4 and 5 of MIDI OUT, then connect P1.2 to Vcc, you should see changes.

If that works, MIDI OUT is OK.

Share this post


Link to post
Share on other sites

Ah. A good thought. But that doesn't seem to be it. Is there a simple way to check if the 430 is receiving any kind of signal at all?

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

×