HrastProgrammer HrastWerk Bandcamp Bits & Bytes New! Tranzistow Hot! Diodow Emulators
Note: This is a page with various random/everyday bits & pieces which cannot be classified under other sections, so I can talk about everything what came to my mind during a day (or night), while working on other things. Some kind of Blog, more or less, sorted in chronological order, but without exact date and time ...
Breaking News!!!

HrastProgrammer did it again!!! Tranzistow - one of the most powerful and complex synthesizer currently in existence, arrived at the Linux airport!!! Yes, it is available on Linux now!!! During the last couple of weeks I've been working very hard to achieve that :-)

Starting with build 16.08.2016/1, both Tranzistow and Diodow are available on Linux in the form of 32-bit and 64-bit standalone audio applications as well as experimental Linux native VST 2.x libraries. Due to various reasons which I will eventually explain one day (mainly - my irritance and disappointment with tons of hosts quirks and limitations which I don't want to tolerate anymore) experimental native VST versions are implemented as client/server combo where the client is a 32/64-bit VST .so library and the server is a separate 32/64-bit standalone Tranzistow / Diodow synthesizer application.

You can download Linux demo versions here:

Tranzistow Linux Standalone / Experimental Native VST 2.x Demo by HrastProgrammer [ZIP file with both 32/64-bit versions]
(see Linux section at the end of the above PDF document for more info about Linux version)

More info about Linux version on the Tranzistow page:

Tranzistow Advanced Virtual Software Synthesizer with Additive/Spectral/Wavetable DSP Engine

Short Description of Tranzistow Synthesizer by HrastProgrammer [PDF file]
Diodow Linux demo versions can be downloaded here:

Diodow v1 Linux Standalone / Experimental Linux Native VST 2.x Download [ZIP file with both 32/64-bit versions]
(unzip into some folder and that's it)

More info about Linux version on the Diodow page:

Diodow Virtual Software Synthesizer
Just for the record (September 28, 2016): Tranzistow has "Feedback Symmetry" parameter on all filters for more than 2 (two) years! The same with "Shift" parameter on all filters/drivers/shapers/saturators. I had to highlight this because I recently saw "Filter Symmetry" parameter on that Legend synthesizer by Synapse-Audio. I never saw such parameter on any other synthesizer except Tranzistow before. Again: Just for the record ...
Tranzistow now has four user-definable wavetables per patch, each containing from 1 to 128 individual waves with size of up to 256 samples, bandlimiting and interpolation of missing waves. All internal and user waves can be used here. Those wavetables are accessible through WT #1 ... WT #4 buttons after activating them by clicking on the "Osc" button/section from "Osc/Main" page.
Before importing Diodow patches into Tranzistow - please, save them with the latest Diodow version!

Meine Damen und Herren!

Ladies and Gentlemen!

Heute Abend ... Die HrastMaschine ... HrastWerk!

HrastProgrammer: Tranzistow Essentials 2016

"Tranzistow Incorporated" editions of all tracks/albums from the last 8 years.

Industromo 2016
Hexequencer 2016
Anxiomatik 2016
Nazca 2016
Sigmadron 2016

HrastProgrammer: Tranzistow, KalquLab, Electronic Sounds, Synthesizers, Computers, Sequencers, Effects, Samplers, Software, Composing, Programming, Mixing, Recording.

Nature & Space: Inspiration & Additional Sounds.

Copyright (C) 2008-2016 by HrastProgrammer. All rights reserved.

My music is like a travel ... by car, train, airplane, boat, spaceship or mind ... through nature and space ... landscapes, sounds, images, atmospheres, voices, thoughts and memories ... day and night, rain and sun, rivers and oceans, forests and deserts ... constantly appearing and disappearing, constantly changing ...

The circle is now complete.

> _
Tranzistow v4.8.0 Demo Version has been released:

Tranzistow Demo Version by HrastProgrammer [ZIP file with both 32/64-bit Windows versions]

Demo version is, more or less, a fully functional Tranzistow with the following limitations:

(*) No multimode and no multiprocessing - it is monotimbral, singlethreaded and only Part #1 with 16 voices of polyphony is available. External Control Interface is disabled as well.

(*) It loads the default patch on every start, so you'll have to manually reload all patches every time you open/reload a particular project.

(*) No ability to process external inputs through Tranzistow FX units, so it cannot be used as a standalone FX processor. External inputs can still be processed through the voice engine, though.

(*) Occassional noise and clicks/pops now and then, together with occassional missed notes. This is just a slight annoyance which won't have a big impact on the sound and won't disturb the "demonstration purpose" of the synthesizer, but will prevent its serious usage because you don't want to have clicks/pops and missed notes in your tracks, do you?

The package comes with 2800 of my own patches which can be easily browsed through by clicking on the "Browse" button located on the "Patch/FX" page. Those patches illustrate the way I work and the way I use synthesizers for, so they probably don't appeal to everyone. They also demonstrate the great range and variety of sounds Tranzistow can make and cover most of Tranzistow functionality, albeit some features are touched very lightly and just in a few patches.

Here is another bank with ~28000 Yamaha DX7 patches I reworked for Tranzistow QFM engine:

Tranzistow QFM Patches by HrastProgrammer [ZIP file]

Diodow bank with 100 patches made by Ed Ten Eyck can be used with Tranzistow as well:

Diodow Patches by EDT [ZIP file]

I also prepared a document where you can read more about Tranzistow - what it is, what features/modules does it have, etc.:

Short Description of Tranzistow Synthesizer by HrastProgrammer [PDF file]

Note: This is not user manual but a brief Tranzistow introduction and description. I simply don't have enough free time to describe all Tranzistow features and parameters because I have to do other job for a living :-(
It's official now - the development of mighty Tranzistow has been finished and 16.01.2016 will be the last developers build. I've done everything what had to be done here and much, much more :-) During the development I created things I could only dream of when I started all this almost 3 years ago. And now Tranzistow is an extraordinary powerful and polished synthesizer, so I decided it is time to stop and leave it as it is, with all the bells and whistles (literally), and perhaps a few small shortcomings which I got used to. With such tremendous amount of power, possibilities and features under the hood, I really don't know what else could I possibly need as far as sound synthesis is concerned ...

This is just a short list of things I've done since QFM:

(1) I developed another FilterA model called FilterX. This is a very aggressive diode based SVF model with a really unique sound. It uses a lot of CPU to keep things under control, so two modes of operation are provided: 12dB only (FilterX/12) and both 12/24dB (FilterX/24).

(2) Sub oscillators have been turned into SuperSaw oscillators (up to 16 supersaws/superpulses per single Main/Aux oscillator with tune/level/detune-type parameters and various lin/exp/log level curves). I was just curious to see what's the big deal with all those supersaws and decided to develop my own engine for this.

(3) Reverb has been greatly enhanced and many parameters, including internal modulation, have been refined. Furthermore, now it is possible to configure individual internal reverb modules (like delay taps, output level, etc.) ... Those parameters are on a separate Shift+Patch/FX page. I also added up to 16 freely configurable early multi-delay taps per each reverb. A happy Tranzistow user on the new reverb: "The Reverb sounds very smooth and spacious to me. At first the Endelverb preset reminded me of the Eventide Blackhole reverb because of it's smoothness. It would be excellent on it's own as an effect plugin!"

(4) Tranzistow now has a dedicated stereo chorus/flanger FX unit with 4 delay lines and 8 LFOs per channel - great for strings and pads. It is located at the end of voice chain, on lower stereo path only and before Phaser/Delay/Reverb effect units.

(5) Additional auxiliary stereo reverb embedded into Reverb #1.

(6) Chain mode for all FilterA, FilterB and Comb modules has been added. The chains are always as follows: F1=>F2=>F3=>F4=>F1 with freely configurable levels between stages, so various combinations are possible.

(7) All LFOs (including Voice LFOs) can now be synchronized using realtime MIDI messages (Start, Cont and Measure).

(8) An arpeggiator for each multimode part has been implemented. It is always synced to host tempo, responds to MIDI Start/Stop/Continue realtime messages and has the usual set of features: Mode, Clock, Gate, Range, Notes, Pattern (16 fixed rhythm patterns + 1 user-definable), Reset and Sort.

Note: Additional bugfix-only builds are still possible and will be released if/when needed, but the development is definitely finished.
I was a lot in the "FM mood" lately and as the result I developed additional QFM engine for Tranzistow. During the development I created another FM synthesizer called Operator. It is an internal product (not available to the public) and was mainly used as a test/research platform, but I have plans to use it as a basis for a FM synthesizer implemented on some ARM embedded board. Operator was also used to convert thousands of DX7 patches so they can be loaded into Tranzistow.

Tranzistow QFM engine is highly optimized (as everything else inside Tranzistow, for that matter) and consists of 8 operators grouped into two 4-OP FM modules (OPX and OPY), so only one module can be used if needed to conserve CPU power. Those modules work in parallel with the existing oscillators - all operators can be processed through the rest of Tranzistow engine and used as audio/modulation sources, just like all other Tranzistow audio/modulation sources. The existing Main/Aux oscillator FM modules still exist and nothing has changed in this area (except for a few small corrections/improvements). Each QFM operator is an advanced version based on Yamaha FM operators and has all the usual FM parameters with lots of additional features. Operator matrix for both OPX (OP 1..4) and OPY (OP 5..8) modules is freely configurable meaning that you can use everything as FM sources - including other operators, oscillators, filters, etc. Furthermore, there is an additional fixed operator routing matrix (in 4x4-OP and 8x8-OP modes) where each 1..4 operator (OPX module) can be routed to each 1..4 operator and each 5..8 operator (OPY module) can be routed to each 5..8 operator, all with configurable amounts. Each operator has its own (configurable) level curve and can modulate itself so you can have feedback on all of them. There is a set of 32 DX7 and 8 DX9 algorithms - when you choose some of them the operator matrix is configured to match the appropriate algorithm, but you are free to reconfigure it afterwards. And each operator has its own 10-stage loopable envelope which can ba used as the regular modulation source as well. Operator waveform is not fixed so you can use not only sine wave but all other waveforms available in Tranzistow, including contour generators, rotors, etc.

As said before, I converted thousands of Yamaha DX7 patches into Tranzistow format. Due to various differences (operator level scalling, interpolation, much higher waveform quality, etc.) between Yamaha and Tranzistow FM engines those patches won't necessarily sound the same. And my goal wasn't to try to match the original sound because I wanted to develop my own engine with its own sound, so it has been tweaked according to my needs and according to what I consider a good FM sound. The possibility to use DX7 patches was a real bonus and most of them will sound very similar to the originals but some will need a little tweaking. Of all patches I tried I didn't find a single one which wasn't useful after importing, even without tweaking anything.

And last but not least - QFM editor must be activated by holding Shift while selecting Osc/Main or Osc/Aux page. Although both set of pages (Osc/Main+Osc/Aux and QFM/1+QFM/2) cannot be active at the same time all modules are still active and you can use Main/Aux oscillators together with QFM operators without problem. QFM Mode and Algorithm selectors are located on alternate hidden Osc/Main page:

QFM/1 Page
QFM/2 Page
Hidden QFM/1 Page
Hidden QFM/2 Page
Alternate Hidden QFM/1 Page
Alternate Hidden Osc/Main Page
As the result of many months of exploration and development, Tranzistow Additive/GPU engine has been greatly enhanced with advanced FM capabilities. Four successive harmonics are grouped into one FM operator, so each additive oscillator (4 per voice) now supports up to 60 operators - this is 240 operators or 960 dual-harmonics per voice! Each operator supports two separate FM inputs with feedback capability, and with 4 harmonics (each with separate Index, Multiplier and Level parameters) per operator much more complex waveforms are possible. Operators can be connected in unlimited number of ways and can be freely combined with individual harmonics (for example, you can use harmonics 1..224 for additive synthesis and harmonics 225..240 as 4-operator FM) and harmonics can even be used for additive and FM duties at the same time.

The complete 64-voice Additive+FM engine (4 parts, 16 voices per part, 4 oscillators per voice = 256 oscillators in total, each oscillator with 240 dual-harmonics, 60 FM operators and 136-band spectral filter, each dual-harmonic with 8-stage loopable envelope, etc.) is optimized to the maximum and, running at 96kHz sample rate with 240-samples VST buffer, consumes under 55% of the available power on my 1.2GHz HD7970 graphics card.

Such complex and powerful Additive+FM engine has never been invented before, as far as I know :-)

