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 ]