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 ...
It should be noted that on February 02, 2020 I invented the new EM genre:

Latest Tranzistow update:

A few small fixes here and one quite important feature. There have been some complaints about amplifier envelope artifacts with very short attack at low sample rates like 44.1kHz combined with 1/8 control rate and sine oscillators. I optimized Tranzistow for 96kHz sample rate and the default 1/8 control rate is somewhat low for 44.1kHz or 48kHz. So, it makes sense to increase control rate to 1/4 when working with lower sample rates. Or you can activate Slicer module which will make those artifacts go away as the envelopes will be more smooth. You won't lose any punch or click but, in case there is some change in sound, just adjust envelope times or curves accordingly. Of course, both of those methods use some CPU. And now there is another possibility which doesn't use (almost) any CPU. The problem is when a control signal goes into audio domain as this is the case when AmpEG modulates audio volume. So, I introduced 4 levels of amplifier modulation filtering (AmpFilt parameter on the hidden Patch/FX page) which will smooth amplifier control source signal. Again, if you lose some punch or click, just readjust envelope times a bit.
During the next few days I am gonna work on S&H (Sample & Hold) module. Sometimes I am missing this feature so Tranzistow has to have it ... Done.
Special announcement!

Tranzistow was initially a VST 2.x synthesizer but I wanted to get it out of that "plugin hole" for a long time and, as from Summer 2019 Build, I finally decided to do it. So, Tranzistow is now available as "Hrastow Tranzistow" 32/64-bit package with my own application environment called Hrastow. This environment is a standalone synthesizer controlled by MIDI (two MIDI inputs are provided) which also contains ASIO host and a simple VST 2.x host with 5 FX slots (one for each Tranzistow stereo output), each of them being able to load two VST plugins in serial. The main purpose of those slots is the ability to use some external VST effects to process Tranzistow outputs or 4 external inputs if needed, but they can also load other VST synthesizers like my own Diodow synthesizer, for example. There is a separate mixer where input and output levels for each of those 5 slots can be individually adjusted. Furthermore, there is an internal oversampler, so you can achieve 88.2/96kHz quality on systems with 44.1/48kHz sample rates.

Due to high demand, Tranzistow can still be loaded in both Hrastow and VST hosts. Just download the latest package and copy Tranzistow DLLs into your VST plugins folder so they can be used by the host. Also copy TranzistowPatches and TranzistowWaves folders. But, and a big BUT - if it doesn't work (or doesn't work well) with a particular host then bad luck, sorry. Life is too short to fight with all those hosts out there and that's one of the reasons why I decided to develop a standalone version.

The big thing about all this is that I am now providing a full Tranzistow version as part of the package! Yes, full multimode/multithreaded Tranzistow, no demo anymore! It's exactly the same environment I am using for my own music. You have to control it over MIDI from the sequencer (either from a separate computer or using LoopBe virtual MIDI driver) and mix it using a real mixer (or some virtual mixer directly on the computer). This offer is aimed at people who really want to use Tranzistow as a main synthesizer in their music, not as "just another plugin". It is released as a "mandatory donationware" with donations ranging from 50 USD up to 200 USD or more depending on how much Tranzistow will be worth to you, on how many computers do you intend to use it, etc. Only PayPal donations to are accepted. Please, keep in mind this still isn't a commercial project so no support, no assistance in getting it to work, no troubleshooting of your system, etc. Of course, I will make enhancements and fix bugs when I encounter them simply because this is the synthesizer I am using on a daily basis and will be using in my music for years to come. This also means that I can actively test it on Windows XP, 7 and 10 with various ASIO drivers for audio interfaces I have (E-MU, ESi, ASIO4All). Donations cannot be returned, so think twice before donating, check if it works for you in the current state, decide how much it is important to you and then donate the appropriate amount. Those who donated 200 USD or more can contact me by mail and receive a personalized version with these "donationware" messages removed. And don't insult yourself, me and Tranzistow with donations below 50 USD. If you think this synthesizer isn't worth at least 50 bucks then it isn't for you, sorry.

