From Jeskola Buzz Wiki
Revision as of 12:14, 8 October 2009 by JoaCHIP (Talk | contribs) (Need to have features)

Jump to: navigation, search

This machine does not exist yet, but I have decided to write a design document on it, in order to highlight some of my thoughts. It's an attempt to get a tracker that doesn't click, doesn't kill the attack of percussion and resamples properly unlike MTrk and UTrk.

Over-all goals

  • High quality output with no sound artifacts
  • Easy to use
  • Fairly decent performance overhead
  • Works in the current version of Buzz (with clone compatibility as an added bonus)
  • Once the project has taken shape and has matured, it will become open-souce
Adjusting the decay curve shape parameter produces various logaritmic slopes.

Need to have features

  • Support for all 16 bit int, 24 bit int, 32 bit float uncompressed .wav files.
  • Virtual channels and intelligent Global and Track handling. If you play a long sample three times in a row, e.g. C-D-E, you will hear all three. If you then use a "volume slide down" command, you will hear all three samples fade out. To do this, each virtual channel must remember what physical channel started it, and react to any commend on that physical channel.
  • take care that 1 sample can be active with the same note on multiple voices..
  • An intelligent method of avoiding clicks. When switching to or from audio that has lots of treble, no de-clicking needs to take place at all. (Maybe the tracker can decide? If not, give the user an easy way to enable/disable declicking.) Also, declicking can be done by fading the previously playing sound to silence over 0.5 to 5 ms, before the new sample even starts playing, if we can predict when that happens.
  • All commands should exist in two versions placed at adjacent numbers so that it is easy to remember both: Sticky and temporary. Temporary commands (even command numbers) affect the tick or local area they're applied to. Sticky commands (same number but +1) are active until you specifically stop it. An example of this could be "vibrato": Let's say this command is called "14", then the permanent way to enable vibrato would be 14+1 = the "15" command.
  • This tracker must be able to handle sample offset and positive/negative note-delay on the same note.
  • Different resampling algorithms: Fast, Medium, Good (aliasing free). This setting must be stored in a global way, so that if you move Buzz to a new PC, you can easily change this setting for all songs at once.
  • Better envelope controls. I want a "volume decay" command where you can change both the length (in milliseconds) and the decay curve (see graphics).

Nice to have features

  • Being able to handle any combination of commands.
  • MIDI support
  • Support for Wavetable features like multisample (currently broken..) and Envelopes (currently not really user friendly..)
  • Rudimentary Sample Editing functionality in some GUI
  • High Quality Pitch-Shifting and Time-Streching (in addition to the high quality resampler that is a must)

Up for discussions