303 clone (free and open source) - feedback welcome
-
JackedPotato95 JackedPotato95 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=787872
- KVRer
- 11 posts since 3 Mar, 2026
Hi folks,
Here is a plugin I am working on, happy to hear your feedback and any bugs if you find any. Tested on Debian-based distro and arch with wayland and hyprland, also tested on Windows with and without WSL, and Apple Silicon. You might get security warnings bec. the code is not signed but feel free to use virustotal to scan, this is simply because I did not pay for a Microsoft nor Apple dev account at this point, so it is kind of inevitable. So basically it is Linux first but should run fine on other systems as well, and be quite light as well (written in rust).
Particularly interested in 303 snobs on where it might fall short (I think personally it is pretty close but lacks that kind of boxiness as if it is compressed together in a plastic container or something).
This is totally free to use, so enjoy it! (I do own Phoscyon 2 btw) but thought it would be more fun to try making my own instead of using Wine wrappers, yaybridge, and what try to hack it to work perfectly in Renoise.. so here we are.
https://github.com/Hornfisk/squelchbox
Here is a plugin I am working on, happy to hear your feedback and any bugs if you find any. Tested on Debian-based distro and arch with wayland and hyprland, also tested on Windows with and without WSL, and Apple Silicon. You might get security warnings bec. the code is not signed but feel free to use virustotal to scan, this is simply because I did not pay for a Microsoft nor Apple dev account at this point, so it is kind of inevitable. So basically it is Linux first but should run fine on other systems as well, and be quite light as well (written in rust).
Particularly interested in 303 snobs on where it might fall short (I think personally it is pretty close but lacks that kind of boxiness as if it is compressed together in a plastic container or something).
This is totally free to use, so enjoy it! (I do own Phoscyon 2 btw) but thought it would be more fun to try making my own instead of using Wine wrappers, yaybridge, and what try to hack it to work perfectly in Renoise.. so here we are.
https://github.com/Hornfisk/squelchbox
-
- KVRist
- 67 posts since 20 Mar, 2026
Nice plugin. Some initial thoughts...
- The UI is tiny on a 1440p monitor, couldn't find any setting to set the scale
- The filter starts self-oscillating with resonance above ~50%. I don't have a real 303 but my TT-303 definitely doesn't do that, sounds way too much to me but I could be wrong
Looking good so far though!
- The UI is tiny on a 1440p monitor, couldn't find any setting to set the scale
- The filter starts self-oscillating with resonance above ~50%. I don't have a real 303 but my TT-303 definitely doesn't do that, sounds way too much to me but I could be wrong
Looking good so far though!
- KVRAF
- 8505 posts since 12 Feb, 2006 from Helsinki, Finland
It sounds ok, though I'd like to point out a few things in terms of accuracy:
The 303 square is not really very much of a square. In fact, it's such an annoying waveform that it's totally horrible even try to approximate with BLEPs.
The 303 filter is not a 3 pole. It's a 4-pole LP where the first cap is half value (so nominally an octave higher) ... except compared to a transistor ladder, the diodes make it effectively unbuffered... and actually there's enough "DC blocking" in the loop that it's actually more of a bandpass really (though the lower cutoff doesn't sweep). The self-oscillation feedback gain is something like 18-20(? forgot what it was exactly) and a 303 doesn't allow that much... and then because the thing (due to higher feedback gains) loses even more volume than a transistor ladder as you increase resonance, the original circuit actually compensates for this a bit by feeding some of the resonance signal (post knob) to the VCA.
As far as the accent... whether or not an accent is active controls the voltage reaching D24, so C13 can only charge during an accent, but if the capacitor voltage (whatever remains) affects accented and unaccented notes equally... and there's the whole resonance pot rounding out the accent more at higher resonances thing... but I think (based on comments) that's a known omission?
The 303 square is not really very much of a square. In fact, it's such an annoying waveform that it's totally horrible even try to approximate with BLEPs.
The 303 filter is not a 3 pole. It's a 4-pole LP where the first cap is half value (so nominally an octave higher) ... except compared to a transistor ladder, the diodes make it effectively unbuffered... and actually there's enough "DC blocking" in the loop that it's actually more of a bandpass really (though the lower cutoff doesn't sweep). The self-oscillation feedback gain is something like 18-20(? forgot what it was exactly) and a 303 doesn't allow that much... and then because the thing (due to higher feedback gains) loses even more volume than a transistor ladder as you increase resonance, the original circuit actually compensates for this a bit by feeding some of the resonance signal (post knob) to the VCA.
As far as the accent... whether or not an accent is active controls the voltage reaching D24, so C13 can only charge during an accent, but if the capacitor voltage (whatever remains) affects accented and unaccented notes equally... and there's the whole resonance pot rounding out the accent more at higher resonances thing... but I think (based on comments) that's a known omission?
Last edited by mystran on Thu Apr 16, 2026 10:45 pm, edited 1 time in total.
- KVRAF
- 8505 posts since 12 Feb, 2006 from Helsinki, Finland
Anyway, welcome to the club of "I've tried to emulate a 303" which ... I guess tends to be bit of an initiation rite when it comes to writing synths.
I used to have a plugin called "Dolphin Bassline" .. old track from (apparently) 16 years ago..
https://soundcloud.com/mystran/gimme-some-fish
ps. Listening to that, I must say I was really bad at mixing tracks back then.
I used to have a plugin called "Dolphin Bassline" .. old track from (apparently) 16 years ago..
https://soundcloud.com/mystran/gimme-some-fish
ps. Listening to that, I must say I was really bad at mixing tracks back then.
-
JackedPotato95 JackedPotato95 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=787872
- KVRer
- Topic Starter
- 11 posts since 3 Mar, 2026
This is genuienly the valid and useful feedback I was looking for. Noted and much appreciated, thanks folks!
-
JackedPotato95 JackedPotato95 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=787872
- KVRer
- Topic Starter
- 11 posts since 3 Mar, 2026
Cheers!mystran wrote: Thu Apr 16, 2026 9:39 pm Anyway, welcome to the club of "I've tried to emulate a 303" which ... I guess tends to be bit of an initiation rite when it comes to writing synths.
I used to have a plugin called "Dolphin Bassline" .. old track from (apparently) 16 years ago..
https://soundcloud.com/mystran/gimme-some-fish
ps. Listening to that, I must say I was really bad at mixing tracks back then.![]()
This teebee sounds pretty convincing to my ear, very impressive. Yes the mix is a bit muddy..but thanks for sharing! Cool that you kept it online.
Personally I've had the MAM MB33, ABL1/2, and have a Phoscyon 2 license, but thought it would be a fun exercise to try and do my own interpretation. Back to the drawing board on the DSP.
- KVRAF
- 8505 posts since 12 Feb, 2006 from Helsinki, Finland
Please don't take my critique as "it's all wrong" ... it's just that (1) this little silver box is deceptively difficult to model really accurately (eg. my own Dolphin was always "wrong" in a few ways as well) and (2) lots and lots of people have tried (with ABL and Phoscyon probably the most accurate, but like there have been dozens of attempts).JackedPotato95 wrote: Fri Apr 17, 2026 6:38 am Personally I've had the MAM MB33, ABL1/2, and have a Phoscyon 2 license, but thought it would be a fun exercise to try and do my own interpretation. Back to the drawing board on the DSP.
So I figured I'd point some of the more obvious stuff.
-
JackedPotato95 JackedPotato95 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=787872
- KVRer
- Topic Starter
- 11 posts since 3 Mar, 2026
Oh not at all. I am also just chasing the perfect realism like all of the above. I promise your feedback has been noted and I'll do my best to effectively address it. Will post here whenever it's done. Not sure if ultimately possible to emulate actual analogue component, not two units sound quite the same. But fun challenge in any case.
-
JackedPotato95 JackedPotato95 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=787872
- KVRer
- Topic Starter
- 11 posts since 3 Mar, 2026
And re your mix I didn't mean to bash it. Believe me I've done and heard much worse, just failed to keep them, which is really a mistake in retrospect.
-
JackedPotato95 JackedPotato95 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=787872
- KVRer
- Topic Starter
- 11 posts since 3 Mar, 2026
Alright, it is a 4 ladder filter now, totally removing self-oscillating filter nearly entirely killed the "screamy-ness", even at high res, so I dialed it back a bit. I think the curve from non-to-resonant is a bit too steep on the cutoff, but otherwise fairly happy with this. Dear 303 snobs, please feel free to assess. Was this too far, are are we getting anywhere close? I mean IMHO it is totally usable in the musical sense, but would be super cool to nail it 100% (yes I am aware, many a human have attempted this insurmountable task before, and no I don't think I am in any way better, but still.)
- KVRian
- 666 posts since 10 Jan, 2026
Somebody did this about 10 or 15 years ago here. Made his own 303, after meticulously studying an actual unit, or samples from a mate who had one...something like that.
Made it exactly the same, functional, as the hardware. It was tiny, and most ppl didnt get on with it. 32bit only too I think, don't know what came of it.
Anyway, my point is, if its a passion, keep going. Take on advice from those who know and plod along.
Yes, there are already very good 303 emus, and do we need another? Who cares, do what you like and stay positive.
These days of course you buy a behringer td3 for £50 new
Made it exactly the same, functional, as the hardware. It was tiny, and most ppl didnt get on with it. 32bit only too I think, don't know what came of it.
Anyway, my point is, if its a passion, keep going. Take on advice from those who know and plod along.
Yes, there are already very good 303 emus, and do we need another? Who cares, do what you like and stay positive.
These days of course you buy a behringer td3 for £50 new
- KVRAF
- 2599 posts since 4 Sep, 2006 from 127.0.0.1
well, it wasn't the same enough, as it turns outSeafire Mk2 wrote: Fri Apr 17, 2026 6:08 pm Somebody did this about 10 or 15 years ago here. Made his own 303, after meticulously studying an actual unit, or samples from a mate who had one...something like that.
Made it exactly the same, functional, as the hardware. It was tiny, and most ppl didnt get on with it. 32bit only too I think, don't know what came of it.
so he continued to fiddle with it, made a better approximation of the 303 sequencer, then he tried to make a hardware-digital (hybrid actually) version of it, but there wasn't enough MHz on the MCU, then as he was planning a second attempt at that with a faster MCU - his only left "working" x0xb0x degraded on several levels so he was gonna have to repair it or he wouldn't have a Reference "303", so one Easter Holiday in 2025 he decided to make a x0xb0x-remix PCB (so he can have a new reference 303 that is also easier to repair and maybe harder to break in the first place), but this project soon morphed into an attempt to make a new 303 clone, mostly analog(ue) but not entirely (so, hybrid, again)
i need another one, it seems, and then another oneAnyway, my point is, if its a passion, keep going. Take on advice from those who know and plod along.
Yes, there are already very good 303 emus, and do we need another? Who cares, do what you like and stay positive.
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
- KVRian
- 666 posts since 10 Jan, 2026
The man himself 
-
- KVRAF
- 7045 posts since 28 Apr, 2004 from france
Nice plugin, thank you for sharing!
A couple initial thoughts :
- The GUI is very small, and not resizeable. A bigger, resizeable GUI might make the instrument more appealing to more users, as at the moment it's quite difficult to read.
- The sequencer is nice
- GUI : the overall design looks good, but maybe some stuff could be slightly improved :
1-Why is there "midi", "cv gate", "headphones" plugs? Do you plan to integrate it into a bigger ecosystem like a modular synth with actual patchpoints, or is it "just" some eyecandy?
2- I find a bit strange to have some FX on the upper left part of the GUI (the distortion), and others at the right part of the GUI (delay, reverb). I would find more intuitive to have one upper section dedicated to the synth, one middle section with all the FX, and one bottom section for the sequencer.
A couple initial thoughts :
- The GUI is very small, and not resizeable. A bigger, resizeable GUI might make the instrument more appealing to more users, as at the moment it's quite difficult to read.
- The sequencer is nice
- GUI : the overall design looks good, but maybe some stuff could be slightly improved :
1-Why is there "midi", "cv gate", "headphones" plugs? Do you plan to integrate it into a bigger ecosystem like a modular synth with actual patchpoints, or is it "just" some eyecandy?
2- I find a bit strange to have some FX on the upper left part of the GUI (the distortion), and others at the right part of the GUI (delay, reverb). I would find more intuitive to have one upper section dedicated to the synth, one middle section with all the FX, and one bottom section for the sequencer.
- KVRAF
- 2599 posts since 4 Sep, 2006 from 127.0.0.1
i'm on linux, since a bunch of years, so i don't quite have my usual analysis tools, but from what i heard, it sounded too bassy (i'm not good at judging by ear tho)
i recently watched Andy's video tutorial about "circuit to code" or how was it called... i'm not good at maths and at learning new things, so i had to watch it several times, slowing, checking things, thinking, trying things, eventually i started to understand some basic things there, but putting this to actual use requires looking at a circuit and writing down equations - i get lost the moment it gets to more than 2-3 components, so doing it by hand wasn't gonna work for me, by the time i get to the 3rd equation i forget what i'm doing
so i tried to make a small program that writes the equations for me.. it accepts something like a netlist and outputs equations which i then paste into wxMaxima. it's very dumb, it only "knows" Resistor, Capacitor, VoltageSource, and VoltageBuffer, but this was enough to try and test some things
when i began, i knew almost nothing about DSP, and absolutely zero about electronics
but years passed and i started making PCBs, i made a small pile of different PCBs, and i had to learn some basic things
so, as my understanding became slightly higher than zero, i went back to look at different places in the TB-303 circuit which always were a big fog to me
now when i look at things in the original circuit, i can figure out (to a certain level) on my own what's going on, why something is there, what's it doing
i was thinking to write a question in one of the existing threads, but i need to refresh my memory and write a good, structured question
the TB-303 filter is "interesting", it has several highpass-ish filters in its feedback path
since forever i've been trying to figure out whether some of those highpass filters changes its cutoff depending on the position of the resonance pot, and i couldn't figure it out, i strongly suspected the answer is "yes", but that was all i knew
now i looked yet again at the circuit and tossed it into falstad/circuit, and used my small tool with the equations and such
yes, the resonance affects the behavior of the "highpass" filters, but things are actually even kinda nastier, but i need to write this in a sepparate post, as part of my big question
the filter needs k=17 for self-oscillation, that's a lot of negative feedback gain, so as you put the resonance high - the passband gain drops very very very much, that's why there's a gain compensation circuit immediately after that, as mystran said
these highpass-ish filters in the feedback, they "eat away" the low frequencies from the signal which gets fed back negatively, as a result this feeds back negatively (aka subtracts) the higher frequencies, so the passband gain on those drops a lot, but not on the low frequencies
in other words, if you look at the immediate output from the last stage of the ladder - when you turn up the resonance, the signal turns "more bassy" there due to the highpass(ish) filters in the feedback
at the same time, the actual resonation at low Filter Cutoffs goes away too (which is actually good, and important)
after the last stage of the ladder, there are a lot of highpass filters which eat away this extra bass, at the very end, at the output jack - the TB-303 is not bassy, but that's good too.
the filter can self-oscillate if you make it, it's just normally set up so that it doesn't go that far
i did this analysis as part of my work on the new project where one of the goals is to make a 303 clone which is easier to repair and last longer, specifically, some of the potentiometers in a TB-303 clone are always a big source of problems, so i tried very hard to find some way to improve this
there are 2 potentiometers in the TB-303 which carry audio signal - RESO and VOLUME <- these are the sources of pain, when the potentiometer begins to misbehave due to age or wear, so.. why not change them with voltage control?
great, but for the RESO this is Not Easy, i've looked into this long ago too, but back then i didn't understand things enough
now i understand things a bit more and i reached a conclusion
in this new 303 clone i'm brewing, i moved the whole filter sub-circuit onto a Module board, so that i can have multiple variations of the circuit, and i have currently 3 different ones
- default one with the same transistors as the rest of the circuit, the same as used in the x0x-heart (SOT-363 dual matched, very pesky to hand-solder)
- alternative1 with SOT-23-6 dual matched transistors - BC847-like (spec-wise they are probably less close to where they should be but supposedly in some circuits this might not matter, we'll see)
- alternative2 - i don't remember which transistors i used there but on this one, the filter feedback does not go thru the resonance pot. instead, it's used as a variable voltage source, and there's some opamps and a VCA (LM13700 or what was it), which should do the feedback gain control
as part of this analysis, i understood the nasty circuit around the resonance pot better, and i know where the problem is
this scheme with replacing the resonance pot with a VCA - it'll not produce the same output signal because...
basically, when the resonance pot is at MIN or at MAX - the wiper is "close" to one of two points which are like voltage sources (they can Drive), but when the wiper is anywhere inbetween, it "sees" resistance to those voltage sources
the worst case is when the resonance is at 50%, then the wiper "sees" 25k towards the filter output, and 25k to GND, and there's this TheVenin thing or how was it called, which basically means there's a 12.5k series resistance to "a voltage source"
this series resistance varies depending on the position of the resonance pot, the formula for it is something like (50k*(x*(1-x))) (where x is wiper position 0 to 1), and this is what not only changes the cutoffs of some of the highpass filters, but it also as far as i understand, kinda changes the topology of some of those filters there (need to ask my big question precisely to try and get some help to clear that up)
my alternate2 circuit replaces the pot with a VCA which is a voltage source, but to reproduce the original behavior - i'll need to add a variable series resitor at the output of this VCA, a "resistor" which goes from 0 to 12.5k and then to 0 again with the above curve, and this is where it was too much for me and i gave up. so i just placed a fixed resistor instead. if i put a 0-ohm there - then this filter would "match" the original signal only at RESO=MIN or MAX, but everywhere else it's gonna diverge. if i put 12.5k then the signal will match only in the middle.. so i slapped some mid-value and moved on
okay, enough with this, i guess what didn't come out clearly enough from my previous post was:
as mystran said, this synth (the TB-303), is very difficult, and i want to actually ACCENTuate on this much stronger, this synth spec-wise is the simplest possible "subtractive" synth you can make and barely pass the right to be called subtractive, and yet, it's so difficult to emulate
be careful what you wish for, i wanted to know "how the 303 works" and i'm still.... here... this synth is a Long Story
i recently watched Andy's video tutorial about "circuit to code" or how was it called... i'm not good at maths and at learning new things, so i had to watch it several times, slowing, checking things, thinking, trying things, eventually i started to understand some basic things there, but putting this to actual use requires looking at a circuit and writing down equations - i get lost the moment it gets to more than 2-3 components, so doing it by hand wasn't gonna work for me, by the time i get to the 3rd equation i forget what i'm doing
so i tried to make a small program that writes the equations for me.. it accepts something like a netlist and outputs equations which i then paste into wxMaxima. it's very dumb, it only "knows" Resistor, Capacitor, VoltageSource, and VoltageBuffer, but this was enough to try and test some things
when i began, i knew almost nothing about DSP, and absolutely zero about electronics
but years passed and i started making PCBs, i made a small pile of different PCBs, and i had to learn some basic things
so, as my understanding became slightly higher than zero, i went back to look at different places in the TB-303 circuit which always were a big fog to me
now when i look at things in the original circuit, i can figure out (to a certain level) on my own what's going on, why something is there, what's it doing
i was thinking to write a question in one of the existing threads, but i need to refresh my memory and write a good, structured question
the TB-303 filter is "interesting", it has several highpass-ish filters in its feedback path
since forever i've been trying to figure out whether some of those highpass filters changes its cutoff depending on the position of the resonance pot, and i couldn't figure it out, i strongly suspected the answer is "yes", but that was all i knew
now i looked yet again at the circuit and tossed it into falstad/circuit, and used my small tool with the equations and such
yes, the resonance affects the behavior of the "highpass" filters, but things are actually even kinda nastier, but i need to write this in a sepparate post, as part of my big question
the filter needs k=17 for self-oscillation, that's a lot of negative feedback gain, so as you put the resonance high - the passband gain drops very very very much, that's why there's a gain compensation circuit immediately after that, as mystran said
these highpass-ish filters in the feedback, they "eat away" the low frequencies from the signal which gets fed back negatively, as a result this feeds back negatively (aka subtracts) the higher frequencies, so the passband gain on those drops a lot, but not on the low frequencies
in other words, if you look at the immediate output from the last stage of the ladder - when you turn up the resonance, the signal turns "more bassy" there due to the highpass(ish) filters in the feedback
at the same time, the actual resonation at low Filter Cutoffs goes away too (which is actually good, and important)
after the last stage of the ladder, there are a lot of highpass filters which eat away this extra bass, at the very end, at the output jack - the TB-303 is not bassy, but that's good too.
the filter can self-oscillate if you make it, it's just normally set up so that it doesn't go that far
i did this analysis as part of my work on the new project where one of the goals is to make a 303 clone which is easier to repair and last longer, specifically, some of the potentiometers in a TB-303 clone are always a big source of problems, so i tried very hard to find some way to improve this
there are 2 potentiometers in the TB-303 which carry audio signal - RESO and VOLUME <- these are the sources of pain, when the potentiometer begins to misbehave due to age or wear, so.. why not change them with voltage control?
great, but for the RESO this is Not Easy, i've looked into this long ago too, but back then i didn't understand things enough
now i understand things a bit more and i reached a conclusion
in this new 303 clone i'm brewing, i moved the whole filter sub-circuit onto a Module board, so that i can have multiple variations of the circuit, and i have currently 3 different ones
- default one with the same transistors as the rest of the circuit, the same as used in the x0x-heart (SOT-363 dual matched, very pesky to hand-solder)
- alternative1 with SOT-23-6 dual matched transistors - BC847-like (spec-wise they are probably less close to where they should be but supposedly in some circuits this might not matter, we'll see)
- alternative2 - i don't remember which transistors i used there but on this one, the filter feedback does not go thru the resonance pot. instead, it's used as a variable voltage source, and there's some opamps and a VCA (LM13700 or what was it), which should do the feedback gain control
as part of this analysis, i understood the nasty circuit around the resonance pot better, and i know where the problem is
this scheme with replacing the resonance pot with a VCA - it'll not produce the same output signal because...
basically, when the resonance pot is at MIN or at MAX - the wiper is "close" to one of two points which are like voltage sources (they can Drive), but when the wiper is anywhere inbetween, it "sees" resistance to those voltage sources
the worst case is when the resonance is at 50%, then the wiper "sees" 25k towards the filter output, and 25k to GND, and there's this TheVenin thing or how was it called, which basically means there's a 12.5k series resistance to "a voltage source"
this series resistance varies depending on the position of the resonance pot, the formula for it is something like (50k*(x*(1-x))) (where x is wiper position 0 to 1), and this is what not only changes the cutoffs of some of the highpass filters, but it also as far as i understand, kinda changes the topology of some of those filters there (need to ask my big question precisely to try and get some help to clear that up)
my alternate2 circuit replaces the pot with a VCA which is a voltage source, but to reproduce the original behavior - i'll need to add a variable series resitor at the output of this VCA, a "resistor" which goes from 0 to 12.5k and then to 0 again with the above curve, and this is where it was too much for me and i gave up. so i just placed a fixed resistor instead. if i put a 0-ohm there - then this filter would "match" the original signal only at RESO=MIN or MAX, but everywhere else it's gonna diverge. if i put 12.5k then the signal will match only in the middle.. so i slapped some mid-value and moved on
okay, enough with this, i guess what didn't come out clearly enough from my previous post was:
as mystran said, this synth (the TB-303), is very difficult, and i want to actually ACCENTuate on this much stronger, this synth spec-wise is the simplest possible "subtractive" synth you can make and barely pass the right to be called subtractive, and yet, it's so difficult to emulate
be careful what you wish for, i wanted to know "how the 303 works" and i'm still.... here... this synth is a Long Story
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