Tranzistow info and download here ...

Those who donated can eliminate "donationware" messages by putting the following section into Tranzistow.ini:

User=HrastProgrammer / Tranzistow - Donated

Those who didn't donate can do this as well because karma will catch up with them anyway.

Note: Diodow will remain a VST plugin only but can also be loaded in Hrastow as noted above.
Some comments on Tranzistow and my work:

"I will just say that it's certainly impressive the amount of work you've put into your projects, both the synths and the music! Incredible amount of output musically, and so I know you are passionate about it. And I must say, it's very excellent work! ... I see you did get some inspiration by my Solaris, which is a very nice compliment ... Let me say again how impressive your music production is! It's a lot of work, and beautifully done. I know when I first was making the Scope plugins, each time I would sit and play, sometimes for hours, through certain sounds that just seemed to inspire a musical phrase or a dream idea ... And so much of what is now being produced out there is, to be honest, boring to me. Just running a 16 step sequencer and adjusting filter cutoffs and so on - there's nothing 'skillful' about that, and there's so much of it going on now. But your music is so much more - very deep soundscapes! And the Solaris is very much that type of instrument, with a focus on pad sounds and textures, so I hear what you've done with your Tranzistow synth and I'm quite amazed!" John Bowen (the creator of Solaris synthesizer,

"You are totally crazy!" (Holger Drenkelfort of Sonic Core after seeing/hearing Tranzistow presentation in my studio)

"Hrast, i just got to tell you. I have not had such a joy with a synth since impOSCar / VAZ Modular. I don't know what magic you did but the main tone/sound/filters are wonderful. And rumours says you did that in assembler? My hat is off to you dear sir."

"This is my dream synth!"

"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."

"You can add me to the list of people who consider your Tranzistow one of the best software synth available. It is such a pity it is so obscure, more people should play with it. You deserve much more exposure. I really hope some company will acknowledge your talent and offer you the chance to implement your ideas in hardware."

"Modal should hire HrastProgrammer. I tried wavescaning on his Tranzistow synthesizer, it is by far the best software implementation i've heard so far. You can actually hear that crunchy graining thing where so many others fail."

"Tranzistow is slowly becoming a go-to synth for me. Looks like an 80s NASA control interface, sounds like a dream."

"Tranzistow is a monster. The guy programmed it all in assembly language and some Delphi, even John Bowen praises his work. Check it out! Be warned ... Tranzistow is hard core, haven't even figured it all out. It can do every form of synthesis. The programmer is nothing short of a genius."

"Somebody gave me the URL to these synths because of how bat shit ugly they look. When I took the time to actually dive into them, I found a couple of real gems that turned out to be my favorite synths of everything I've ever owned; bought or otherwise."

"Hrast is, for me, one of the best dev with Gol, Urs and Dmitry from Diversion and Richard from Synapse."

"Diodow is amazing but I have been lost for hours in playing with Tranzistow despite only having the demo version. Yes, the interfaces are, shall we say, idiosyncratic, and their possible complexity is boggling but, even so, HrastProgrammer's synths cannot be praised highly enough IMO."

"Just tried Diodow today, what a great sounding synth, really impressed with the core sound. The UI is a bit retro to say the least but that shouldnt detract from the top notch synth engine, better than many commercial synths hard and soft."

"Hrast is a bad ass DSP programmer!"

"Can we please give HrastProgrammer a statue, his musical output is amazing! A humble genius, for sure."

"I strongly believe that your beautiful synth will have a profound and lasting impact on music in this century and beyond."

"Hrast, you just made me a very happy person! Many thanks again for sharing your talent with us, both as a musician and a programmer. Tranzistow is amazing! "

"For me, I'm happy for anyone who makes something amazing like this (for their own use) to choose to share it on any terms that they wish to offer."

"Programming this thing was a blast."

"And well worth getting. Even if all you do is use the presets, of which there are a ton. This thing sounds amazing and even with all my "expensive" VSTs, I turn to Tranzistow often."

"If people can use their ears instead of their eyes, they will realize how amazing this synth is."

"I thought I had enough synths, but this one is just incredibly brilliant and fun."

"It would be a real shame if only a very few people knew about this gem."

"It's amazing and sounds beautiful!"

"The phase modulation combined with the amazing sounding filters is worth the asking price alone!"

"Most recently, I found this instrument and was very surprised by its capabilities and sound! It's fine! It was created by a wonderful programmer who knows how to program sound! Wow!"

"I have a suspicion that I will only use this synthesizer, and everyone else will go to the landfill of oblivion!"

"Thank you so much Hrast! I love your synthesizer more and more every day! People must know your instrument! Definitely it is a landmark tool in the history of VST!"

"You sir are a gemstone!"

"Wow... a little over a minute into that HrastProgrammer track..... ****ing epic... and becoming more so with each second!"
"HrastWerk" literally means "Hrast's Factory" because I am "Hrast" and "Werk" is factory in German. This is my small personal manufacture which creates unique software/audio products of the highest quality. HrastWerk isn't related to Kraftwerk (meaning "power plant" in German) in any way, although I don't mind the resemblance between those names :-)
What I was doing with Tranzistow during the last few months?

