SunVox is a small, fast and powerful modular synthesizer with pattern based sequencer (tracker). It is a tool for those people who like to compose music wherever they are, whenever they wish. On any device. SunVox is available for Windows, Linux, Mac OS X, Windows Mobile, PalmOS, Maemo, Meego, iOS and Android.
Key features:
Official SunVox page: http://www.warmplace.ru/soft/sunvox
Windows:
Linux:
Mac OS X:
Android:
Maemo: (tested on Nokia N900)
Meego:
Windows Mobile (WinCE):
PalmOS:
Mobile version (ARM-based) of SunVox has fixed point integer audio engine (4.12 bits). This means that you hear the 13-bit sound on mobile devices. It is fast but with slightly audible quantization noise. Rendering to WAV also has this noise, but no more than that. For example, if you hear some glitches due to lack of CPU power, these glitches will not be present in the WAV-file after rendering. In other words, the result of WAV rendering will be the same on different devices with ARM CPU.
In spite of the mobile version noise, 32bit WAV export may be with better quality due to the absence of audio overflow.
First click on the Stop button - stop playing. Second click - reset all SunVox activity and switch the engine to standby mode.
Keys | Description |
---|---|
SPACE | edit mode ON/OFF |
q,w,e,r,t,y,u,i…. | playing notes |
CAPSLOCK or '~' | insert “note OFF” |
F1…F8 | set octave number |
TAB | go to the next track |
SHIFT + TAB | go to the previous track |
CTRL + Z | UNDO |
CTRL + Y or SHIFT + CTRL + Z | REDO |
CTRL + X | cut |
CTRL + C | copy |
CTRL + V | paste |
CTRL + A | select all |
CTRL + T | select track (pattern editor) |
CTRL + D | duplicate / clone |
CTRL + I | interpolate values (pattern editor) |
CTRL + U | interpolate velocity (pattern editor) |
CTRL + N | create a new synth / create a new pattern |
CTRL + R | randomize synth controllers (sound network) |
SHIFT + DELETE | cut |
SHIFT + INSERT | paste |
SHIFT + '+' | transpose selected area up (pattern editor) |
SHIFT + '-' | transpose selected area down (pattern editor) |
SHIFT + UP/DOWN/LEFT/RIGHT | selection |
SHIFT + MOUSE MOVING | synth link/unlink |
CTRL + O | load song |
CTRL + S | save song |
CTRL + B | save song to BACKUP.sunvox |
CTRL + '+' | increase the edit step |
CTRL + '-' | decrease the edit step |
F9 | play |
F11 | play pattern |
F12 | stop |
Some synthesizers have a “Mode” parameter with the following possible values:
Generator with 32 double alias-free oscillators with internal 12/24dB filters, exponential envelopes and smooth parameters changing.
Drum synthesizer with variety of predefined sounds.
Distribution of sounds:
Controllers:
This synth is based on frequency modulation. It operates on an internal sampling frequency 44100 Hz. Abbreviations: C - carrier; M - modulator.
Controllers:
This synth is for generating different types of waves.
Available local controllers: Type; Pan.
Controllers:
Audio input from Microphone or from Line-in.
Available local controllers: Type.
Controllers:
With MetaModule you can create your own complex modules and save them in the .sunsynth file format. In other words - you can include some external .sunvox song to your project and use this song as synth or effect.
How to use it?
Also you can optimize the 3th and 4th steps. Go to the menu of the window with modules. Click Load Module. Then select mysong.sunvox file. And MetaModule with your song will be created automatically.
Translates music events to any number of synths.
Controllers:
Supported file formats: WAV, XI, AIFF, RAW. 8 / 16 / 24 / 32 bits.
Available local controllers: Pan.
Controllers:
FFT-based synth. Can be used to generate a sound with a complex spectrum.
Available local controllers: Pan.
Controllers:
Controllers:
Controllers:
Maximal length of the delay is 1/64 second.
Controllers:
Controllers:
Maximal delay length: 4 seconds.
Controllers:
3Band equalizer.
Controllers:
State Variable Filter. Double Sampled.
Controllers:
Controllers:
LFO - Low Frequency Oscillator.
Controllers:
This effect is for repeating small pieces of input sound.
Controllers:
Amplitude modulator (multiplier of the inputs). For N inputs: Modulator Output Amplitude = Input1 * Input2 * Input3 * … InputN
More info about amplitude modulation: http://en.wikipedia.org/wiki/Amplitude_modulation
Reverberator with DC Blocking Filter.
Controllers:
This filter was designed to simulate the vocal tract of a human.
Controllers:
OGG Vorbis Player.
Controllers:
Controllers:
A few words about hex numbers. Memory locations and software in today's computers use the hexadecimal (hex) number system which comprises sixteen distinct symbols, digits 0 - 9 and letters A, B, C, D, E, F (or a - f) where the letters represent the numbers 10 - 15. For more detail on the hexadecimal system please visit: http://en.wikipedia.org/wiki/Hexadecimal
Examples of hexadecimal numbers and its decimal equivalents:
Any pattern in the SunVox looks like this:
line | track 0 | track 1 | track 2 | … |
---|---|---|---|---|
000 | event | event | event | … |
001 | event | event | event | … |
xxx | … | … | … | … |
event - some music event (something like a MIDI command).
Examples of events:
event of turning note C5 on: | C5 80 01 0000 0000 |
---|---|
event of turning note A5 on: | A5 80 01 0000 0000 |
event of turning note off: | == |
As you can see, an events contain several text/numeric fields. All numbers in the pattern are represented in HEXADECIMAL format.
Event format: NN VV SS CCEE XXYY
Lets see detailed description of each field in the event:
Velocity can be changed dynamically. Example:
NN VV SS CCEE XXYY C3 10 03 0000 0000 -- 20 -- 0000 0000 -- 30 -- 0000 0000 -- 40 -- 0000 0000 -- 50 -- 0000 0000 -- 60 -- 0000 0000
In this example velocity changed from 10 to 60.
Example of changing cutoff frequency (global controller) of filter from min to max value:
NN VV SS CCEE XXYY -- -- 01 0200 0000 -- -- 01 0200 1000 -- -- 01 0200 2000 -- -- 01 0200 3000 -- -- 01 0200 4000 -- -- 01 0200 5000 -- -- 01 0200 6000 -- -- 01 0200 7000 -- -- 01 0200 8000
The “Cutoff frequency” controller has a number 2 in the filter.
Some synths have local controllers. A local controller can be changed for a separate sound on a separate track, independently of the other sounds of the same module.
Example: (changing local controller 2 in the module 1)
NN VV SS CCEE XXYY C3 80 01 0200 0000 //Set local controller 2 to value 0000. Separate sound begins playing here -- -- 01 0200 0001 //Set local controller 2 to value 0001 -- -- 01 0200 0002 //Set local controller 2 to value 0002 -- -- 01 0200 0003 //Set local controller 2 to value 0003 -- -- 01 0200 0002 //... -- -- 01 0200 0001
01 - Slide up (Portamento Up). This effect will slide up the frequency of the synth being played on the track by XXYY (one semitone = 40) tones for every tick. If a slide rate is not specified (XXYY is zero) then the last slide rate used on the track is used again.
02 - Slide down (Portamento Down). This effect will slide down the frequency of the synth being played on the track by XXYY (one semitone = 40) tones for every tick. If a slide rate is not specified (XXYY is zero) then the last slide rate used on the track is used again.
03 - Slide to note. This effect will slide a note being played on a track to a specified note. The parameter XXYY (one semitone = 40) will states the speed at which a slide will occur. If a slide rate is not specified (XXYY is zero) then the last slide rate used on the track is used again.
04 - Vibrato with parameters XXYY, where the XX - frequency (examples of values: 20 - one period per line; 40 - two periods per line), YY - amplitude (one semitone = 40).
08 - Arpeggio. This effect is normally used to simulate chords. It can also be used to produce a heavy vibrato. Example: Note = C3; XXYY = 0407 (second note increment = 4; third note increment = 7) this is an attempt to produce a C-major chord. At the beginning of a line the C3 note is played, then 1/3 into the line the sound is retriggered at E-3, at 2/3 is retriggered at G3, and at the beginning of the next line (if there are no new notes to be played on the track), it is retriggered at C3 again. Video
09 - Set sample offset. This functionality enables you to start a sample from a specified position rather than the normal beginning position. Multiply value XXYY * 256 to get the position in frames from the beginning of the sample where playback should start. If no sample is specified, the sample currently playing is retriggered to the offset specified. Example: play instrument 2 at note C3, and XXYY = 0023. This would make playback of the sample start at offset 0023 * 0100 = 2300. This offset provides quite a wide range from where you can start playing the sample.
07 - Set sample offset (by percentage). XXYY from 0000 (sample start) to 8000 (sample end). Video
0A - Slide velocity up/down. This effect will change the velocity of the synth being played on a track. The value XXYY the speed of the velocity change. If XX is nonzero the velocity is increased, and if YY is nonzero the velocity is decreased. Example: set XXYY to 0003. This means that at the beginning of the line, the current velocity of the synth is decreased by 3 (because DD = 3). The velocity is decreased by 3 again for every tick on this line.
0F - Set playing speed. This effect changes the speed (number of ticks per line) of playback. Valid values for speed setting are 1 - 1F (1 - 31 in decimal). Values above 1F (31 in decimal), represent a modified speed based on beats per minute, where 4 lines are 1 beat. A speed value of 2A (42 in decimal), equals 42 beats per minute.
11 - Fineslide up. This effect functions just like effect 1, except that the frequency of the note is only modified once (at the beginning of a line).
12 - Fineslide down. This effect functions just like effect 2, except that the frequency of the note is only modified once (at the beginning of a line).
19 - Re-trigger. Effect 19 allows you to re-trigger a note after XXYY ticks during the line. For example, let's specify note C3 and set XXYY = 2 when the speed (TPL) is currently 6. This starts the specified note at the beginning of the line, and after two ticks it is restarted. This continues until the beginning of the next line.
1C - Cut. This effect turns off the note after XXYY ticks in the current line.
1D - Delay. This effect delays the start of a note until tick XXYY in the current line. For example, if note C2 is played, with effect 1D and argument XXYY = 3 when the speed is 6. The note C2 will be triggered at the 3rd tick after the start of the line. Purpose: to delay the start of a sample for a VERY short amount of time.
20 - Note probability. Set the probability XXYY (from 0 to 8000) of a note being triggered. This effect can be used for original unpredictable rhythms.
21 - Note probability with random velocity. Same as effect 20 but with random velocity.
22 - Set the controller's value to the random number from 0 to XXYY.
30 - Stop playing the song.
40…5F - delay an event for selected fraction of the line (from 40 (0%) to 5F (100%)).
You can use controllers with number 80+X to send MIDI Control Change command. Where the X is MIDI Controller Number.
Example:
NN VV SS CCEE XXYY -- -- 01 8100 0000 - set Modulation (MSB and LSB) to the min value -- -- 01 8100 8000 - set Modulation (MSB and LSB) to the max value MSB - Most Significant Byte; LSB - Least Significant Byte.
You can get MIDI Controller Number for CC column from the following table.
Controller number + 80 (hex); Use these values in the CC column of SunVox pattern | Controller name |
---|---|
80 | Bank Select (Controller # A0 more commonly used) |
81 | Modulation Wheel |
82 | Breath Contoller |
83 | Undefined |
84 | Foot Controller |
85 | Portamento Time |
86 | Data Entry MSB |
87 | Main Volume |
88 | Balance |
89 | Undefined |
8A | Pan |
8B | Expression |
8C | Effect Control 1 |
8D | Effect Control 2 |
8E-8F | Undefined |
90-93 | General Purpose Controllers |
94-9F | Undefined |
A0-BF | LSB for Controllers 80 - 9F (rarely implemented) |
C0 | Damper Pedal (Sustain) |
C1 | Portamento |
C2 | Sostenuto |
C3 | Soft Pedal |
C4 | Legato Footswitch |
C5 | Hold 2 |
C6 | Sound Controller 1 (default: Sound Variation) |
C7 | Sound Controller 2 (default: Timbre/Harmonic Content) |
C8 | Sound Controller 3 (default: Release Time) |
C9 | Sound Controller 4 (default: Attack Time) |
CA | Sound Controller 5 (default: Brightness) |
CB-CF | Sound Controller 6-10 (no defaults) |
D0-D3 | General Purpose Controllers |
D4 | Portamento Control |
D5-DA | Undefined |
DB | Effects 1 Depth (previously External Effects Depth) |
DC | Effects 2 Depth (previously Tremolo Depth) |
DD | Effects 3 Depth (previously Chorus Depth) |
DE | Effects 4 Depth (previously Detune Depth) |
DF | Effects 5 Depth (previously Phaser Depth) |
E0 | Data Increment |
E1 | Data Decrement |
E2 | Non-Registered Parameter Number LSB |
E3 | Non-Registered Parameter Number LSB |
E4 | Registered Parameter Number LSB |
E5 | Registered Parameter Number MSB |
E6-F8 | Undefined |
F9 | Reset All Controllers |
FA | Local Control |
FB | All Notes Off |
FC | Omni Off |
FD | Omni On |
FE | Mono On (Poly Off) |
FF | Poly On (Mono Off) |
SunVox takes its configuration from the sunvox_config.ini or sunvox_config.txt file. This file must be placed in one of the following directories:
Typical sunvox_config.ini file looks like this:
// Remove the '//' symbol to enable (uncomment) the string. // Window width and height: width 800 height 600 // Use this option for setting maximal number of frames per second: // ( less value - less CPU usage ) //maxfps 30 // Uncomment these options to hide scopes and levels (i.e. for slow devices): //no_scopes //no_levels // Modules size: //synths_min_num 8 //synth_max_xsize 100 //synth_min_xsize 32 //synth_xsize_divider 8 //synth_ysize_multiplier 80 // Undo buffer size (in kilobytes): //undosize 2048 // Uncomment this option for screen rotate (device dependent): // ( example of usage: rotate 90 //turn the screen by 90 degrees ) //rotate 90 // Uncomment this option if you want fullscreen mode in Linux (SDL): //fullscreen // Uncomment this option if your device has touchscreen without pen (stylus), // or if you just want a large buttons: //touchcontrol // Sound buffer size (in frames): buffer 4096 // Audio device name: // * name examples for ALSA (Linux): "hw:0,0", "hw:1,0"; // * name examples for other audio systems: "0" - first device; "1" - second device; //audiodevice hw:0,0 // Audio driver name (alsa, oss, sdl, dsound, mmsound, asio): // * alsa - ALSA (Linux); // * oss - OSS (Linux); // * sdl - SDL (Linux); // * dsound - DirectSound (Windows); // * mmsound - oldest audio API, slow, but compatible with all Windows and Windows Mobile devices; // * asio - ASIO (Windows); //audiodriver alsa // Sample rate (audio frames per second; minimum - 44100): frequency 44100 // Video driver name on Windows Mobile: // * gapi - default; requires gx.dll installed in your system; // * raw - raw hires framebuffer; not supported by some devices; // * gdi - compatibility mode; slow but universal; //videodriver gapi // Force UI optimization for Pen/Mouse control: //pencontrol // Display pixels per inch: //ppi 160 // UI scale factor (normal=256): //scale 256 // Pixel size: //zoom 2 // Uncomment the "theme" option to use the custom color themes: // (four base colors defined by c_0, c_1, c_2 and c_3 options) //theme c_0 #000000 c_1 #101010 c_2 #808080 c_3 #FFFF00
Q: How to connect one module to another?
A: There are three ways.
Dark part of the connection line - must go FROM SOURCE. Bright part - TO DESTINATION. Reconnection removes the previous connection.
Q: Filter effect's impulse value doesn't change. When i change impulse value, it return 0.
A: It is normal behaviour. There is no need to remember the “impulse” value. I'll try to describe the algorithm.
Q: Is there a particular bit rate/sample rate/# channels that the samples need to be in order to work?
A: WAV samples must be in following format: 8 / 16 / 24 / 32 (float) bits; mono / stereo; any sampling frequency; only uncompressed PCM data. Supported file formats: WAV, AIFF, XI, JPEG. As for JPEG, brightness of the pixels will be converted into the sound wave (pixel by pixel).
Q: How to open the sample editor?
A: Please check this video-tutorial.
Q: For multisamples, how do I set the root note of my sample?
A: Use the “rel.note” (relative note) parameter for such purposes.
Q: I noticed the effects parameters on the right of the note, velocity etc at the top seem to be missing in the iOS version.
A: These columns are hidden by default. But you can enable them - just go to the Main menu and select “Hide/show effects”.
Q: How to paste sounds from another iOS apps?
A:
Q: After i export the session into soundfile, where can i open this file in iOS device?
A: There are three ways.
1) Open SunVox → Main menu → Export/import → Copy file to system pasteboard → select your audio file. Then you can open some other iOS app with Audio Copy/Paste support and do the Paste operation.
2) Open SunVox → Main menu → Export/import → Wi-Fi export/import. Then follow the instructions on the screen.
3) Use iTunes File Sharing to access the SunVox files. Launch the iTunes on your computer. Sync it with iOS device. Then find SunVox in the list of apps of your device. And you will see the list of SunVox documents.
Q: How do I adjust multisample instruments? I see slots for multiple samples and a zone managment section in the editor, but I can only load one sample at a time?
A: I hope this little tutorial will help you.
Step 1. Open new empty sampler.
Step 2. Load sample 0.
Step 3. Sample 0 loaded.
Step 4. Load sample 1.
Step 5. Sample 1 loaded.
Step 6. Make sample 1 playable on octaves 5 and 6.