DOTLETH V3.0

Less is more fun

2015-04-08

About my synthesizer

Past

I've made alot of music back in the 80's on my C64 and my first real effort towards making my own music with my own software synth, was soundtracker 64, which wasn't really that impressive, but it had various effects and sample support. It was a feat considering i hadn't realized yet that an assembler was a cool thing, so it was written by writing machine-code instructions directly into memory (i still remember what a pain it was to relocate code). in the eary 90's i made some music on the amiga and then on the pc, but all that is now lost due to a combination of bad floppy discs and broken harddrives.

Present

After a long break from around 1992 i realized in late 2003 that it was about time that i made some analog synth songs again. After looking at writing something for the C64 emulators i found it too much hard work compared to the output. So i figured that it was about time i wrote my own software synthesizer. I started out with a goal of having all the features of the c64 SID. Now a couple of years later i'm satisfied with the C64 features, and i've added quite a few extra features that the C64 wasn't capable of doing.

I'm quite familiar with c,c++ which would have been my choice without thinking a few years ago for a CPU hungry project like this. I ended up doing it in java, performance is not bad in java on a standard PC for simple synths like the one i've written. I did have performance concerns but this didn't turn out to be a problem. i'm able to render in realtime on a amd X2 4200 system with approximately 16 channels, where some of the channels can be dedicated to specialized drum, chord or loop engines. I require the realtime rendering ability, because that makes it much more comfortable working with the sequencer i ended up writing aswell.

I've ended up upgrading my machine to a nice AMD dual-core with lots of ram as my processing has increased ever since i started the project. The floating point performance was really improved dramatically compared to the old P4.

Synth Features

Some of the synth features, where most parameters is dynamically configurable:
Signal Generators
Basic OscillatorStd. signals like sine, square, triangle, noise, random, sawtooth, etc.
Advanced OscillatorCustom Oscillators that is prerendered for speed, supports multiplication, addition, phasing of basic oscillators
SamplesStd. sample replay, looping etc.
MultiSampleslike Samples but with samples for different regions.
Pluck generatoremulation of plucked strings
Rain generatorGenerated Grain model that supposedly emulates rain
Grain TablesSample is split up at every 0 crossing, and these grains is altered/repeated etc. in interesting ways (under development)
Signal Operations
AdditionSimple addition of signals for creating more complex instruments
AM ModulationWeighted multiplication for two signals, affects the amplitude of the carrier.
FM ModulationModulation of the carrier frequency by a modulator signal.
Hard Sync. ModulationRestart phase of carrier when modulator completes a phase. A harsh sounding algorithm but at times very interesting.
VocoderA basic vocoder that unfornuately takes quite some cpu.
Instrument types
Basic instrumentVariable number of Signal generators modified by Signal Operators and Filters
Compound instrument1-3 basic instruments added to produce an even more complex sound
Drum loopMade with the drum machine which produces loops that is CPU friendly and allows easy repetition
Chord instrumentOptimized Compound instrument for fast rendering of a chord by multiple instances of a basic or compound instrument
Instrument properties
DelayDelays the signal independently for left-right channel
Panninguseful for positioning the sound, and/or sweeping
VibratoVibrato unit, nothing fancy
ArpeggioAllows for the good old arpeggio transformation of the pitch
Pitch benderAllows for bending the pitch of an instrument
Secondary frequencyAllows using frequency from another track for signal generators, which is very interesting for e.g. am/fm/hardsync operators
Filters
AmplfierDynamic value Used for amplitude shaping together with ADSR
dADSRUsed for amplitude shaping, supports delay/Attack/Decay/Sustain/Release
Wave shaperDifferent transfer functions for the generated signals, useful for softening or distorting the signal
CompressorSingleband Compresser with attack sustain decay support of the output signal for increased volume
Squeezedynamic controllable Bitreduction, samplerate reduction, puncher + filter
EchoMultiple taps supported, with custom filter for the echo
Phaser(very fast echo, pitch dependent) Multiple taps supported, with custom filter for the echo
Flanger(very fast echo) Multiple taps supported, with custom filter for the echo
Disintegratordistorts a random number of cycles by a given function
Allpass/Lowpass/Bandpass/Highpass filters3 Different filters which covers most usages, but still room for improvement
FFT algorithmsvariable band (de)emphasis, waveshaper, "dirty filter", "chorus filter"
ReverbParameterised, allows for simulations of concert hall - small room, with reflection control etc.
Sequencer
TimelineSong is build up on multiple segments
Note,Instruments, Patches ,Bend, Velocity, Track filtersCommands that can be assigned at time slots
Misc
Formula languageMost parameters can be shaped by the formulae language which supports parameterized interpolation over time, sinus, cosinus, random, multiplication, addition etc.
Import midiTool for import of midi files
Keyboard supportRecords midi events for use the your song
Import sid filesmust be converted with sid2midi in text output format first
Website integrationFTP mp3 upload, jukebox integration, download page update, RSS feed update

Editor

I've been playing around with the editor lately. here is some screenshots for the main Song Editor and the Instrument Editor. I've always wondered how much fancy graphics stuff swing could do if you had the project where it was suitable so i've been working on eyecandy (stupid really as i'm the only user). i can do alot of things, aslong it's not realtime, there is no realtime spectrum analysis or anything like that.

I even learned how to make a 3d perspective thumbnail in photoshop :)

About the songs.

I've rendered far too many songs already, and finished about none of them :) They're all in different stages of completion, and rendered with various versions of the synth. At the time of writing this the most completed song is panther, which i'm almost pleased with. Some of the songs are just included for fun and i don't intend to "finish" them, like ghostngoblins1.

I've added Nonterraqueous in two versions, first one is the almost unmodified "rip" and the second version is my modified one. It's hopefully obvious which is which!

You want to hear more?

If you want to hear some really great modern renditions of C64 melodies then go to http://remix.kwed.org the songs there are usually very good and they contain sounds and remixes that are much more professional than the stuff on my site. That aside i made these "closer to the c64" remixes because for my taste alot of the c64 melodies sounds best when they're kept simple.

Future

I haven't made any improvement since 2009, instead i've started using reaper and hardware synthesizers.