```
atinysinth/waveform.c: In function ‘voice_wf_freq_to_period’:
atinysinth/waveform.c:107:33: error: result of ‘8000 << 4’ requires 18 bits to represent, but ‘int’ only has 16 bits [-Werror=shift-overflow=]
107 | return (((uint32_t)(synth_freq << PERIOD_FP_SCALE)) / freq);
```
- Added waveform generic API to create waveforms, and use period instead of frequency in waveform (avoid division on MCUs)
- Introduced 'def' struct in ADSR API for reuse
- Multi-track MML parser and compilation
- Added some samples from https://electronicmusic.fandom.com/wiki/Music_Macro_Language
- Added scale.mml for testing
For conniseurs of DDS frequency generation, we provide the option of
scaling the integer frequency so that frequency may be specified to
fractions of 1Hz. This is useful in musical applications where the
frequency of most notes is a non-integer value.