Skip to content

thenfour/WaveSabre

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

712 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Intro

Maj7 is a toolchain for writing size-optimized "executable music".

Maj7 is a fork of WaveSabre. It is a software synthesizer and effect library, with toolchain for size-optimized executable music.

Why use Maj7 over WaveSabre?

Maj7 has a slightly different intended use than WaveSabre. While WS is specifically for 64kb demos, Maj7 is intended to write 32kb Executable music. Here we care more about audio quality and musical expression in a standalone executable, with no intention of integrating into a 64kb demo. Therefore Maj7 fills more space than WS, but is intended to be just the right size for high quality music.

With Maj7 you can expect some advantages over WS:

  • Higher quality audio effects. Everything from the anti-aliased oscillators, phase-coherent crossovers, meticulously crafted compression algorithms, have been improved from the WaveSabre stock devices.
  • More conventional workflow. Param curves and ranges, modulation options, visual feedback, have all been tweaked in the favor of usability familiar to musicians working with NI Massive, FabFilter effects, etc.

And disadvantages:

  • Consumes more space (though still comfortably fits in a 32kb EXE music entry)

Usage

In general, the workflow is like this:

  1. Write a song in your DAW of choice using only the Maj7 VST plugins.
  2. Use Project Manager to convert to a .hpp file
  3. Drop in the hpp and build the executable music project.

Development

Please see our docs for prerequisites, building, etc

Questions?

It's quite robust and usable, however because it's a 1-man show, there's no announcements of fixes / breaking changes or anything. Feel free to contact tenfour for questions / whatever:

Size optimization

  • SizeBench is best.

notes:

  • enum class ... : uint8_t does not usually save space. code is spent on widening/narrowing args; storage padding is not that critical

msvcrt / build-msvcrt

  • the msvcrt project is a tiny shim that compensates for the fact that we are NODEFAULTLIB.
  • the build-msvcrt project generates a .lib from a .def so we can minimally link against the OS msvcrt.dll

About

fork of WaveSabre fixing some issues, adding ImGui VST editors

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • C++ 58.6%
  • C# 40.6%
  • Other 0.8%