Furthermore, all contour generators and additive oscillators now have various resynthesis options and capabilities. Among the other things, WAV files can be loaded, resynthesized and used as the source material. All those features greatly expand the available sound palette and simplify the initial sound generation ...
Some time ago I bought a cheap spare Alesis A6 Andromeda ASIC board with faulty filter 2 on voice 14. As I already had some spare chips it was my intention to find a technician who could eventually replace the faulty chip.

But, in the meantime I bought a proper soldering/desoldering stations and I decided to do it by myself.

There are two important steps here: desoldering the old chip and soldering the new one. I planned to use hot air station for desoldering but even after practicing the procedure on lots of old PC motherboards and cards, I still wasn't confident enough to repeat it with the ASIC board. The problem is - there are a lot of small SMD components around the chip and I was afraid I could blew some of them away using hot air. OK, the solution was to fix them using a kapton tape but still - I didn't have enough confidence to do this.

As I didn't have to save the old chip, I decided to use a sharp jewelry pliers to cut all pins one by one and desolder them using a regular soldering iron. This is rather slow process and patience is the key (cut a pin - desolder a pin) but I wasn't in a hurry. Another good side of this approach is that you don't really apply any excessive thermal stress on the board.

After cutting/desoldering all pins and removing the chip I carefully removed (using a solder wick) the remaining solder from the pins on the board. Again, patience is the key because you don't want to damage or lift off the pins. You really have to remove all remaining solder - to have a nice clean surface which makes aligning of the new chip much easier.

