Thursday, 25 May 2017

How to Install Mac OS 10.10 Yosemite on a VirtualBox

If you want the look and feel of a Mac without paying premium for essentially a "normal" PC, then the word on the street is "Hackintosh". If you're prepared to do some research, you can find quite detailed instructions on the web (and in particular on YouTube) that show you how it's done. I suppose many people were lucky, but if you check the various fora (that you'll inevitably run into sooner or later), you'll see that they're littered with failed attempts and obstacles that were impossible to overcome.

In my attempt to install Yosemite-Zone, I ran into the following two problems well known in the art:

  • BIOS disk read error at sector: 00000011
  • "2 minutes remaining" problem.
They -- for me, at least -- proved mutually unsolvable: the solution for the first problem, renders the second unsolvable. I got as far as a boot screen, but was unable to proceed any further.

Here's what works: If you want an install that is painless, proceed as follows. Farther below, I'll explain what problems you can avoid by following this guide.
  1. Install VirtualBox 4.3.40. Don't forget the extension pack.
    4.3 is an outdated and hence unsupported version of the virtual machine. That would be the drawback of this solution then. It is counterbalanced by the non-negligible fact that it'll work.
  2. Download Yosemite-Zone.iso (google)
  3. Follow this guide on YouTube. You'll run into the "2 minutes remaining" problem, but if you follow the simple instructions, you'll end up with a bootable install.
  4. Celebrayshun!
If you install a newer version of the VirtualBox (what you would normally do), you might find that the installation fails early with a BIOS disk read error at sector: 00000011. The proposed solution to that problem is to enable "EFI" in the VM settings. If you do that, the boot process described in the guides (those you find on the intertubes) is bypassed and the system boots via UEFI instead (an updated BIOS).

You'll have to press the F8-key immediately after reset/start (hit it several time in rapid pace) to find the BIOS screen. Select Boot Maintainance Setup, then Boot from File, then the second entry (the one that ends in CDROM).

While booting (a lot of stuff races across the screen), you may or may not run into the Missing Bluetooth controller transport problem (which disappeared after I had increased the display memory in the VM setup to the maximum 128Mbytes). If you don't, after a few long seconds (a minute or two) you're presented with the Mac OS installation screen. You can now proceed according to the guides.

However, if you happen to run into the "2 minutes remaining" problem now, you're essentially doomed. The problem is that you can't get at the command line anymore, in order to to follow the proposed solution of the "2 minutes" problem. UEFI takes that away from you. If you reset your VM and boot from the disk you get the Clover screen, a colorful display with a big (X) in the center. You can set boot options, but even after what felt like a million attempts, I was unable to get at the command line allowing me to complete the manual post-install process (what the solution to the 2-minutes problem essentially boils down to). It'll just stall permanently after a few dozen lines. If, on the other hand, you uncheck "EFI" in the VM settings, you're back at the BIOS disk read error.

Finally, I gave up, uninstalled the new version of VirtualBox (make sure to uninstall the extensions first!), and then downloaded and installed the old, unsupported version. After that, installation was a breeze. Save yourself a lot of troubles, and follow the easy guide above.

Thursday, 5 January 2017

Unfinished business

It's the 5th of January 2017, and dust is settling on my stack of unfinished projects. I'm an idiot, because most of the time some absolutely trivial issue is keeping me from finishing my projects -- usually because I can't decide on some immaterial detail of the enclosure. Here are just some of the projects that I started but never completely finished:

  • MFOS SoundLab MiniSynth mk II -- 99% done
    I wanted to have a power supply based on a 12VDC input (2.1mm jack) and an internal voltage inverter to produce the negative rail (-12V) but was unable to find one that could deliver the required current levels.
  • Monowave wavetable synthesizer -- 95% done
    I just need to complete the panel wiring (19" rack case) but now I don't like the front panel graphics anymore.
  • Programmer for Yamaha DX7 -- 40% done
    I just can't decide on the number and layout of buttons and knobs. Software is doing well so far.
  • Programmer and UI for a NEC XR385 (Yamaha DB60XG) daughterboard -- 10% done
    I just can't decide on the number and layout of buttons and knobs. Software is doing ... not quite so well so far.
  • multi channel MIDI to CV interface -- 100% done
    Just finish the damn thing already!!
All the while I started the following new projects:
  • Minimoog clone
    I need to match transistors again, because I don't trust my results. Also, I need to decide on a different electronics enclosure, because I can't bend 1.6mm aluminium sheets.
  • Jasper Wasp clone
    Coming along nicely! I just need to order the remaining parts and then decide on an enclosure. Oh, wait...
  • Dream synthesizer based on a SAM2695 sound chip.
    I've already got the PCB and the SAMs, but these are QFN devices, and I have no idea whether I'll be able to solder them.
So, here's my New Year's resolution for 2017: I'm not going to start any new project until I've finished all of the above! I really am! I promise! Just not right now, because I just saw on Banggood this thing or other that I absolutely need to do first...

Tuesday, 15 November 2016

PDF to Gerber Converter

If you want to make your own permanent electronic circuits and don't want to use either strip- or protoboards, you really have no other option than to etch your own PCB. Or, rather, you had, because nowadays you can find PCB manufacturing services on the internet that make small-run high quality PCBs for little money. Just search for PCB prototyping service and you'll get any number of offers.

Usually, you simply upload your design and specify a few options (board thickness, number of PCBs, etc), and within a week or two you get your very own professionally looking PCBs. Of course, your design needs to be presented in a machine readable file format. In general, one of several popular options can be chosen when you upload.

Sometimes, however, a PCB design that someone offers to the public for DIY purposes is available only in graphical form, for example, because the designer self-etches his PCBs and therefore doesn't need to make files suitable for uploading to a PCB service.

Because I don't etch, I found myself several times in this situation, where a PCB design that was kindly offered by some friendly dude in the DIY community proved to be inaccessible to me. If only I had a program that could convert a PCB design given as a PDF file to a file format suitable for manufacturing.... But then, why not write one myself?

A PDF to Gerber Converter

I knew from writing a PDF reader in an earlier life, that PDF is basically a graphics file format. It consists of a sequence of graphics commands such as "draw line from here to there using color X" that together represent the page that you see on the screen or printed on paper. If instead of painting these lines on the screen I converted them to commands in a command language like Gerber -- one of the common file formats for manufacturing PCBs -- and then write these commands to a file, I could upload this file and have the PCB made, without me having to get my hands dirty! YES!!

After several days (and nights) of hacking, I managed to complete a simple quick'n'dirty PDF-to-Gerber-converter that can read and process most PCB designs given in PDF format. In addition to the PCB traces, it can identify solder pads and holes, and produce appropriate solder mask and drill files. You only need to manually specify the outline of the PCB (to also create an outline file) -- and perhaps additional pads or traces that need to be free of solder mask (for edge connectors etc). It even converts text on the solder side to a vector format. But it needs to be a PDF with line graphics. It can't, and likely never will, convert bitmaps.

At this stage, it can handle only single-sided boards. It doesn't convert silk screen lettering, either. And it crashes often. But still, I managed to make Gerber files for the boards of my MiniMoog clone based on PDFs published by Crazy Patroche on his own MiniMoog report [French].

Screen shot of Mini Moog VCO board with output screen open.
Blue/orange/green blobs are solder pads.
I'm currently done converting PDFs, which is why the software rots quietly on my hard disk. I'd like to make a Web-based online converter some time in the future, but there's more pressing stuff on my todo list right now.

Clarification regarding the image above: If a board outline is specified, only those traces and pads within the outline are output to the Gerber file. The circles and pads above and below the circuit in the image are of course ignored.

Friday, 3 June 2016

The Quickie Tip: How to clean a charred saucepan!

It was supposed to be a nice bit of apple sauce to accompany a fine dinner, but then the door bell rang. Well, -- to cut a long, sad tale short -- the charred apple residue was baked into the saucepan and could not be removed with any of those grill and oven cleaning chemicals we had at hand.

I was time for Inaptly Crafted Man!

Warning: Inaptly Crafted Man has super powers. You may not. If you follow this guide, you may damage your cookware beyond repair. You do so at your own risk! Only apply the method on a plain, untreated hardened steel pan. Otherwise, and especially if it's coated with Teflon and the like, you will destroy your pan.

Start with 120 grit sandpaper and rub in a circular motion with moderate pressure, sanding away the charred residue. Yes, sanding! You'll notice that smaller and thinner spots disappear almost instantly. Continue as long as you hear a scratching noise. At the bottom bend (where the flat bottom curves toward the vertical sides) use a finger to hold the sandpaper and rub sideways along the curve. Stop rubbing if the black spots have disappeared. Replace the sandpaper when it is black. Every so often clean out the black sanding dust by rinsing the pan and then drying it using absorbent tissue paper.

When all of the black areas have disappeared and only shadows remain, switch to 240 grit sandpaper and rub some more. Stop if you've had enough, even if some shadows remain.

Finally, use some steel wool, some water and wet rub it clean for a minute or two. Rinse and dry. You will notice that the pan is hardly scratched at all. Poking and meddling with a fork will scratch it far more. All in all, it took less than 10 minutes to completely clean our pan.

Tip: If you've got a soft sanding block (sort of a sponge with sanding material at its sides), use that instead of the sanding paper. It will sand more gently and adjust to the bends more easily.

Wednesday, 1 June 2016

Minimoog Replica

In the next few weeks I'll be reporting about my new project of building a Minimoog Replica. I have already started researching options and ordering some of the rarer parts. I have found various sites on the intertubes of people who have already built their own. Some even offer PCB layouts to copy, print and etch.

Here are the sites that I relied on most.

Clonage du Minimoog by Crazy Patroche
He's published on his site very nice PCB layouts in PDF form that match closely those of a Minimoog. I used these to make Gerber files so I can send them to a PCB manufacturer (I don't etch my own PCBs). Patroche uses the "newer" VCO that contains very rare and very expensive components.

By the way, Patroche gave me permission to post the derived Gerbers on this site, which I'll do as soon as I find they're OK.

Building a Minimoog Model D Replica by Tauntek
This is quite a detailed report on the construction of a Minimoog, electronics, case and all, including some details that I could not find anywhere else. For his replica he used the "older" VCO that uses the CA3046 transistor array. I'm using the same one.

Moog Minimoog (export) by FantasyJack
The essential site with all the schematics and parts list copied from the service manuals. Don't even think of building a Minimoog without consulting it early and often! There are also a few pictures of a disassembled Minimoog, especially boards, that are helpful when tracing a PCB or constructing a Minimoog cabinet.

Minimoog by Arpeggi8
Not quite as detailed as the other sites, but a great inspiration anyway with fine, detailed pictures of the cabinet.

Minimoog Wiki by J R
Quite a detailed build log, essential notes and an indispensable parts list (with substitutions).

Minimoog Resources on YuSynth (Yves Usson's site)
...especially the cabinet dimensions.

Mini-Modules : Minimoog DIY clone on its way by Julien Delgoulet (on MuffWiggler)
This has become quite an extensive post on MuffWiggler, but an essential read nonetheless. Some of the transistor substitutes (see below) were proposed by Julien.

Incidentally, Julien's about to offer a collection of PCBs and a Eurorack frontpanel for his Minimoog clone. But, of course, you can always forego the panel and hide the PCBs inside a nice vintage Minimoog cabinet.


I intend to build my replica as closely as possible (or reasonable) to the original. This means using original components when they are still available, and other parts that look like those on the pictures of the Minimoog PCBs, even if they are a bit more expensive. When in doubt, I follow the pictures.


Some of the transistors used in the original Minimoogs are obsolete and cannot be found with reasonable effort and/or expense. They are substituted with similar devices. Here's a table of all transistors used in the schematics, and possible substitutes and sources.

DeviceSubstitutes (reference)Source
2N3392still availableTayda Electronics
2N34152N3904 (original schematics), 2N3392 (Patroche)BGmicro
2N4058still availableMouser
2N4303BF245 (Julien), 2SK30 (Patroche)
2N4402still availableSmall Bear Elec, BGmicro
E402LS3954Aebay, Micross
MPS-U05TIP31C (Patroche)Tayda Electronics
MPS-U55TIP32C (Patroche)Tayda Electronics
TIS922N3904 (parts of orig. schematics)
TIS932N3906 (parts of orig. schematics)
TIS97MPS8097 (Julien)Mouser

This table gives a range of possibilities to choose from. When the original schematics offer substitution options, of course, I'll take these. For some of the TIS92/93, substitutes are specified in the schematics, but not for all of them. Still, I think it's safe to substitute them all. For the remainder, I happily rely on the advice and experience of others.

Some of the substitutes have different pin-outs than the original devices. Luckily, the original PCBs have appropriate labeling on the solder side indicating which hole represents which pin. These labels were present in Patroche's PDFs, and hence also converted into my Gerbers. Still, care will be required when stuffing the PCBs.

Also, you need to be aware that some of the transistors need to be matched in pairs. Therefore order a few extras so you'll have enough to select from.


In the schematics, 1/4W resistors are specified in some of the units, and 1/2W in the power board. However, in the bill of materials (the ones in the service manual), all carbon film resistors are 1/2W units, as are apparently those in the pictures (size matters sometime...). So I ordered 1/2W ones for all of them. They're cheap anyway, at least on Tayda Electronics. Some rarer values are not stocked there, however, and are much more expensive to order from Mouser or Digikey. But luckily, there's only a few of them.


Most modern circuits used in the DIY community use radial capacitors that use very little real estate on a PCB. This one uses axial instead. There are not that many capacitors, but some of them are quite rare in axial form and hence quite expensive (especially tantalum capacitors).

The filter board uses two 30nF polystyrene capacitors. The biggest value I could find so far was 10nF. That means wiring 3 of them in parallel. Fortunately, there's plenty of space on the boards.


I've finished tracing the VCO circuit (that I was unable to find on the intertubes) from a picture of the board -- or rather two of them. Indeed, I had to manually compensate for the lens distortion in order to get right angles, and then arrange the two pictures so that the traces meet where they need to. After a few attempts I got an almost perfect fit, which is why the board came out reasonably well.

To convert the resulting circuit to Gerber files, I exported the graphic as PDF and then used my hand-made PDF-to-Gerber converter program to generate Gerber files (bottom, outline and solder mask only). There were a few issues with the software that I had to fix along the way, but eventually, I got very nice Gerbers of all six circuit boards. Presently (02.Jun 2016), they're off for production at EasyEDA.

8. June 2016
The full set of PCBs has finally arrived! On the picture starting from the top left we have the oscillator, the filter/VCA, then on the second row the small rectifier, the tiny octave buffer, then the dual contour and finally the power/noise board. Some of the components, especially the resistors, have also arrived earlier today, so I could technically start soldering now.

However, there's another shipment arriving later this day (the switches, the card edge connectors and some other items from DigiKey). I think I can just barely hold off until that's arrived, too.

I forgot to mention that I went to the post office today to fetch a package that could not be delivered yesterday. That's the fourth package in a single day, a new personal record! It contains the 15nF polystyrene capacitors that I finally managed to find and buy on ebay. They'll simplify my building the filter board a bit (see Capacitors above).

I started stuffing the boards with the resistors that I have (that's almost all of them. A few are still in transit from the moon. Futurlec, I'm talking to you!!). Anyway, thanks to the nice layouts by Patroche, all resistors have a common 15mm spacing, which allows bending the legs using a bending gauge utility. Nonetheless, stuffing the boards is a tedious task because (a) the boards don't have silkscreen on top (like the original boards), (b) there are a lot of different values and (c) some of the values given in the replacement lists are wrong (here's Tauntek's errara list) or have been updated as "factory mods". It's a good idea to cross check with images of original stuffed boards once in a while. Working over my original VCO layout that I posted on the Electro-Music forum was a good idea, too, because now that all components align properly, it is quite obvious which holes belong to which resistor.

Meanwhile, I'm finalizing my orders with Mouser (mostly parts that can't be found anywhere else), Musikding (cheaper than Mouser but limited catalog) and Reichelt (whatever remains). I decided to go with the look'n'feel of the earlier boards. These have colorful tropical fish capacitors for certain polyester values instead of the boxy-types of later boards (see Crazy-Patroche for pictures). Some of the boxy-values are expensive or non-stocked at Mouser. Lump-types (as I call them) are always cheaper and more readily available, and while being not as colorful as tropical fishes, at least have a similar lumpy shape. That's good enough for me (and, no, I won't paint them). I'll make a list of component sources once I have them all.