(1) FM enhancements: By default, Tranzistow frequency modulation works as "Yamaha-style FM", which is actually a phase modulation, but people usually associate FM with "Yamaha FM", so I will stick to this terminology. Now, there is also a TrueFM ("Linear FM") mode which can be turned on individually for each of the 4 slots in each FM module.

(2) Triangle oscillator module: Those oscillators use very little CPU, even less than Sine oscillators. They are great as sub-oscillators (to beef up the sound), or for those beautiful pure high-pitched electronic sounds which I adore, but are not limited to such sounds, of course. FM always operates in TrueFM mode on those oscillators.

(3) Wavetable enhancements: All wavetable oscillators now have "thru-zero" mode (denoted by * in front of the name) where transition between waves in the wavetable occurs on start of the cycle only, minimizing clicks without the need to use wave/crossfade or wave/interpolation modes which use more CPU (while "thru-zero" not being as smooth as those modes, of course).

(4) PulseWidth enhancements: All Main/Aux oscillators, except Sine and Triangle, have an internal PulseWidth module to generate square/pulse/ramp waveforms or to achieve various other PW-like effects. Now, where applicable, there is a complementary "-PW" module without PW and no waveform mixer which uses less CPU (especially noticeable with SuperSaw, HyperSaw and HyperWave oscillators). It is recommended to use those variants when PW is not needed.

(5) HyperSync module: An alternate HyperSaw module especially suitable for hard-syncing of the oscillators (but using even more CPU).

(6) Main parts can now borrow voices from sub parts, so it is possible to have up to 32 voices per each main part. For example, if you set the polyphony for part 5 to 0 then you can set the polyphony for part 1 up to 32. Or set it to 8 and have up to 24 voices on part 1 etc. The same for all main+sub part pairs (1+5, 2+6, 3+7, 4+8), as well as for additional parts in v16/v16+/x16/x16+ versions (9+13, 10+14, 11+15, 12+16).

(7) Thread/Core CPU usage calculation has been enhanced and is now more precise.

(8) Some other enhancements like WaveOver/WaveMirror modes etc.

(9) Linux versions were updated as well.
The "Five-HP":

(1) HP-L
(2) HP-ADF
(3) HP-EM
(4) HP-EMU
(5) HP-DSP
Except in demo version, Tranzistow is now always operating in 8-part multitimbral mode with multithreading. 4-part multimode with multithreading has been removed because it doesn't have much sense to me. Singlethreading has been left for legacy reasons but must be activated on-demand in Tranzistow.ini (although I really don't know why would this ever be needed).

Each part in multi mode now has additional parameters (Note Low/High, Velocity Low/High, Transpose, Pan and Level) which are saved with the project and are separated from the patch itself. There is a dedicated editor for those parameters accessible by clicking on "Control" button on "Patch/FX" page. To conserve DSP resources, sample rate for each part can be divided by 2, 3 or 4 when full processing rate and the best sound quality is not really needed. So, for example, if working at 96kHz some parts can be left at 96kHz, some can be processed at 48kHz and some at 36kHz or even 24kHz.