Now goes the soldering. The correct chip orientation and precise alignment is the key here. After you align the chip just solder one corner (one pin), then correct the alignment a little if necessary and solder the opposite corner. The rest is, more or less, straightforward. I don't spare flux because it makes all steps much easier and you can simply clean the excessive flux after you are done with soldering. And I usually use higher temperature which (in combination with proper amount of flux) makes soldering easier as well - just one short touch per pin. Don't worry if you accidently bridge two pins together - just use solder wick to remove excessive solder.

That's it ...

A skilled professional can do all this much faster using hot air but I am perfectly satisfied with the result produced by the above method - the board tuned perfectly and continued to do so for the last few weeks :-)

Disclaimer #1: If you try to do this by yourself then I am not responsible if you damage the board/chip, burn your fingers or house, kill yourself or your dog, etc.

Disclaimer #2: I have enough A6 spare boards and chips to keep me and my two Andromedas (Andromedae?) safe for years to come. But I don't sell those chips and boards, no way.

The latest Tranzistow build is mainly a bugfix release. Among the other things, a crash under some 64-bit VST hosts (Cantabile, for example) has been fixed in 64-bit version. Furthermore, some bugs affecting multiple instances loading (inside the same host) were fixed as well. I strongly recommend using a 32-bit version where possible because it shares a lot of resources between instances. 64-bit version has completely different memory model and every instance must have its own resources. So, 32-bit version consumes much less memory when multiple instances are loaded. The CPU usage is, more or less, the same for both 32-bit and 64-bit version. 64 bits don't have any real advantage as far as Tranzistow is concerned.

I also recommend using full multimode capabilities. Instead of loading 4 instances - use 4 multimode parts inside the same instance. Or even better - enable 8 multimode parts! To do this you have to enable multithreading in Tranzistow.ini:

Multithreading=0 | 1 | 2 | -1 | -2 ; Default: 0

Multithreading=0 => All parts are running inside a single thread [4 parts total].

Multithreading=1 => Each part runs inside a separate thread + there is an additional thread for mixing all parts [4 parts total].

Multithreading=2 => Each part runs inside a separate thread and thread for the first part is used for mixing [4 parts total].

Multithreading=-1 => Each main+sub part pair runs inside a separate thread + there is an additional thread for mixing all parts [8 parts total].

Multithreading=-2 => Each main+sub part pair runs inside a separate thread and thread for the first part pair is used for mixing [8 parts total]. This is what I mostly use when working with Tranzistow.
Recently, I developed an editor for Waldorf Streichfett string synthesizer:
George Heist wrote:

"I wanted to reaffirm my total appreciation of the DSP programming work you have done with Tranzistow. I have many great synths (hardware, software, analog, digital) but nothing quite compares to the organic qualities that I have been able to coax from your brilliant synthesizer. You have done great work with Tranzistow, make no mistake about it. I can't thank you enough for this brilliant addition to my musical life."

Thank *you*, George :-)
I developed a simple but effective 4-way parallel compressor for Tranzistow. It is located before amplifier/panner (after filters and all other synthesis modules) and is not meant to be a replacement for a full-fledged compressor with tons of various parameters, it's just another useful sound controlling/shaping module. Compressor parameters are located on alternate hidden Filter/Pan page under Amplifier section. Furthermore, there are two shaper configurations now: before and after mixing pre-filter signals into the amplifier.

In addition, all filters (A/B/Comb) now have a side input for direct signal routing. Side inputs don't go through mixer/balancer and aren't affected by Gain settings. Beside side inputs, comb filters also have additional inputs settings, so filters A/B can now be routed directly to comb filters. Among the other things, this is great for various per-voice chorus/flanger effects etc.
Phase locking has been implemented for all Main/Aux/Sub oscillators. It is not very useful alone (because phase is not advancing and thus the particular oscillator is not producing any sound) but if used with FM it will, more or less, act as phase distortion (as used by Casio, for example) opening a new array of possible sounds.
In addition to internal virtual sync oscillators, I implemented a "classic" oscillator sync engine for Tranzistow. Any Main/Aux oscillator (slave) can now be synchronized to any other Main/Aux oscillator (master), similar to classic analog synthesizers but much more powerful because you can have up to 8 sync master/slave oscillators per patch. I still recommend using virtual sync oscillators wherever possible because they are less CPU demanding. Sub-Oscillators can also act as masters and slaves.