Tip-of-The-Day: When ordering stuff, be sure to double- and triple-check your cart before sending it off. I ordered too few red rocker switches (3 instead of the required 5), which will lead to an expensive follow-up order with shipping cost far exceeding parts cost.

I've finished soldering those components that I have (resistors, diodes, jumper wires) and made a picture to show off. When soldering resistors, I do the "factory mods" described in the service manuals, which is why some of the values differ from those in the parts lists. I follow the pictures on FantasyJack where you can clearly see that they've got the mods, too (if you know, where to look, that is).

VCO (top) and Dual Contour boards, partly stuffed

I do have some of the transistors (2N3392, 2N3904/6) that I need, but I'm unsure whether it's a good idea to solder them now, i.e. before the less delicate components such as the remaining resistors, capacitors etc. are in place.

The friendly people at DigiKey allowed me to amend a pending partial order, so I'll have all rocker switches without an additional follow-up order.


Oh Futurlec, ye online shoppe,
How hard just can it be,
Whatev'r it is you do to drop
and send those parts to me!

I'm still juggling orders between retailers in order to save shipping costs (big ones like Mouser offer free shipping above a certain minimum amount) and/or moving parts between shopping carts when a certain value is (temporarily) unavailable at a certain retailer. It also seems that certain parts or values are unobtainable with reasonable effort. Here's a (potentially growing) list of parts that I'll have to substitute and hence deviate from the original design.

