forked from logicomacorp/WaveSabre
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
adding WSBR0001 header to song chunk, removing some useless header fr…
…om Maj7 chunk. some code cleanup. The primary justification for the WSBR0001 header is issue #4. Any external players that want to detect/read a WS song blob can now have a method of doing so, with room for format versioning. So it's really not used within the WS codebase, but useful for players to understand the chunk. Nothing in the WS code is actually reading/parsing/reacting to this value. I have chosen to use a character based version ("0001" instead of uint8_t[]{0,0,0,1}), because it can be read in a text editor easily, and is unlikely to lead to problems. If versions do eventually exceed this, it can be adapted (hex -> other format -> extend the header, etc.). Apologies for yet another megacommit littered with changes of various relevance.
- Loading branch information
Showing
8 changed files
with
6,595 additions
and
8,615 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
|
||
|
||
|
||
tenfour's changes for revision 2023 | ||
----------------------------------- | ||
|
||
* project mgr | ||
* more info shown in project mgr (compressed size, and breakdown by midi lane / device / track) | ||
* ability to copy project info as text | ||
* ability to copy complete render .hpp file | ||
* warnings for unsupported features | ||
* selectable options for song bounds | ||
* Pitchbend and midi CC automation is now supported. | ||
* wavesabre tag now marks the beginning of a song chunk | ||
* EXE music project | ||
* VST improvements | ||
* Now using ImGui for its flexibility | ||
* Ability to type in values | ||
* Shift+drag = fine adjust | ||
* Smasher now shows level meters for input, output, compression, and threshold. | ||
* You can see now how compressible a device chunk will be. | ||
* VST chunks are now different than minsize chunks; this means VSTs are stored as text-based JSON key-value pairs therefore: | ||
* can be copied/pasted from clipboard, or saved/loaded from disk | ||
* will remain compatible no matter how the minsize serialization format evolves. | ||
* New devices | ||
* Maj7 synthesizer (this is the biggest change IMO) | ||
* Width device for stereo field adjustments including narrowing of bass freqs | ||
* Scissor now supports tanh saturation | ||
* Size optimizations | ||
* MIDI LANES | ||
* Track names can now have directives; the first directive is "#fixedvelocity" where velocities are left out of the chunk. | ||
* De-interleaving event / midi note / velocity, in order to put like data with like. | ||
* Time values now stored as var-length ints instead of int32. | ||
* PARAM chunks | ||
* Now storing params as diff of default value | ||
* optimization stage lets the device set values explicitly to 0 when they're not used | ||
* params are now stored as 16-bit signed values which are slightly more compressible than floats. | ||
* defaults now stored in code as a single blob | ||
* CODE SIZE | ||
* Biquad filter / other hand-optimizations | ||
* Using memset to set arrays of floats to 0 | ||
* Using a new method of accessing params which reduces amount of code (a few kb, compressed!), and unifies a lot of params (ParamAccessor) | ||
* Rendering speed optimizations | ||
* Deep tracks now prioritized for processing first | ||
* Proper non-busy locking in the node graph runner (rewrite of graph runner) | ||
|
||
|
||
Maj7 | ||
---- | ||
|
||
A polyphonic megasynthesizer specifically designed for 32kb executable music. | ||
|
||
* 4 fully high quality (polyblep bandlimiting) oscillators | ||
* Hard-sync and FM supported on all oscillators | ||
* 4 samplers which can use loaded samples or GM.DLS, each with key zone (i.e. drum kit support) | ||
* 4 LFOs, including noise with adjustable HP and LP | ||
* 10 modulation envelopes (DAHDSR, one-shot, note retrig, each stage with adjustable curve) | ||
* 40 user-configurable modulations | ||
* Each with range, curve, mapping settings | ||
* Each with a side-chain (think Serum) which attenuates the mod strength based on another mod source (e.g. modulate env -> volume, and side-chain with velocity) | ||
* Full 4op FM matrix | ||
* 2 stereo filters available, with key tracking frequency support | ||
* 7 macro knobs (think NI Massive) which can be used as modulation sources | ||
* It's fairly performant, but there are quality settings for big projects | ||
|
||
So this is a LOT of features, and therefore it's a lot of code. Something like 9kb of code, compressed. On the other hand it replaces at least 4 existing WaveSabre devices. | ||
|
||
techniques | ||
|
||
Wish list | ||
--------- | ||
|
||
* pitch modulation in delay plugin | ||
* tests | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.