Furthermore, an additional Hard Sync (HS) mode for all Main/Aux/Sub oscillators has been implemented. It can sound more "ringy", "phasey" and "noisey" than a regular sync but reacts better to pitch changes of the master/virtual sync oscillator (actually noticeable on very high pitch sweeps only). HS mode uses a little more CPU so the (default) regular sync is recommended in most cases. Of course, additional harmonics generated by Hard Sync can be interesting on their own and can make many sync sounds more lively.
Graphical envelope editor enables easier editing because you can draw the envelope with the mouse and see how it actually looks in time. To activate the editor just click on the section name for the envelope in question and drag the stages as needed. To work with a particular stage you can also press and hold keys 0..9 before and while using the mouse. This is especially useful if some or all stages are closed (after patch initialization, for example) because you cannot access them directly with the mouse in this case.
Tranzistow now has 100 freely drawable Contour Generators (with built-in waveform/spectral graphical editor) per patch/part now, each generator with up to 8192 points (although contours with over 1024 points don't have much practical sense). This provides a whole new level of versatility because they can be used as additional main/aux oscillators waveforms, LFO shapes, envelope curves, filter curves, modulation curves, etc. If used as main oscillator waveforms they can be bandlimited (only contours with 4 points and up) or non-bandlimited, with freely configurable min/max window parameters (the same as built-in waveforms).

This recently developed graphical engine is also a basis for envelope editor and various Additive/GPU engine editors (oscillator/harmonics/envelopes and spectral filter).
Comb filters on Tranzistow have been enhanced and some bugs were fixed as well (comb delay buffers weren't initialized properly on note-on). There is a new Shape hidden parameter which determines internal delay buffer "shape". Shape=0 gives much stronger comb/delay effect while Shape=1 produces more soft sound (and everything in between, of course). Default is 0 for new patches and 1 for the existing ones (to preserve compatibility with older patches).

I also reworked comb memory allocation and buffers are now allocated on-demand (because they are huge memory consuments), after comb filters were activated or after a patch using comb filters has been loaded (but once allocated - they remain allocated for a particular part until you restart Tranzistow).
[New!] My new album "Sigmadron" is (finally) out:

I switched all my work to "All rights reserved" license. The existing recordings tagged as "CC BY-NC-ND" will remain under Creative Commons license and they can still be shared but cannot be modified or used commercially. All other recordings tagged as "All rights reserved" can be downloaded for personal listening only, but cannot be redistributed, modified, sampled, sold, released, performed, broadcasted, streamed, or used in any other way, commercially or non-commercially, personally or in public, without my explicit written permission!
The new Sub-Oscillators (like a "substitute" for both Main/Aux oscillators) have been implemented for Tranzistow. Those are of lower quality/resolution/fidelity compared to Main/Aux and don't have some advanced features like wavetables, morph, etc., although oscillator sync and FM are fully supported. But they are much more CPU friendly and can be used when the highest quality and/or advanced functionality is not really needed. To conserve CPU they aren't fully antialiased/bandlimited although the aliasing level is still very low and cannot be noticed unless using heavy FM combined with very high pitch etc. Or if you use low sampling rates like 44.1/48kHz combined with Single Processing engine setting - then you'll be as close as possible to the sound of first/second generation hardware Virtual Analog synthesizers from the end of 20th century :-)
I removed tube drive/saturator/feedback curves because they are just complicating the engine without any real benefits. They didn't work well with filter feedback anyway and generating even harmonics can be achieved much easier using recently developed Drive/Saturator Shift and Feedback Shift/Symmetry functionality.
Unfortunately, I just ran out of the available space for hidden parameters, so I had to introduce another (alternate) hidden parameters level accessible through Alt + page button combination. New Drive/Saturator Shift, Feedback Shift/Symmetry and Positive/Negative parameters for all modulation matrices are located on this page.
My contribution to the Earth Day:
Starting with build 20.04.2014 there will be a change in LFO/AuxLFO/Env/AuxEnv/Lag rate modulation behavior. I decided to do this because it was very hard to predict the correct result of rate/modulation calculations in the current implementation - and I needed a precise control of envelope time modulation in the track I am currently working on ;-)

The new formula is: ModulatedRate=Rate*(1+RateModulation*ModFactor)

There are ModFactor 4 lines: #1 for LFO1/AuxLFO1/Env1/AuxEnv1/Lag1, #2 for LFO2/AuxLFO2/Env2/AuxEnv2/Lag2, etc. ModFactor is a hidden parameter on Spec/Mod page and, by default, it is configured for a large rate increase.

Note: Don't forget that envelope/lag times are translated to rates internally (for example, envelope time 4s translates to 0.25Hz envelope rate).

Example 1: LFO1 Rate=1Hz, ModFactor1=1000, Amount=1 => The resulting LFO1 rate will be 1001Hz

Example 2: LFO4 Rate=1Hz, ModFactor4=1, Amount=-0.9 => The resulting LFO4 rate will be 0.1Hz

Example 3: Env1 Time=0.5s (Env1 Rate=2Hz), ModFactor1=1, Amount=-0.75 => The resulting Env1 time will be 2s (0.5Hz rate)

So, if you have patches using LFO/AuxLFO/Env/AuxEnv/Lag rate modulations then you'll have to correct them after receiving the latest version.
After extensive development Tranzistow got a new filter called FilterH as a replacement for the existing FilterA. 'H' means 'Hidden' because it was hidden inside the engine for quite some time until it was completely finished/tweaked. All newly INITialized patches will have FilterH active by default while the old patches will continue to use the existing FilterA (until you activate FilterH, of course). FilterH has much different structure and can have much different (I would dare to say - more analog) sound compared to the existing FilterA. The key is to combine various feedback curves/amounts with internal limiters for a broad range of filter characteristics. Well, the same as with filters A & B, for that matter :-)