5M #1 Taper Potentiometer (Glide pot on front panel)
I could not find any reference as to what a #1 taper potentiometer actually is, but Tauntek has measured[PDF] the taper curve, and it seems pretty close to an audio one. Incidentally, on image 9-17 of the service manual -- the wiring diagram -- R2 is specified as 5M audio pot. Unfortunately, those aren't obtainable either (Mouser, DigiKey, eBay). Finally, I've given up searching and will take a 1M audio pot instead. A welcome rationale is given by the friendly people at CAESound:
Glide pot note: We have substituted to the 1 Meg value from the stock 3 meg. We found that this works very well. Our survey says that almost no one ever used the Glide pot set to maximum Glide time. Therefore the Value of 1 Meg will work for 99% of all players.
That's good enough for me.

The order from Futurlec has finally arrived, and I have already started soldering the resistors in place. The VCO that I'm using requires 2 sets of 3 matched resistors, one of 51.1k and one of 15k Ohms. I'm not quite certain as to what degree I have to match them, but I guess when my brand new DMM does not show any difference between them, that's close enough. Unfortunately, I forgot to order enough 15k units, so I don't get a close enough match. I'll add a few more to the Tayda order that's in the queue.

I also checked the 15nF polystyrene capacitors that I found on eBay (see above) and discovered that they are 10% values, when I actually need 2.5% tolerance. I measured the devices using my DMM and found four that are just about within the 2.5% margin, especially when I pair them up to get the required 30nF. I'll take my chances and use them anyway.

