Friday, July 12, 2019

Cyclone TT-606 Kick Drum Decay Fix

I recently purchased a Cyclone Analogic TT-606 and was dissatisfied with the sound of the kick drum. Comped to my TR-606, it's too boomy. The decay is too long and the transient is muffled. I opened it to see if it could be fixed.

There is a sticker on the underside that covers two screws. This label can be heated and easily removed. I used a reflow station set to to its lowest setting.
There are also some snaps that must be pried apart somehow. I was able to use a guitar pick.

Once inside, there's a nicely labeled PCB with a "BD" section.

The board does not lend itself to being reverse engineered, despite the labeling. The solder resist makes it difficult to see the traces. It also makes it near impossible to shine light through the board. Additionally the solder resist covers the vias, making some signals harder to follow.

Despite this, it wasn't too hard to figure out. It is extremely similar to the TR-606 schematic, including component values.

I redrew the TT's kick similarly, until I found the difference. One of the two oscillators is mostly the same, the other has drastically different values.

It turns out that they roughly doubled the values for the leftmost oscillator's resistors. This increases the Q-factor, affecting the decay.
They also put a digital pot in parallel with R27 to give a kind of tuning control. The digital pot is a 10K that, when in parallel with R27's 6.8K, gives an equivalent 4K down to 500Ω. This is in series with R25, yielding a total equivalent range of  1.18K to 4.68K. Our original TR value of 3.3k falls inside this range, so it doesn't strictly need to be changed.

R28 and R90 sum to 1.24M instead of 680K. Something must be changed here. There are multiple ways to come up with a value around 680k. 1.5M in parallel would work, but I opted to change R28 to a 470K. This gives 710K and I find it suits my taste.

Here we can see a before and after of the kick waveform. Also included is a real TR-606 at the bottom. The TT is much tighter now and the transient is slightly louder than before.

While I was comparing the before and after, I noticed that the TT's triggers are too long! TR triggers are all 1ms while the TT's are 2ms. This is part of the issue with the transient and isn't as simple to sort out. Either a firmware patch is needed, or some kind of monostable osc would have to added onto every trigger.

Sunday, February 17, 2019

PAiA 8700 Schematic Redraw

The PAiA 8700 computer is an optional part for the PAiA 4700 modular system. It gives you the ability to run software like a "pink music" generator.

I took interest in it because it combines my favorite CPU, the 6502 (6503 here), and analog synthesis. It's pretty hard to find one these days, but PAiA published the schematics and they're still available. I needed them in Eagle CAD format to be able to work on them, so I redrew them here. In the process, I like to think I've improved the clarity and layout of the schematic.
The board is as close a reproduction as I could manage.

I've also typed out the original assembly source file and assembled binary.

Files available on my github

Also, a memory map. Why not?

I was able to find some NOS and begin assembling a brand new 8700 reproduction. More to come.

Saturday, December 8, 2018

Boss DR110 Modifications

Here's one from the archives, a set of changes I made to a Boss DR110. Here's the finished product, rehoused in a gun case.

Here is a version of the schematic that includes the modifications. It's pretty rough, as I never intended to share it, but here it is.

Most of the modifications are simple pot-for-resistor swaps and are already well documented. I scraped a few together in my notes:
Kick Pitch - R70
Kick Decay - R86
Kick "Oomph" - R70(add 10uF) 
Snare Tone - R80
Snare Body Pitch - R76/ R75
Snare Snappy Mix - R81
Snare Snappy Decay- C52/R84 
HiHat Tone - R14
Open HiHat Decay - R20
Closed HiHat Decay - R53
Cymbal Decay/Tone - R47/R44 
Clap Pitch/Mix - R114/R115
Clap Decay - R113/C50
 Also included is the standard DINSync mod that uses a 74*74 as a clock divider.

At the top is a simple replacement for the built in cymbal/metallic oscillator. It allows you to change each of the four frequencies. I designed a more complicated one that involved a kind of ring-mod, but it ended up inducing its signal into the other voices and causing a constant hum.

A large chunk of the circuit is devoted to buffering the voices for separate outs. I wanted them to be fully separate so that they could be added to/removed from the main mix and its accent VCA. 

