Jump to content

From newbie to wizard: Max's PG-300/MB synth programmer project


Max Romantschuk
 Share

Recommended Posts

A few weeks ago I decided to take the plunge and build my very first Midibox. I have a very nice Roland Alpha Juno 1 synth, which has a great sound engine but a lousy user interface. Roland made a programmer for this synth as well, the PG-300. But those are hard to come by, ugly, and ridiculously expensive for something with a bunch of flimsy faders.

So I've decided to to the logical thing for any self respecting geek: Do it yourself.

This isn't going to be a quick project. I have four small kids who demand most of my free time. Keeping that in mind I'll probably be progressing rather slowly, so I thought keeping a build blog only makes sense: I can document what I do and keeping my work public I'll have additional incentive not to stop for too long... ;)

This project will have four main phases:

  • Learn the Midibox platform. (1st half of 2009)
  • Aquire and build the final hardware on the electronic level. (2nd half of 2009)
  • Make the custom software, and iron out any hardware bugs. (1st half of 2010)
  • Have a panel made, build a case, finish the project and properly document everything. (2st half of 2010)

As you can see I'm setting a very loose schedule. I'm a bit of a perfectionist, and I'd rather do this slowly and well than quickly and poorly. As this thread grows I'll probably start distilling it into a companion Wiki page.

On the skills side I have a lot to learn. I'm a programmer and software architect by trade, so software design I'm familiar with. I have no C experience. I know how to solder, but have mainly soldered audio cables in my home studio so far. I'm currently reading K&R's C Programming Language and The Art of Electronics to get my C and electronics basics in order. I can warmly recommend both books.

My first step is to learn the Midibox platform. In order to do that I'm setting up a development environment, consisting of a core module, a DIN module, an AIN module and an LCD. I've ordered these from Mike's shop, and aquired some associated stuff locally. (I'm physically in Finland.)

Today I'll be starting on the core. Step one is to get the core built and the LCD talking to it. I'll be posting my progress (with pictures) later today.

Link to comment
Share on other sites

I have officially started work on my MIDIbox! :)

I've set up a flickr set with all images I'll be posting. All images will be in that set at a nice big resolution. I'm not posting the full resolution images in this thread, so if you want a closer look keep that in mind.

First things first: I took some unboxing photos when Mike's parts arrived a while back. I'm attatching the ones relating to the core module, as that's what I'm starting with...

Mikes parts came in a neat little package, here just opened:

3143416419_1253c566c9_d.jpg

This is the core pcb:

3143417823_c0cf26c416_d.jpg

And here are the core module parts:

3143417057_525c19d768_d.jpg

Some people have previously voiced concern about the lack on anti-static packaging. I hope this won't be a problem for me.

So anyway, I got right down to business following the soldering guide at ucapps.de. Here's my first ever MIDIbox soldering joint:

3144245556_fc46edd9f2_d.jpg

There's a bit of excess solder, still getting used to a new soldering iron an new solder... :)

More stuff going in...

3143422747_6ae8f631c1_d.jpg

Bridges, sockets and that one hard-to-fit resistor are done:

3144250324_8a41a86402_d.jpg

Finally a shot of my virgin socket soldering skills:

3143424405_9aecfe6ea0_d.jpg

Photogeek comment: I like how the short macro focal length works out in this one. :)

I'm all excited know. That's sure to change once I realize I've botched something... I'll probably have a chance to do another update later today.

Link to comment
Share on other sites

i think you are probably overestimating the difficulty of your project.

tk has made it very easy to put together custom interfaces, and you don't need to know mios in detail to do so.  mios has a lot of features that will be hidden or irrelevant in this usage.  i think it's important to play around a bit before you get too perfectionistic about your first control panel, my first midibox projects fell by the wayside this way.  of course, it's also possible to go too far the other way...

just go for it.  once you've built a core and hooked up a few controls you will see.

my devalued $0.02 

Link to comment
Share on other sites

i think you are probably overestimating the difficulty of your project.

You mean because I estimated a lot of time to get stuff done? Maybe so... Then again I don't have a lot of time to work on this once things return to normal around here (wife and kids away until newyear's).