Tomorrow, I'm finally going to match transistors. There's just no way around that, if I ever want to finish the synth. I'm going to follow the procedure and use the circuit by Ian Fritz which seems easy enough. Luckily, I still have the circuit somewhere on a breadboard. Also, I have ordered plenty of MPS8097s (TIS97 substitute) and 2N3392s, so I'm confident to find a few matches.

I've finished matching NPN transistors (MPS8097 and 2N3392) and found enough devices that I can use. Indeed, I bought 30 transistors of type MPS8097 at Mouser and found their VBE to be within +/-2mV of each other with only a few outliers. After setting up a current of 100µA, I was able to match 6 of them pairwise to less than 0.1mV. As for the 2N3392 that I bought at Tayda, I found those that I tested to be all within less than +/-1mV which is a bit suspicious. I didn't expect to find a match after testing 3 devices. They have a different pin layout (ECB), but I checked and re-checked several times. Nonetheless, I'll build Ray "Music From Outer Space" Wilson's transistor matching circuit and check all matches again just to be on the safe side. What remains to do is to find two NPN/PNP pairs, one of them matched to +/-3mV at 20mA, and the other one such that the VBE of the PNP device is 10mV to 20mV lower that that of the NPN at 200mA. I'll try using Ray Wilson's circuit to measure the devices.

