Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/schollz/tape-synth

Instructions to create a cassette synthesizer.
https://github.com/schollz/tape-synth

arduino cassette-player cassette-tape dac synth synthesizer

Last synced: 3 months ago
JSON representation

Instructions to create a cassette synthesizer.

Awesome Lists containing this project

README

        

# tape-synth

I got this idea for the cassette synthesizer from [Onde Magnétique](http://www.ondemagnetique.com/) who got the idea from the [Mellotron](http://www.mellotron.com/). The idea is that you can record a single drone onto a tape and then play that back at various speeds to modulate the pitch.

The neat thing about this synthesizer is that it has a very "analog" quality to the changing of notes - the pitch often *slides* between notes in a neat way. This pitch sliding is called [*portamento*](https://en.wikipedia.org/wiki/Portamento). It also is versatile because you can record *any* sound to the tape and use that as your synthesizer.

Here's what it sounds like with the "angry bees" synth sample applied to the tape. The video shows me playing another synth which is not producing any sound and only controlling the cassette player via MIDI:

Demo of playing

## Making a cassette synthesizer

To make one of these things is actually *really* easy. I found a great video from Analog Industries showing exactly how to [hack a cassette player](https://www.youtube.com/watch?v=pF6Yegj7A9o) to add voltage control to the cassette player. I followed that and then wrote a simple MIDI controller in the browser to modulate the voltage to specific notes.

These instructions will take you through the hardware (Arduino / Cassette player) and the software for the MIDI controller.

### Supplies

- GE 3-5362A walkman ($15, eBay has tons of them)
- [Arduino](https://www.amazon.com/gp/product/B008GRTSV6/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B008GRTSV6&linkCode=as2&tag=scholl-20&linkId=7bcd2ae0b8147ff819937b73da545cfb) ($23)
- [MCP4725 DAC](https://www.amazon.com/gp/product/B00SK8MBXI?ie=UTF8&tag=scholl-20&camp=1789&linkCode=xm2&creativeASIN=B00SK8MBXI) ($11)
- [Audio jack breakout](https://www.amazon.com/gp/product/B07Y8KR21P?ie=UTF8&tag=scholl-20&camp=1789&linkCode=xm2&creativeASIN=B07Y8KR21P) ($8)
- [Jumper wires](https://www.amazon.com/gp/product/B07GD2BWPY?ie=UTF8&tag=scholl-20&camp=1789&linkCode=xm2&creativeASIN=B07GD2BWPY) ($5, if you don't have)
- [Solder iron + supplies](https://www.amazon.com/gp/product/B07Q2B4ZY9?ie=UTF8&tag=scholl-20&camp=1789&linkCode=xm2&creativeASIN=B07Q2B4ZY9) ($25, and it lasts a lifetime)

## Hacking the GE 3-5362A walkman

_Note:_ You don't necessarily have to use the GE 3-5362A. Any walkman with a variable playback will work. You'll just have to figure out how to hook up the voltage :)

First thing is to open up the walkman. There are four screws on the back. Just unscrew them and open it carefully. The power lines are connected on the back plate so just don't rip those out.

![Hacking the GE 3-5362A walkman.](https://schollz.com/img/s1/overview.jpg)

To get this walkman working for us we will solder two new components. First we will solder in the `Vin` which will allow us to control the speed of the cassette player with a voltage. Then we will add a `Line in` which will let us record directly onto tape (in case you don't have a tape deck).

If you don't know how to solder - don't sweat. Its easy. Check out [this video](https://youtu.be/HTy9Z9LpA2U?t=1011) which shows you how to use the existing solder pad and put something onto it.

### Adding the `Vin`

Locate the dial that says "Variable Speed Playback". This is where we will splice in two lines. I like to use red for active and brown/green for ground. Attach the active line to `VS+` and the ground to the pad right below the one labeled `B+`.

![Solder a cable to VS+ and one to the pad next to B+.](https://schollz.com/img/s1/vs.jpg)

A note - I like to use jumper cables that have a female end so I can easily plug stuff into here!

### Add in a `Line in`

Locate the red and black cables plugged into pads labeled "MIC-" and "MIC+". You can solder and remove these cables and attach your own from the audio breakout cable. Just solder red to "MIC+" and black to "MIC-".

![Solder a line-in via the MIC- and MIC+.](https://schollz.com/img/s1/linein.jpg)

### Record the tape

Put in a tape and record via the line in! Record anything you want, usually a single drone on C works well as a starting point. Record a long time - 30 minutes or so (this would be a good place for tape loops if you have them!).

![Recording a drone from my OP-1 to the tape.](https://schollz.com/img/s1/rec.jpg)

## Setup an Arduino as MIDI interface

The Arduino serves as a bridge between MIDI and the voltage. A MIDI keyboard is plugged into a computer and a Chrome browser gets the response. The browser executes a request to a server running which sends the serial information for the voltage change to the Arduino, which then modulates the voltage on the walkman.

![Connecting the MCP4725 DAC to the Arduino](https://schollz.com/img/s1/arduino.png)

The `OUT` from the MCP4725 should go to the RED wire you connected to the cassette player. Then attach the ground wire on the cassette player to the ground on the Arduino.

The code for the Arduino just communicates via a Serial port to send voltages. Just upload `voltage.ino` to an Arduino and you should be all set.

### Server to send serial commands

To communicate with the Arduino you can use a simple server that hooks the MIDI to the voltage Serial. You can get this code from https://github.com/schollz/tape-synth. Make sure you have Golang installed (install [here](https://golang.org/dl/)).

```bash
$ git clone https://github.com/schollz/tape-synth
$ cd tape-synth
$ go build
$ ./tape-synth -com ARDUINOCOM
```

Now you can open up Chrome to `localhost:8080` and you'll be able to connect a MIDI keyboard and send voltages to the Arduino. Make sure to edit the voltage map to tune each note of the cassette synthesizer, in `index.html`:

```javascript
var voltageMap = {
"C": 0,
"C#": 0.7,
"D": 0.9,
"D#": 1.2,
"E": 1.4,
"F": 1.62,
"F#": 1.85,
"G": 2.25,
"G#": 2.6,
"A": 3.0,
"A#": 0,
"B": 0,
}
```

Those are the voltages that I mapped out for my particular cassette player.

## That's it!

To get it going, start the serial server. Plug in a midi keyboard. Open chrome to the `localhost:8080`. Turn on the cassette player and **start jamming!**

If something is unclear (it probably is) don't hesitate to reach out to me. I'm [yakcar @ twitter](https://twitter.com/yakczar) and [infinitedigits @ instagram](https://instagram.com/infinitedigits).