Thursday, January 1, 2009

Exploring the Fizmo NRPN set

After not being able to find any reliable documentation on the NRPN values that the Fizmo uses for patch editing (no, it's not the same as the MR/ZR series), I've started a series of experiments to determine how the NRPN numbers map to parameters, and find all of the "hidden" parameters that you can't edit from the panel.  I've already had a bit of luck on that score.  Before I get into it, here's:

A Quick Tutorial on NRPNs

Those who know some MIDI already know that the number of available continuous controller #'s is limited, and most of them are already assigned.  Some are assigned to specific performance controls (mod wheel, which is controller #1, being the best known).  Some are reserved for sending the low bytes for 14-bit controller values.  The real-time messages eat up some numbers, and General MIDI consumes a few more each time the spec is updated.  So there aren't enough unassigned ones to assign one to each parameter that is editable on a typical synth.  So some manufacturers resort to sysex for parameter editing.

However, the continuous controller definitions themselves contain the mechanism for extending the available set of numbers: The RPN/NRPN mechanism.  The way it works involves four controller messages: two to select the parameter to be edited, and two to send the value.  Registered Parameter Numbers, or RPNs, are defined in the MIDI standard; the two most commonly used RPNs allow master tuning and pitch bend range to be altered via MIDI.  However, Non-Registered Parameter Numbers, or NRPNs, are reserved in the MIDI standard for manufacturers to define how they wish.  

To send an NRPN value, first you send messages to select the desired parameter.  Continuous controller 99 is used to send the most significant byte (MSB), and controller 98 is used to send the least significant byte (LSB).  If the receiver has fewer than 128 parameters, the MSB message need not be used.  For example, to select parameter 131 (whatever that parameter happens to be on a given synth), you would send a controller 99 message with a value of 1, and a controller 98 message with a value of 3.  (The value of the controller 99 message is multiplied by 128, and added to the value of the controller 98 message.)  Having selected the parameter, you then send two more messages to specify the value of the selected parameter: controller 8 sends the MSB of the value, and controller 38 sends the LSB.  (If the parameter is limited to the range 0-127, the MSB message need not be sent.)  If we wanted to set the selected parameter to a value of 286, we send the controller 8 message with a value of 2 (2*128=256), and the controller 38 message with a value of 30.  

Here's what I've found out so far about the Fizmo's NRPN implementation:

Basic Structure of the NRPN numbering

Each parameter within each sound and oscillator has its own NRPN parameter number.  (Recall that each patch on the Fizmo has four sounds, or layers, and two oscillators per sound.)  It is possible to edit multiple sounds and oscillators at once from the panel; if you do this, the Fizmo will send out a separate set of NRPN messages for each individual parameter which has been changed.  In order to make the Fizmo send editing NRPN messages, you have to go into the system edit mode; press the MIDI button multiple times until "nRPn" appears in the display.  Then, press the "yes" button to turn it on.  If you then hit the save button, it will save this to flash and become the power-up setting.  
The high byte of the parameter number is used to specify which sound and oscillator is being accessed.  The values go like this:
  • Sound 1, oscillator 1: 2
  • Sound 1, oscillator 2: 4
  • Sound 2, oscillator 1: 6
  • Sound 2, oscillator 2: 8
  • Sound 3, oscillator 1: 10
  • Sound 3, oscillator 2: 12
  • Sound 4, oscillator 1: 14
  • Sound 4, oscillator 2: 16
Because there are more than 128 parameters in each oscillator, a few parameters will have the MSB value one higher than noted above.  Parameters which are not specific to an oscillator (such as the dry/effect mix) have an MSB value of 1.

The LSB then specifies the individual parameter.  Here are some that I've found so far (the MSB values shown here as an example are for sound 4, oscillator 1):


Control NRPN (99/98)

Effect Mix 1 34
Pitch Tune 14 14
Pitch Fine 14 15
Pitch Mod button 14 26
Pitch Mod Amount 14 27
Glide Time 14 18
Mono Button 14 16
Attack (Pitch) 14 79
*sent initially 14 80
Attack (Filter) 14 95
Attack (Env) 14 111
*sent initially 14 112
Decay (Pitch) 14 85
*sent initially 14 81 14 83 14 82 14 84
Decay (Filter) 14 101
*sent initially 14 97 14 99 14 98
Decay (Env) 14 117
*sent initially 14 113 14 115 14 112
Sustain (Pitch) 14 86
Sustain (Filter) 14 102
Sustain (Env) 14 118
Release (Pitch) 14 87
Release (Filter) 14 103
Release (Env) 14 119
Envelope Mode button 14 123
Velocity button 14 120
*sent initially 14 125
Amp Level 14 12
Pan 14 13
Effect Bus Select button 14 20
Wave Select 14 52
*sent initially 14 51
Wave Modulation button 14 57
Wave Mod Amount 14 58
Filter Cutoff 14 32
Filter Resonance 14 33
Filter Envelope Amount 14 34
*sent initially 14 119
Filter Mod Amount 14 36
Filter Kybd Track button 14 37
*"on" also sends 14 39
Amp Noise Mod Amount 14 70
Amp LFO Mod Amount 15 0
Amp LFO Shape button 14 126

The ones that say "sent initially" are clues to some of the hidden parameters.  Many of these get set to default values when you move a panel control that is associated with those parameters.  The big win here, if I can sort it out, is the envelope parameters.  The Fizmo envelopes are actually multi-segment envelopes, but only ADSR-type controls are provided on the panel, and when you move one of them, the "extra" segments get set to defaults.  (Sometimes.)  That's what the "sent initially" means; it sends those the first time the control is moved because that action resets them, and then they aren't sent again because you can't change them from the panel.  Here, for example, is a dump from MIDI Monitor from moving the Decay knob (the dump shown is for sound 4, oscillator 2), with the Amp envelope selected:


22:35:46.206 From MIDI Express XT #2 Port 8 Control 3 99 16
22:35:46.206 From MIDI Express XT #2 Port 8 Control 3 98 117
22:35:46.207 From MIDI Express XT #2 Port 8 Control 3 6 0
22:35:46.208 From MIDI Express XT #2 Port 8 Control 3 38 1
22:35:46.208 From MIDI Express XT #2 Port 8 Control 3 99 16
22:35:46.209 From MIDI Express XT #2 Port 8 Control 3 98 113
22:35:46.209 From MIDI Express XT #2 Port 8 Control 3 6 0
22:35:46.210 From MIDI Express XT #2 Port 8 Control 3 38 0
22:35:46.211 From MIDI Express XT #2 Port 8 Control 3 99 16
22:35:46.211 From MIDI Express XT #2 Port 8 Control 3 98 115
22:35:46.212 From MIDI Express XT #2 Port 8 Control 3 6 0
22:35:46.213 From MIDI Express XT #2 Port 8 Control 3 38 0
22:35:46.213 From MIDI Express XT #2 Port 8 Control 3 99 16
22:35:46.214 From MIDI Express XT #2 Port 8 Control 3 98 114
22:35:46.215 From MIDI Express XT #2 Port 8 Control 3 6 0
22:35:46.215 From MIDI Express XT #2 Port 8 Control 3 38 127
22:35:46.216 From MIDI Express XT #2 Port 8 Control 3 99 16
22:35:46.216 From MIDI Express XT #2 Port 8 Control 3 98 116
22:35:46.217 From MIDI Express XT #2 Port 8 Control 3 6 0
22:35:46.218 From MIDI Express XT #2 Port 8 Control 3 38 127
22:35:46.265 From MIDI Express XT #2 Port 8 Control 3 99 16
22:35:46.265 From MIDI Express XT #2 Port 8 Control 3 98 117
22:35:46.266 From MIDI Express XT #2 Port 8 Control 3 6 0
22:35:46.267 From MIDI Express XT #2 Port 8 Control 3 38 2
22:35:46.313 From MIDI Express XT #2 Port 8 Control 3 99 16
22:35:46.313 From MIDI Express XT #2 Port 8 Control 3 98 117
22:35:46.314 From MIDI Express XT #2 Port 8 Control 3 6 0
22:35:46.315 From MIDI Express XT #2 Port 8 Control 3 38 3
22:35:46.385 From MIDI Express XT #2 Port 8 Control 3 99 16
22:35:46.386 From MIDI Express XT #2 Port 8 Control 3 98 117
22:35:46.386 From MIDI Express XT #2 Port 8 Control 3 6 0
22:35:46.387 From MIDI Express XT #2 Port 8 Control 3 38 4

Note all the parameters that changed at first, and then that only parameter 117 continued to change as the knob kept moving.  Clearly, parameter 117 corresponds to the sustain knob on the panel.  The other parameters are associated with additional envelope segment levels and/or times, not accessible from the panel, that were set to default values by the movement of the sustain knob.  

I've only managed to sort out a few of these parameters so far.  There is one "extra" parameter associated with the Attack knob, in addition to the attack time itself.  When I started experimenting with this, I expected it to be an attack peak level setting, but it wasn't.  What it turned out to be instead is a time scaling parameter that makes the attack faster or slower, depending on the note-on velocity.  The resulting attack time is proportional to:

attack time * scaling parameter * (128 - velocity)

If this parameter is set to its max value (which appears to be 99), and attack time is at its max value, and a note is struck with minimum velocity, a veeeerrrrry long attack (about a minute) results.  With these same settings, a max-velocity note results in an attack time of about five seconds.  If the scaling parameter is set to 0, attack is instantaneous regardless of what the attack time is set to.  

For the pitch envelope, the attack time is parameter #79 and the scaling parameter is #80.  For the filter envelope, the corresponding parameters are #95 and 96, and for the amp envelope, #111 and 112.

Another finding: The Fizmo manual gives one the impression that velocity scaling on envelope levels is an on-off parameter, selected by the Velocity button.  Not so.  It's actually a variable parameter.  To set it, using the amp envelope as the example, you must send the desired value to both parameters #120 and 125.  The #120 corresponds to the value that is actually active; the #125 is a "holding" register.  When you turn off velocity response with the Velocity button, parameter #120 goes to zero.  When you turn it back on, it resets #120 to #125's value.  The interesting thing is that there does not appear to be any way to set parameter #125 to a default value from the panel.  Without editing software or some other way of sending NRPNs, you could get really frustrated if you were editing a patch with parameter #125 set to a minimal value; the Velocity button would appear to have no effect.  I've seen that some of the factory patches have different values of this parameter, so be careful about using a factory patch as a starting point for one of your own patches.  

I'm going to keep working on this, in part because Sounddiver for OSX is apparently a dead item now, and there doesn't seem to be any other way of computer editing a Fizmo on a Mac without resorting to OS9.  To send NRPN sequences, I'm using the event editor in Metro; to observe NRPNs coming back from the Fizmo, I'm using MIDI Monitor.  

Tuesday, December 30, 2008

Statescape: Idaho

I've got a new Statescape up.  Actually two... kind of.

Saturday, December 20, 2008

MIDI Manufacturer IDs

In the MIDI standard for system exclusive ("sysex") messages, one of the information bytes in the header is an ID number that specifies the manufacturer who defined the particular sysex format. Since each manufacturer is free to define their own sysex formats, the manufacturer ID is necessary so that a synth from one manufacturer won't accidentally respond to a sysex meant for a synth from another manufacturer if they coincidentally happen to use the same model number fields. Manufacturer IDs are handed out by the MIDI Manufacturers' Association, which is also the body responsible for maintaining the MIDI protocol standard. Any manufacturer that wishes to define its own sysex messages needs to apply to the MMA for an ID.

Now, in the original MIDI standard, the manufacturer was defined as one byte long. Allowing for the fact that the high bit in any data byte in any MIDI message must be 0 (in order to distinguish it from a command byte, which always has a high bit of 1), that leaves a usable range of numbers of 00-7F hexadecimal, or 0-127 decimal. Long ago, in the original 1983 standard, the MIDI principals (which at the time were Sequential Circuits and Roland) decided to divide the manufacturer IDs into four groups, to be assigned to manufacturers on a geographic basis:

  • 01 to 1F for American manufacturers (00 was reserved, which I'll get to in a bit)
  • 20 to 3F for European manufacturers
  • 40 to 5F for Japanese manufacturers
  • 60 to 7F were reserved for future use (Some of these have since been assigned for certain special purposes, such as the MIDI Sample Dump Standard)

In the original specification, published by Sequential in the January 1984 version of "The Complete SCI MIDI", these manufacturers were assigned:

American group:

01 Sequential
02 Big Briar
03 Octave/Plateau
04 Moog Music
05 Passport Designs
06 Lexicon
10 Oberheim

European group:

20 Bon Tempi
21 SIEL

Japanese group:

40 Kawai
41 Roland
42 Korg
43 Yamaha

Sequential received ID #01 as befitting its status as co-originator of the MIDI standard, along with Roland, which was given the "first" number in the Japanese group. (I don't know why Kawai was given 40; it may have been the case that 20 and 40 were reserved at first, as 00 was, and then un-reserved and assigned later.)

A few things to note from that list. Both Moog Music and Big Briar are assigned IDs. At the time this list was issued, in 1984, Moog Music was the original New York company, owned at the time by Norlin (I think; it was about this time that Norlin broke up), while Big Briar was Bob Moog's company in North Carolina (he had been gone from Moog Music for a number of years at this point). As most of you know, the Moog Music that exists now is actually Big Briar renamed; the original Moog Music has long since folded. So I got curious as to which ID Moog is using now. Turns out the current production Voyager uses 04, the original Moog Music ID, and presumably 02 is no longer in use. The MMA's rules today state that a manufacturer must renew their ID each year, or it can be reassigned (much like Internet domain names). However, I doubt that the MMA will reassign 02, even if Moog is no longer renewing it.

Some of you may be wondering now who those other companies in the American and European groups are. Other than Moog/Big Briar and Lexicon, they are all gone from the music industry now. Sequential you know about, the creator of the mighty Prophet-5 and the co-inventor of MIDI. Oberheim is another familiar name to synth perfomers. Octave/Plateau had an interesting run in the '80s; they created what was probably the first rackmount synth, the Voyetra-8, with a remote keyboard that connected to it via a (non-MIDI) control bus. A couple of years later, they introduced the first computer-based sequencer software, which was also called Voyetra, and at that time they changed the company name to Voyetra. This was a very popular package from 1986 up until about 1992, when competition overcame it.

Passport Designs was also a music software company, coinciding with the MIDI era. Like Voyetra, they marketed a sequencer package, called Trax, that was popular in the early days of computer sequencing. They are probably best known for Alchemy, a sample librarian marketed in the 1990s. They were bought out and the existing product line discontinued in 1998. SIEL was an Italian synth manufacturer of some note, one of the two most successful of the 1980s European manufacturers (along with Crumar). They were bought out by Roland in 1987. Bon Tempi was a European maker of combo organs and string machines. They are still in business, but no longer manufacture any keyboard instruments other than some toys. It's curious that they were one of the first to get a manufacturer ID, since I don't think they ever marketed a product that used MIDI.

Despite the demise of these companies, the field of products that use MIDI has expanded dramatically since that 1984 specification. At the time, it was anticipated that only a few dozen manufacturers would ever request or need IDs. But a funny thing happened on the way to the 21st century: the MIDI-using synth field grew dramatically with the advent of soft synths and plug-ins, plus there was an unanticipated explosion in the number of non-synthesizer applications of MIDI. It's common now to find the protocol in use controlling not only studio effects and pipe organs, but also totally non-musical applications such as video editors and light show controllers. By 1990, the pool of available IDs was running out. So the MMA created an "escape hatch": They redefined the manufacturer ID standard to state that an ID byte of 00 indicates that the following two bytes constitute an extended ID field. This opened up another 16,384 ID numbers. They retained the convention of the geographical groupings: the numbers from 00 00 00 to 00 1F 7F are the American group, the 00 20 00 to 00 3F 7F group is the European group, and the 00 40 00 to 00 5F 7F group is the Japanese group. The group from 00 60 00 to 00 7F 7F is apparently going to be a new Asian (China/Russia/Korea/India et al) group, but I don't think any of those have been assigned yet.

There's a list on the MMA's Web site of the most recently assigned IDs (not updated in about a year, unfortunately), and there are some interesting names that pop up. I wonder why National Semiconductor and U.S. Robotics need MIDI IDs? Nvidia (manufacturer of computer video cards) appears, as does supercomputer maker Silicon Graphics (I didn't realize they were still in business). Some old-school names in the professional audio business appear: Electro-Voice, Shure, Otari. Is someone designing MIDI-controlled microphones and loudspeakers? ID 00 01 51 is assigned to Research in Motion, the Blackberry maker. Can you remotely control your Blackberry via MIDI? If so, why? There's a few sad notes too: among the IDs marked "relinquished" is 00 20 50, which belonged to Hartmann GmbH, maker of the brilliant but ill-fated Neuron.

Anyway, what prompted all this was this posting on Matrixsynth, which points out that Dave Smith Instruments is using ID 01, which was Sequential's. Nice to know that the MMA hasn't forgotten their roots. If anyone should be entitled to use Sequential's number, Dave Smith is the guy.

Monday, December 15, 2008

My order is in

Placed an order for a Synthesis Technology MOTM-650 MIDI/CV converter today, to take advantage of their end-of-year sale. The 650 is just what I need to bring flexible MIDI control to The Discombobulator. I like the idea of being able to drive a lot of different control voltages with the sequencer, and with the 650, you can get up to 12 control voltages out -- a pitch CV, velocity CV, and aux CV (assignable to a MIDI continuous controller) for each of four channels. After thinking some about where to mount it, I'm going to build a fourth block, which will contain the 650, a pair of envelope generators, and a VC panner, along with perhaps a mixer and whatever else I can fit in. This block will serve as the modular's primary interface with the rest of the world, taking MIDI from the sequencer and sending audio outputs to the mixer.

Procuring the 650 will allow me to dedicate the JKJ Electronics (RIP) CV-5 to the EML 101. For the past several years, the CV-5 has done double duty, interfacing to both the 101 and the modular. This has been a pain because the EML uses 1.2V/octave scaling, so every time I move it from one to the other, I have to re-scale it. There are, however, a lot of convenient features about the CV-5, which I'm going to have to work a bit to get the 650 to do the same things. One thing I appreciate about the CV-5 is that it contains a built-in MIDI-controlled panner; you plug in a mono audio signal, and it produces a stereo out. The panning is contolled by the MIDI Pan continuous controller, and it's internal to the interface. This is nice for automating panning during mixing; I do a lot of virtual-mix techniques, and to make that work you need the mixdown to be absoultely as automated as possible.

Other handy features of the CV-5: It processes pitch bend messages and adds or subtracts pitch bend from the pitch CV output, and you can set the bend range via MIDI. It also has a built-in LFO which can be added to several of the CV outputs, and the LFO can be sync'ed to MIDI clock. (It also has the ability to convert MIDI clock to DIN sync, but I don't use that.) A built-in portamento can also be programmed via MIDI and added to the pitch CV output, and there are several choices for note priority, velocity and aftertouch routing, and gate/trigger modes. (This includes S-trigger output, which is another thing I don't use since I'm not driving a Moog with it.)

Those are the sorts of things I've been looking for in a replacement for the CV-5, and the 650 fills the bill. Plus, it is of course built in the MOTM form factor, which the CV-5 is not. And, the 650 has lots of additional goodies, including built-in sequencing, microtuning tables (which work by offsetting the pitch CV output depending on what note is played), and the ability to update the firmware via MIDI. One little glitch is that there is an updater program for Windows and Mac OS9, but not OSX. I'm going to ask Paul S. if he's willing to document the updater protocol; if so, I'll write an OSX updater program and give it away to other 650 owners under GPL-type terms.

Saturday, December 6, 2008

Finishing Assembly of the MOTM-820




Picking up where we left off: Here's the remaining parts, waiting to be installed:





Most MOTM 2U-width modules have the right-side pots mounted on the PC board, and they are used to help support the board's attachment to the panel.  Here are the pots, waiting to be soldered:



One nice thing about the MOTM kits is that they provide pre-stripped and tinned coax for the audio I/O jacks:



And the rest of the I/O is done with twisted pairs.  At this point, all soldering on the board is done.



The panel, as it comes out of the bubble wrap:



Mounting the jacks:



The right way to tighten the jack nuts, without scratching the panel.  The piece of red tape on the socket helps me find it quickly in the toolbox, since I use this size often.



The mounted jacks.  I've left them a bit loose because sometimes it helps during soldering if you can rotate them, to make it easier to get the iron in.  I'll straighten and tighten them after soldering.



The PC board is supported by a metal bracket.  This shows how the bracket will mount onto the panel.  It fastens to two studs that are welded to the back of the panel.  The board mounts on the right side of the bracket, on standoffs.  The pot stems will go through the large holes and be clamped to the panel by mounting nuts front and back.  



Adjusting the mounting nuts on the pot stems on the back side of the panel, so that they are snug to the panel:



The completed mounting, with the board mounted to the bracket, and the bracket mounted to the panel:



This is what the panel looks like from the front at this point.  The two remaining holes are for a toggle switch and an LED that will both mount directly to the panel.



And now we pause for a cat photo.  This is DJ:



Soldering the coax and twisted pairs to the jacks.  I'm using the screwdriver to keep some tension on the coax while I solder it.  Note that at this point the switch and LED have been mounted and soldered, at the upper right of the panel.  



If you find that you have accidentally soldered something to the wrong jack, don't unsolder it; just swap the jacks around.  Of course, I never do that, ahem...



Last step: attaching the knobs.  



I admit it; I'm obsessive about knob registration.  



The completed module, ready to mount and test:



Wednesday, November 26, 2008

MOTM-820 Assembly

I'm resuming a project that I started last spring, and then put in the shelf due to house-related projects.  This is a circuit board for a Synthesis Technology MOTM-820 voltage controlled lag processor:


At this stage, I have just installed the white power connector at the lower right, and the ferrite beads immediately above it.  All resistors and caps are installed, but none of the semiconductor devices are yet.

In this photo, the ICs are installed and I'm installing transistors.  There are two stuffed here, one in the center of the board, and one at right center; they are not soldered yet.  When I solder discrete devices, I generally like to do at least two at a time, and preferably 3-5 at a time, so that I can alternate between devices, doing a pin on the first one, a pin on the second one, etc.  That reduces the heat buildup in the devices.  



Here is a closeup of the solder side of the board.  The bending of the leads is called "cinching" the leads; it keeps the device in place while it is being soldered.  I bend them in different directions to help prevent shorts.  After it is soldered, the excess lead lengths are cut off.



With all of the transistors in, this phase of assembly is complete and the board is ready to wash.  In its kits, Synth Tech divides board stuffing and assembly into two phases: all of the parts that can tolerate water immersion are installed first, using an organic acid-based solder.  This solder does a good job of removing oxidation from pins and board traces, but it must be washed after soldering to remove the acid flux.  After the final wash, the remaining components are installed using a "no-clean" solder that doesn't have to be washed, but requires more care in soldering.  The board, ready for wash:


This weekend, I'll do more work on it and post more photos.  Once the potentiometers are installed on the board (they go along the top edge in the photo above), it'll start to look more like the final product.  

Sunday, November 16, 2008

Saving Private Fizmo

As I posted back in September, I acquired an Ensoniq Fizmo that needed the factory voltage regulator replaced.  I finally found time to do the replacement a couple of weeks ago and the Fiz is up and running how.  Here's how it went:  

Fizmo on the workbench:  



To get to the CPU board, which contains the voltage regulator, you have to flip the synth over and take the sheet-metal bottom off.  (Rest the edges of the top on a couple of lengths of 2x4 wood, so that the weight of the synth isn't bearing on the knobs.)  Upon doing so, you are greeted with this:



There are six screws on top holding the CPU board in.  (In the above photo, all but one have been removed.)  There are also three that go through the back panel.  All of the rear panel jacks are mounted to the CPU board, so once it is loose, you have to slide it forward, tilt it out, and then very carefully slide it out from under the two grey ribbon cables.  There is one connector, just visible at the upper right, that needs to be disconnected.  Like so:


With the CPU board removed, you can see the panel board underneath.  The ribbon cables are going to a third board, underneath the metal shield.  I didn't remove the shield, so I don't know what that looks like.

A closer view of the CPU board.  The voltage regulator is at lower right:



Just for the heck of it, while I had it open, I took this shot of the underside of the pitch/mod wheels:



Here, I have already drilled out the pop rivet holding the regulator down, and removed the black heat sink out from under it.  The regulator's leads are still soldered in:



Here is the board with the regulator completely removed.  The silkscreened lines show where the regulator and the heat sink go:



A close-up of the culprit:



Here is the new one, soldered in, but without the heat sink installed yet.  The synth came from the buyer with the replacement regulator and decoupling caps in baggies; apparently he had gotten them from Ensoniq, but never got them installed since he didn't know how and there isn't a tech in this area.  The new regulator is an RoHS part and getting solder to stick to the leads was an absolute pain.



You have to mechanically secure the regulator to the heat sink to ensure good contact.  Without the heat sink, the regulator will burn up.  I found some machine screws that I had left over from a cabinet hardware installation, and a matching nut.  The screw was too long, so here I am cutting it to length with the screw cutting mechanism of a 3-in-1 tool:



The heat sink, ready to install.  The white stuff is heat sink compound, which helps with heat transfer from the regulator to the heat sink.  There was also a plastic electrical insulator between the old regulator and the heat sink (not shown here) which I re-used.  



The complete installation.  The board is pictured here mounted in a Panavise circuit board holder.



And from the back.  There's a small metal washer under the nut.  I only finger-torqued it, to avoid cracking the board.  I put Permatex thread locker on the nut to keep it from backing off.



Soldering on the decoupling caps.  These may not have been strictly necessary, but one theory has it that lack of decoupling encourages the factory regulators to fail.  In any event, it can't hurt.  Only problem is, there's no place on the board for them, so you have to improvise.  Most people use tantalum caps for this, but the ones that came with the repair kit that I got with this Fizmo were polystyrenes.  That's OK with me; polystyrenes are non-polar, so you don't have to worry about getting them backwards.  However, they had huge thick leads which were pure heck to get soldered to the regulator's solder-averse leads.  Here is the result; the white and red stuff is heat shrink tubing, ready to be shrunk.



You can't just leave those things dangling out in space, so the only alternative is to tape them down to the board.  I throughly mummified them in tape, just to preclude any possibility of a short.  



When I bough the synth, the little red lens that covers the alphanumeric display had come off; the owner had it in a baggie.  I needed to find something that would stick it back down without damaging the display; there is very little contact area for it to adhere to.  The perfect thing was electrically insulative, clear RTV silicone.  I put a bit all around the edge with a toothpick, put the lens on, and left it to set up overnight.  Here it is before I put the lens back on:



And finally, it's playing again!  The Fizmo in action:



The wall wart power supply gets pretty warm.  It's rated 1A so, with the new regulator (which probably dissipates more current than the old one), it's running right on the edge.  Wall warts rated higher than 1A are kind of hard to find.  I might replace it with a 1.5A open-frame linear.