There appears to be a small controversy about the transistors in the VCF ladder, and whether they are matched or not. I thought that they need to be matched but then found that those transistors specifically mentioned in the parts list refer mostly to different ones. Page 2 of the Moog Factory Service Bulletin 804C[jpg] (Synthfool Minimoog Docs), which amends the notes on page 9-9 of the Minimoog Service Manual (the VCF schematics) lists those transistors that need to be matched, but again these are not part of the ladder:
Change note 3 to read:
  Q26 and Q28 are matched to ±3mV Vbe at 20mA IC.

Add note 5:
  Transistor pairs: Q5 & Q7, Q13 & Q14, Q15 & Q16,
Q27 & Q33 Vbe matched to ±4mV at IC=20mA.
In the schematics, the bottom pair of the ladder (but only the bottom pair) is marked with a small M in a circle, apparently indicating a matched pair (and, indeed, Q29 and Q30 are matched). Also, in some of the pictures I have of the filter PCBs, the ladder transistors are marked with a color dot (see the VCF on Patroche's site), indicating that they are "special" (as in "matched").

Here's what I'll do: Given that the matching target above is rather generous -- so much so that I think nearly all the transistors I have lie within that range -- I'll use the ones I already did for the ladder and then match 4 more pairs for those listed above in the "add note 5".

What bothers me a little, however, is the requirement for one of the complementary pairs (NPN/PNP) to be matched at a collector current of 200mA. This is pretty much the absolute maximum rating of the 2N3904/6 (substitutes for TIS92/93). The datasheet shows the TIS92/93 to have a higher maximum rating of 800mA, so the required matching current is well within their limit. Perhaps it's sufficient to match the pair at a slightly higher current, say 50mA (one quarter of the maximum rating), to have a pair that's at least partially consistent with the original. Fingers crossed!

I'm building a variant of the Moog transistor matcher circuit (with a few additions suggested by Ray Wilson). While I believe that most transistors' VBE are well within the limits required for the different circuits, I want to check some of them again. When I redid some measurements to find a few additional matches for the VCF, I found completely different values for the matches that I already had. Perhaps I blew a few transistors when plugging them into the breadboard. I don't know. In any case, I can't trust the matches I have, so I'll do them again but in the traditional way by measuring the VBE directly and then find close pairs.

Electronics Enclosure

I've started planning/building the cabinet of the synth. I bought an (expensive) aluminium sheet in my local DIY store for the front panel. It's only 1.5mm thick instead of the original 0.063" = 1.6mm, but I hope that's not a problem. I sawed it by hand into shape, i.e. 7" x 27 ⅛" (plus 1cm on either side for the bent-down wings). Sawing the long edge was a problem, because my hacksaw does not "reach" far enough into the sheet. I had to saw from either side until the saw frame hit the sheet, and then used a blank sawing blade that I held with gloves to saw the part between. It was ugly but I finally managed to complete the front panel. I'm not quite sure yet how to bend the wings or all the flaps on the side sheets (see pictures of the insides linked above).

I test fitted one of the switches that I bought by cutting a rectangular hole in one of the aluminium cutouts and drilling countersunk holes for the screws. I saw that the specs for the switch were tight, but not that tight.

How to mount a rocker switch using standoffs (left 1cm, right 9mm).
How NOT to mount a rocker switch using standoffs.
In short, the mounting holes are useless, because they are too close to the switch. Or my spacers and my screws are to big. I don't know how Patroche managed to fit his (see picture [scroll down] of his front panel). Blimey!

It's been a while since I updated this build log, but I had a few other projects to tend to. I'm not finished with the PCBs yet, because I still need to match a few transistors (see above ). Also, I had to order a few additional components that I don't like the look or quality of. I found on eBay another couple of 15nF polystyrene capacitors, but they have not arrived yet.

In the meantime, I started with the enclosure (by the way, I'm doing several things in parallel, so this log may at times become a bit messy. Once I'm finished, I'll make a PDF document that will record the whole construction in a more sensible order). I built a bending rig to bend my aluminium sheets (why does autocorrect suggest "aluminum". I'm not mercan...). It worked somewhat well for the two heat sinks for the power supply board, but was totally overwhelmed when I tried to bend the front panel wings: the hinges were bent and torn out. That spells trouble in all caps, when I have to bend the length of the sheets that make up the sides of the electronics enclosure. I'll have to come up with a design different from the original.

While we're at it, I also ruined a plank of wood when I tried to plane it down from 17mm down to 15.9mm ( the metric equivalent of 5/8 inches). At my DIY store I can't get the right thickness, so I'll have to pay a visit a local carpenter.

So many words to report so little progress.

I've been busy working on a couple of different projects, including a video series on music electronics, but now I'm back. I still haven't decided yet on the metallic enclosure for the synthesizer, so I proceeded with the wooden cabinet in order to get started again. I've finally found a plank of 15mm thickness at my local DIY store and decided that this was close enough to the original (according to the published cabinet dimensions). It will make the synth a bit lighter without making much of a difference visually.

I started by sawing -- by hand -- the two cheeks at the side of the cabinet. By keeping the saw vertical and carefully cutting along the line, I managed to get straight cuts at the proper angles. Because the cuts were done by hand, the cheeks are almost but not completely identical. I hope I can sand them to size. I don't have any decent woodworking tools, and the cheeks showed clearly the limits of what can be done by hand. So I built a jigsaw table that would allow me to do the longer cuts for the remaining cabinet pieces. I'm still making mistakes and ruin lumber galore, but the cuts are certainly straighter and faster to do. So far I've got the cheeks, the back piece with a beveled cut and a glued-on bottom bar, and the trim piece going to the top of the front panel. All the pieces have the occasional scratch and blemish that I'll either be able to sand away or have to attribute to it being a vintage synth, after all.

I've finally managed to complete matching transistors, so I can finish soldering all the circuit boards. I built a permanent version of both Ian Fritz' simplified transistor matcher and a version of Robert Moogs circuit based on the Dragon Fly Alley adaptation (using a TL071 and an additional capacitor as suggested by Ray Wilson). I re-tested the matched 2N3392 (used in the contour/keyboard board) and found them spot on. I then proceeded to find additional matches for the MPS8097 (TIS97 substitute), so I can use matched transitors for the ladder filter. Nearly all of them lie generously within the requested margins (worst pair is less than 0.2mV apart with 4mV being acceptable).

Matched transistors ready to be used. A few leftovers in the bag. Coffee hard earned (and well deserved).
Indeed, all transistors I have are practically matched to one another within a few tenths of millivolts. This made it quite hard to find the one pair where the VBE of the PNP needs to be "10mV to 20mV lower" than that of the NPN (contour/keyboard). I had to revert to earlier orders and my small inventory to finally find a pair that is 12mV apart.

I think regarding how far manufacturing technology has evolved since Robert Moog's times, you can probably just grab a pair of transistors from the same batch and be fine i.e. have an acceptable match. Anyhoo, I'll use what I have and then decide on the electronics enclosure to finally begin the tedious wiring process.

I'm nearly finished soldering the boards. The only thing that remains is the tempco mod that Yves Usson of describes on his Minimoog page. It consists of moving the three tempco resistors closer to the transistor arrays that they are supposed to control the tracking of. That should take no more than a few minutes. Oh, and I still have to push the ICs into their sockets. That's another five to ten minutes.

I've also figured out -- finally -- how the electronics enclosure is built in the original Minimoog. By inspecting the interior pictures on (and also reading Tauntek's page word by word) I discovered, that the bottom part of the enclosure (where the PCBs are slot into their sockets) is attached to the front panel using a piano hinge, allowing it to "swing" up and down a little, presumably to give access to the card slots and the wiring. The whole enclosure is then attached to the case using another piano hinge. Because there is only one row of mounting holes along the bottom of the front panel, it appears that both hinges are mounted there: one is mounted "inwards" to attach the bottom of the enclosure to the front panel, and the other "outwards" in order to mount the front-panel-plus-enclosure to the wooden frame. The bottom piece of the enclosure therefore needs only one long bend (along the edge opposite the hinge) and two short bends (one on each of the short edges). I should be able to do that -- fingers crossed. After all, Tauntek was too, apparently.