Recently, I also developed a 16-part multimode (with up to 256 voices of total polyphony), which I will keep for myself :-) I will keep all other most advanced versions for myself only, too, like AVX2 and Additive+FM/GPU. Please, don't ask for them.
New module in Tranzistow: Morphing Filter Bank!

This module contains 4 parallel filter banks, each holding 8 separate morphing filter slots. All filters have two sets of parameters (Type, Frequency, Q, Gain) and are able to morph between start/end position through modulation matrix (either the whole bank morphing and/or individual filters morphing). Each filter has 12dB slope (2-poles) and there is quite a lot of different filter types to chose from (BandPass, LowPass, HighPass, Notch, Peak, LowShelf, HighShelf and AllPass). Although the input is directed to all active filters, they can also be chained so various parallel and serial configurations are possible. Those filters are resonant and have an internal feedback saturator but cannot be driven into self-oscillation and there is no keyboard tracking here, as well as no FM and no advanced features like in FilterA/B modules. The goal here was to use as little CPU power as possible because there are a lot of filters to process if many or all morphing slots are active, so they have to be simpler in structure.

It can be placed either in front of FilterA/B modules or right after them (before amplifier) and has a huge practical value because it can be used for various purposes: from formant/resonant filter banks containing bandpass filters to the emulation of E-MU Z-Plane filters where you can morph between totally different filters in realtime. Or it may be used just as a simple 2/4-pole resonant LowPass/HighPass/BandPass when more advanced filters are not really needed because those filterbanks use less CPU in this case, although if you use all 8 filter slots then it will draw more CPU than other filter modules, of course. In order to conserve CPU, set unused slots to Off and always activate them sequentially from the beginning (don't leave unnecessary gaps between slots).

Morphing Filter Bank parameters are located on a separate Shift+Mixer/FM (Filter/Morph) page.

In addition to the above, I also added a bunch of routing modules (Router #1..#4 sections on alternate hidden Mixer/FM page) which can be used to route signals between paths inside audio chain at various places: before mixer, before and after filters (pre/post-filter) and before amplifier. Routing uses very little CPU because signals are routed directly, without mixing.
Breaking news! VST automation has been removed from Tranzistow and Diodow! Yes, I will repeat it: VST automation has been removed from Tranzistow and Diodow!

So, both Tranzistow and Diodow don't support the direct automation of parameters anymore. This is an archaic feature which doesn't go hand in hand with such highly-advanced, powerful and complex synthesizers. Maybe it was good 20 years ago and OK for simple VST plugins containing a dozen of parameters, but for something like Tranzistow with over 5500 parameters per patch (!) it simply doesn't work. It also doesn't work with multitimbral mode because the automation always treats the plugin as a whole and you cannot automate individual parts. Furthermore, you always destroy the value you "automate", so you don't know what was the original value anymore, which is just plain stupid and whoever "invented" this is a moron!

So, I decided to abandon this "concept" and introduce AutoMod parameters instead. There is 128 of them in total on Tranzistow, grouped into 8 slots (AutoMod1..AutoMod8) with 16 parameters in each slot. On the host side you "automate" those parameters as usual but they don't change anything on the plugin side directly. Instead, they can be used in any modulation matrix just like all other modulation sources. AutoMod processing is also very fast, with no overhead as it would be with direct parameter automation where GUI has to be updated etc.

On Diodow, there is only one AutoMod slot with 16 parameters in total. Everything else is the same.
Play in Peace, Panchulko 2014-2018.

We will miss you deeply. You gave us true happiness! Thank you, and goodbye ...
I do things as simple as possible, but not simpler ;-)
Really great Tranzistow tutorial by Tim Hill:

Using Tranzistow with Reaper - Notes & Tutorials [PDF file]
Tranzistow now supports 128 MIDI NRPN controllers (0..127) with 14-bit resolution for very fine MIDI sequencer control of all parameters available in modulation matrices.
LOL, a dozen of ball-chasing morons "won" some stupid game against another dozen of ball-chasing morons, and tons of other morons are celebrating this "event"! And the remaining morons are crying because they "lost" that stupid game. Nothing but morons around ...
[New!] It makes me very happy to finally present my new "Little Sad Man" album:

This album is quite different from the previous ones, with more (but shorter) tracks ... Due to personal circumstances during the last two years I didn't really believe I will ever finish it, but this year things finally settled down so here it is :-)
Two tracks containing some experiments with Tranzistow GrainStatic granular module I developed recently. The first track is just one granular oscillator (from the four available per voice) while the second one utilizes two granular oscillators panned left and right. I used just one field recording sample in both tracks, with a touch of Tranzistow reverb and nothing else.

Warning: Levels aren't, well, leveled at all, so watch you ears!

GrainStatic module is an extension to the sample engine and uses sample oscillators to produce sound, so both of them can be mixed inside a voice. Furthermore, sync and FM has now been implemented for granular/sample oscillators.
Diodow featured on KVR "One Synth Challenge" friendly music competition:

The challenge resulted in lots of great "Made-by-Diodow" music :-)