The trick is that all the voices are interconnected and load each other in a way that affects the sound. This means you have to add a resistor and/or cap onto each voice to simulate the load of other voices that are now disconnected. The values for these components are up to the user's preference. They affect things like volume, decay and sometimes tone.

At the bottom is the second snare oscillator. It's a clone of the standard oscillator, but it's pitched a bit higher. It's similar in tuning to the 808's snare oscillators(depending on revision). Included is a mix adjustment between the original and new.

The last part is not pictured. It's an AVR that provides MIDI and trigger input functionality. It ties into the 110's button matrix and watches as it scans. Once the correct column is being scanned, the AVR controls the rows to simulate buttons being pressed. This leaves the original CPU to generate the triggers.
Here is the button matrix:

I designed an alternate way to provide trigger ins. You can add some tri-state buffers and use the column scanning signals to gate your triggers into the button matrix. The triggers come in the left side and pass through (when gated) to the right, pulling the rows low through diodes. Note, protection diodes are needed to make this tolerant of modular trigger levels.

Saturday, March 3, 2018

Pearl DRUM-X MIDI control

I developed a MIDI retrofit for the Pearl DRUM-X. It uses an AVR microcontroller to process MIDI messages, read timing signals, and generate CV/triggers. Here's a block diagram.

Generating CV