Done! The boards are finally complete. I haven't yet fixed the tempcos to the transistor arrays (note the flying white wires on the VCO board), but I'd call it a milestone anyway.

I may also have found a way to attach the switches to the front panel (see discussion above) by using a narrow brass tube that narrow enough not to interfere with the switches' operation. But not today. I'll have a beer now, cheers!

Thursday, 18 February 2016


16. May 2015
Alright then, I think it's time for a new analog synth project. I've done digital stuff for long enough. After having researched various options I decided to go for something big. I'm not that much into modular synths but I do like the idea of being able to manually patch a few connections for that special sound. I finally decided to go for the ASM-2.

The ASM-2 is an upgrade to a synthesizer called ASM-1 (somewhat expectedly...) and includes a few additional modules and some enhancements to some of the original ones. PCBs can be bought at Elby Designs and contain several practically self-contained modules allowing the builder to customize their systems as they see fit, e.g. as a modular, semi-patched or hard-wired system.

The ASM-2 consists of the following modules:
2 x VCO
2 x VCF (1 x state variable, 1 x low-pass transistor ladder)
2 x VCA
2 x ADSR
1 x Glide Generator
1 x Ring Modulator
1 x Noise Generator
1 x Sample & Hold

I just received the PCB in the mail, and after having admired it long enough I'm now in the process of ordering all the electronic components. I already sent an order for some of the rarer parts to I hope they arrive on time. In the meantime here's a picture of the PCB.

