HrastProgrammer Hrastwood Bandcamp Bits & Bytes Tranzistow Diodow Emulators
Note: This is a page with various random/everyday bits & bytes 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 ...
I am HrastProgrammer - Technatmon and my music is not Techno, it's Techno-Logical.
I had the opportunity to play/perform live for 2 hours on the closing day of Mystic Mountain Festival. It was 100% Tranzistow X2 (in x48 multitimbral configuration for 48 synthesizer channels and up to 768 voices) running under Hrastow X2 on HP Omen laptop with i7-11800H Intel CPU @ 4.2GHz and 16GB RAM, connected over USB to MOTU 896mk3 Hybrid interface and going through SPL Vitalizer MK2 (basically just for some bass compression and a final touch in case I have to tweak the sound for a particular PA system). I also have a small Behringer Xenyx 502 mixer for listening on headphones and to have a simple control of output level. The hardware system runs at 48kHz samplerate while Tranzistow runs at 96kHz with synthesis engine at 192kHz as usual.

In one word, it was - great! Everything went smooth and worked perfectly, without errors, clicks or a smallest hint of noise. This is the result of months and months of testing and stressing the synthesizer, sequencer and the whole system. Tranzistow x48 is the most thoroughly tested and reliable software I have ever done. No one of the 8 CPU cores didn't even hit yellow CPU usage (over 80%) at any point. And the sound of my music was simply excellent. I needed that final confirmation on big powerful speakers because I already knew how good it sounds on various speakers ranging from studio monitors to headphones, and from laptops to cars. But I didn't know how my music and everything around it translates to big systems. I also needed the confirmation of how my system works in real conditions as a whole. And now I know. The circle is really complete.

Also, I have to admit that it was really fun to see how people dance and react to the music. I am not a performer of any kind, not at all, and was afraid that my music won't be received well, especially because it isn't exactly mainstream, never was. But I am not afraid anymore and although I don't have any intention to do this regularly, I hope that I will have a chance to present my music on more events and festivals of such kind in the future, especially the ones in the nature and open space ...

On the programmer's side ... Having billions of parallel operations per second for two hours in realtime without a single glitch is certainly a testament of quality of my development and implementation. It could easily work like that for the whole day or week. If you need that level of quality, performance and reliability in your software, feel free to contact me. Only interesting commercial projects apply, preferably on a long-term job basis.

From 1984 ... to 2024.
Some Tranzistow user interface updates:

(*) Opening of hidden and alternate pages is much faster now. Also switching between pages is faster because double-click for shifted pages has been removed, finally. It just caused endless problems and I never liked double-clicking on touch-screens anyway. Shifted pages are now accessible by dragging the mouse out of the corresponding button e.g. you click on the button and drag the mouse out of the it, or put a finger on the button and drag it. This is much easier and works great with touch-screens.

(*) [Windows only] Automatic focusing of parameters e.g. the whole slider/combo section under the mouse will be highlighted. This isn't usable very much with the touch-screens (except that you have the last edited param highlighted) but works nice with the mouse, so I enabled it by default (can be turned off by putting MouseAutoFocus=0 in the [Editor] section). You can change the color with FocusColor [Editor] option.
Flash news ... There is something I've been working on for a long time but I was keeping it for myself until recently:

(*) SuperWave models for Aux oscillators with multiple (bandlimited) single-cycle waves instead of saw waves like in SuperSaw. Don't forget to increase "Overtone" value for those, otherwise it's just a "super" bunch of detuned sine waves. Up to 16 sub-waves per each of the 4 Aux oscillators, of course.

(*) SuperWave and [SuperWave] models for Main oscillators with multiple (bandlimited) waves and wavetables. Just everything can now be used to make a "super-wave", be it the built-in wavetables, or user wavetables, or virtual analog models, or patch wavetables created from existing waves or loaded from samples, or generators, etc. Up to 16 sub-waves per each of the 4 Main oscillators, of course, the same as with the existing SuperSaw models. Note that XFade and "thru-zero" modes are not available here.

(*) I was wondering how to place individual sub-saws in the stereo field since the day I developed SuperSaw modules and now the same with sub-waves consisting a super-wave. This is quite a challenge because Tranzistow oscillators are mono by design and this cannot be changed. But I found a solution - to make one super oscillator be able to "cross" or "step-into" the other oscillator in a 1+2 and 3+4 oscillator pairs, with configurable crossing amount (which can be modulated as well) and different distribution curves. For example, put oscillator 1 to filter/path 1 and pan it to the left while putting oscillator 2 to filter/path 2 and panning it to the right. As a result, sub-saws/waves from the oscillator 1 will be distributed from left to right and sub-saws/waves from the oscillator 2 will be distributed from right to left in the stereo field for super-wide sound. This works for all Super Main/Aux oscillators (existing SuperSaw and the new SuperWave ones). Not only this can be used to make wide sounds but also for many other purposes.

All this has now been included into the latest Tranzistow version, both public (Windows and Linux) and private.

