HrastProgrammer Hrastwood Bandcamp Bits & Bytes New! Tranzistow Hot! Diodow Emulators
Note: This is a page with various random/everyday bits & pieces which cannot be classified under other sections, so I can talk about everything what came to my mind during a day (or night), while working on other things. Some kind of Blog, more or less, sorted in chronological order, but without exact date and time ...
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 fixed to 4.5GHz 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 254 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.
My "Tranzistow 2020-2021" album is finished:



The circle is now complete. This is the final stage of my EM/DSP work because I am now able to create complete tracks on my Tranzistow synthesizer alone, from sound synthesis to effects, with everything playing in realtime and all channels controlled over MIDI from my KalquLab sequencer. Except a few field recordings I made during the years (lightning, rain, birds, water, forest, etc., played/processed thru Tranzistow engine, of course), all sounds are synthesized by myself on Tranzistow only, including drums and percussions, and there are no samples used. 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.
Some Tranzistow preset demos on linuxsynths.com:

Tranzistow on linuxsynths.com
Tranzistow and Diodow 32/64-bit Linux VST plugins now available!

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.

So, 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. The only hassle is that a standalone synthesizer opens in a separate window because it is a separate process running in it's own address space, which I think is a small price to pay and have the ability to load plugins into a VST host directly. But I never received any feedback on this from anyone and I decided to remove those plugins from the package, although the actual functionality wasn't never removed from the standalone engine. I don't use VST hosts anyway, so this wasn't of any importance to me.

But recently I rebuilt those RunVST-based plugins again and tested them with the latest Tranzistow/Diodow versions. And they still worked as expected. I also had some Linux users tested them and reported positive results, so I decided to return those VST plugins back into the package.
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. Windows-only for the time being, Linux versions are in the works.

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. I am still asking for the donation if you use Tranzistow, doesn't matter if you use GUI or GUI-less versions. GUI plugin developer can ask for a donation as well. In case of commercial projects the usage of this interface is not free and I am asking for my share. Contact me to negotiate the deal before starting anything! Again: No commercial use in any way without compensation and my written permission!
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 #1: 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!

Important note #2: I would like to repeat here that Tranzistow is a "mandatory donationware" meaning that you must donate 50 EUR or more if you want to use it. Of course, you can try it for a few days or a couple of weeks, but if you want to continue using it after that, you must donate. Otherwise delete Tranzistow and don't use it. Thanks.
Someone is having a great time with Tranzistow :-)

https://www.youtube.com/watch?v=Dyp2qW-Z6Uk
I always find it insulting when someone refers programmers as "coders" because coding is to programming like typewriting is to book writing.
Latest Tranzistow update:

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

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

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

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

Tranzistow info and download here ...

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

[Hrastow]
ID=315714233
User=HrastProgrammer / Tranzistow - Donated

To those who didn't donate but are using this ID and think they're very smart ... do us both a favor - don't bother with Tranzistow because you undoubtedly don't appreciate my work! Just delete it and walk away!

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

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

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

"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 ;-)
Really great Tranzistow tutorial by Tim Hill:

Using Tranzistow with Reaper - Notes & Tutorials [PDF file]
Tranzistow now supports 128 MIDI NRPN controllers (0..127) with 14-bit resolution for very fine MIDI sequencer control of all parameters available in modulation matrices.
LOL, a dozen of ball-chasing morons "won" some stupid game against another dozen of ball-chasing morons, and tons of other morons are celebrating this "event"! And the remaining morons are crying because they "lost" that stupid game. Nothing but morons around ...
Two tracks containing some experiments with Tranzistow GrainStatic granular module I developed recently. The first track is just one granular oscillator (from the four available per voice) while the second one utilizes two granular oscillators panned left and right. I used just one field recording sample in both tracks, with a touch of Tranzistow reverb and nothing else.

http://electro-music.com/forum/phpbb-files/hrastprogrammer_grainstatic1_116.mp3
http://electro-music.com/forum/phpbb-files/hrastprogrammer_grainstatic2_193.mp3

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

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

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

The challenge resulted in lots of great "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."
A nice Tranzistow patch bank by Yan Goedike is now available for downloaded:

Tranzistow Patches by Yan Goedike [ZIP file]

Youtube Demo
I am very happy to announce that a development of 64-bit Tranzistow AVX2 version has been finished, including the one with Additive+FM/GPU engine :-) This was the biggest architectural change (and challenge) since the start of Tranzistow development and almost every single line inside the engine has been touched. But it was worth the trouble because AVX2 versions are 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 great bank of Tranzistow patches and some other goodies like user waves, contours and samples. It is free to use and can be downloaded here:

Tranzistow Patches by Nicolas Jaussaud (aka Yuli Yolo) [ZIP file]
Breaking News!!!

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

Starting with build 16.08.2016/1, both Tranzistow and Diodow are available on Linux in the form of 32-bit and 64-bit standalone audio applications.

You can download Linux demo versions here:

Tranzistow v4.8.0 Linux Demo Download [ZIP file with both 32/64-bit versions]
(see Linux section at the end of the above PDF document for more info about Linux version)

More info about Linux version on the Tranzistow page:

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

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

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

More info about Linux version on the Diodow page:

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

Tranzistow v4.8.0 Windows VST 2.x Demo Download [ZIP file with both 32/64-bit Windows versions]

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

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

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

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

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

The package comes with almost 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 :-) 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!
New Tranzistow demos ... Various wavetable madness while I am in the "wavecomputing" mood :-)

http://electro-music.com/forum/post-397373#397373
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.
A short recording demonstrating spectral filter over a saw wave generated by the additive engine:

http://electro-music.com/forum/post-392670#392670
Some of old Tranzistow demos made by myself, mostly various drones and sequences created while testing the engine:

http://electro-music.com/forum/post-397280#397280
http://electro-music.com/forum/post-390931#390931
http://electro-music.com/forum/post-386018#386018
http://electro-music.com/forum/post-392853#392853
Tranzistow v4/32 ... 32-bit, 4 parts with SSE3 engine and 4-way multithreading ... Finished.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Just my 2 cents ...

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

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

HrastProgrammer - HrastWerk

kurz vorgestellt auf 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 © 2021 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!