Hmmm, not too sure where to put this one…
Would it be possible to add more inputs to the MIDI merge project? What would the programming be like?
Hmmm, not too sure where to put this one…
Would it be possible to add more inputs to the MIDI merge project? What would the programming be like?
That might be interesting for you: http://www.ucapps.de/mbhp_iic_midi.html
Yep, but I’m sadly unable to read, write or speak any C :-[
I might just grab a MOTU interface that will do the routing/splitting/merging for me.
Another idea to modify a MIDI merge with to_com I/O: add a MIDI output. Two I/O’s, one at 38400, the other at 31250 bps. This would make a serial port to midi interface, also called baud rate converter, for those who can’t or don’t want to add USB/PCI/whatever MIDI interface, but have spare serial port. There is a serial MIDI interface driver for Linux in Ubuntu-Studio: see alsa.opensrc.org/index.php/Serial
Is there enough memory and processing power left in a PIC to add a software serializer and some flow control to the existing merge and software deserializer ?
Out of MIDIBox, there is another solution which I will evaluate too: the 8051-based serial interface from maxmidi.com . It will cost less for me (except for a bigger PCB) because I have recycled several 8031 + EPROMS 8)
Update: this interface design from yesteryears is a piece of crap, dead with only Win3.1/95 driver :P, there is no PCB, cheap power supply drawn from RS-232 lines, transistors and opamps instead of a true line driver/receiver like MAX235, complex 8031 code (software uart), hard to hack without source code… maybe well for mass production with low power x51 mpu, if able to be sold under $30, but not for DIY kits where part of the fun is in hacking, not buying programmed components. I will redesign it with a second external uart.
I finished and test my first MM board ![]()
The downloaded firmware did not work with a PIC16F877A
(programmed with an universal programmer, not a cheap hack).
It was successful after editing midibox.h to add ‘A’ there:
#ifdef __16F877A include <p16f877A.inc> and rebuilding with
MPLab IDE.
The PCB layout has some mods:
-7805 laid down on copper side with tab contact to ground
-4 SMD leds and their resistors between PIC pins
Glad it’s working
Would be cool to see pics of your board mods too!
It was successful after editing midibox.h to add ‘A’ there:
#ifdef __16F877A include <p16f877A.inc> and rebuilding with
MPLab IDE.
Thanks for this info! I have edited the code for the new (GPASM-based) toolchain according to this, I wonder if you would mind testing it for me, before I commit the source to SVN? I will email (or attach here or upload or whatever you like) the code with the hex files already built, and anything else that makes it easier for you ![]()
Thanks!
Sorry for late reply. I can test your hex file built with your toolchain as I have finished a second MM board and the programmer is still on. BTW I tried an HCPL2530 dual optocoupler instead of two 6N138’s. It works with at least 2.7k pullup resistors.
Thanks silicium
Those changes are long-since lost by now, I’ll do it again and post the hex file… Should be up some time in the next 24 hours or so.
Something like this old PC, I have failed to multitask properly, sorry! I’ve had this tab open in firefox but I opened too many other tabs and it scrolled off the side and i forgot… My bad!
I’m doing it *right now*!
Wiht a capital ‘A’ in the include filename, it returns this warning:
./16f/midibox.h:26:Warning [230] found lower case match for include filename
Fortunately the assembler is smart enough to just use the (silghtly) incorrect filename, but it still builds that way… Still, I thought it best to avoid it, so I hope you don’t mind that I made a change:
#ifdef __16F877A
#include <p16f877a.inc>
#endif
Note the lowercase ‘a’, I guess this is a difference between GPASM and MPASM. I have confirmed that all versions of GPASM use this lowercase variant designator. The necessary change in the makefile to enable this, is:
midimerger_pic16f87x.hex: 16f/main.asm
gpasm $< $(GPASM_FLAGS) -I ./16f -p 16f877a -o midimerger_pic16f87x.hex
Note that although I have used the lowercase ‘a’ here, the assembler is smart again and will create the define with the capital A regardless of which case you use here, so
midimerger_pic16f87x.hex: 16f/main.asm
gpasm $< $(GPASM_FLAGS) -I ./16f -p 16f877A -o midimerger_pic16f87x.hex
Also works.
Anyway the hex:
Thanks for testing!! ![]()
[midimerger_pic16f87x.hex](< base_url >/applications/core/interface/file/attachment.php?id=5107)
[midimerger_pic16f87x.hex](< base_url >/applications/core/interface/file/attachment.php?id=6160)