BTW, FilterLegacy mode has been removed because it doesn't really have much sense and I needed a free button for FilterH ;-)
Tranzistow reverb engine has been enhanced with various shaping options like Surface, Rate, Random, Smooth, Dispersion1/2 and DistanceL/R for even more dense reverbs.
Ed Ten Eyck ( made a free Diodow soundbank.

It can be downloaded here:

My favourite sound: Classic Mood EDT ... raw power :-)

Those sounds can be loaded into Tranzistow synthesizer as well (only registered version, of course). A lot of them use samples in LA style and, by default, sample engine is configured for higher quality so they can be transposed over several octaves without aliasing artifacts. This uses more CPU and can lower the available polyphony. So, if you have less powerful computer and don't need transposing over several octaves you can lower the "UpSample" parameter.

Sounds are free to use in your music, you can modify them according to your needs etc. but you cannot make another soundbank or any other product derived from it!
New Tranzistow demos ... Various wavetable madness while I am in the "wavecomputing" mood :-)
Diodow announcement with a short review + video on Bedroom Producers Blog:
The demo version of my Tranzistow synthesizer is now available for download:

Tranzistow Demo Download [32/64-bit] (unzip into the VST folder and that's it)

Loading/saving patches is disabled in demo version but otherwise - it is fully functional and no other features are disabled or crippled.

The main problem at the moment is the lack of a proper manual, so you are on your own in this regard - feel free to experiment ;-) The manual is in the plans but I am very busy doing various work in various areas, so it won't see the light of day in a foreseeable future, I am afraid. Of course, I am open to all questions by mail, just be aware that a reply may take a couple of days ...
I am very happy to announce the beta version of my own 32/64-bit Windows VST/ASIO host called Hrastow :-) It is a very simple host aimed mainly at hosting Tranzistow and Diodow together with some VST effects used for additional FX processing. The reason for developing it is very simple - I really got tired of being irritated by various overbloated, non-hostile and crappy hosts which have tons of "features" and even more tons of various quirks. I just wanted a small, lightning fast and 100% stable host to load Tranzistow/Diodow, configure MIDI inputs and ASIO inputs/outputs, eventually attach some effects, record audio output to WAV file and that's it, no need for automation, fancy user interface and various other junk I don't like and never use. I don't intend to release it to the public at the moment.
A very nice article including an interview:

Thanks Jose and Synth Caresses :-)
And finally - Tranzistow now has a full-blown randomizer with a parallel user interface (activated with Alt+Init) where you can set min/max ranges for all parameters you want to randomize. It mainly generates various industrial drones/noises and that's what I like about it and what I am using it for ;-)

The randomizer must be enabled in Tranzistow.ini:


The patch can be randomized from randomizer editor or directly from the regular editor using Ctrl+Init combination (or Ctrl+F9 if shortcuts are enabled). There are two types of randomization: absolute and relative (parameters are randomized relative to the current values). The type and intensity is configurable through "Randomizator" parameter: positive = absolute, negative = relative. All randomization parameters are saved together with the patch so you can recall all settings later. If you want to load a patch without loading randomization parameters then press and hold Alt key while loading. Randomization parameters from the current patch will be preserved in this case = easy way to copy randomization parameters from one patch to the other.
I developed External Control Interface (ECI) for Tranzistow and it is now equipped with a native support for Behringer BCR2000 controller which makes creating/editing patches a breeze. Everything you can do using the standard Tranzistow screen editor can now be done through external control interface and BCR2000. Various other nice features have been implemented as well, like knob anti-jittering, curves and 4 levels of knob precision for fine granularity of parameters etc. This editor will also be the basis for my Alesis Andromeda editor I plan to develop ...

External control interface must be enabled in Tranzistow.ini:


I have yet to write some instructions on how to use it and specifications for those who want to reprogram some other MIDI controllers to control Tranzistow over ECI. For Behringer BCR2000 I already prepared the appropriate system exclusive file which must be sent to the controller.
Wavetable oscillator model on Tranzistow has been enhanced. The existing model has an integer wave index with the possibility to seamlessly crossfade from one wave to another during the wavetable sweep/modulation, while the new model has continuous wave index and always interpolates between the two consecutive waves inside the wavetable for a whole new dimension of fine wavetable sweep sounds (at slightly higher CPU usage). Of course, the existing model is kept intact for more "classical" wavetable sounds.
New version of filter B for Tranzistow has been developed as well, with better precision and frequency response + slightly lower CPU usage. Furthermore, feedback characteristics are much better now and increased feedback level is not needed anymore (in order to avoid loosing energy after filter has been driven into selfoscilation at very low cutoff and high resonance). By default all patches will use this new filter but the older one can be activated if needed (FilterLegacy mode).
Some keyboard shortcuts have been added to Tranzistow: F2 = Save, F3 = Load and F9 = Init.

Shortcuts must be enabled in Tranzistow.ini:


Shortcuts could or could not work, depending on how is your VST host using the above keys.
Tranzistow multi-mode has been redesigned to allow sub-parts inside a single multi part/patch. The basic concept behind this is: Tranzistow voices are very complex and you don't really need all modules for a single voice in most cases. So, it would be very nice if some modules from the same voice could respond on different MIDI channels. There are 4 mono paths per voice, starting from oscillators, through mixer/balanacer to filters and post-filter mixer. After that, paths 1 & 2 are mixed into lower stereo path and paths 3 & 4 are mixed into upper stereo part. Both lower and upper stereo paths can be freely routed between FX chains 1 and 2.