That is really a heavy artillery now, both in terms of features/sound but also in terms of CPU usage if you really push the number of sub-waves per super-wave (and this is where private/internal X2 version really shines due to much more powerful engine, just saying). You can probably take any existing sound and make a dozen of totally new sounds out of it using the new capabilities. Tranzistow can already produce huge sounds but even those huge sounds can now be made "bigger than space" huge and wide, even without applying any FX (but imagine if you put Tranzistow Chorus+Delay+Reverb on top of it).

And all this for free! Of course, the majority will just continue bitching about the user interface and "why no Macburger". That's OK.

Now I really think of Tranzistow / Tranzqomputwerk as finished. There are no missing or essential features that I need or want anymore. One has to know when to stop. Also, Tranzistow really hit the ceiling of complexity, light years above the initially planned ceiling, and implementing a new feature presents quite a challenge sometimes. So, I don't plan to add anything "groundbreaking" in the future. Just small enhancements, corrections, optimizations and performance tweaking if/when needed. It was really a fantastic journey but every development must end at some point and that point for Tranzistow is now. That's it. EOD

That said, I do plan to experiment with a few things from my prototyping list but those will most likely be implemented as a loadable Tranzistow X2 engines only, that's what those have been designed for.
I decided to make a few user interface tweaks in both Tranzistow and Diodow to make it more to my liking. Don't worry, it is still the good old "HrastProgrammer's style" interface so everyone can continue to laugh at it an make jokes like "it looks like 80s NASA control interface" or whatever :-)

Anyway, back on the topic:

(*) First, I made sliders look a little bit different ... Slider "knob" is now rectangular with dark outline. And FlatSliders option from [Editor] section in the INI has more choices now:

FlatSliders=0 (default) ... The currently selected slider (the one you are making changes with) is now "flat with a knob" and it remains like that until you select another slider. I found it really useful to have such visual feedback of slider movement, especially with a touch-screen.

FlatSliders=1 ... All sliders are "flat with a knob".

FlatSliders=2 ... Only sliders which can be controlled externally (through ECI on BCR2000) are "flat with a knob". On Diodow it is the same as mode 1 because Diodow doesn't support ECI. The same with Tranzistow if ExternalControl=0.

FlatSliders=3 ... All sliders are "flat without a knob". This is, more or less, the old FlatSliders=1 mode.

FlatSliders=4 ... All sliders are "knob only" with new-style rectangular knob.

FlatSliders=5 ... All sliders are "knob only" with old-style rounded knob. This is, more or less, the old FlatSliders=0 mode.

For all "flat" modes except 3 there is now a new SlideColor setting (default $20d080), in addition to the existing SliderColor (default $ff4040) which is now used for the knob only. For mode 3 only SliderColor is used, the same as before.

(*) The color of all frames around page buttons, sliders and combo boxes has been darkened a bit. The previous default FrameColor setting was $909090, now it is $505050. This is more pleasing to my eyes.

(*) Vertical slider mode (when you go outside the slider and use the whole screen height for movement) is now visible and looks like "slider with a knob", just vertical. The value of the parameter is shown in a small window alongside the cursor position / touch point. This is Windows-only, not possible on Linux.

In many ways, the behaviour of my user interface in combination with touch-screen is now quite similar to the GUI on Waldorf Iridium/Quantum hardware synthesizers.

(*) All Tranzistow/Diodow DLLs and executables will be built with Lazarus/FPC development environment from now on, just as private/internal versions have always been. Due to this, there may be some small cosmetical differences compared to the previous ones. Also, no more separate "LockRefresh" version. You'll have to backup legacy versions built with Delphi by yourself, if you need them.
The latest Tranzistow version contains mostly engine fixes and improvements which have been planned for quite some time:

(*) Sine/Wave and *Sine/Wave module for Main oscillators has been fixed so it now plays full waves. Before this fix, only fundamental harmonic from the particular wave has been produced, no matter what waveform and position/index has been selected. Now it is even possible to do a full wavetable sweep but without crossfade and interpolation possibility from more powerful modules, of course. If you want the old behaviour then you must set Overtone to 1 in order to force fundamental harmonic only.

(*) Spectrum single-cycle waves in Aux oscillators and QFM operators have been reworked to be fully bandlimited now. So, no aliasing and unwanted harmonics anymore except if you really want it by forcing complex spectrums with high Morph values on Aux oscillators or FM index on operators. Or use Sine/Wave module from Main oscillators and set both Undertone and Overtone to maximum.

(*) Skew parameter for Main/Aux oscillators has been introduced. Think about it as a form of bending an waveform around PW point (so it doesn't work with -PW modules which don't have pulse-width modulation). Great for adding some harmonics "on the top", with still being fully bandlimited and with almost no additional CPU usage.

(*) Derater module to lower the sample rate of mixer output, before balancer, driver and filters. It is part of the Resolutor module which was also never documented.

So, on one hand we now have even better antialiased modules for single-cycle waves and on the other hand some new options to actually degrade the audio quality by lowering sample rate and resolution. This is actually my Tranzistow philosophy from the day one = to (try to) achieve the finest and highest quality possible but also with tons of possibilities to get more grittier and low-fidelity "industrial" sounds.

