Changelog for gb-synth-0.2.0.2
Changelog
0.2.0.2
- Change license from MIT to BSD-3-Clause.
Documentation
- Fix Envelope module documentation (decay/release described as "exponential" but implementation is linear).
- Add gb-vector as ecosystem companion in README.
Internal
- CI: cross-platform build matrix (Linux, macOS, Windows).
0.2.0.1
- Fix Haddock cross-references in Effects and Pattern modules.
- Fix README chord progression descriptions and missing Pattern import.
- Remove
-O2from library and test ghc-options (consumers set their own optimization).
0.2.0.0
New Modules
- GBSynth.SFX: 13 ready-to-use sound effect presets (laser, explosion, impact, alert, click, powerup, coin, jump, heal, defeat) plus pre-rendered drum samples (kickSample, snareSample, hihatSample). All built from synthesis primitives, no sample files.
- GBSynth.Chord: Programmatic chord construction.
Qualitytype (Major, Minor, Diminished, Augmented, Sus2, Sus4),chord/inversion/chordProgressionbuilders, and built-in progressions (pop1564, blues145, minorClassic). - GBSynth.Effects: Post-processing effects —
bitCrush,echo,fadeIn,fadeOut,reverseSignal,mix.
Bug Fixes
- Eliminate partial functions:
tail→drop 1in Oscillator and Synthesis,maximum/foldl1→ safefoldl'with empty list guards in Render.
Internal
- 109 pure tests (up from 60)
- Metadata: cabal-version 3.0, stability experimental, CHANGELOG.md
0.1.0.0
Initial release.
Synthesis Engine
- Oscillators: sine, square, saw, triangle, noise, pulse with configurable duty cycle
- ADSR envelope generator with attack, decay, sustain, release stages
- Instrument definition with oscillator type, envelope, and harmonics
- Multi-channel pattern sequencer with note events and rests
- Song structure: sections, tempo, time signature, instrument assignment
Rendering
- Pure PCM rendering pipeline: Song → sections → patterns → samples
- Multi-layer signal mixing with per-channel gain
- Signal normalization with configurable output level
- 16-bit mono PCM at 22050 Hz
WAV Export
- Native WAV file writer (RIFF/WAVE format)
- 16-bit signed PCM encoding
- No external audio dependencies