The winner already received his registered Tranzistow copy :-)

"Holy crap, I just took a peek - it will take ages just to get through all those presets! This is like Christmas in March - thanks again! Can't wait to get started."
I don't need any advices in regard to GUI or anything else. If you want to see different GUI then take a risk and invest money into the development. Then give advices on "what would work and what wouldn't". Otherwise it's just talk, talk, talk ...
A lot of great people and a few typical KVR morons here:

Just a short message to those who only know to criticize:

"I don't think HrastProgrammer is even a member here and he's already contributed more than 99% of the regular members of KVR."
A nice Tranzistow patch bank by Yan Goedike is now available for downloaded:

Tranzistow Patches by Yan Goedike [ZIP file]

Youtube Demo
I am very happy to announce that a development of 64-bit Tranzistow AVX2 version has been finished, including the one with Additive+FM/GPU engine :-) This was the biggest architectural change (and challenge) since the start of Tranzistow development and almost every single line inside the engine has been touched. But it was worth the trouble because AVX2 versions are 60-70% faster than 64-bit SSE3 versions, depending on the patch structure. And there is still some room left for further optimizations in the future.

So, now we have two new members of the Tranzistow family:

(*) Tranzistow x8/64 ... 64-bit, 8 parts (4 main + 4 sub) with AVX2 engine and 4-way multithreading
(*) Tranzistow x8+/64 ... Tranzistow x8/64 with Additive+FM/GPU engine
Nicolas Jaussaud (aka Yuli Yolo) made a great bank of Tranzistow patches and some other goodies like user waves, contours and samples. It is free to use and can be downloaded here:

Tranzistow Patches by Nicolas Jaussaud (aka Yuli Yolo) [ZIP file]
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.

You can download Linux demo versions here:

Tranzistow v4.8.0 Linux Demo Download [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 [PDF file]
Diodow Linux demo versions can be downloaded here:

Diodow v1.1 Linux 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 ...
HyperSaw and FormantSaw oscillators are now fully functional.
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-2019 by HrastProgrammer. All rights reserved.

My music is like a travel ... by car, train, airplane, boat, spaceship or mind ... through space and time ... through technology and nature ... landscapes, sounds, images, atmospheres, voices, machines, 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.

The circle is now complete.

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

Tranzistow v4.8.0 Windows VST 2.x Demo Download [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 almost 3700 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 [ZIP file]

Most of them probably don't sound very close to the actual DX7 but they should serve as an excellent starting point for making new patches as there aren't many QFM patches that came with Tranzistow.

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 [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 (Reverb/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. If you need to load multiple Tranzistow instances then I recommend using a 32-bit version 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. 64-bit version is somewhat faster than 32-bit one, though.

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.
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-2019 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!