I don't think this is a very difficult project. The difficulty comes from doing it it a few random hours a month, usually late at night. Having time to work on something all day like today is the exception that justifies the rule for me. ;)

just go for it.  once you've built a core and hooked up a few controls you will see.

And I am. :) But I still want the end result to be as good as possible, given the time and money I will spend on this project.

What you said about MIOS hiding a lot of the nitty gritty for me is true. But I'm the kind of guy who might take time to read the MIOS sources just to understand what's going on under the hood better. ;)

Link to comment
Share on other sites

It seems fortune smiles upon me today. The core is completed, and I've successfully (AFAIK) uploaded MIOS. :)

Apart from a weird wiring issue when hooking up power everything just worked. Even MIDI IO in Java on my Ubuntu box performed flawlessly.

Resistors and diodes soldered:

3145278696_383db29312_d.jpg

I had to get creative with R2, otherwise J4 wouldn't have fit on the board...

Caps and transistors added:

3144451057_30a63d7907_d.jpg

Took me a while to figure out which of the small caps went where... tricky with ambiguous markings on those little buggers. ;)

The completed core:

3144451845_6b33571885_d.jpg

And finally hooking everything up:

3145281754_4ef9a58c6b_d.jpg

I would have loved to get the LCD wired up tonight as well, but that will have to wait... Hopefully the day after tomorrow if all goes well.

Some clarification on my approach to this project:

I don't think of this as a technically very difficult project. Like bugfight said TK has made it very simple to hook up stuff through various modules and get results quickly. But that doesn't cover the art of user interface design. One of the main goals with this project is making playing with my Alpha Juno as much fun as possible. That calls for the best possible UI. That's the difficult part, and also why I'm not going to hurry.

I'll probably spend a lot of time in the prototyping stage to get a good feel for what works. I want to try out both pots and encoders. I think I'll be using pots, and a single encoder to tweak values. I might use faders, but not so sure about those... I don't know if I want my box to be able to receive a patch and hold all parameters in memory, so that you could call up a patch on the synth, send it to the programmer, and tweak it further. This becomes tricky if you have stateful UI components like pots. But if I were to use encoders only I'd have to have led rings if I want visual feedback... Or encoders with a built in switch to call up the parameter value on the LCD.

I guess I'm saying I'm a bit of a meticulous planner... I like to make detailed plans before taking action. That's the timesink for me. ;)

But I'm also a very patient man. It's not an issue for me if it'll really take two years until this project is complete.

Link to comment
Share on other sites

Well it's an issue for me!  ;) (just kidding)

FWIW I find the hardest part of any DIY electronic project to be enclosures and panels.  You are going to need to determine the route you want to go:  board-mount or panel-mount pots/encoders/switches.  Both techniques have their pros and cons.

You're documenting this really well so far.  It's looking good!

Link to comment
Share on other sites

Neb and Buggy are both spot-on there.

Good blog mate :)

and yeh, this shot is great!! :

3143424405_9aecfe6ea0_d.jpg

Photogeek comment: I like how the short macro focal length works out in this one. :)

And I just noticed... if you haven't soldered before, then you're a natural. Maybe a -tiny- bit more heat and tin, to get them to volcano up a bit, but really good.

Link to comment
Share on other sites

Thanks for the encouraging comments on the documenting / blog! :)

I find the hardest part of any DIY electronic project to be enclosures and panels.  You are going to need to determine the route you want to go:  board-mount or panel-mount pots/encoders/switches.  Both techniques have their pros and cons.

I've been thinking a lot about how to mount stuff. I'd like to have the look of the box reflect my Alpha Juno somehow, but not sure in what sense yet. I'll probably be drawing a lot of panel options once I know what hardware I want to use. I already have one panel draft in the works. I've found I can export postscript from Inkscape and convert it to HPGL with pstoedit, to import into Front Panel Designer. That means I can do nice little line drawings of stuff like waveforms etc. and have Schaeffer engrave them right into the panel.

The only thing I think I know about the UI part is that I want to build the box so that it will have the panel mounted at an angle standing behind the Alpha Juno, resulting in a Minimoog-style approach. This is both because I like the idea and because it would take up more space than I can afford if it were to lay flat on a table.

