Programming LV2 Music Production Plugins From Scratch - 09 Waveform Synth in C++ 11
Channel: BMusic
Date: 2021-11-26

Add a waveform selection feature (sine, triangle, square, saw, noise) to our 
synth. And this in modern C++. But first, we have to update our previously
written code to C++11 too.

Topics:
* Enumerations in turtle using 
  * lv2:enumeration: https://lv2plug.in/ns/lv2core#enumeration
  * lv2:integer: https://lv2plug.in/ns/lv2core#integer
  * lv2:scalePoint: https://lv2plug.in/ns/lv2core#scalePoint
* Exceptions
  * The try catch block: https://en.cppreference.com/w/cpp/language/try_catch
  * std::invalid_argument: https://en.cppreference.com/w/cpp/error/invalid_argument
  * std::bad_alloc: https://en.cppreference.com/w/cpp/memory/new/bad_alloc
* Streams
  * std::cerr: https://en.cppreference.com/w/cpp/io/cerr
* C++11 type casting
  * static_cast: https://en.cppreference.com/w/cpp/language/static_cast
  * reinterpret_cast: https://en.cppreference.com/w/cpp/language/reinterpret_cast
* Standard template library containers
  * std::array: https://en.cppreference.com/w/cpp/container/array
* constexpr: https://en.cppreference.com/w/cpp/keyword/constexpr
* Utilities
  * std::pair: https://en.cppreference.com/w/cpp/utility/pair
* Templates: https://en.cppreference.com/w/cpp/language/templates
* Linear fader
* Overloading
* Waveform mathematics
* Random generator: https://en.cppreference.com/w/cpp/numeric/random
* Value distributions

Resource: https://github.com/sjaehn/lv2tutorial