Techno Machine

CTP431 20110273 김성구

Intro

I started this project from my original production of techno music, "Procrastinator (Original Mix)". The track was intended to be part of my solo album as a techno producer. The original track was produced with DAW(Digital Audio Workstation) called 'Ableton Suite 9'.

I tried to imitate a loop from the track using Tone.js. And Nexus.js was used to make the User Interface including 'BPM', 'Start Button', 'Stop Button', 'Sequencer', 'Filter Frequency Control of Synth'.

Imitating Sounds

Drum Sounds

Drum sounds of the original track was produced mainly using 909 drum machine sounds. As I used 909 drum samples from Ableton Suite 9 when producing the original track, I exported the 909 drum sample sounds from Ableton Suite 9 embedded samples. After that, I used Tone.MultiPlayer to function as a drum machine.

Kick

The kick sound is originally 909 kick sound from Ableton Suite 9, but I used 'Overdrive' effect emphasizing bass and dynamics. But, due to the limitation of Tone.js when using distortion filter, I just had to use distortion filter without emphasizing bass frequency of the sample.

Snare, Open Hihat, Closed Hihat

Although the original track didn't use snare, open hihat, closed hihat sounds from 909 drum machine samples and used layered sounds and glitches from many samples, I used 909 snare, open hihat, and closed hihat samples because there aren't many channels to involve the sounds with.

Synth Sounds

The main synth sounds from original track was made using embedded instrument called 'Operator'. It basically is a FM synthesizer with 4 oscillators. The factor 'Coarse' from Operator is corresponded to 'Harmonicity' from Tone.js, which is a octave of a modulating oscilator, and the factor 'Fine' is corresponded to 'Detune', and gain of each modulation oscillator is corresponded to Modulation Index of Tone.js.

After that, all the envelopes up to second-order oscillator were copied exactly with the value.

Filter Control

Compared to the original project using Ableton, I used NexusUI's position object to control the filter frequency value of the synth. It was set to be the product of average of x,y value and 2000. And I made it to graphcally animated using position.animate() for the widget to control the filter frequency dynamically.

Master Chain

I created 3 components, Filter, Master Compressor, Master Limiter, as the master chain. These master chain is used to boost up the sound little bit after the generation of sounds. The 'recipe' for the master chain is the same with my own pre-mastering preset. It was realized with Master.chain(Filter, Master Compressor, Master Limiter);

Limitations

Lack of features in Tone.js

Compared to Ableton, Tone.js has less features related to filters or numbers of oscillators etc. So, it was impossible for me to come up with the exactly same sound with the original track, even though I have the "recipe" for the sounds.

Slightly different computation method when synthesizing in Tone.js

Despite the description from Ableton Forum said that oscillator gain compared to the carrier gain refers to modulation Index, it didn't seems to be having the exactly same effect of modulating sounds. So in order to produce better sound using Tone.js, I slightly changed the values into other ones.

Prototype Link

"Techno Machine"