The CV comes from a single source and is multiplexed to the 40 destinations (5 voices * 8 parameters. The tricky part it that the DRUM-X controls the multiplexers while the retrofit board generates the CV. Two signals are used to synchronize them. I've labeled the signals "Count Reset" and "Clock". "Count Reset" sends a pulse when the multiplexers are pointed at the first destination. "Clock" sends a pulse each time the destination is changed.
Here are those two signals in the schematic:

Generating Triggers

The DRUM-X is velocity sensitive when sent variable voltage triggers. To take advantage of this I used a multi-channel DAC to generate similar triggers. The retrofit maps MIDI velocity messages to voltages for the triggers.
The DRUM-X has a jack built in that can receive triggers, likely from a proprietary device. I was able to reuse the connection for my retrofit. It's wired such that you can still connect and use pads/other external triggers. Here is a schematic of the trigger daughterboard.

Wednesday, December 13, 2017

Roland PB-300 Schematic

Here are some scans from the Roland PB-300 service manual. It was released in '83 as a
companion to their HP-400 digital piano. It stands as Roland's final, fully-analog drum machine.

First, a runthrough of the presets:

Saturday, September 16, 2017

Korg Nanokontrol Schematic + New Firmware

Ages ago I drew a schematic for Korg's original Nanokontrol. I finally decided to dust it off and do something with it.

From the outside the Nanokontrol is just a USB control surface, but inside it hides an AVR microcontroller. It even has the ISP (programming) header broken out, though the pinout differs. With this it seems pretty natural to write a new firmware for it.

I wanted a simple project that demonstrates interfacing the potentiometers, LEDs and buttons. The idea of a CV step sequencer sprang to mind. In order to get nice clean voltage output I decided to add a DAC. The problem with adding to this setup is the general lack of IO pins. The serial pins TX and RX are conspicuously unused, but I chose to leave them free for possible MIDI communication. I don't plan on using USB MIDI, so I freed up IO by removing the USB chip.

The USB chip actually serves as the clock source for the AVR, so a replacement clock must be supplied. Step one is to flash the AVR fuses such that it can accept a crystal clock source. This has to be done while we still have an external clock. After that the USB chip can be removed and a crystal can be attached to the XTAL pins of the AVR. Conveniently the USB chip has an external crystal footprint that we can repurpose.

Now most of IO PORTD is free to use. I used one external interrupt pin for the trigger input. This makes it fast and easy to step the sequencer in response to an external clock/trigger. This leave plenty of pins for the DAC (MAX528). It gets its own clock and chip select lines, but it shares the data line with the LED shift register since it's clocked separately.

This is what the schematic looks like after the modifications:

Modified Nanokontrol
This setup works, but the CV output only spans about 0-4V. To broaden this, the DAC can operate on +12V while still responding to TTL level control. It just needs the supply rail and reference voltages changed to 12V. For convenience sake, I also added a 5V regulator. This makes it easy to run the entire setup off of 12V.

MAX528 12V configuration
Now all of the hardware modifications are done. It's time to write some code. The only trickiness comes from interfacing the multiplexed IO. Here is an overview of how to read/write them:

Read Buttons:
  1. Pull PC0-3 low one at a time to enable one column
  2. Pull PC4 low to enable buffer
  3. Read PINB for button statuses (low = pressed)
  4. Repeat steps 1-3 pulling each column low

Read Pots:
  1. Set PA0-2 to select pot from Mux
  2. Read Mux on PA4 and PA6
  3. Read single pots on PA5 and PA7
  4. Repeat steps 1-3 selecting each set of pots

Write LEDs:
  1. Set PC7 high to disable LED output
  2. Write first bit to PD7 (low to turn on)
  3. Set PA3 high, then low to clock in bit
  4. Repeat steps 1&2 for all 8 bits
  5. Set PC5-7 to select column and enable LED output
  6. Delay to allow LEDs to shine
  7. Repeat steps 1-6 selecting each column

The code and schematics can be found on my github here. The code is pretty barebones and simple. It just serves to demonstrate interfacing the Nanokontrol hardware. There are some obvious upgrade and features that can be added, so this is just a starting point.

Wednesday, September 13, 2017

Novation Bass Station Schematic

It seems that no one has a schematic of the original Bass Station, so I drew one up. This is from the keyboard version with board markings "Novation Bass Station SM, Issue 4, 1995".


At the beginning of the signal chain is the DCO. There are two identical DCOs, so we'll just look at one I've dubbed "OSCA".


At the top is an exponential current source that charges capacitor C10/2. It's built around a transistor pair marked "FMA1". Based on that marking I believe this is the correct datasheet.

At the bottom left is the sync pulse generator. When a pulse or square wave is fed into the "OSCA_SYNC" net a short pulse is output at pin 4 on U20B. The width of this pulse is determined by the RC network formed by R29 and C9. Together they cause a small delay between pins 5 and 6 changing logical state. While these inputs are unequal the output will be high.

This sync pulse enables transistor Q2 to sink the charge stored in C10/2 thereby "resetting" it to VSS. The capacitor is then able to charge back up via the exponential current source. This cycle results in a sawtooth wave that is present on pin 5 of U18B.

U18B serves as a buffer for the sawtooth, but can also be switched to generate a squarewave. Nets OSCA_WF_SW and OSCA can be connected or disconnected via multiplexer U12. If connected the opamp is configured as a noninverting amplifier outputting the sawtooth. If unconnected the opamp is configured as a comparator, comparing the pulse width CV, OSCA_PWM_CV, on pin 6 and the sawtooth on pin 5. This results in a PWM squarewave as pictured below.



Next in the chain is the mixer. The mixer is made of two simple VCAs, one for each oscillator. Each VCA works off of a single linear CV. The mixers serves only to change the relative volume of the oscillators, not to apply the volume envelope.
Oscillator Mixer


After the mixer is the filter. It's closely related to the OSCar filter that is, in turn, based off of the Wasp filter. It should be noted that the inverting stage present in the OSCar has been removed from the Bass Station. This stage allowed the filter to be switched into a high-pass mode. Without it, the Bass Station is stuck in lowpass mode.

Bass Station VCF
I find it interesting that the resonance is under CV control, but cannot be modulated. It does respond to MIDI though.


Last in the chain is the main VCA. It's another simple, one-OTA VCA. Unlike the mixer VCAs it includes an exponential current source and responds to modulation from one of the envelopes. It also has a trimmer to adjust the offset voltage.

CV Header

The final thing of note is an unlabeled header. It breaks out most of the internal CV and audio outputs. Almost all of them tap directly after a buffer and, with the addition of a 1K resistor, are safe to connect to other devices.

Unfortunately none of them are really suited to take a signal as input. Nearly every signal would have to be disconnected from its destination and fed through a summing-amp instead. With this summing-amp an external CV signal could then be mixed in with the existing CV.
CV Header

Full Schematic

Here is the majority of the analog section of the Bass Station. I've omitted the dull CV multiplexer and buffers.
Bass Station Schematic