(*) With all those features and modules working in a patch it is quite possible that output levels of all voices playing together could go beyond the available range when mixed/summed. That's why I developed an limiter at the end of the signal chain, after all voices, effects and everything, to keep things under control if/when needed. It has just two parameters (Threshold and Ratio) for each low/high stereo path. By default the limiter is off (Threshold=1, Ratio=0) and is not using any CPU.

(*) And last but not least - a Touchpad ... Right-click on Browser button. It basically acts like an X-Y MIDI controller which can be used as modulation source everywhere, but with pixel resolution. Both X and Y values are saved with a patch. Right-click on touchpad gives some additional options.

(*) ... and probably some other enhancements which I forgot, as usual.
I am testing a new feature which I just developed. It enables limiting of arpeggiator, chord memory and step sequencer to a specified NoteLow/NoteHigh range so you can, for example, play notes inside this range using the arpeggiator or step sequencer and the rest without, all inside a single part/patch. Or you can play individual bass notes below certain point and single-key chords above. You don't need to use two parts for this anymore.

It is now available in all versions.
The new Tranzistow version contains a few significant improvements related to patch wavetables, namely - the ability to load a sample (WAV file) directly into a wavetable, without the need to create separate user wavetables for this. As there are 4 wavetables per patch it means that a different sample can be loaded into each wavetable. The WAV file can contain a properly arranged wavetable with N waves of fixed cycle length (in which case you only need to know the exact number of waves when loading, and the engine will do the rest) but this is not mandatory and you can load just everything. Endless possibilities for experimentation. This feature doesn't render user wavetables deprecated because those are still a great way to create your own libraries of frequently used wavetables. But you don't need to create an user wavetable if you just want to use it in one particular patch anymore.

If you set "Count" to zero then the number of waves in a wavetable will be calculated automatically based on "Size" value (samples per cycle) e.g. the total number of samples will be divided by "Size" to get the wave count. If you set "Count" to number greater than 128 or less than zero then the number of waves in a wavetable will be calculated automatically based on this (absolute) value.

Contours were enhanced, too, as it is now possible to load a WAV file over one or more sequential contours. Normalization can also work that way now. There are two methods of contours/wavetable loading: import and synthetize. Those mostly produce identical or very similar results but there could be some cases where synthetize has a little advantage over import, like producing a more "mellow" wave, so I decided to left them both.

Bandlimiting in both contours and patch/user wavetables has been enhanced with the possibility to have more than one harmonic in individual windows. Before that, it was 1 window = 1 harmonic and the engine was adding and subtracting individual harmonics on pitch changes. This was left as a default, of course, as it produces the highest quality sound, but now you can also have two or more harmonic per window and the engine will add/subtract all of them accordingly. For user wavetables it also means that they consume less memory if there are more harmonics per window. My Wavetabler program for creating user wavetables has been updated to support this as well.

I also added the possibility to import patch wavetables from Sample oscillators, including samples processed with GrainStatic engine as well. This was done a few days later so if you don't hear your imported sample file after downloading the latest version just go to the appropriate wavetable and switch "Source" to "File". Those imported wavetables can also be added to the regular patch wavetables, so both can be used at the same time.
Tranzistow and Diodow 32/64-bit Linux VST plugin experiments will NOT be removed in the next update!

A few words about the background: Full GUI Linux VST versions of Tranzistow and Diodow aren't possible due to some technical problems caused by the development environment I am using (Free Pascal and Lazarus). Something about the GTK2 interface inside those libaries is causing VST builds to crash when loaded into a 3rd-party hosts, and I couldn't found the cause. They are loading just fine into my Hrastow simple VST host, though.