Each mono path can be assigned to a separate MIDI channel (assignable relative to the part MIDI channel) giving you the possibility to have different sounds from the same patch. Of course, this is not the same as full 16-part multi-mode but was much easier to implement into the existing engine and doesn't really consume any additional resources. This enhancement won't extend the available polyphony because paths assigned to different MIDI channels aren't disabled while playing (internal engine paralelism doesn't allow this), they are still executing but are muted after post-filter mixer. Everything described above opens a whole new world of interactions between various paths/parts/modules, something not possible with any other synthesizer out there. The same as with most other Tranzistow features, for that matter ;-)
New version of filter A for Tranzistow has been developed, with internal routing and distance capabilities, slightly lower CPU usage and better precision and frequency response. There is a (very) small chance that with some extreme settings there could be some tiny differences in sound between the old and new one, although I haven't noticed anything like that while testing.
I noticed a rather serious bug in Tranzistow multithreading code: in some rare circumstances the main stereo output could accumulate a previous signal and produce a total mess, clipping/distortion etc. This affects main output in multithreading modes on some VST hosts only and is fixed now.
A short recording demonstrating spectral filter over a saw wave generated by the additive engine:
Some of old Tranzistow demos made by myself, mostly various drones and sequences created while testing the engine:
Tranzistow demos made by Miroslav Tropcic, full album in fact ...

Ghost Ship (
Tranzistow v4/32 ... 32-bit, 4 parts with SSE3 engine and 4-way multithreading ... Finished.

Tranzistow v4/64 ... 64-bit, 4 parts with SSE3 engine and 4-way multithreading ... Finished.

Tranzistow v4/32+ ... 32-bit, 4 parts with SSE3 engine and 4-way multithreading + Additive/GPU engine ... Finished.

Tranzistow v4/64+ ... 64-bit, 4 parts with SSE3 engine and 4-way multithreading + Additive/GPU engine ... Finished.

Tranzistow v8/32 ... 32-bit, 8 parts (4 main + 4 sub) with SSE3 engine and 4-way multithreading ... Finished.

Tranzistow v8/64 ... 64-bit, 8 parts (4 main + 4 sub) with SSE3 engine and 4-way multithreading ... Finished.

Tranzistow v8/32+ ... 32-bit, 8 parts (4 main + 4 sub) with SSE3 engine and 4-way multithreading + Additive/GPU engine ... Finished.

Tranzistow v8/64+ ... 64-bit, 8 parts (4 main + 4 sub) with SSE3 engine and 4-way multithreading + Additive/GPU engine ... Finished.

All versions have 64 voices total polyphony in multithreading mode and 24-voice total polyphony in singlethreaded mode (8 parts are not available in singlethreaded mode).
Finally, Tranzistow got a set of 4 highest-quality sample oscillators per voice. I have been working on the sample engine for quite some time because, as with everything else I've done with Tranzistow, I tried to achieve highest possible quality with low to moderate CPU usage and couldn't stop until a suitable interpolation, upsampling and filtering algorithms were developed and optimized. The result is that you can transpose a sample up for several octaves without audible/measureable aliasing artifacts, even at lower quality settings and low CPU usage.

Sample oscillators are sub-modules inside main oscillators - they share common pitch/frequency parameters together with the same outputs, so they can be used as audio/modulation sources in tandem with the regular oscillators + sample output can be further processed through Tranzistow engine as any other audio source inside the synthesizer. The engine can load 8/16/24/32-bit PCM and 32-bit FP mono/stereo WAV files. To load a sample click on the oscillator section name (Osc #1, Osc #2, Osc #3, Osc #4). In case of stereo samples - if you load a sample into oscillators 1 & 3 then left left channel will be loaded, otherwise right channel will be loaded. To remove the sample press and hold Ctrl key and click on the appropriate oscillator section name. The oscillator section name will have an asterisk on front of it if a sample has been loaded into the connected sample oscillator.
As icing on the cake, I implemented 136-band spectral filter (with 8Hz-20kHz range) for each additive oscillator (meaning that 256 filters are running at the same time processing data for a total of 256 * 136 = 34816 bands per sample). This filter can be used for everything, from 136-band EQ via various resonant/non-resonant lowpasss, bandpass, highpass, formant (multiple bandpass) to some completely crazy and yet unheard filters. The complete 64-voice additive engine (with 256 oscillators, each oscillator with 240 dual-harmonics and 136-band spectral filter, each dual-harmonic with 8-stage loopable envelope) is optimized to the maximum and, running at 96kHz sample rate, consumes just 55% of the available power on my 1.2GHz HD7970 graphics card. As far as I know, this is the first time ever that someone developed a full-fledged high quality realtime/no-latency synthesizer engine on a GPU :-)
The filter engine on Tranzistow has been optimized a little (on both 32-bit and 64-bit versions) so it eats a few small percents less CPU now :-) It is very hard to further optimize what's already highly optimized but sometimes just rearranging a few instructions can save a significant number of CPU cycles, if you know what to rearrange, of course ;-)
Oscillators shapers on both Tranzistow and Diodow have been redesigned to avoid a large amplitude drop near the maximum. As a result, it is now possible to get a pure triangle wave with RampShape set to 0.999, for example. This can affect existing sounds using large Shape parameter values (over 0.99) and some adjustments will be needed in such cases. Incorrect scaling of various Shape and Smooth parameters has been corrected, as well.
I noticed a problem with the reverb engine where, in some rare cases (large room size combined with high feedback values), DC could rise to such high levels that it can even cut a sound due to the overload. To prevent this I added DC blockers inside the engine and made some other corrections. The reverb sounds better now, has a greater dynamics and cannot be pushed out of the control anymore. Just as a precaution, I added DC blockers into Phaser and Delay effects too, although such problems haven't been observed there.
Additive engine for Tranzistow (for both 32/64-bit versions) is finished ... 4 multi parts with 16 additive voices (for 64 voices in total), each voice with 4 additive oscillators, each oscillator with 240 dual-harmonics and internal virtual sync oscillator. Dual-harmonic is a combination of two harmonics where the second one is PW phase-shifted in order to have PulseWidth at additive level (so, basically, there are 480 harmonics per oscillator * 256 oscillators = 122880 harmonics processed per sample). Each dual-harmonic has 8-stage loopable envelope (61440 envelopes processed per sample). All oscillators are fully bandlimited which means that you can, for example, sweep a saw wave and the engine will automatically remove harmonics over Nyquist as you pitch up (and add harmonics as you pitch down). To avoid sudden jumps when removing and adding harmonics (which can be quite hearable in some cases) there is a built-in XFade functionality which crossfades between old and new harmonic window.