And I just noticed... if you haven't soldered before, then you're a natural. Maybe a -tiny- bit more heat and tin, to get them to volcano up a bit, but really good.

Like I said I have soldered, but almost exclusively cables. Nothing this small really... Fortunately even the el-cheapo soldering iron I borrowed from work seems to be doing the job nicely. My soldering gun I use for cables is useless for something like this, the tip on that thing is huge! ;)

Link to comment
Share on other sites

OK... Partially just documenting some links for myself here, but I hope to get the LCD connected tonight and did some research:

The pinout of my Nanox LCD, http://www.mikrocontroller.net/attachment/23162/NANOX_NDM162.pdf seems to be the standard pinout for 16x2's so everything is OK there. (Backlight in a different place but that shouldn't be a problem...)

The LCD wiki page ( http://www.midibox.org/dokuwiki/doku.php?id=lcd ) linked Jim Henry's excellent wiring guide:

http://www.midibox.org/users/jim_henry/building_a_midibox_lcd_cable.pdf

And finally the pinout on the core's side: http://ucapps.de/mbhp/mbhp_lcd.pdf

That should be all info I'll be needing.

Link to comment
Share on other sites

Darn... I only had time to partially finish the LCD cable tonight. Too much other stuff to do I'm afraid, and I won't be at home until thursday, so I'll officially have to wait until next year until I'll get any further. It seems it was wise to put all the relevant links in one place, as I couldn't get it all done in one sitting.

I'll post pics and stuff like I have so far once I get the cable done and hopefully the LCD working! :)

(I keep wondering how hard that thing is to fry... ;) )

Link to comment
Share on other sites

  • 3 weeks later...

So... Not dead yet. Haven't gotten bored, given up, any of that.

Real Life hit me. Hard.

I had a bit of a cold since Christmas, which got worse, and worse... By the time I went on a can't-miss-it business trip mid last week I came to the conclusion that I'd lost the battle, and spent the rest of the week on sick leave. Now I'm finally more or less OK, but there's a bunch of household-related stuff that's cropped up since xmas and has to be taken care of before I can get back to work on my project.

It's all quite frustrating really, but that's what you get for starting a project like this having four kindergarten-aged kids. ;) Fortunately I love the little bastards enough not to take it out on them... :)

So... With any luck I should be able to get back to work soon!

Link to comment
Share on other sites

Finally, progress! :D

This is going to be a long post. For people who haven't followed this thread... There is a flickr set with all the images at a higher resolution here:

http://www.flickr.com/photos/maxromantschuk/sets/72157611777076100/

So anyway, last time I got something done I partially finished the LCD cable. I'll just post my progress with pics as I have so far.

I had bought 40 pole wide colored ribbon cable, the wider variety was cheaper per wire. ;)

First I cut my needed 16-wide piece:

3204764834_60af5aec9d.jpg

Then I built the ribbon cable connector... These are pretty self-explanatory:

3203918995_18bf691016.jpg

3204768414_7b9a6b5741.jpg

3203923197_1e65f32ae6.jpg

I have a nice little mini-vice, so getting even pressure was trivial. For some reason my strain-relief refused to fit, but the connector seems solid enough anyhow.

Then started I cutting and separating, as per Jim's guide:

3203924969_c027edbd0f.jpg

3203926019_996f5b75f3.jpg

I found that the best way to get the wires separated was to gently stroke the blade along the groove a few times on both sides. After that they came apart really nicely. Cutting through the groove didn't work so well, it was a lot harder to guide the knife properly.

I presoldered all the pads:

3204776196_d93ea05ff0.jpg

(Presoldered the wires too.)

The first ones were a little iffy... going right to left. ;)

3204778558_fc26314f1b.jpg

Halfway there...

3203933801_9582fa619a.jpg

For the leftmost wires, I measured and marked each one separately. (Note the black mark.)

3203935887_4921baaaa6.jpg

Having cut and stripped the wire I routed it through the hole:

3203937519_75a058ae18.jpg

The soldering part was simply applying the iron where the wire entered the hole, heating both the wire and the pad, and applying some more solder. Having both wire and pad presoldered really helps.

The result:

3203939613_a3ed716913.jpg

It's not that pretty, but the wire has support through the and partially from the pad too. The joints seem to be firm enough.