A few years back, I was trying to find alternate solution to overcome this issue (because changing my development environment and rewritting everything for something else isn't an option). As a result, I developed an "RunVST" engine which was stripped of any widget toolkit (like GTK2). Then I used RunVST to build GUI-less Tranzistow/Diodow VST plugin which could be loaded into a host without crashing. After loading, the plugin executes the standalone Tranzistow/Diodow and uses interprocess communication to send the data between them. And it worked. I tested it with Hrastow and Ardour 4.The project could be saved, reopened and played without problems.

Recently I received some reports that this doesn't work with Bitwig and Reaper but I managed to fix it and those are confirmed to work OK with the latest builds.
Project "Technatmos" = "Technology, Nature and Atmosphere" ... Techno-Logical electronic music by HrastProgrammer - Technatmon, created in Hrastwood using Tranzqomputwerq (aka Tranzistow) synthesizer and KalquLab sequencer.
I created two new tracks for my "Tranzqomputwerk" album:

"Stargate, The Last Voyage"
"Timelapse, The Last Minutes"
The private/internal Tranzistow X2 version now has the ability to load different engines per-core, in realtime. Currently, only Diodow AVX2 engine (from DiodowX2 which has never been released) is implemented meaning that you can use one or more cores for Diodow-only parts which use less CPU than corresponding Tranzistow parts. Of course, Tranzistow can import Diodow patches for ages but they are still played by Tranzistow engine which uses more CPU due to enormous complexity. Now such patches can be played by less CPU demanding Diodow engine directly, so there should be no surprise to hear up to 96 Diodow voices from a single core (1 main part + up to 5 sub parts). And even if this is a pure Diodow engine, it still benefits from many Tranzistow features like full 32-slot modulation matrix, more LFO shapes and envelope curves, arpeggiator, step sequencer, chord memory, unisono voices, up to 32 voices of polyphony per main part when borrowing voices from a sub part, note-on modulation matrix, etc. Almost all multimode/multitimbral features are supported, including EQ and sidechaining from Tranzistow parts, but Diodow parts cannot be used as sidechain sources. Furthermore, there is a special Tranzistow+Diodow combined engine with Tranzistow main part and up to 5 Diodow sub parts which can also be processed through that Tranzistow part, for example - if you want to process a Diodow patch through the beautiful Tranzistow reverb etc.

This ability will also be used if I decide to develop some new X2 engines in the future, but without the danger of compromising Tranzistow functionality because I don't have to squeeze everything into Tranzistow engine anymore, which can possibly lead to bugs and instabilities.

Note: Although you can switch the engines in realtime, it is not recommended to switch them while holding the note down because different engines can have different note-on initialization. Also, with Multithreading=1 mode the engine switching is not supported for core/thread #1, meaning that part #1 and all related sub parts are always tied to Tranzistow engine in this mode.
My "Tranzqomputwerk" mega-album has been released:



Techno-Logical electronic music on this album has been created on my Tranzistow synthesizer only, with the aid of my KalquLab sequencer, in the same way as I would have created it in the 90s if I had my synthesizer and sequencer available at that time, together with the computer which could run them and all the knowledge I gathered through the years. So, this album is also a demonstration of Tranzistow (aka Tranzqomputwerk), it's power, capabilities and quality of sound.

This is the culmination of my work and the final stage of my EM/DSP explorations. I started all this many years ago as a programming & software development project dealing with assembler programming, calculators & emulators programming, Pascal, Delphi, BASIC & FORTH development, etc. And now I am able to create complete tracks and albums on Tranzistow, from sound synthesis to effects, with everything playing in realtime and all channels controlled over MIDI from my KalquLab sequencer.

All sounds used in my music are synthesized by myself on Tranzistow only, including drums and percussions, and there are no samples used, with the exception of a few field recordings I made during the years (lightning, rain, birds, water, forest, etc., played/processed through Tranzistow engine, of course). I cannot describe how happy I am because now I can do everything I ever dreamt of. I don't need no hardware or any other synthesizer anymore.

I don't follow any particular genre, style or direction, I just develop software and create electronic music I love and enjoy. It is all 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, emotions, 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.
Now that I've done and developed almost everything I ever wanted or needed, I can also experiment with a few things I have in my "prototyping" list. The first one is a Vocoder and it actually made it into Tranzistow, both in private and public versions. This vocoder is per-voice, not per-part/patch, with 8/16/24/32 bands and can be morphed between two sets of bands in realtime. It really opens a lot of possibilities for sound design and realtime voice processing. The settings are on alternate hidden Note/Mod page. I really like how does it sound and I really don't care how does it compare to other vocoders out there.

That's about good things. Now about bad things ... After a lot of thinking I decided to leave full Tranzistow multitimbral/multithreading functionality in Hrastow only, and limit it in everything else. So, if you are running Tranzistow under any other host or DAW then it will automatically revert to 1 instance = 1 thread = 1 core = 1 part = 1 patch = 16 voices mode. If you need more channels/parts then load more instances, just like with any other plugin. I wasn't overly happy with this, though, but I decided to do it because, due the multithreading nature of my synthesizer, it needs queues to synchronize all threads/cores. And when you have queues then you also have some latency between Tranzistow threads and the host thread. For example, with Queue=32 samples on 48kHz samplerate (or Queue=64 samples on 96kHz samplerate) the latency is 0.667 milliseconds and even if all threads/cores are perfectly synchronized internally (like in my ultimate X2 version) there is still 0.667 milliseconds latency in relation to a host thread. For me this is nothing and I was never concerned even about a few milliseconds difference, like between various hardware synthesizers when I used them over MIDI in the distant past, but for some users this is an issue when using Tranzistow with other plugins. And now this won't be an issue anymore.

Again, using and running Tranzistow under Hrastow remains unchanged, this affects DAWs and other hosts only.

Also note that I almost never post on forums anymore. Not that I posted much before anyway. So, this page is, more or less, the only source of Tranzistow info and news.
January 02, 2023:

This New Year Tranzistow update is quite a big one again. I decided to open up the internal wave additive engine and provide four additive generators per voice. Although the engine can handle up to 1023 harmonics, I limited those generators to 127 harmonics for easier handling. Both parameter editor (on hidden wavetable page) and graphical editor are provided as well as resynthesis capabilities and the ability to load various waveforms.

On the UI side, I implemented 3 different draw options (Lines, Steps and Bars) for graphical editors like contours and generators. All editor options like grid, drawing, etc. are now saved with the editor, not with the single contour or envelope, like it was before, because this really didn't have much sense.

I also added phaser and chorus LFOs to the list of modulation sources so you now have additional 12 per-patch LFOs if you need them.

Chosen ones who have access to private/internal versions already enjoyed all the above for quite some time.

Furthermore, I went through all "over 4000" presets, one by one, and categorized all of them properly because I wasn't really happy with how this has been done by an user who offered to do it almost two years ago. For example, although I named most bass patches with "Bass" in the name, around 80% of basses haven't been categorized as "Bass" for some unknown reason. The same with tons of other patches. The other day I searched for a pad for one track I was working on, and I had a specific group of QFM patches in mind, but when I filtered them by "Pad" category they simply weren't there because - they were all categorized as "Bells". I know that categories could be quite a subjective thing but I already put "Bass", "Strings", "Pad" and similar in many patch names, so they just should have been categorized as "Bass", "Strings", "Pad", simple as that. Other users also complained that categories for many patches are way off. Unfortunately, I didn't have time to do this myself until the last week when I took two working days to review all patches and fix all categories.
I created a separate page for various negative bits & bytes which I don't want to see on main pages:

HRANT

It is pretty self-explanatory and quite clear what you'll find on that page.
December 08, 2022:

My synthesizer, currently and formerly known as Tranzistow, has been transformed into Tranzqomputwerk (TW).

My synthesizer, currently and formerly known as Diodow, has been transformed into Digitronwerk (DW).

The old names will be retained in public for the time being, to avoid confusion.
This is the list of new features in the latest Tranzistow release. Those were ported from private/internal versions where the chosen ones enjoyed them for quite some time.

(*) [HyperWave] modes for main oscillators ... Interpolation between individual waves now in HyperEngine as well.

(*) SY77/TG77 operator waveforms for QFM operators and all other sound/modulations sources where waves can be selected, including TG wavetable for main oscillators. Those waves also cover TX81Z operator waveforms.

(*) Step sequencer (alternate hidden Note/Mod page) ... Per-note, up to 8 of them running per patch/part (16 in extended range), up to 32 steps, up to 8 notes per step (relative to the playing note) with clock, velocity, gate and 4 control values which can be used as sources in modulation matrices.

(*) Chord memory (alternate hidden Note/Mod page) ... Up to 8 notes relative to the playing note.

(*) Some internal arpeggiator enhancements ... Sample-accurate arpeggiator and step sequencer - only on main thread/core with Multithreading=1 mode (sample-accurate arp/seq on all threads/cores still reserved for private/internal X2 version only). The note flow is now StepSeq => ChordMem => Arp, so arpeggiator can be driven by a step sequencer and/or chord memory.

(*) Microtuning ... All 136 note pitches can be reconfigured, tuning editor (in system menu, right-click on Control at Patch/FX page), octave recalculation and loading/saving in my own simple format (note=pitch, note=pitch, ...), so it shouldn't be too hard for someone to write a script to convert Scala files or something.

(*) BaseNote and BasePitch in Tranzistow.ini, so you can finally use that magic 432Hz master tuning.

(*) AuxEnv module can be switched to "Release-Continue" mode where aux envelopes won't jump to release stage on note-off, so they can be used as long loopable continuous envelopes which aren't interrupted by note-off. Due to parallel processing code, it's all aux envelopes or none, not per-envelope selectable.

(*) Response curves for Modulation Wheel (MW), Channel Aftertouch (CAT), Polyphonic Aftertouch (PAT) and Velocity ... On alternate hidden Spec/Mod page.

(*) Slider and combo hoovering will also work if you move the mouse over parameter name and value.

(*) Some parameter names changes to resolve a slight confusion before mixer.

(*) Custom names for user waves like:

01=Silky phaser
02=Sine interval
03=Tri Hollow
...

(*) Custom editor page where user can arrange his own mini-synth controls. This is quite an hardcore feature because there is no visual editor for this, just a script which is loaded at startup.

(*) Dynamic memory reallocation has been removed from 64-bit version so it now works in the same way as my private/internal versions. Look at "Memory (64-bit version only)" section in the manual.

(*) Some bug fixing and various VST hosts compatibility improvements.

Both Windows and Linux versions were updated.
During the last few months I developed Tranzistow x48*8/64 engine which can use 8 cores to the full potential because I bought an Intel i7-11700K CPU and wanted to utilize all that power now available. This new setup has all 8 cores up to 5.0GHz and is built around MOTU 896mk3 Hybrid USB2/Firewire audio interface which runs at 48kHz with 256 samples buffer. Hrastow runs with 2x oversampling at 96kHz and the buffer has been divided internally into 64 sample frames, so everything runs super tight under 0.667 ms. Multithreading mode 2 has been employed and Tranzistow is running with additional internal 2x oversampling on all patches, so the engine runs at 192kHz. With all this and many AVX2 optimizations I made, I am now able to achieve the maximum polyphony of 248 firm voices in total using my ultra-complex test patch for benchmarking. As a comparison, on my older Intel i7-4790K I was able to achieve 86 voices with the same sample/oversample rates, but under 4ms only. Furthermore, I also integrated my KalquLab sequencer into Hrastow, so I finally can do everything on just one machine without any latency and with per-core sample-accurate MIDI in the latest Tranzistow engine. Simply amazing! This is now my setup for the years to come :-)
I made some Tranzistow bugfixes and, among the other things, I corrected Detune in QFM engine because it was fundamentally flawed from the beginning. So, check your QFM patches and correct them if needed. I checked all presets which are using QFM engine, as well as all QFM patches used in my music, and no corrections were needed. In some rare cases where I detected a small difference it was in favor of the new algorithm. But, in case you really need the old (wrong) behavior then add the following entry to Tranzistow.ini:

