Buzzic 1.1 by Stan 1901
Type: Sound tracker for 4K demos
Title: Buzzic (version 1.1)
Created by: Stepanov Andrey, 2008
ICQ: 129 179 794
E-mail: andrewstepanov@mail.ru
Required software: .NET Framework 1.1 to run Buzzic.
Compiled example does not need .NET Framework
Tested on: Windows 2000, Windows XP,
Windows Vista (not sure in proper work on this platform)
Differences from previous version of Buzzic
===========================================
1) Instrument copy/paste capability added.
2) Resonant filter added.
3) You can now enter oscillator frequency as note, not as number.
4) File format is incompatible with previous version of Buzzic.
Main concept
============
Buzzic is a demotool for creation 4K-demos music. It's main concepts are:
1) Instrument: consists of one oscillator and several effects, applied to it.
Note that since instrument contains only one oscillator, if you want more
complex sound, made of several oscillators, you must create several
instruments and attach them to the same note sequence.
2) Sequence: well, it's just sequence of bytes, passing through instrument.
Notice that sequence is not just sound notes - sequence can be used for many
other instrument parameters (e.g. filter cutoff, volume).
3) Code generation: melody can be exported in form of C++ code. If you don't
want to use C++, then Buzzic is not for you :) Of course, there is
always a choice of rewriting C++ program in other language.
Instruments
===========
Instruments are displayed in groupbox "Instruments" at the left side of main
window. You can add, remove, edit, mute/unmute and copy/paste instruments
through menu "Instruments" or by pressing menu hotkeys.
Each instrument contains oscillator and set of effects, applied to it.
Some of instrument parameters can be attached to sequence, while others
can't. You can select sequence in combobox, placed at the right side of
parameter value selection control. Parameters meaning:
1) Note. Starting frequency of oscillator, encoded in semitones. So note 45
means C-4 (440 Hz). Parameter has no meaning for noice generators.
If note is zero, sound will not be generated.
2) Note end. Ending frequency of note. Oscillator frequency will linearly
change between "Note" and "Note end". If "Note end" is zero, it is assumed
to be the same as "Note".
3) Oscillator. No comments.
4) Detune. Offset (in semitones) of frequency from "Note" and "Note end" values.
5) Length. Note length in 0.01-th of second.
6) Volume. Volume in 0.01-th of maximum volume. Notice that scale is
not logarithmic.
7) Attack, Decay, Sustain. ADSR length values in % of note length.
8) Filter cutoff, Resonance. Parameters of low-pass resonant filter.
Notice that some values (>=100) of this parameters are not valid and may
produce vEry bad sound.
9) Cutoff mod(ulation). Represents changing of cutoff frequency during
note replay.
10) Echo delay, repeats, damping. No comments.
11) Wrap level. Samples above this level will be reversed down. You better
play with it and listen or look at sound graph than try
to understand explanation I've just said :)
12) Hard level. Limits sound volume to given level.
13) Compressor low and high level. Samples below low value remain unchanged
while others will be non-linearly interpolated between low and high level.
You can replay sound by pressing "Play" button - all sequenced values
will be assumed to be zero and sound will be generated immediately.
"Play on change" will cause program to play sound on any change you made
to instrument.
Sequences
=========
Each sequence is encoded as set of patterns, each 16 values long. This
value is fixed and can not be changed. Adding and removing sequences
is performed by buttons on main window (Sequences groupbox).
Sequence operations:
- Double click OR Ctrl+I - insert empty pattern in focused position.
- Double Click holding Ctrl OR Ctrl+D - remove pattern from focused position.
To rename sequence double-click sequence column header.
Patterns (opened via "Edit patterns" button) can be added, removed, renamed
and interpolated on "Edit patterns" window. Interpolation is done by
pressing "Interpolate values" button and selecting starting and ending rows.
Each pattern cell can containg values from 0 to 127.
Zero is displayed as empty string. Alternatively you can enter values as notes.
To do it step on the left column titled "Notes:" and press alphanumeric keys
representing notes. Keys positioned as on piano. So Z is C, S - C#, X - E and
so on. You have access for two octaves from keyboard.
Patterns operations:
- Double click OR Ctrl+I - insert empty pattern row focused position.
- Double Click holding Ctrl OR Ctrl+D - remove pattern row from focused
position.
To write pattern into sequence focus row you need and press key,
corresponding to needed pattern. All pattern keys is listed at the left
side of "Sequences" window. To remove pattern from sequence press '.'.
Melody start and end are displayed by green and red lines on sequences
window. To change them click right or left mouse button on row header.
Melody
======
Melody replay is triggered by the "Play" button on main form. Value right
from "BMP" control represents one row length in seconds. Value near the
"Volume" scrollbox represents maximum sample volume played. This value should
be less than 1, or else sound will be truncated while replaying in Buzzic
or it will lead to horrible sounds while playing in compiled C++ code.
To generate C++ code select "Melody\Generate code..." menu item. Opened window
will display program source code you can use to play melody. While generating
this code Buzzic will test for unused sequences and patterns. If you don't
need them - you should remove them manually. Generated code is a little
bit optimized - Buzzic will remove some unused features from the code.
Menu items "Melody\Analyze ****" will display graphical representation
of sound being played. I don't know if anybody really need it - I added
it just for fun :)
Samples
=======
Archive contains sample melody with "buz" extension and sample program
with Buzzic-created melody.
Notes for programmers
=====================
Currently generated code contains unnecessary links to msvcrt and _ftol.
You should remove them to minimize code and throw away msvcrt dependency.
Sorry :)
[ back to the prod ]
