About my synthesizer
PresentAfter 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 FeaturesSome of the synth features, where most parameters is dynamically configurable:
|Basic Oscillator||Std. signals like sine, square, triangle, noise, random, sawtooth, etc.|
|Advanced Oscillator||Custom Oscillators that is prerendered for speed, supports multiplication, addition, phasing of basic oscillators|
|Samples||Std. sample replay, looping etc.|
|MultiSamples||like Samples but with samples for different regions.|
|Pluck generator||emulation of plucked strings|
|Rain generator||Generated Grain model that supposedly emulates rain|
|Grain Tables||Sample is split up at every 0 crossing, and these grains is altered/repeated etc. in interesting ways (under development)|
|Addition||Simple addition of signals for creating more complex instruments|
|AM Modulation||Weighted multiplication for two signals, affects the amplitude of the carrier.|
|FM Modulation||Modulation of the carrier frequency by a modulator signal.|
|Hard Sync. Modulation||Restart phase of carrier when modulator completes a phase. A harsh sounding algorithm but at times very interesting.|
|Vocoder||A basic vocoder that unfornuately takes quite some cpu.|
|Basic instrument||Variable number of Signal generators modified by Signal Operators and Filters|
|Compound instrument||1-3 basic instruments added to produce an even more complex sound|
|Drum loop||Made with the drum machine which produces loops that is CPU friendly and allows easy repetition|
|Chord instrument||Optimized Compound instrument for fast rendering of a chord by multiple instances of a basic or compound instrument|
|Delay||Delays the signal independently for left-right channel|
|Panning||useful for positioning the sound, and/or sweeping|
|Vibrato||Vibrato unit, nothing fancy|
|Arpeggio||Allows for the good old arpeggio transformation of the pitch|
|Pitch bender||Allows for bending the pitch of an instrument|
|Secondary frequency||Allows using frequency from another track for signal generators, which is very interesting for e.g. am/fm/hardsync operators|
|Amplfier||Dynamic value Used for amplitude shaping together with ADSR|
|dADSR||Used for amplitude shaping, supports delay/Attack/Decay/Sustain/Release|
|Wave shaper||Different transfer functions for the generated signals, useful for softening or distorting the signal|
|Compressor||Singleband Compresser with attack sustain decay support of the output signal for increased volume|
|Squeeze||dynamic controllable Bitreduction, samplerate reduction, puncher + filter|
|Echo||Multiple 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|
|Disintegrator||distorts a random number of cycles by a given function|
|Allpass/Lowpass/Bandpass/Highpass filters||3 Different filters which covers most usages, but still room for improvement|
|FFT algorithms||variable band (de)emphasis, waveshaper, "dirty filter", "chorus filter"|
|Reverb||Parameterised, allows for simulations of concert hall - small room, with reflection control etc.|
|Timeline||Song is build up on multiple segments|
|Note,Instruments, Patches ,Bend, Velocity, Track filters||Commands that can be assigned at time slots|
|Formula language||Most parameters can be shaped by the formulae language which supports parameterized interpolation over time, sinus, cosinus, random, multiplication, addition etc.|
|Import midi||Tool for import of midi files|
|Keyboard support||Records midi events for use the your song|
|Import sid files||must be converted with sid2midi in text output format first|
|Website integration||FTP mp3 upload, jukebox integration, download page update, RSS feed update|
EditorSong 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!