[Engine]
...
LegacyQFM=1
During the last few weeks I was working on Tranzistow Digitizer module which can be used to create all sorts of robotic and vocoder-like sounds from samples and external input. It can be used with other sound generators/sources as well, although there isn't much sense to use it on pure sine/saw and similar waveforms. Digitizer is located between mixer and filters but uses AuxOsc resources because, technically, it behaves like an oscillator and all pitch/frequency parameters are utilized, even sync and FM (which always works in TrueFM mode in this case). Morph parameter will morph between more gentle vocoder-like effect on the left (-1) and more hard robotic-like effect on the right (1). By default, only Digitizer on the first audio path is active for lower CPU usage. Buttons for switching are on Osc/Aux hidden page. This module will be part of internal/private versions only because it is quite crude and sounds different with oversampling and when changing sample rates, so it is not suitable for general public.
Some Tranzistow preset demos on linuxsynths.com:

Tranzistow on linuxsynths.com
I just developed Tranzistow Embedded Synthesizer Interface which will enable developers of 3rd-party plugins to create alternate GUI for Tranzistow. It can also be used as embedded sound engine for 3rd-party applications (synthesizers, games and similar). From build 16.08.2021/1 on, the download package contains two additional DLLs with embedded GUI-less Tranzistow version which can be loaded by a 3rd-party plugin and contains all functionality to control Tranzistow from other programs. All necessary info can be found in "Developers Area" towards the end of this document:

