iOS 11+: SunVox Audio Unit (AUv3) can now send MIDI notes and MIDI CC to other AU modules;
iOS 13.4+: full USB/Bluetooth keyboard support (like on desktops);
multiple module selection (see changelog_details.txt) + ability to save several selected modules to a sunvox file;
timeline: supertracks (see changelog_details.txt and simple_examples/supertracks.sunvox);
improved import of old tracker formats (XM and MOD);
new module - FMX: 5-operator Frequency Modulation synth;
new module - FFT frequency transformator;
sound engine optimization;
the name of the current file is now visible in the title bar of the app window;
module and timeline editor: "Select All" has been changed to "Select/Unselect All";
timeline menu: new option "Vertical mode"; +shortcut
timeline menu: new functions "Load" and "Save" to load/save selected patterns from/to a sunvox file;
timeline menu: new function "Detach" to convert the clones to the normal patterns; +shortcut
module editor menu: new function "Detach" to detach the selected modules from the rest; +shortcut
module editor menu: new function "Make MetaModule" for packing the selected modules into a single MetaModule; +shortcut
now it is possible to delete modules, but keep the links;
pattern properties: X and Y fields - exact coordinates of the pattern on the timeline;
module properties: X and Y fields - exact coordinates of the module;
module visualizer: "Phase Sync" oscilloscope option has been added; activate it to see a single waveform cycle;
module visualizer: new buttons "reset", "apply", "copy", "paste";
ADSR->Sustain: new value "Repeat" (repeat the envelope until the module is stopped);
ADSR->Smooth Transitions: new value "volume change" (the volume will change smoothly, but the envelope start is not smoothed);
Amplifier: new controller "Bipolar DC Offset";
Analog Generator: the "Freq2" controller has been ranamed to "Osc2" (pitch deviation of the additional oscillator);
Analog Generator: new controller "Osc2 volume" - additional oscillator volume;
Analog Generator: new controller "Osc2 mode" - mixing mode of the additional oscillator with the main one (add;sub;mul;min;max;bitwise AND;bitwise XOR);
Analog Generator: new controller "Osc2 phase" - starting phase of the additional oscillator;
Analog Generator: new option "Increased frequency computation accuracy";
Delay: new controller "Delay multiplier";
Delay: new "Delay unit" values: sec/44100, sec/48000, sample;
Delay: max delay length has been increased to 60 sec;
Delay: new controller "Feedback" (for sound and events);
Echo: new controller "Right channel offset" (how much to shift the right channel relative to the left in time);
Echo: new controller "Filter";
Echo: new controller "Filter frequency";
Filter Pro: new modes "stereo + smoothing" and "mono + smoothing" for additional parameter smoothing;
Filter Pro: new types "LP 6dB" and "HP 6dB";
LFO: new controller "Sine quality";
MetaModule->Play patterns: new values "on (repeat, endless)" and "on (no repeat, endless)";
MetaModule: number of user defined controllers has been increased to 96;
MetaModule: controller color can now be changed by adding "@X" to the beginning of the name, where X is the group number from 0 to F; group colors (c_cgp0, c_cgp1, etc.) can be changed in sunvox_config.ini;
MultiSynth: new option "Output port number = round-robin (cyclic)";
Sampler: new option "Increased frequency computation accuracy";
FM, SpectraVoice, Kicker, DrumSynth: clicks removal algorithm has been implemented - it is useful when the volume changes quickly or there are not enough polyphony channels;
FM: the "M.Feedback" controller has been renamed to "M.Self-modulation";
Vocal Filter: new controllers "Random frequency" and "Random seed";
Vocal Filter: new controllers "Vowel1", "Vowel2", "Vowel3", "Vowel4", "Vowel5";
effect 1С will work a little differently if you fill in its parameter as 10YY - this means that the velocity will be reset to 0 after YY ticks; (normal parameter 00YY means Note OFF after YY ticks);
new pattern effects (column EE):
1A - fine velocity slide up/down (XX - up speed; YY - down speed); once at the beginning of a line;
33 - slot sync (for sv_sync_resume() in SunVox library);
34 - set (XX) or reset (YY) project options: 1 - no portamento on the first tick; 2 - no velocity slide on the first tick; (for compatibility with old tracker formats);
3C - copy track XX from from the pattern YY; for example, if XXYY = 0023, then the first track will be copied from the pattern named "23";
3D - write a random value to track YY; min value, max value and column must be in track 0, starting from line XX; see example "pat effect 3D random value"; (columns: 0 - NN; 1 - VV; 2 - MM; 3 - CC; 4 - EE; 5 - XX; 6 - YY; 7 - XXYY);
corrected Mute/Solo algorithm for modules;
OpenGL accelerated versions for Windows and Linux;
new options in sunvox_config.ini: controller group colors c_cgp0, c_cgp1, etc.;
new options in sunvox_config.ini: module layer colors c_layer0, c_layer1, c_layer2, etc.;
new options in sunvox_config.ini: c_pbtn, c_pbtn_op, c_pscroll, c_pateditor_level, c_pateditor_cursor, show_sel_btn, show_sbars, edit_mode;
new curves in curves/MultiSynth/curve3 for different equal temperament systems (for example, ET19 - 19 tones per octave);
new modules in the instruments/ and effects/ folders;
new examples (SunVox Compo 2021.02 winners): Logickin - Mech Haven, So_ingMachine - Some of our tracks cant be covered, kiberaver - electric dreams;
new examples: NightRadio - Afterglow, NightRadio - Winter Is Coming;
The .xm file I emailed you a couple of weeks ago is crashing v2.0 on Android.
(It was crashing beta2 and fixed in beta3).
I've not yet tested it on v2.0 desktop.
On Android 12, I've been testing out the capabilities of the new FMX module. Unfortunately I've encountered a bug.
If I play a sustained sine wave (all other operators muted), I get a clean signal. But if I add any kind of phase modulation (2 operator cascade, self modulation, or feedback) there will be a periodic clicking in the audio signal. The clicking happens slower or faster depending on the frequency of the note being higher or lower.
I feel like I ran into a similar issue when I wrote C code for my own FM synthesizer but I can't remember what the problem was.
CoryCulley wrote: ↑Mon Jan 24, 2022 3:48 am
On Android 12, I've been testing out the capabilities of the new FMX module. Unfortunately I've encountered a bug.
Already reported :(
The strangest thing is that this bug does not seem to show up on desktops.
Trying to fix it now...
a1matt wrote: ↑Mon Jan 24, 2022 2:08 am
The .xm file I emailed you a couple of weeks ago is crashing v2.0 on Android.
Hm, this is strange... Works fine on my Android device...
Do you have enough free RAM and space on the internal memory card?
I can open it fine now, apologies for wasting your time. I should have checked more thoroughly before posting.
(I have 21MB and 226MB versions of the file.
The 21MB version opens fine.
The 226MB crashes SunVox, so this does point to lack of resources on my device.)
CoryCulley wrote: ↑Mon Jan 24, 2022 3:48 am
On Android 12, I've been testing out the capabilities of the new FMX module. Unfortunately I've encountered a bug.
Already reported
The strangest thing is that this bug does not seem to show up on desktops.
Trying to fix it now...
That is indeed strange. I've tried changing FMX sample rate, device sample rate and buffer size, but the clicking does not seem to change. As I said, the frequency of the note and the frequency of the clicking are related. If I play a perfect fifth harmony, the clicking will actually create kind of a polyrhythm, it's just too perfect.
The problem seems to be related to the code involved in modulation. Things that come to mind are phase accumulator inaccuracies, buffer underrun, linear interpolation wraparound. I can only hear it when there's modulation and I haven't even tested the other modulation modes yet.
CoryCulley wrote: ↑Mon Jan 24, 2022 6:55 pm
Have you been able to reproduce this error?
Fortunately yes :)
This is due to incorrect conversion of variable types in modulation.
But I could not understand why it worked on desktop versions...
Anyway it is fixed in 2.0b - i will try to release it as soon as I fix another bug (WaveShaper noise) from the reports.
NightRadio wrote: ↑Mon Jan 24, 2022 7:50 pm
Fortunately yes
This is due to incorrect conversion of variable types in modulation.
But I could not understand why it worked on desktop versions...
Anyway it is fixed in 2.0b - i will try to release it as soon as I fix another bug (WaveShaper noise) from the reports.
Nice! I can imagine it has something to do with the compiler, but it could also be related to the CPU architectures. ARMV8 and x86_64 are very different in the low level world.
Congratulations on another stunning update. The new Delay Feedback control alone opens the world to a completely new sound-on-sound method of creating music (my preferred method). Woo!