Skip to content

Releases: anokta/barelymusician

barelymusician v0.5.1

10 Feb 03:29
Compare
Choose a tag to compare

Changes:

  • Added Instrument Bit Crusher effect (#153)
  • Fixed Performer beat callbacks processing order
  • Fixed a potential Task update bug that could cause infinite loops
  • Fixed a potential Unity crash during shutdown

Full Changelog: v0.5.0...v0.5.1

barelymusician v0.5.0

21 Jan 04:37
d2e8c69
Compare
Choose a tag to compare

Changes:

  • Refactored the Task API (#147)
    • Added duration to Tasks with a process callback that can report the task's begin, end, and update states to the user.
    • Added a beat callback to Performer to report each beat back to the user.
    • Simplified Instrument note callbacks
    • Removed event types altogether to avoid unnecessary allocations
  • Refactored all C++ wrappers to be scoped types (WIP to use custom allocators via #126)

Full Changelog: v0.4.2...v0.5.0

barelymusician v0.4.2

26 Nov 04:39
Compare
Choose a tag to compare

Changes:

  • Added new Instrument controls (#146 )
    • Oscillator modes to select from mix, amplitude modulation, envelope follower, and ring modulation using the oscillator and sample player
    • Oscillator mix and pitch shift to control the contribution of each oscillator mode
    • Ability to pick a random slice to play when more than one sample data slices are set with the same note pitch

instrument_unity_v0 4 2

  • Converted all real types except the absolute time and beat position values to be single-precision floats (#114)
  • Fixed envelope attack not being used when a note is triggered on and off on the same frame
  • Changed random uniform integer draw maximum to be exclusive for consistency with the real functions

Full Changelog: v0.4.1...v0.4.2

barelymusician v0.4.1

17 Nov 06:47
Compare
Choose a tag to compare

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

01 Nov 04:46
Compare
Choose a tag to compare

Changes:

  • Added new barelycomposer.h header that includes the new Arpeggiator, Random, Repeater, and Scale 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 and src (#143)
  • Dropped Effect API
  • Dropped Bazel support

Full Changelog: v0.3.1...v0.4.0

barelymusician v0.3.1

18 Feb 23:27
Compare
Choose a tag to compare

Changes:

  • Added BeatsFromSeconds and SecondsFromBeats functions to the Musician API
  • Added a simple LfoEffect for amplitude modulation
  • Added control slope support to all effects
  • Added a new PerformerDemo in Unity that makes use of Performer directly
  • More bug fixes and improvements

Full Changelog: v0.3.0...v0.3.1

barelymusician v0.3.0

05 Jan 20:28
Compare
Choose a tag to compare

Changes:

  • Added Daisy platform support (#123)
  • Added VS Code tasks
  • Created reference components that make use of Instrument and Performer (#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

22 Apr 14:03
Compare
Choose a tag to compare

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

05 Mar 01:00
Compare
Choose a tag to compare

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:
    • A Metronome component is implemented and included for reference.
  • 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