Short Description of Tranzistow Synthesizer [PDF file]

All this applies to Diodow, too, because it contains embedded DLLs as well.

Anyone is free to get this interface and develop a GUI plugin for Tranzistow/Diodow or to use it as embedded sound engine, be it open source or closed source, providing that you don't sell your plugin or application commercially. In case of open source you have to choose the license which allows loading of closed source software components/libaries. Again: It is not allowed to use this interface for commercial projects!
I named the remaining 141 of Tranzistow "patches with no name".
New Tranzistow videos by Grant Atkinson:

Part 1 (Oscillators)
Part 2 (Signal Flow & Mixing)
Part 3 (Filters)
Part 4 (Modulation, Matrixes & Mappings)
Part 5 (FX, Voicing & Multitimbrality)
Sound creation with Tranzistow
Pad/Soundscape design with Tranzistow

And some patch demos:

Tranzistow Patch Demos

Thanks Grant!
F-Operator Phase #1:

The latest version of Tranzistow now features a new F-Operator OPX/OPY modules for (but not limited to) kinda-formant sound generation. Each F-Operator has Strength, Width and Skirt sound shaping parameters as well as two modes of operation: Serial (F-Operator is connected in series with FM inputs) and Parallel (F-Operator works in parallel with FM inputs). The following new modes are available for QFM engine:

4-FOP [FOPX]
8-FOP [FOPX+OPY]
8-FOP [OPX+FOPY]
8-FOP [FOPX+FOPY]
4x4-FOP [FOPX]
8x8-FOP [FOPX+OPY]
8x8-FOP [OPX+FOPY]
8x8-FOP [FOPX+FOPY]

Example patches: Angel Falls, Bells of Deformation, Cosmophormic, Cosmormant, Parallel Worlds, Tibetan Bells

F-Operator Phase #2:

Fixed formant modes (Fixed Serial T1/T2/T3/T4/T5/T6/T7/T8 and Fixed Parallel T1/T2/T3/T4/T5/T6/T7/T8) are now implemented for each F-Operator. You can set center frequency (FCenter parameter) and the resulting formant generated by the operator won't move as you play the notes (except if you modulate the center frequency). Furthermore, FBandwidth parameter has been provided to adjust the number of harmonics around the formant frequency. Both parameters are active in fixed formant modes only. If you set FCenter to zero then a fixed formant will be turned off for the particular operator despite currently active mode.

This is the result of my research into formant generation that I conducted recently. I don't claim that it works in the same way or sound the same as on Yamaha FS1R synthesizer, though ;-)

Just a few quickly-made generic patches because I didn't have much time to delve into patch creation for this whole new world-of-formants yet:

Formant_A, Formant_E, Formant_I, Formant_O, Formant_U, Formant_AE

On the GUI related side, directories were added to patch browser, controlled by a new option in Tranzistow.ini:

[Editor]
BrowseDirs=0 | 1 | 2; Default: 1

0 = No directories in browser
1 = Directories at the beginning (before patches)
2 = Directories at the end (after patches)