More or less, this is additive Tranzistow engine ported to GPU with a difference that Tranzistow works with up to 1024 dual-harmonics and it cannot calculate each harmonic in realtime because there isn't enough CPU power to do this + everything else Tranzistow does at the same time. So, I am precalculating a lot of things in advance on Tranzistow and store calculated data in memory - this process is invisible to the user but needs a lot of RAM. Today's machines have enough RAM, anyway, so in many cases it is better to use more RAM when possible in order to save some CPU for other things. The other limitation is that Tranzistow harmonics don't have envelopes - you cannot control how individual harmonics change over time, which is quite a big difference between those two engines.

Additive oscillators are sub-modules inside Aux oscillators - they share common pitch/frequency parameters together with the same output and they can be used as audio/modulation sources in tandem with the regular oscillators + additive output can be further processed through Tranzistow engine as any other audio source inside the synthesizer.
Tranzistow/Diodow: Output stage has been slightly modified. Both stereo signal from the lower and upper effect lines are mixed at the final output stage and this is OK. But, when all effects are turned off, the same stereo signal is mixed producing a sound with twice the level. This is not OK and has been corrected. Sounds without effects will be quieter now and some manual level adjustments will be needed in certain cases.
Tranzistow: I implemented 4 sync-modifiers per voice (hidden SyncMod parameters on Spec/Mod page). They run at audio-rate and, beside additional LFO/envelope/etc. syncing (over the existing functionality built into the modulation engine), they can also be used to sync oscillators to various modules and even MIDI controllers. Contrary to the virtual sync-oscillators (built into the regular oscillators themselves), sync-modifiers are not antialiased and can create all sorts of digital artifacts which can be desirable or undesirable, depending on the particular case. They don't sync at the end of the cycle as regular oscillators (because many sync-mod sources don't even have a cycle, only oscillators, LFOs, envelopes and lag processors do) but at the crossing from negative to positive values (MIDI controllers cross at the middle of their range). For this reason, you can have more than one sync points during the same cycle, when using wavetables, for example, which is not possible with the virtual sync-oscillators.
Tranzistow 64-bit version finished.
VST automation in Tranzistow and Diodow is now turned off by default because I don't use it and prefer to control everything over MIDI. But you can turn it on using Tranzistow.ini (Diodow.ini) file:

Diodow 64-bit version finished and ready for testing ... Both 32-bit and 64-bit versions are now available for download.
Just assembled a new audio workstation ... It will be used to run my Tranzistow synthesizer, develop 64-bit and AVX2 versions of Tranzistow, explore GPU programming, develop GPU additive engine for Tranzistow, etc.

