Releases: anokta/barelymusician
barelymusician v0.4.1
Changes:
- Added new
Instrument
controls:- Basic one-pole filter with low-pass and high-pass options
- Pulse width for square wave oscillator
- Gain values are now in decibels
- Added
relwithdebuginfo
config option in build.py - Added benchmark tools with continuous benchmark CI
- Major performance optimizations in instrument processing (#144)
- Dropped multi-channel instrument output support (#145)
- Decreased the maximum voice count per instrument to 20
- Instrument gain now ramps up from silence to unity gain on initialization
- Bumped Unity project version to 2022.3.0f1
- Misc Unity project cleanup
Full Changelog: v0.4.0...v0.4.1
barelymusician v0.4.0
Changes:
- Added new barelycomposer.h header that includes the new
Arpeggiator
,Random
,Repeater
, andScale
APIs - Revamped CMake support (#134)
- Consolidated all instruments into a single
Instrument
(#140) - Refactored API entirely with better resource allocation (#133)
- Refactored note values to use pitch with tuning (#138)
- Reorganized folder structure with
include
andsrc
(#143) - Dropped
Effect
API - Dropped Bazel support
Full Changelog: v0.3.1...v0.4.0
barelymusician v0.3.1
Changes:
- Added
BeatsFromSeconds
andSecondsFromBeats
functions to theMusician
API - Added a simple
LfoEffect
for amplitude modulation - Added control slope support to all effects
- Added a new
PerformerDemo
in Unity that makes use ofPerformer
directly - More bug fixes and improvements
Full Changelog: v0.3.0...v0.3.1
barelymusician v0.3.0
Changes:
- Added Daisy platform support (#123)
- Added VS Code tasks
- Created reference components that make use of
Instrument
andPerformer
(#122):- An Arpeggiator component that can play instrument notes in sequence
- A Repeater component that can play instrument notes in a repeating sequence
- Refactored the API to use handles everywhere (#121)
- Refactored the custom effects and instruments to make them more easily extensible
- Revamped the Unity integration with the new API
- More bug fixes and improvements
Full Changelog: v0.2.0...v0.3.0
barelymusician v0.2.0
Changes:
- Added effects that can be attached to instruments (#119)
- Refactored the C++ API to use reference types (#118)
- Extended CMake support to include all examples (#117)
- Minor bug fixes and improvements
Full Changelog: v0.1.0...v0.2.0
barelymusician v0.1.0
This is the initial release of barelymusician! 🐰
barelymusician is a real-time music engine that is used to generate and perform musical sounds from scratch in a sample accurate way.
Supported platforms: Linux, OSX, Windows, Android, and a native Unity game engine plugin.
Features:
- A Musician class to manage the real-time music engine. The musician governs the global tempo for all musical components.
- An Instrument class to create and control musical instruments in real-time. Instruments can:
- Play notes with pitch and intensity.
- Modify their control values with an optional automation slope that is synced to the global tempo.
- Modify per-note control values in a similar way while playing a note.
- Set opaque data (which can be useful to pass audio sample data).
- Trigger callbacks for note and control change events.
- A Performer class to create and perform musical tasks in real-time. Performers can:
- Create recurring tasks to be triggered in a loop with modifiable properties (such as a metronome tick).
- Schedule one-off tasks to be triggered some time in the future represented in musical beats according to the global tempo.
- Start and stop their playback to trigger their tasks.
- Modify their position and other properties during playback.
- InstrumentDefinition and TaskDefinition structures to define custom instruments and tasks to be used in the music engine. In addition:
- Three pre-defined instrument types are implemented and included for reference, namely:
- An oscillator based polyphonic SynthInstrument with an ADSR envelope.
- A sample based polyphonic SamplerInstrument with an ADSR envelope.
- A sample based PercussionInstrument that can trigger percussion pads by note pitch.
- A Metronome component is implemented and included for reference.
- Three pre-defined instrument types are implemented and included for reference, namely:
- Bazel and CMake targets for multi-platform builds.
- A fully-featured Unity game engine integration with native plugins for each supported platform.
- Example code with scenes and binaries to demonstrate all the features above.
Limitations:
All features aside, there certainly are rough edges here and there throughout the project, although the core functionality is intact. This is especially true when it comes to ease of use, hence the 0.1.0 versioning. :)
That said, more things are yet to come to make use of the engine in more practical ways, which surely includes the adaptive music features from the legacy implementation, so it comes full circle.
See for reference: anokta/barelyMusicianLegacy
Full changelog: https://github.com/anokta/barelymusician/commits/v0.1.0