Also, filtering patches by category has been implemented (finally). Right-click on the patch selector or inside patch browser to set the category.

Both Windows and Linux versions were updated.
I developed quite a few GUI-related Tranzistow improvements during the last few weeks:

(*) Completely new Edit/Mod matrix (on "MIDI/Mod" shifted page) where you can control all editor parameters directly with MIDI controllers, NRPNs and AutoMod parameters. As the name implies, this matrix is connected to the editor meaning that only currently selected part can be controlled because there is only one editor for all parts, of course. By default, processing/update rate is 10ms but this can be changed in Tranzistow.ini ([Editor] section, ModMatrix=<ms> option).

(*) I returned VST host automation back in Tranzistow. Yes, I will repeat it - I returned automation back! This is a byproduct of Edit/Mod matrix because I developed a completely new module for updating editor parameters. By default, automation is off and can be turned on in Tranzistow.ini ([Editor] section, Automation=1 option). Automation uses Edit/Mod matrix module so the update rate is the same, except for AutoMod parameters which are updated at control rate. And, of course, all other modulation matrices which are part of the synthesis engine.

(*) Configurable vertical grid in contours and envelope graphical editors. The grids are per-contour and per-envelope, saved with a patch. Contour grids are in samples and envelope grids are in time divisions (for example, with duration set to 10s and grid set to "/20" the envelope will be divided into 0.5s segments). If you want a predefined grid for all contours/envelopes you can copy IniTranzistow patch next to your Tranzistow DLLs and edit the default grids as you see fit. BTW, this IniTranzistow is a hidden feature where you can set initialization values for almost all patch parameters. Those values will then be used as defaults when initializing, loading and saving patches meaning that a particular parameter won't be saved into a patch file if it has the default value. Be very careful with this because if you, for example, set FilterCutoff to 1000 it will be the default cutoff for a particular filter. If you save a patch with this value and somebody else loads it into Tranzistow he will have a value of 0 because this is the default value on his system and the patch will sound completely different.

(*) Envelope curves can now be changed directly from graphical editor (right-click with the mouse on a particular envelope segment).

(*) New TrueMono declicker mode where all note-on initialization is completely bypassed when retriggering an existing voice, including envelopes, LFOs, etc., except things related to oscillators frequency and cutoff of the filters, lag processor and note-on modulation matrix.

(*) New modulation sources: VoiceNum (0 for the first voice and proportionally up to 1 for the last voice according to the current polyphony, great for individual voice panning etc.), VoiceCount (the number of currently active voices), VoiceCounter (reciprocal of VoiceCount, decreases with more voices playing simultaneously), VoiceRetrigger (active for retriggered notes only) and VoiceDeclick (active on notes where declicker kicked in, either when retriggering a new note while holding another one or when releasing a retriggered note and going back to the previous one which is still held down).

(*) External Control Interface (ECI) has been reworked to the new system as well, so it is much smoother now. Behringer BCR2000 system exclusive file for ECI is here. You can use my Syxer program to send it to the BCR2000 device.

(*) There are now 3 levels of comb buffer note-on initialization: (1) clear the buffer - all values set to zero, (2) initialize with white noise and (3) not initialize at all (the content from the previous note is preserved).

(*) Some clicks caused by the amplifier filter on retriggered notes are eliminated.

(*) A bunch of small improvements and bugfixes in graphical and multimode editors (mainly related to scrolling and X2 version).

(*) Reloading time in VST hosts (when you close Tranzistow GUI and reopen it) should be greatly reduced.

(*) Singlethreading has been removed and is not available anymore. Tranzistow now always operates in multithreading mode.

Both Windows and Linux versions were updated.

Important note: Please, don't ask for any GUI changes or new features. Neither will I change anything anymore, neither will I add anything anymore. GUI is now fixed as the rest of the synth as well and only bugfixes will be provided in the future (except if I decide to change something for some reason, or if I need a particular feature). If you cannot create patches with what you have now then, man, you have some serious problems!
Someone is having a great time with Tranzistow :-)

https://www.youtube.com/watch?v=Dyp2qW-Z6Uk
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.
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, http://johnbowen.com/)

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

"Tranzistow ... This seems like a well-kept secret."

"Tranzistow is def the most amazing VSTi ever."

"If you want to hear a synth with superlative sound quality go download Tranzistow."

"Tranzistow already was one of the most powerful synths out there, now we can safely say it also crushes any FM synth out there."

"And what I can surely tell you is MAN this instrument is a Pad and Atmosphere MACHINE!! Lots of real simple Monosynth sounds too, but if you're looking to make a film or ambient background track then look no further than Tranzistow!"

"Your generosity with your time and talent is very much appreciated. Many thanks again, I may have a go at building a couple of classic synths with this because the sound is BEYOND competitive compared to the current commercially available emulations. Masterpiece!"

"Tranzistow is The Beast. Once again, Hrast, you're a Master."

"I've just installed this and it sounds fantastic, full of character."

"It's an incredible sounding synth. Just flicking through a few of the thousands of presets and you can tell this one is very special."

"This thing is coded with deep love and affection and it's hard to not get swept along on the journey. His music is also very special."

