Jump to content

Tascam MM-RC Conversion to Midibox


Narwhal
 Share

Recommended Posts

So back in March I caught a post in the ebay thread about a Tascam MM-RC remote tape control.  I thought, damn that looks like it might make something cool so I bought one for dirt cheap.  It has a ton of nice buttons, led's, a hefty encoder wheel, and an LCD display.

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.

2984_tascammmu162_jpg075b5852e58cae5c88d

Resize of P1010097.JPG

Resize of P1010098.JPG

Resize of P1010108.JPG

Link to comment
Share on other sites

Woot!  That's good news stryd.  Apparently that was done for the stribe controller eh... This is going off topic, but look what I scored from ebay that will be my stribe-like project.  I think I paid around $10 for it!

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.

IMG_0237.JPG

TascamMMRC_Upper.zip

3014_upper_control_surface_98dpi_pnge2a4

Link to comment
Share on other sites

2) spent a day debugging why 3 different core modules would only start up 10% of the time.  I suspect a wiring issue with the LCD, but point to point continuity tests all showed that everything was fine each time I tested it.  I still have no idea what was going wrong, but it's now working 100%.

3029_DIN_DOUT_ZIF_Adapter_png4f16da951f7

3037_Big_Picture_jpg6b7bd41df1edbe60170b

Link to comment
Share on other sites

3)  a) connected smashtv CORE to DIN to DOUT

     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.

3033_Pressed_jpg9b46386545da1fcdbfbfbbac

3035_Depressed_jpgf06f7ac8251a88a19b6d99

Link to comment
Share on other sites

So today I decided to tackle control of the Max7219 LED controller.

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.

3049_XcodeScreenSnapz001_jpg3569b5eae463

3051_Lit_LEDs_jpgc3c91a32045c5ac71844a3b

3053_LCD_issues_when_LEDs_are_on_jpg7623

3055_brightness_control_brings_it_back_j

Link to comment
Share on other sites

Yep your LEDs are using too much power. It'll brown out soon if you don't find a way around that.

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

Link to comment
Share on other sites

Had a closer look at it this morning, and still can't see any reason why that would happen...

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

Link to comment
Share on other sites

Yes indeed. Are those calls made prior to the init for max72xx?

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();

?

Link to comment
Share on other sites

Hmm seems to work both ways now.  Perhaps it's my power gremlins playing tricks on me.  Seems like power is the next big thing I have to deal with.

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?

3066_LED_test_mode_jpg07e1476edc3743953c

Link to comment
Share on other sites

Dammit I lost my post, I hate when that happens!

Hmm seems to work both ways now. 

Heh. Heheheheh. I'm so childish.... It's still funny.

Perhaps it's my power gremlins playing tricks on me.  Seems like power is the next big thing I have to deal with.

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)

// DONT USE THE MIOS SRIO DRIVER!!!

Does this mean I can't use the MIOS SRIO driver at all??

LOL take a guess!

...no, i jest....

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?

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?

Link to comment
Share on other sites

Mine came from a company called Digital Dream Sound Studios in Burbank via eBay.

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.

Link to comment
Share on other sites

  • 2 weeks later...

This weekend I did a lot of work on this project.   Follow along if you will..

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.

3224_3A_switching_power_supply-3_jpge253

3226_3A_switching_power_supply-2_jpga045

Link to comment
Share on other sites

In the Tascam, the ribbon cables from each of the control surface boards all connect up to the main controller board.  I desoldered all of the connectors on the main board and soldered them onto a vero board that I drilled so that is would mount on the center screw posts.

3228_Cable_Adapter-2_jpg2c8cab7e1975b038

3230_Cable_Adapter-3_jpg956e565f3bfb3e52

3232_Cable_Adapter-5_jpgcf179a191a889749

Link to comment
Share on other sites

Here's where I think things start to get good.  I was trying to figure out how all these things were going to be supported in here.  I wanted to use plastic sheets, but I couldn't find any place that sold them around here.  Actually I didn't even try that hard, I just happened across mini plywood while at the craft store.  Plywood was perfect.  It's strong, light weight, and can be easily glues into strange shapes.

So after a little planning I built a large surface that would hold the power supply, a DIN, and a DOUT.  Then I built a bracket that mounts to the right-most screw posts and supports a smash core board in the back of the unit.

3236_planning_core_support_brace_jpgd7b4

3238_Core_support_board_jpg6357543842901

3240_Core_support_brace-4_jpg465220a375a

3242_Core_support_brace-3_jpge19b52a0ab7

Link to comment
Share on other sites

The real hack here:  I need a support that holds the big play/rew/ff/rec/etc.. buttons at the bottom.  I'm not really feeling like replicating their board and then etching my own version.  If I did that then why not just etch all of the internals and make my own all-in-one.  Nah.  I take the main board and chop off the lower section using a jig saw then wire straight to the button backs.

Don't forget the encoder that I recently got working.

3250_Salvaged_button_board-2_jpg146114f6

3252_Bringing_it_all_together-7_jpg1ba0a

3254_Bringing_it_all_together-6_jpgd6deb

3256_P1010001_jpg60d7091231a935a3371c610

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