Tascam MM-RC Conversion to Midibox
#1
Posted 08 July 2008 - 22:12
This past weekend I put in some time reverse engineering it and I thought I'd share what I've found. I've built a schematic for the upper control surface so far and I think it's going to be quite easy to make it do whatever I can dream up. I'm thinking either some sort of logic control, or perhaps even a sequencer.
I'll post the schematic when I get home later.
So lets start with the tear down pictures I've posted on flickr.
Next step is going to be using a DIN module to read the buttons, and some code to talk to the MAX7219 LED controller. At that point I'll have full control over the upper control surface.
#3
Posted 09 July 2008 - 18:07
Anyway, back on subject... I've attached a few files. First is zip file that contains a replacement maxim component library for eagle that has the missing MAX7219, and the schematic file I created.
EDIT: note the left MAX7219 is not connected to any LED's because I'm seriously considering chopping it off. I don't want all those LED's where my sequencer panel is going.
#4
Posted 12 July 2008 - 02:13
1) built an adapter on protoboard so I could plug the control surface cable into a breadboard.. someone really should make something for this problem! There is no place on breadboards to plug in cables.
#5
Posted 12 July 2008 - 02:18
#6
Posted 12 July 2008 - 02:20
b) cabled DIN and DOUT to a ZIF connector on a breadboard.
c) cabled ZIF to control surface cable adapter on a breadboard
4) searched around through the code repository for code that makes a button scan matrix work.. finally Stryd tipped me off that it was named sm_example. Can't we use long filenames!?! At least name the directory "Scan Matrix"
5) in main.c of sm_c_example1 I changed MIOS_SRIO_NumberSet(16) to MIOS_SRIO_NumberSet(1) because I only want to use one shift register right now.
6) I typed 'make' and let it build my project.hex file. A split second later uploaded project.hex to my core and walla! Hot button action.
#7
Posted 13 July 2008 - 08:38
After much futzing around trying to figure out where the pins for Port C.0, C.1, and C.2 actually physically present themselves, I wired up power and the 3 control lines (LOAD/CS, Clk, DataIn) from the core to the MAX7219. Noting too fancy. I still routed all the wires through my ZIF socket and protoboard for simplicity.
When I fired it up the first time.. NO LIGHTS! Doh. Continuity all test out fine. Frustrating. At a loss I decided to see if anything in code could be causing it. My first attempt I decided to move the location where I called MAX72XX_Init(). BINGO! That worked. Perhaps I can get an explanation for why the MAX72XX_Init() must be before the SM_Init() call for the scan matrix?
One "problem".. with all the LED's lit, my LCD display became almost impossible to read. I had to turn up the brightness to max so I could read it. Seems like the LED driver may like to have it's own power regulator. Maybe I'll steal the regulator setup that was in the tascam originally.
Hey this Midibox stuff is a piece of cake, I'm lovin it!! Thanks TK and everyone for all the work that's been done to get this system to the place it's at today. Hopefully I can contribute something useful for everyone soon. I have some ideas for improvements to the 72xx driver that I'm going to need for my next steps.
#8
Posted 13 July 2008 - 11:57
As for the init calls.... looking at them quickly I don't understand why they should 'clash' or not work if not in the right order... Perhaps it's something else you had inbetween them?
Have you disabled the AIN mux? The max72xx uses the AIN mux pins...
#10
Posted 14 July 2008 - 00:35
You didn't mention, did you disable the AIN mux? The default pins for the max72xx driver use those pins, and the mux is not disabled in the driver's init, so you should put that before the max72xx init....
#12
Posted 14 July 2008 - 02:33
MIOS_AIN_UnMuxed();
MIOS_AIN_DynamicPrioSet(0);
MIOS_AIN_NumberSet(0);
#13
Posted 14 July 2008 - 03:30
So this works fine:
void Init(void) __wparam {
MIOS_AIN_UnMuxed();
MIOS_AIN_DynamicPrioSet(0);
MIOS_AIN_NumberSet(0);
MAX72XX_Init();
SM_Init();
....
But this is no good:
void Init(void) __wparam {
MIOS_AIN_UnMuxed();
MIOS_AIN_DynamicPrioSet(0);
MIOS_AIN_NumberSet(0);
SM_Init();
MAX72XX_Init();
?
#14
Posted 14 July 2008 - 08:24
Today I began attempting to get the hi-res optical encoder working. I have it wired up and it looks like it's putting out the correct pulses. Unfortunately before I did that I chose to switch over to the sm_fast version of the button scan matrix code. The sm_fast version main.c Init() function contains the following lines:
// initialize the shift registers
MIOS_SRIO_NumberSet(0); // DONT USE THE MIOS SRIO DRIVER!!!
Does this mean I can't use the MIOS SRIO driver at all?? Or can I tweak some pin values to move around the fact that another driver is dealing with a few of the DIN and DOUT shift registers?
#15
Posted 14 July 2008 - 09:40
Quote
Heh. Heheheheh. I'm so childish.... It's still funny.
Quote
Ah of course! That makes a lot of sense... the LEDs aren't eating juice until after the init... This should definitely be top of your list. before the encoder, as it is likely to cause problems with those (logic levels being screwed with)
Quote
Does this mean I can't use the MIOS SRIO driver at all??
LOL take a guess!
...no, i jest....
Quote
Well actually now that you mention it... yeh ...
; pins of SRIO shift registers
#define SM_SRIO_LAT_SCLK LATD ; Pin D.3
#define SM_SRIO_PIN_SCLK 3
#define SM_SRIO_LAT_RCLK LATD ; Pin D.2
#define SM_SRIO_PIN_RCLK 2
#define SM_SRIO_PORT_DIN PORTD ; Pin D.1
#define SM_SRIO_PIN_DIN 1
#define SM_SRIO_LAT_DOUT LATD ; Pin D.0
#define SM_SRIO_PIN_DOUT 0
;
I guess if you change those pins, you can run a second chain of DOUT/DIN modules for the scan matrix. Anyone see any problems there?
Seems to me that these two scan matrix drivers could be easily made into modules... what do you think, TK? Should we do it?
#16
Posted 15 July 2008 - 00:56
We are the MIDIbox. You will be assimilated. Resistance is futile.
#17
Posted 15 July 2008 - 17:43
haven't even cracked it open yet... ahhh the muted beauty of the infinitely majestic queue...
did you realize it was from mark pauline of srl fame?
http://www.srl.org/
i actually shook his hand at the dallas video festival years back...
#18
Posted 15 July 2008 - 18:30
I haven't yet made it to an SRL show, but I've known about them for many years. That's really cool if yours came from him. You should have had him burn the $#!t out of it before mailing it to ya :-) I guess the $50 optical encoder that's in there might not have survived in that case, so it's probably better that you didn't.
#19
Posted 29 July 2008 - 05:46
I have been having power problems trying to supply the LED drivers from the core. Perhaps its because of some other wiring problem, or perhaps it's because all those LED on full brightness were sucking too much power. Either way, the main board in the Tascam contains a very compact 3A switching power supply and that's just what I need to make all of my power woes go away for sure. So I desoldered all the part and moved them to a vero board.
Cheese eagle board file is available on request, but it's nothing special. I only made it so that I'd have a circuit reference once I desoldered everything.
#20
Posted 29 July 2008 - 05:55



Help