"How deep is the modulation? Extremely f**king deep."

"The downright masochistic GUI is the main thing that's keeping me from using this synth."

"But yes, Tranzistow is certainly one of the very best software synths out there."

"The UI was designed by Satan."

"Once you get to know him, Satan is really a nice guy, and get things done really quickly."

"I really don't understand what you guys don't understand about Tranzistow, you read it from left to right, enable the modules you want etc. There are indeed some tricky trivial parts, but nothing too complicated. It's all about persistance, you either want or don't want to control the beast."

"It sounds exceptional, you can just play the presets to get an idea of it. Most importantly, it has character and Mojo."

"Gosh I love this synthesizer. One of the best-sounding and most capable I've ever used."

"Tranzistow is a fantastic synthesizer! A pure diamond."

"I agree with all the good things said about Tranzistow, it might be the best sounding VST synth existing."

"I see lots of complaints about the UI, and I quite agree with all of that, but at the same time, I'm thinking, imagine if the UI/workflow was on par with the sound, what would there be left for other synths? I think maybe it's better this way, better for the ecosystem :)"

"Yeah, reverb is super dense and smooth. Definitely at the same level as Valhalla verbs."

"I fell in love with this synth. Most of the time I don't really have a clue what I am doing, but the outcome is incredible."

"And in fifth position, the real cherry on top of the cake! This is a love at first glance! This is a sound design geek's dream! The pinnacle of programming! It is just a monster in terms of capabilities! Synthesizer Tranzistow! What can this synthesizer do? It covers almost all kinds of synthesis and it has excellent analog sound thanks to its wonderful filters. In addition, it comes with just a huge number of presets that are impossible to listen in one day! But there is one drawback. It has a very, very unfriendly interface. The fact is that initially Hrast wrote it exclusively for himself, so it was easy for him to work with it, knowing where everything located. But for me, it was immediately very difficult to navigate."

"Biggest thanks of all to HrastProgrammer. Incredible software. Incredible music. Incredible human being."

"Thank you Hrast. What an amazing synthesizer you have created!"

"And even if it's terse and somewhat obscurantist interface is not to your liking, just flick through the many bread and butter and killer cinematic soundtrack patches (for it has both) and soon something will click with your track. There are thousands of them."

"There isn't a synth or preset collection that can even come close at this price. But it's rude to talk about money. This is art. Even if it is underpinned by the most strict principles of Science."

"Tranzistow for example has the most usable synth presets I have ever heard having been programmed by an actual musician."

"It is a thing of beauty and joy that has been created. It inspires devotion."

"This might be the best sounding synth ever made. Knocked up by a real musician and Hacker of code."

"This beautiful monster of a synth."

"Words can not describe the power and quality if this piece of genius software."

"One of the best and deepest softsynth ever created, it can do it all with flying colours. It's probably the only synth you will ever need."

"There's a certain wonder in Tranzistow. You don't need to dig deep to find it. Just download it!"

"Hrast is a class act. His music, if you haven't already checked it out, is also first rate!"

"Is it that Tranzistow actually sounds better than other softsynths or is it just me? Maybe it's your patch programming but it seems to me that there's more depth to the sound and I find it more engaging than most softsynths, maybe it's confirmation bias but is there something special about the way it produces sound? I'm a bit scared you'll burst my bubble!"

"That's brilliant, I think I'm right, it sounds lovely, Serum is horrible in comparison. I have no idea what you did but I'm a fan!"

"You sir are a gemstone!"

"Wow... a little over a minute into that HrastProgrammer track..... ****ing epic... and becoming more so with each second!"
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 are 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 because they are updated at control rate, 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 ;-)
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 ...
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:

https://www.kvraudio.com/forum/viewtopic.php?f=1&t=499321

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

https://soundcloud.com/kvrosc/sets/one-synth-challenge-108-diodow

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:

http://www.kvraudio.com/forum/viewtopic.php?f=1&t=498656

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."
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 generally 40-60% 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 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!
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 over 4000 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. Yeah, right :-) 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:

[Engine]
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:



https://www.hrastprogrammer.com/hrastwood/streichfett.htm
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).
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.
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 (edtaudio.com) made a free Diodow soundbank.

It can be downloaded here:

https://www.hrastprogrammer.com/hrastwood/download/DiodowEDT.zip

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!
Diodow announcement with a short review + video on Bedroom Producers Blog:

http://bedroomproducersblog.com/2014/03/07/diodow-hrastwerk/
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:

http://synth-caresses.blogspot.com.es/search/label/HrastProgrammer

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:

[Editor]
Randomizer=1
...

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:

[Editor]
ExternalControl=1
...

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:

[Editor]
Shortcuts=1
...

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.
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-2700K Sandy Bridge @ 4.0GHz workstation, probably because it doesn't have tons of connected devices. The machine is extremely quiet, although a few dB louder than 2700K 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:

<BeginOfFile>

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.

<EndOfFile>
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 4.0GHz i7 2700K 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 http://www.sequenzerwelten.de/hrast_main.html"
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 © 1992-2024 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!