Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cdodd/teensy-sn76489-midi-synth
A SN76489 MIDI synth, controlled by a Teensy 2.0 microcontroller
https://github.com/cdodd/teensy-sn76489-midi-synth
Last synced: 17 days ago
JSON representation
A SN76489 MIDI synth, controlled by a Teensy 2.0 microcontroller
- Host: GitHub
- URL: https://github.com/cdodd/teensy-sn76489-midi-synth
- Owner: cdodd
- License: mit
- Created: 2015-11-21T11:44:10.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-04-18T20:44:26.000Z (7 months ago)
- Last Synced: 2024-07-31T22:43:30.985Z (3 months ago)
- Language: C++
- Homepage:
- Size: 108 KB
- Stars: 28
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Teensy SN76489 MIDI Synth
This project contains code and instructions to use a
[SN76489 sound chip](https://en.wikipedia.org/wiki/Texas_Instruments_SN76489)
as a MIDI controlled synth, driven by a Teensy 2.0 microcontroller.You can see this in action in the [YouTube demo](https://www.youtube.com/watch?v=OAx-FciIfRE).
## Schematic
![Schematic](https://raw.githubusercontent.com/cdodd/teensy-sn76489-midi-synth/master/schematic.png)
The schematic is also available in the Fritzing file `schematic.fzz`.## Getting it Running
1. Install the [Arduino IDE](https://www.arduino.cc/en/Main/Software)
1. Install the [Teensy software](https://www.pjrc.com/teensy/tutorial.html)
for the Arduino IDE
1. Open the `teensy-sn76489-midi-synth.ino` file in the Arduino IDE
1. Under the `Tools` menu option select `Board` -> `Teensy 2.0`
1. Under the `Tools` menu option select `USB Type` -> `MIDI`
1. Under the `Sketch` menu option select `Upload`
1. In your [DAW](https://en.wikipedia.org/wiki/Digital_audio_workstation) of
choice select the "Teensy MIDI" output device and use the MIDI channels as
described in the "MIDI Configuration" section below## MIDI Configuration
### Channel 1
* Controls square tone 1
* Pitch wheel is supported on this channel
* Note velocity is linked to the 16 level attenuation of square tone 1
* The brightness of LED 1 is linked to the attenuation level of square tone 1### Channel 2
* Controls square tone 2
* Pitch wheel is supported on this channel
* Note velocity is linked to the 16 level attenuation of square tone 2
* The brightness of LED 2 is linked to the attenuation level of square tone 2### Channel 3
* Controls square tone 3
* Pitch wheel is supported on this channel
* Note velocity is linked to the 16 level attenuation of square tone 3
* The brightness of LED 3 is linked to the attenuation level of square tone 3### Channel 4
* Controls the noise generator
* Note velocity is linked to the 16 level attenuation of the noise generator
* The brightness of LED 4 is linked to the attenuation level of the noise
generator
* MIDI CC 1 (mod wheel) on this channel controls the frequency of square tone
3, which is used by notes `F4` and `C5` to control the noise shift rateUnlike the other MIDI channels only 8 notes produce sound on this channel,
these control the different settings of the noise generator. The notes are:Note | Noise
------|-----------------------------------------------------
C4 | Periodic noise, shift rate = clock speed (Hz) / 512
D4 | Periodic noise, shift rate = clock speed (Hz) / 1024
E4 | Periodic noise, shift rate = clock speed (Hz) / 2048
F4 | Perioic noise, shift rate = Square tone 3 frequency
G4 | White noise, shift rate = clock speed (Hz) / 512
A4 | White noise, shift rate = clock speed (Hz) / 1024
B4 | White noise, shift rate = clock speed (Hz) / 2048
C5 | White noise, shift rate = Square tone 3 frequencyNOTE: If you use square tone 3 to modify the shift rate of the noise
channel you will interfere with any tones playing on channel 3.## To Do
Here are some features I might look to add in the future:
* Attack and decay support (via CC control)
* 3 voice polyphony on a single channel
* Legato support
* Arpeggiator support
* Mod wheel controlled vibrato on square waves## Credit
Initial inspiration for this project was taken from the (more advanced)
[CHIP_BASED_SYNTHESIZERS](https://github.com/brianmarkpeters/CHIP_BASED_SYNTHESIZERS/tree/master/QUAD%20SN76489%20SYNTH)
repository by Brian Peters.