http://www.robotplanet.dk/files/buzz/ki ... 050304.rar
=== Welcome to the kibibu Serpent source code release ===
Serpent is a dirty big envelope synth for Buzz that reached Beta stage
before I stopped working on it (about 10 months ago more or less). The
plugin is fully functional, and I've included one of the releases in
This code is being released because I haven't had the time to work on it.
To be honest, it didn't receive a whole lot of interest as a binary
release, so I pretty much lost motivation. Hopefully a source release,
with some appropriate community-based source eyeballing and tweaking will
help turn this thing into what I originally wanted: a vehicle for large
scale world domination and the enslavement of all mankind.
Note that the code is stupid in some places - specifically:
- The CalcFilter1 2 and 3 methods. This is all the same code, but accessing
different member variables. I basically did this because I was lazy - you
can use Find/Replace to generate 2 and 3 from 1 without having to do a proper
generalisation of the function.
- Ditto with the CalcOsc and CalcAmp methods. Very ditto.
- The skin coordinates are hard-coded. It probably wouldn't be much work to
make the thing generically skinnable, but I never did so.
- Some of the gui code is clumsy, using a heap of boolean members instead of
a single state var, or something better again.
- The various versions (mono/stereo high qual/normal etc) have their own
copies of the skin bitmaps. I suppose this isn't too bad, as you could
in theory skin each one differently so you know what you are working with.
Feels silly though.
- There is a buffer overrun vulnerability in the Serpent data file loading
routines. This is probably the highest priority. In the meantime, i'll
pass on the Winamp policy - only accept preset files from people you trust!
- Envelope windows pop up on top of each other. They should probably pop up
somewhere else. A better idea would be to combine the envelope and routing
Probably the biggest drawback is the CPU usage - it sits up pretty high when
there is enough stuff going on. I don't have the benefit of a profiler, so
I can't do much more that I have already without writing timing functions etc.
Optimising this would make it much more useful.
In theory, there isn't much stopping anybody from porting this to some other
platform; just handle the note data and put the Work stuff somewhere else.
A Serpent VST would be mighty cool (although I'm sure there are other envelope
synths out there)
Hope this stuff is valuable to somebody. If you are looking to get started
at coding buzz machines though, this is probably the worst place to look.
This source is being released under the Gnu GPL. Go nuts with it. The GPL
license is available online at http://www.fsf.org/licensing/licenses/gpl.txt
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program;www.robotplanet.dk/files/buzz/kibibu_se ... 050304.rar