The LCD backlight pads were at the far end of the board:

3204789206_407ee6ae62.jpg

(Or so I thought... ;))

All done!

3204791734_266f64972c.jpg

(While perfecting my wire separation technique I managed to partially strip #6 of insulation, hence the mending. ;))

I double checked my wiring, connected the LCD to the core, and powered up:

3204794764_4d3f2ae60b.jpg

Yay, it works! :)

...waaait a minute...

No backlight?

Hmm...

3204796406_f99f25f62c.jpg

These pads were on the front side of the board. The pads I soldered my backlight wires to were on the opposite side. I was pretty sure there was some back-to-front connection... and was wrong. There were no vias or anything.

So of course I had to verify that the wires had to go straight to the front...

So first two extra wires:

3203951347_3c0a05a7d6.jpg

And then some manual testing:

3203953525_acfed5434b.jpg

And there was light.

So I cleaned up my little kludge:

3203958251_04b27a5375.jpg

True success at last:

3204803880_a52e56600b.jpg

The next step is probably building the DIN module... Hoping to find the time in the next few weeks. (I can't really do more than one or two sessions a week, to keep the WAF (Wife Acceptance Factor) of this project under control. ;)

Now when the LCD is connected, the 7805 gets pretty friggin hot. Under 100 degrees C, but I'd say it's at 50 C at least. Is this normal? Should I attach a heatsink just in case?

Link to comment
Share on other sites

Haven't gotten any further on the hardware side as of yet, but I thought I'd share some of my plans concept- and software-wise.

There are 36 editable parameters in an Alpha Juno Patch. My plan is to have a pot/encoder for each parameter which is a large range, and a button for all on/off or smaller range parameters. Buttons would cycle the smaller ranges. Editing any parameter would bring it up on the screen. Next to the screen I want a nice big encoder (the beta dial? ;)) to tweak the currently selected parameter.

These are the parameters and the way I think I'll be grouping them into sections:

(Sysex specs are here for reference: http://www.vintagesynth.com/roland/sysex.shtml#ajuno )

DCO section

  • DCO Wave Pulse (0..3)
  • DCO Wave Saw (0..5)
  • DCO Wave Sub (0..5)
  • DCO Range (0=4', 1=8', 2=16', 3=32')
  • DCO Sub Level (0..3)
  • DCO Noise (0..3)
  • DCO Env. Mode (0=Normal, 1=Inverted, 2=Normal-Dynamic, 3=Inv.-Dynamic)
  • DCO LFO Mod. (0..7F)
  • DCO ENV Mod. (0..7F)
  • DCO After Mod. (0..7F)
  • DCO PWM Depth (0..7F)
  • DCO PWM Rate (0..7F) 0 = Pulse Width Manual 1..7F = PW LFO Rate
  • Bender Range (0..C)


    VCF section
    • VCF Cutoff (0..7F)
    • VCF Resonance (0..7F)
    • VCF LFO Mod. (0..7F)
    • VCF ENV Mod. (0..7F)
    • VCF Key Follow (0..7F)
    • VCF Aftertouch (0..7F)
    • HPF Cutoff (0..3)
    • VCF Env. Mode (0=Normal, 1=Inverted, 2=Normal-Dynamic, 3=Dynamic)


      VCA section
      • VCA Env. Mode (0=Normal, 1=Gate, 2=Normal-Dynamic, 3=Gate-Dynamic)
      • VCA Level (0..7F)
      • VCA Aftertouch (0..7F)


        ENV section

        • ENV T1 (0..7F) Attack Time
        • ENV L1 (0..7F) Attack Level
        • ENV T2 (0..7F) Break Time
        • ENV L2 (0..7F) Break Level
        • ENV T3 (0..7F) Decay Time
        • ENV L3 (0..7F) Sustain Level
        • ENV T4 (0..7F) Release Time
        • ENV Key Follow (0..7F)


        LFO section
    • Chorus Switch (0=Off, 1=On)
    • Chorus Rate (0..7F)



      LFO section
    • LFO Rate (0..7F)
    • LFO Delay (0..7F)



      The above are in no particular order.

      In addition I'll be adding a few other features. I'll probably need some general config ui stuff to handle changing the MIDI channel at least. (Do I need a bankstick for non-volatile storage, or can I use the PIC's own flash?)

      I'd also like to include a patch randomization feature, with options to lock some parameters and randomize others. Say I wanted a short and punchy sound. I could set a short envelope, lock that and lock pitch modulation of the DCO, and randomize until I had something I liked to tweak further.

      The jury's pretty much still out on pots vs. encoders. I'm leaning towards pots, but then I'd have an issue if I want to be able to receive and tweak a patch. But I could solve it by having the pot keep the value intact until hitting the current setting. Encoders would provide instant incremental changes, but without led rings you can't really get an at-a-glance look at the state. And there would be sooo many led rings... ;) (Quick non-verified count says over 20 range controls are needed.)

      I'm not sure I want any faders. For the envelope maybe. Not sure at all. :)

      So... That's where I'm at. I've been doing some drawing on the panel layout in Inkscape, and when I find the time to do something more complete I'll be posting drafts. Ideas and feedback are very welcome, I hope I won't be the only one to build a PG-300 clone. There are a lot of Alpha Junos and MKS-50s out there! :)
Link to comment
Share on other sites

Work is slowly progressing on the DIN module, 15 minutes here, 30 minutes there... I have all the top-side bridges, and having soldered two of the bottom ones I realized that they use the same hole as the shift register chips. Next up: Desoldering. ;)

