Skip to content

Releases: 1amageek/SwiftMusic

SwiftMusic 0.5.1 (Preview)

Pre-release

Choose a tag to compare

@1amageek 1amageek released this 11 Sep 12:28

SwiftMusic 0.5.1 Preview improves compilation performance and correctness while preserving the public API.

  • Reuses bounded pattern syntax within each compilation, preserving exact UTF-8 diagnostic offsets.
  • Fixes reducible overflow in musical-time addition.
  • Organizes implementation sources by responsibility.

Requires Swift 6.4. The 208 Release tests passed on macOS with Apple silicon; the unchanged implementation also passed the prior Debug suite. This release contains the SwiftMusic library; synthesis rendering and hardware output remain MusicPlaygournd responsibilities.

SwiftMusic 0.5.0 (Preview)

Pre-release

Choose a tag to compare

@1amageek 1amageek released this 09 Sep 23:19

Typed sound composition

SwiftMusic 0.5.0 preserves the concrete structure of declarative sounds with TupleSound, EmptySound, ConditionalSound, optional sounds and ArraySound. if, if let, switch, availability checks and finite for loops work through SoundBuilder.

Use SoundGroup<Content> for explicit parallel grouping and shared modifier scope, or AnySound for an explicit type-erasure boundary. Track syntax and compiled event/render-plan APIs remain unchanged. SwiftMusic does not depend on SwiftUI.

Migration

Use body: some Sound for reusable declarations. Explicit references to the former concrete SoundGroup must become SoundGroup<Content> or some Sound; builder-taking APIs should accept generic Content: Sound.

Requirements and verification

  • Swift 6.4; package minimum macOS 14.
  • Verified on macOS 27 with Apple silicon.
  • All 205 SwiftMusic tests passed.
  • MusicPlayground compiled against this implementation; 7 host control/rendering/metadata tests passed.

This is a Preview release. Public APIs may change.

SwiftMusic 0.4.0 (Preview)

Pre-release

Choose a tag to compare

@1amageek 1amageek released this 09 Sep 11:46

SwiftMusic 0.4.0 — Preview

Declare envelopes, unison and ducking directly inside body, without try!.

  • Nonthrowing scalar overloads for envelope, filterEnvelope, pitchEnvelope, unison and duck.
  • Invalid arguments are validated during compilation with source locations.
  • Existing typed initializers and successful compiled event semantics remain unchanged.
  • SwiftMusic remains independent of SwiftUI; rendering and playback belong to the host.

Requires Swift 6.4. Verified on macOS with 202 passing Swift Testing checks. This is a preview release; APIs may change.

SwiftMusic 0.3.0 (Preview)

Pre-release

Choose a tag to compare

@1amageek 1amageek released this 09 Sep 07:05

SwiftMusic 0.3.0 Preview adds declaration-local @State without a SwiftUI dependency. State is main-actor observable, shared by copies of a music value, and independent for new instances.

The README has been rewritten with runnable composition and state examples. MusicPlaygournd is moving to its own repository.

Validation: 199 Swift Testing tests passed on macOS 27 arm64 with Swift 6.4.2-dev (2026-09-04). A fresh URL-only consumer pinned to 0.3.0 built and ran both README examples, including changing the compiled rhythm from 2 to 5 events.

Requires Swift tools 6.4; macOS 14 deployment target, with older macOS runtime behavior unverified. Preview APIs may change. SwiftMusic describes and compiles music; audio rendering is the host's responsibility.

SwiftMusic 0.2.0 (Preview)

Pre-release

Choose a tag to compare

@1amageek 1amageek released this 08 Sep 13:31
  • Extended the immutable Sound/Music compiler with bounded rhythm, note, gain, pan, pitch, cutoff, envelope and sample-selection patterns. Patterns support bracket subdivisions, cycle alternatives, leaf repetition and ordered fast, slow, phase, reversed and repeated transforms with checked rational rates and typed UTF-8 diagnostics.
  • Added typed musical time, tempo, pitch, frequency, decibel, scale, key, chord, voicing, arpeggio, legato, portamento, unison, automation, envelope, probability, humanization, Euclidean rhythm, swing, ratchet and periodic-rhythm values.
  • Added sample descriptors for named, absolute-file and validated sample-bank sources, plus source traversal for regions, selection, slicing, chopping, granular playback, stretching, reversal and playback-rate changes.
  • Added oscillator descriptors for band-limited saw, pulse, frequency modulation, deterministic colored noise and wavetable sources while retaining the existing basic waveforms.
  • Added ordered source, expression, filter, modulation, effect, mix and routing modifiers, including typed filter/chorus/flanger/phaser factories, tremolo, vibrato, ducking, sends, outputs, mute, voice policy and choke groups.
  • Added MainActor performance-model injection with @Performance(Model.self), .performance(model), optional PerformanceEntry factories and PerformanceObservationSession. PerformanceObservationSession.prepareDetailed preserves located compiler diagnostics after one tracked body evaluation.
  • Added optional typed performance controls for finite numbers, one BPM role and normalized SpatialPosition XY/depth values. Complete control-set validation rejects malformed IDs, domains, values, duplicate key paths and multiple BPM roles before mutation.
  • Kept revision-safe live preparation explicit through LiveMusicUpdate and LiveMusicState: stale completions are rejected, failures retain the adopted plan, and adoption remains a host-selected boundary operation.

Compatibility and verification

  • Music.body and Music compiler entry points are MainActor-isolated; Sound and compiled values remain Sendable. SwiftMusic has no SwiftUI dependency.
  • Requires Swift tools 6.4; package deployment target macOS 14. All 198 library tests passed on macOS 27 arm64 with Swift 6.4.2-dev (2026-09-04, compiler d2e983b81b18217). Runtime compatibility on macOS 14, Embedded Swift and WASM is not claimed.
  • This release covers the SwiftMusic library product. MusicPlaygournd is a separate native host under development; remaining editor layout and full UI acceptance are not represented as complete. Audio rendering and hardware I/O remain host responsibilities.
  • Prerelease APIs may change.

SwiftMusic 0.1.0 (Preview)

Pre-release

Choose a tag to compare

@1amageek 1amageek released this 07 Sep 09:21

Changelog

0.1.0 (Preview) — 2026-09-07

  • Preview release of the declarative Sound and Music DSL with immutable beat events and render plans.
  • Includes six modifier categories (rhythm, pitch and harmony, expression, source settings, audio effects, and mix and routing), rhythm and note patterns, and revision-safe live plan preparation and adoption through LiveMusicState.
  • Verified by the native Swift 6.4 Debug and Release suites (30 tests) and an external client using the README flow.
  • This preview makes no claims for DSP, audio playback, the MusicPlaygournd Editor, or WASM support.