All Projects → everythingwillbetakenaway → Dx7 Supercollider

everythingwillbetakenaway / Dx7 Supercollider

Licence: gpl-3.0
My accurate Yamaha DX-7 clone. Programmed in Supercollider.

Projects that are alternatives of or similar to Dx7 Supercollider

Main-Supercollider-Files
my supercollider codes, version history is at the branches
Stars: ✭ 21 (-94.68%)
Mutual labels:  dsp, sound, instrument, synthesizer, supercollider, synth, synthesis
Webaudiofont
Use full GM set of musical instruments to play MIDI and single sounds or effects. Support for reverberation and equaliser. No plugins, no Flash. Pure HTML5 implementation compatible with desktop and mobile browser. See live examples.
Stars: ✭ 600 (+51.9%)
Mutual labels:  audio, music, sound, synthesizer, synth, instrument
Supriya
A Python API for SuperCollider
Stars: ✭ 167 (-57.72%)
Mutual labels:  audio, music, dsp, synthesizer, synthesis, supercollider
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+218.48%)
Mutual labels:  audio, music, sound, synthesizer, synth
Jssynth
Make music in your browser with this synthesizer and sequencer
Stars: ✭ 25 (-93.67%)
Mutual labels:  audio, music, synthesizer, synth, instrument
Sonic Pi
Code. Music. Live.
Stars: ✭ 8,736 (+2111.65%)
Mutual labels:  audio, music, synthesizer, synthesis, instrument
Awesome Music Production
A curated list of software, services and resources to create and distribute music.
Stars: ✭ 340 (-13.92%)
Mutual labels:  audio, music, sound, synthesizer, instrument
Pyo
Python DSP module
Stars: ✭ 904 (+128.86%)
Mutual labels:  audio, music, sound, dsp, synthesis
Romplayer
AudioKit Sample Player (ROM Player) - EXS24, Sound Font, Wave Player
Stars: ✭ 445 (+12.66%)
Mutual labels:  audio, music, sound, synthesizer, synth
Daisysp
A Powerful, Open Source DSP Library in C++
Stars: ✭ 291 (-26.33%)
Mutual labels:  audio, music, sound, dsp, synthesizer
Gwion
🎵 strongly-timed musical programming language
Stars: ✭ 235 (-40.51%)
Mutual labels:  audio, music, sound, synthesis, synth
Supercollider
An audio server, programming language, and IDE for sound synthesis and algorithmic composition.
Stars: ✭ 4,036 (+921.77%)
Mutual labels:  audio, music, sound, synthesis, supercollider
Supercolliderjs
The JavaScript client library for SuperCollider
Stars: ✭ 381 (-3.54%)
Mutual labels:  audio, music, sound, supercollider
Sporth
A small stack-based audio language.
Stars: ✭ 325 (-17.72%)
Mutual labels:  audio, music, dsp, synthesis
Q
C++ Library for Audio Digital Signal Processing
Stars: ✭ 481 (+21.77%)
Mutual labels:  audio, music, dsp, synth
Torch Audiomentations
Fast audio data augmentation in PyTorch. Inspired by audiomentations. Useful for deep learning.
Stars: ✭ 164 (-58.48%)
Mutual labels:  audio, music, sound, dsp
Mimium
mimium (MInimal Musical medIUM) a programming language as an infrastructure for sound and music.
Stars: ✭ 212 (-46.33%)
Mutual labels:  audio, music, sound, dsp
glicol
(Audio) graph-oriented live coding language and music DSP library written in Rust
Stars: ✭ 853 (+115.95%)
Mutual labels:  dsp, sound, instrument, synthesizer
Ofxpdsp
openFrameworks addon for audio synthesis and generative music
Stars: ✭ 255 (-35.44%)
Mutual labels:  audio, sound, dsp, synthesis
Javascriptmusic
Live coding music and synthesis in Javascript / AssemblyScript (WebAssembly)
Stars: ✭ 193 (-51.14%)
Mutual labels:  audio, music, synthesizer, synth

DX7-Supercollider

My accurate Yamaha DX-7 clone. Programmed in Supercollider.

This is a super-exact clone of DX7 in SC environment. This project began with my internship at the STEIM during the last year; I was able to get my hands on an original DX7 synth and eventually found out that this instrument has this mystic / unusual sound. So I started fiddling with it and did some experiments with Supercollider. After a while, it became an obsession to play with it and started to copy parts of its synth mechanism just to flex my DSP muscles. Sooner, I found myself in this vast project to clone the entire thing. After 2-3 months of implementing process and lots of sleepless nights. I was able to clone the entire DX7 engine with very high accurate results. Other than the DX7’s vintage sound hiss, it is hard to distinguish between the clone and the original one on the same presets. For my use, I collected some 16384 (2^14) DX7 Sysex bank presets from the internet and converted it to some integer sequences to read it from Supercollider. I am also combining this clone with this 16384 preset package. Currently, I am using it with my sequencers to modulate its parameters, but for everyone's ease of use, I implemented a very basic function call. Which calls notes with this format: [Midi note, velocity, preset number]. Additional documentation is in the file. Have fun!

Getting Started

You don't need to open the DX7.afx file. It just needs to be in the same directory as the DX7.scd. Just open the DX7.scd in Supercollider and run the big chunk of code starting from the line 35 and it's ready to use. Then run the mainCaller functions for new notes and to close notes send zero velocity from the mainCaller functions.

Prerequisites

The only requirement is to install the SC3-Plugins Ugen library because I use the FM7.ar Ugen at the heart of all operation.

SC3-Plugins

Sound Examples

Here are some sound examples which calls a random preset for each new node:

Example

You can try these kinds of example by running the code at the very end of the DX7.scd file.

edit: I deleted the song and couldn't find the original file so links goes to my new Soundcloud account. Tune in for some experimental music with lots of DX-7 voices.

Basic MIDI implementation

It’s a very straightforward process; the preset number selection can be made by two different MIDI CCs. At total 128 * 128 = 16384 number is needed, which makes you able to choose the entire library of presets (2 ^ 14). Code format example:

( // init
	s.boot;
  ~mainCaller = ("./DX7.scd").loadRelative.wrapAt(-1);
)
(
var presetz = Array.fill(128, 63);

MIDIdef.noteOn(\DX7, {arg vel, note;
	~mainCaller.value(note, vel, (presetz[0] * 128) + presetz[1]);
},srcID:~midiInINST4,chan:2).add;

MIDIdef.cc(\DX7CC, {arg ...args;
	presetz[args[1]] = args[0];
},(0..1),srcID:~midiInINST4,chan:2).add;

MIDIdef.noteOff(\DX7off, {arg vel, note;
	~mainCaller.value(note, 0);
},srcID:~midiInINST4,chan:2).add;
)

Things to be implemented

  • Real time parameter modulation
  • Loading custom DX7 presets
  • Some cosmetic updates.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE.md file for details

Acknowledgments

  • Hat tip to John Chowning
  • STEIM for letting me use their DX7 and espresso machine.
  • and all the anonymous preset makers for the Yamaha DX7 (unsung heroes/angels).

Author

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].