PBSynth GP32 v0.1a Copyright (c) 2004 by Christian Nowak
--------------------------------------------------------

-> 16 Days Coding Competition special version <-

This software may only be distributed on the website(s) of the 16 Days GP32 
Coding Competition and my website, http://chn.roarvgm.com/. If you want to 
distribute it on a different website or by other means, you must contact me to 
get a permission.

What is it?
-----------

PBSynth stands for Pocket Bass Synth and is a digital synthesizer which uses 
subtractive synthesis to generate sounds. It is written completely from scratch 
by Christian Nowak in portable C++ and is intended specifically for not-so-
powerful computer systems. Due to the optional usage of 32bit fixed point or 
single precision floating point arithmetic, it runs on computer systems with or 
without an FPU. However, the presence of an FPU improves the sound quality 
because of a higher precision.

In the samples directory of the PBSynth distribution some example sounds created 
with PBSynth and recorded directly from the GP32 can be found. The files haven't 
been processed while or after recording.

How does it work?
-----------------

DSP and sound synthesis is a rather complex subject and whole books have been 
written about it. Luckily, there are already rather good introductions into 
subtractive synthesis freely available in the Internet. An especially remarkable 
one is the "Synth Secrets" series by Gordon Reid of the Sound On Sound magazine.

First off, here's a general description of subtractive synthesis:

  http://en.wikipedia.org/wiki/Subtractive_synthesis

... and a relevant collection of the "Synth Secrets" articles:

Part 1: What's In A Sound?
  http://www.soundonsound.com/sos/may99/articles/synthsec.htm
  
Part 3: Modifiers & Controllers
  http://www.soundonsound.com/sos/jul99/articles/synthsecrets.htm
  
Part 4: Of Filters & Phase Relationships
  http://www.soundonsound.com/sos/aug99/articles/synthsecrets.htm
  
Part 5: Further With Filters
  http://www.soundonsound.com/sos/sep99/articles/synthsecrets.htm
  
Part 6: Of Responses And Resonance
  http://www.soundonsound.com/sos/oct99/articles/synthsecrets.htm
  
Part 7: Envelopes, Gates & Triggers
  http://www.soundonsound.com/sos/nov99/articles/synthsecrets.htm
  
Part 8: More About Envelopes
  http://www.soundonsound.com/sos/dec99/articles/synthsecrets.htm
  
Part 9: An Introduction To VCAs
  http://www.soundonsound.com/sos/jan00/articles/synthsecrets.htm
  
Synth Secrets: Part 10: Modulation
  http://www.soundonsound.com/sos/feb00/articles/synthsecrets.htm

  
If you want to know more about DSP, get a good book or two about mathematics 
(especially complex numbers and differential equations) and this one:

http://www.dspguide.com/




PBSynth consists of the following:

- 2 oscillators
  Each oscillator can generate a triangle, sawtooth or rectangle (with variable 
  pulse width) waveform and can be detuned up/down individually by one octave.
- 1 low pass recursive Z-Domain resonant filter with a slope of 12dB or 24dB per 
  octave
  (I know it isn't the best sounding filter in the world, I'll design a better 
  one when I have some time - well, and probably an additional high pass and 
  band pass filter while I'm at it :)
- 2 ADSR envelope generators
- 2 low frequency oscillators with a triangle waveform
- 1 echo/delay effect with delay times ranging between 0 and 1 second

The Synth offers the following modulation routings:

- ENV1 to OSC1 pulse width (applies only to the rectangle waveform)
- ENV1 to OSC2 pulse width (dto.)
- ENV1 to AMP (hardwired to 100% modulation)
- ENV2 to FILT frequency
- LFO1 to AMP
- LFO2 to FILT frequency

The modulations have a granularity of (are updated every) 64 samples (64/44100Hz 
= 1.45 milliseconds). The latency is 1024 samples (1024/44100Hz = 23.22 
milliseconds).The GP32 version runs at 133MHz (it can run at 66MHz, too, but I 
was too lazy to change the CPU frequency). Of course, the output sampling 
frequency is 44100Hz.

Known Bugs
----------

The Echo/Delay effect seems to get unstable from time to time, especially with 
high feedback levels.

Usage
-----

Use the D-Pad to move the cursor. When it is over a button, press the A button 
to press it. When the cursor is over a rotary knob, press and hold the A button 
while pressing up/down (coarse) or left/right (fine) on the D-Pad for editing 
the parameter.
Press the B button to play notes. You can change the current note by holding the 
select button while pressing left/right (semitone) or up/down (octave) on the D-
Pad.

You can hold a note while changing parameters.

While changing any parameter, the LCD will display the new value. Semitones 
range between 1 and 12 and octaves between 0 and 7.

For exiting PBSynth, press the left shoulder button.

Planned Features
----------------

- A step sequencer (one which can not only modulate the pitch, but also 
  synthesis parameters like the filter frequency in other tracks, very much like 
  the DSI Evolver)
- A high- and band pass filter
- More modulation routings, possibly a modulation matrix
- A Steinberg VSTi interface for the PC-version
- A fade in parameter and "retrigger on note on" parameter for the LFOs
- Probably a multitap delay effect
- Of course a save function for your patches

If you enjoy using this softsynth, please write me an email and tell me which 
features you'd like to see in future versions and how much money you'd be 
willing to pay if PBSynth goes commercial. Thanks.


Have fun!

Christian Nowak.
chnowak@web.de

Greetings go to (in no particular order):
Stefan Nowak a.k.a. Acrid/stn/stnow
Kojote
Mr.Spiv
Markus Bock (Schnitzelalarm ;)
Chiang Yu
Don Miguel
Duodreamer
Eelco Wicherts a.k.a. Space Invaders
Jay Vaughan and everyone on the music-bar mailing list at www.ampfea.org
Peitschi
Moogulator (Sorry, ich habe doch keinen Hardwaresequenzer gebaut...)