Intel 4-Core i7-4770K Haswell CPU @ 4.4GHz
Enermax ETS-T40 Twister Bearing CPU Cooler (10-21dB)
ASUS Z87-C Motherboard (I need PCI slots)
8GB Kingston HyperX Predator DDR3 @ 2400MHz (I don't need more)
Sapphire Radeon HD7970 GHz Edition Vapor-X 3GB
Corsair TX750M 750W Modular Power Supply
19" Server Rack Case, etc.

No monitor, keyboard and mouse because it is connected via Remote Desktop over 1Gbps LAN. It has even a better latency than my regular Intel 4-Core i7-2600K Sandy Bridge @ 4.1GHz workstation, probably because it doesn't have tons of connected devices. The machine is extremely quiet, although a few dB louder than 2600K which is almost inaudible, even at full load.
Two years ago I turned off the contract for a double-CD release in order to keep all music rights by myself. But here are some liner notes which should have accompanied this release:


On the one side, "Harmony of the Machines" is about atmosphere and feelings, about particular moments and points in time, from the past and the future, about nature and space, and finally - about harmony ... Everything has some harmony inside otherwise it wouldn't exist, it would just disintegrate. On the other side, it is about various devices and machines, about mathematics and numbers, about computers, programs and algorithms ... Binary system of the universe ... All entities, beings and objects have some algorithm, the "main program", which controls their creation, existence and annihilation. In the case of life, nature, space, etc., those algorithms are so complicated that we don't understand most of them yet. Perhaps we will never understand them because we are not supposed to understand. But we can create our own algorithms and programs, produce our own numbers and search for our own harmony, that's what I am trying to achieve using all possible sources of inspiration around me. Everything comes out frEverything comes out from some pictures in my mind and transforms into sound through various devices, and it is all just numbers and signals in the end. So, it all works together in the "Harmony of the Machines" ...

"Genesis" is about creation and genesis - the primary algorithm of nature and space, the "Big Bang", primordial sunrise, the "BEGIN" instruction of every program ...

"Inevitable" is about life, about destiny and inevitability of things to come and moments to happen ... Sometimes you simply cannot do much about it and it is the best to wait and be prepared for surprises - they never sleep!

"Hyperlord" is about a hyper-force, a hyper-machine which creates and destroys everything, the machine which can produce wonderful things but sometimes can get very mad and angry, to show us what hyper-power is all about.

"Micronesia" is about the beauty of planet Earth, watching a sunset from one of thousands of small islands in the Pacific Ocean. If only we don't have to think about the deterioration of coral atolls ...

"Watergeist" is about water and undersea which still hides a lot of mysteries. It fascinates me since the childhood and still do. Never enough Cousteau documentaries!

The inspiration for "Nightshade" came while sitting in the dark somewhere nearby the river ... Warm summer night, a lot of strange sounds around, full moon, dark thoughts, waiting for strange creatures to jump from the darkness and anxiety ...

"Cybernetic Structure" is a true "Harmony of the Machines" piece. Computers, robots and various cybernetic organisms doing what we are ordering them to do - well, mostly, until they gain control of everything.

"Rainforest" is about nature being constantly destroyed by the humans, and forests being among the ones treated very badly, with irreparable damage. Enjoy them while you can - they won't last long!

And finally, "Maydawn" is about death - the "END" instruction of all programs.

I have been asked several times what is my music style, but it is very difficult to give a correct and precise answer to this question because I don't follow a particular style (or "school"), I combine various styles I like. In fact, I never think about styles while making music and I don't follow any rules - I just do what I like in order to support the theme and atmosphere of a particular piece, no matter if it sounds like ambient, industrial, electro, techno, etc.
Installed 64-bit environment on my notebook so I can start porting Tranzistow and Diodow to x64. Porting will be quite a challenge because the whole engine is written in pure assembler. I will use this opportunity to reorganize the complete memory management as well. In 32-bit version I use true pointers for buffers, modulation sources/destinations etc. But in 64-bit version it will be much better to allocate a big chunk of global memory, divide it into smaller chunks and use offsets from the start of global buffer for everything.
Mladi Semiotičar wrote:

"Ne mogu se ovih dana odvojiti od Hyperlord, Darkwood i Maydown ... Ti si prijatelju jedan ludjak :D"
The other day I wrote the following post on Gearslutz forum under "DSP board vs CPU question" topic and, to my great surprise, I got a negative vote for it! Huh?!? Some retarded dumbass, instead of learning something from this post, thought it deserves a negative note! Well, I really don't have to tolerate this, so it's time to get out of this forum full of various morons. 99.999% of posts there are bullshit anyway ...

"Modern CPUs are basically DSPs and have enough power to do a high quality synthesis and effect processing, if done correctly, of course. I am talking from my experience because I developed my own synthesizer called Tranzistow (this is my private/hobby project). There are tons of audio processing and modulation elements/modules there, and everything is processed at *sample* level (I am not using block-processing) so there is either zero-sample or max. 1-sample delay with all processing and modulations, even when using the highest quality level with 4x oversampling etc. I spent months and months enhancing my algorithms and engine to achieve the best possible quality at the lowest possible CPU usage.

For this reason, I developed the whole engine in 100% x86 assembler using SSE3 instructions (20+ years of assembler programming experience surely helped here), so I am processing 4 integer or floating point values in parallel. That's why there are 4x main/aux oscillators, 4x transistor ladder + 2x diode ladder filters, 4x SVFs, 4x comb filters, 8x LFOs, 8x envelopes, 32x modulation matrix, 4x delays, 4x phasers, 4x reverbs, ... => because everything is processed in packets of 4. Some modules are vectorized (I am separating "parallelizing", where 4 values are calculated in parallel at 1-sample level, from "vectorizing", where 4 mono or 2 stereo successive samples are processed in parallel), for example 2x/4x downsampler where 2 stereo samples are processed at once etc. Most condition instructions can be efficiently parallelized using SSE thus minimizing branch/scalar instructions, so it is over 90% fully parallelized code. I am using 32-bits and single-precision because I was able to tweak all modules to single-precision, proving that (if done properly) you don't need 64-bits and double-precision to achieve high-quality sound with acumulated calculation noise below -130dB. The only place where I had to switch to double-precision is the sample engine because I wanted sample oscillators to be able to handle large files with a high resolution.

Furthermore, I developed my own multithreading which doesn't depend on VST hosts, so I am able to run each multi part on it's own CPU/Core. Currently 4 parts are supported but I can easily extend this to 6 or 8 core if needed.

On my 4GHz i7 2600K I was able to achieve a minimum of 6-voice polyphony per part with most complex patches at 96kHz and with 4x oversampling. But this is the extreme case because 384kHz audio processing rate is not really needed when oscillators are fully bandlimited, so I am usually running at 2x oversampling with minimum of 12-16 voices per part (meaning 48-64 voices in total with 4 parts). I repeat - this is on 96kHz and with 2x oversampling (192kHz). In practice, there is even no real need for 2x oversampling on 96kHz, except when you are using extreme FM, waveshaping, etc. So, there is plenty of voices here on 2 years ago CPU. When dropping the samplerate down to 48kHz I am able to achieve similar polyphony per part (2 parts only) on my 4 years old 2.67GHz T9550 dual-core laptop, and even on my 6+ years old 2.33Ghz T7600 Core2Duo laptop it is not much worse.

So, the bottom line is - yes, modern CPUs can do all DSP duties without problem.

Of course, operating systems like Windows can be a problem to some extent. The usual forum talk about Windows using large amount of CPU is mostly nonsense - Windows use very little CPU by itself (if configured correctly), applications use CPU. So, if you want to do a synthesis then don't execute other CPU intensive applications concurrently, simple as that. The most important thing is to eliminate various CPU spikes caused by bad hardware and/or drivers => use DPC Latency Checker to detect and disable all those unneeded or not-properly-working devices in device manager. And don't overload (each core on) the CPU over 90%, leave it some room to breathe.

I am using 32-bit Windows XP for years, both for sequencing (using my own sequencer) and audio processing, running my old E-MU 1820M at 96kHz with only 5ms latency.

Just my 2 cents ...

Edit: I probably won't wait for Haswell-E because 4-core 4770K has more than enough power for what I want to achieve."
Recorded some nice rain and lightning to use in my new track I just started to work on. I'll probably need many months to finish it because I am (still) occupied by Tranzistow development very much these days ...
Bought Sapphire HD7970 GHz Edition 3GB Vapor-X graphics card in order to explore the possibility of additive synthesis using GPU resources. The idea is to have a separate additive engine running on GPU, with 4 additive oscillators per voice, each oscillator with 128 or 256 harmonics, each harmonic with it's own LFO and multistage envelope, etc.
Uwe Sasse wrote:

"Musik aus Zagreb, die ich wärmstens empfehlen kann:

HrastProgrammer - HrastWerk

kurz vorgestellt auf"
Finally finished a new track called "Microcode" ... It took almost a year to finish it - I started working on it at the end of last summer but in the meantime I started developing my Tranzistow synthesizer, so a lot of my free time (that I don't have much anyway) was dedicated to this. And the fact it is 28:58 minutes in length didn't really help ;-)

Copyright © 2012-2016 by HrastProgrammer. All rights reserved.

All content (audio, graphics, software, etc.) on this and related websites is fully copyrighted. You can download the music for your personal listening only, but you cannot redistribute it, modify it, sample it, sell it, release it, perform it, broadcast it, stream it, or use it in any other way, commercially or non-commercially, personally or in public, without my explicit written permission!