11. June 2015
It took me a while to shop around for all the electronic components but I finally managed to decide where to buy. The bulk of the components, in particular semiconductors and capacitors, arrived today. I ordered from Reichelt which I found to be the cheapest supplier. A few rarer items such as the LM394 matched transistor pair, the J108 JFET transistor and some germanium diodes I found on utsource. They arrived a couple of days before. Those few semiconductors that Reichelt does not stock, plus resistors in bulk amounts that are cheaper there, I ordered from Futurlec. Those items that in turn Futurlec does not stock, in particular the CA3080, I'll order from Musikding. Unfortunately, Musikding currently does not stock it either (apparently they ran out just when I was ready to buy), so that'll have to wait.

I've already got a heap of components, yet they are only the ones that go into the PCB. The panel mount components, i.e. all the switches, potentiometers and jacks will constitute another sizable order. But first things first.

24. June 2015
I just returned from Vienna. Not that anyone cares to know but because there's little else to report I figured I can just as well mention it anyway. I just saw that Musikding now has CA3080 OTAs in stock but instead they don't have any 2n2 polystyrene capacitors left. Life is hard at times.

23. July 2015
It appears that Futurlec ran out of some of the components that I had ordered. So I went back searching for them and eventually found them at Small Bear Electronics. They also stock a LM394 work-alike (AS394 by Erica Synth for US$ 4.95). They, too, slipped into my order.

I hope that the Futurlec order will arrive soon because the bulk of the resistors is in there. I'd like to begin stuffing the PCB with the lowest parts, and that'll be resistors and diodes.

28. July 2015
I'm still waiting for the Futurlec order to arrive. But I'm not waiting idly. Instead, I started stuffing the PCB with the components that I have. That would be all those resistors that I happened to have lying around, and all the IC sockets. It's coming along nicely.

The alert reader may be baffled by two blank areas on the left of the board where there's an IC socket outline but no socket. That's the spot where the matched transistors go. I bought a pair of LM394 fakes work-alikes in a TO-5 can that I'll solder there. Mystery solved.

12. August 2015
The Futurlec order has finally arrived, and I was also able to complete the order with Musikding (including the CA3080s that I ultimately need). In the meantime I also received the latest PCB overlays and bill of materials from Elby Designs. It appears that several resistor values have changed, including some that I already soldered in place. There are some new odd values that I don't have at hand and that require a follow-up order from Reichelt. But first I'll continue soldering those that I have, and that will take some time.

15. August 2015
I have finished soldering the resistors. Most of them anyway. There are some whose values had changed in the most recent schematics and that I must order first. Also, a kludge is required because of late improvements to one of the modules that were published but I hadn't noticed. It requires cutting two traces on the PCB and soldering two resistors in their place. I'm reluctant to violate the beautiful PCB by hacking at it with hacksaw, crossbar and hatchet. Or a precision knife. But there's no way around it, if the synthesizer is ever to be finished.

18. August 2015
The synthesizer is coming along nicely. I finished soldering diodes and most of the capacitors. There are some that a I bought too few of and others that I did buy enough of but somehow cannot find anymore. I'm adding those to the Reichelt order that I mentioned above. Also I need to have another email exchange with Elby Designs in order to clarify a few things regarding resistor and capacitor values that have changed in the BOM but not in the schematics. It is (and will be for some time) a lot of work but I'm confident that this thing is going to be my masterpiece!

PCB with most resistors and capacitors in place.
21. August 2015
Today I managed to complete ... nothing. I have plenty of other ideas that I want to explore, in addition to the couple of synths that are stalled in various stages of completeness. I also experiment with digital circuits, because you can only do so much analog stuff at any one time. The following picture shows an Auduino granular synthesizer, based on a "standalone" Arduino board. The alert, hawk eyed reader may notice that I wired the ISP connector the wrong way round. In any case, I'll open a separate thread to report on my experiments with (and potential enhancements of) the Auduino.
Midified Auduino synthesizer with front panel.
10. September 2015
The PCB is nearly completely stuffed. After quite an intense email exchange with Laurie Biddulph of Elby Designs, who has proven extremely patient and helpful, I'm quite certain now that I'm up to date with the most recent specs. I had to replace a few components but it was worth it. This is definitely going to be my masterpiece!

A handful of components is still missing, including several ones that I ordered the wrong number of, but mostly it's the trim pots that I'll do after I have given the board a decent cleaning using isopropanol to remove the solder resin residue. Also, I haven't soldered the germanium diodes yet. I'm a bit intimidated by them because I think they are quite delicate.

18. February 2016
The PCBis now completely stuffed, germanium diodes, trim potentiometers, missing components, voltage regulators and all. The only thing that's left are the three modifications that need to be done on the PCB:
  1. one leg of a capacitor in VCO1 is left unsoldered and needs to be connected to a leg of a nearby resistor
  2. one leg of the corresponding capacitor in VCO2 needs to be connected to a leg of a nearby IC
  3. two cuts need to be done on connections on the PCB and then bridged with resistors