Will probably finish the DIN next weekend, if all goes to plan.

Any input on the 7805 getting hot by the way? The search terms "7805 hot" didn't seem to do me an awful lot of good. I'm feeding 9 volts to the core, that should be within spec, right?

Link to comment
Share on other sites

9v AC (into the core) or 9v DC ?

9v AC into the full wave rectifier ( x 1.41) minus the drop in the silicon diodes of the rectifier ( - 0.6v ) = 12 v DC (Or there abouts) feeding into the regulator

If it was 9v DC = about 8.4 volts DC feeding into the regulator.

Typically, a normal 7805 needs about 7-8 volts DC for it to work.. the excess is turnt into heat.

Does the regulator get too hot to touch? If so, you might need to attach a heatsink to it.. They are rated to about 100 deg C. (I would never ever want mine to run that hot.. it'll heat everything around it.)

If it gets blindingly hot, then you will probably eventually damage the regulator. - I'd be checking for faults etc.. disconnect the individual boards (DIN / DOUTS / LCD's) one by one to see where it's happening.

Regards

Mike

Link to comment
Share on other sites

I'm feeding the 7805 9V DC.

Right now I only have a core and an LCD. With just the core it runs nice and cool, attach the LCD and it goes too hot to touch. (I do know it's under a 100 C.)

The LCD is from Mike's, but I don't have specs on how much the backlight draws. (The datasheet I've googled only refers to the data pinout.) I don't think I have any errors on the core, as it works fine and the 7805 stays cool without LCD. The LCD works, so I'm at a loss as to what could be wrong there.

I did leave the core and LCD on for over an hour, and no magic smoke came out of any components... Seems the 7805 just gets hot, so maybe I'll just heatsink it and not worry unless something malfunctions. ;)

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...

Baby steps... I'm not dead yet but Real Life got hold of me for a while and good too.

I finally got the desoldering job done on the DIN tonight. Gotta read up on the docs and put it all back into active memory so I can hopefully get some more done soon. :)

No, there must be something wrong in the LCD PCB. Do you have the possibility to measure the Amp consumption on the feeding line? Preferably between the core and the LCD print.

I should be able to do that, have to look into that as well.

Link to comment
Share on other sites

  • 4 weeks later...

Hi, I just wanted to say I am happy to see this project happening here. I am planning on doing a PG clone as well, but not for a little while yet. I'll be interested to see how you go.

In terms of your reg getting hot, power dissipated in the reg is the voltage drop across the reg x current through it.

Definitely check for shorts on your LCD, and also in the connecting loom. It could be a small solder dag making a partial connection. Also, I'm not sure what your settup is, but do you have a pot to trim the backlight current? If you have a multimeter, it shouldn't be too hard to measure the current going into the LCD on the 5V rail.

Cheers

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