That's next on my list. I've already started planning the layout of the front panel. I think I'll go for a prepatched ("normalized") design, yet with full patchability. The idea is that the most common connections can be done with switches on the control side of the panel, but for the extra flexibility, there's a patch panel to override the normalized routing (using switched jacks).

Thursday, 31 December 2015

Roland Boutique JU-08 MIDI System Exclusive

The Roland Boutique line of synthesizer modules are known to support only a few of the generic MIDI control messages. The MIDI Implementation Chart of the JU-06 lists the following MIDI CC messages:


However, Boutique modules of the same kind can be chained in order to increase polyphony. To accomplish this, it is necessary that the master module (the first in the chain) is able to control parameters of the slave modules. It does so by transmitting system exclusive ("sysex") messages whenever the master's state is changed.
  1. If the master is switched to a different patch, a dump of all its parameters is transmitted via several system exclusive messages. A dump of the current patch is also sent, when the master is switched to chain mode.
  2. If voice parameters are changed via panel controls, appropriate system exclusive messages are sent.
Note, that these patch dumps or panel controller messages are sent only if the module is in chain mode. But a module will always respond to such system exclusive messages, irrespective of the mode it is in.

So, while a module that is not in chain mode will not send parameters or dumps on its own, you can still request that it sends these parameter values by sending it parameter request messages.

A parameter request message has the following form:

f0 41 10 00 00 00 1d 11 [address] [length] xx f7
 |  |  |  |  |  |  |  |                     |  |
 |  |  |  ?  ?  ?  |  Request parameter     |  End of Exclusive
 |  |  |           Product code for JU-06   Checksum
 |  |  Device ID
 |  Roland
 Begin System Exclusive

Address and length fields are 4 bytes each, highest byte first. Because parameter values are sent half-byte wise (4 bits per sysex byte, higher bits first), lengths and addresses are multiples of two. Note that with the Boutiques you cannot request multiple values at once (by specifying an appropriate length), therefore the length field is usually 2 (most parameter values are 8-bit values = 2 times 4bits). The checksum covers only the address and length (or data, see below) fields.

The response sent by a module looks as follows:

f0 41 10 00 00 00 1d 12  [address] [data]  xx f7
 |  |  |           |  |                     |  |
 |  |  |           |  Parameter value       |  End of Exclusive
 |  |  |           Product code for JU-06   Checksum
 |  |  Device ID
 |  Roland
 Begin System Exclusive

Because data bytes in a MIDI message must have their highest bit=0, a data byte can contain only values from 0 to127. A 8-bit parameter value is therefore split into two half-bytes, each containing 4 bits of parameter value data, and sent as two MIDI data bytes, with the highest 4 bits in the first byte.

aaaabbbb -> 0000aaaa 0000bbbb   d[i]=(v>>4)&0x0f; d[i+1]=v&0x0f;

In a response, two such successive MIDI bytes are combined in the following manner to reconstruct a parameter value byte.

0000xxxx 0000yyyy -> xxxxyyyy   (d[i]<<4)|(d[i+1]&0x0f)

The following table shows all known parameters of the JU-06. The top 2 bytes of the address field are always 03 00 , so the table lists only the high (columns) and low (rows) bytes of the remaining 2 address bytes. The address ranges (indicated by the high byte, i.e. columns) appear to relate to a particular function (LFO, DCO, ...).

00RateRangeHPF ModeAttackChorus SwitchPorta Switch
02Delay TimeLFO ModCutoffLevelDecayDelay LevelPorta Time
04PWMResoSustainDelay TimeAssign Mode
06PWM SourceEnv PolarityReleaseDelay Feedb???
08Square SwitchEnv ModBend Range
0ASaw SwitchLFO Mod
0CSub LevelKey Follow
0ENoise Level
Example: VCF Cutoff has address [03 00] 08 02

The patch dump that you get when you change voices or switch to chain mode is split by function. So you get a separate sysex message for each of the address ranges starting with 06 00 (LFO), 07 00 (DCO), and so on. What's interesting, is that each message contains more entries than there are parameters in the JU-06. So while the LFO has two parameters, the corresponding sysex message has 7 entries! I wonder what they are for...

Parameters2872444 (5)
Sysex entries71312791011

When you supply the wrong number of 'length' bytes (2 or 3) in a parameter request, yet still the correct check sum, the JU-06 responds with a dump of the whole data set (as in a voice dump), but with more entries. This way, I discovered that the patch name starts at address (03 00) 11 16. A patch name appears to be 16 characters long -- at least that's the number of characters in the file dumps that you get when you follow the data backup procedure of your module. In the sysex dump there are a lot more characters, but I don't know what they're for -- yet.

If you want to query the voice name, you have to include 2 bytes before the voice name. When I supplied address 11 16, the module consistently failed to respond. However, when giving address 11 14, I can get as many characters as I want. Of course, with the lower address the characters start at index 2 of the sysex data field, with 1 character per byte.

This is as far as I got, but there's certainly more to discover. Stay tuned!

Sources and Further reading

Updated: 6.1.2016