dn-m/notationmodel
The `NotationModel` package contains modules for the purposes of defining a model of musical notations.
Modules
SpelledPitch
The SpelledPitch module exposes structures for describing abstract pitches (e.g., what you get if you press a key on a MIDI keyboard) with letter names and accidentals. This is done in a progressively-disclosed and type-safe manner: it is easy to describe common pitch scenarios, linearly more difficult to describe more-rare pitch scenarios, and it is impossible to describe logically-invalid pitch scenarios.
The Pitch.Spelling structure provides a model of the Helmholtz-Ellis notation system. This notation system scales elegantly from the Western common practice twelve-note equal division of the octave tuning system to that of high-limit just intonation. This system is represented in the SMuFL specification, making a mapping of these structures into a rendering context as seamless as possible.
SpelledRhythm
The SpelledRhythm module defines models of beams, ties, and dots.
PlotModel
Defines a model for positioning values onto two-dimensional plots.
StaffModel
Extends the PlotModel, incorporating the concept of clefs, noteheads, accidentals, etc.
Development
Work on this package requires Swift 4.2.
Build instructions
Clone the repo.
git clone https://github.com/dn-m/NotationModelDive inside.
cd NotationModelAsk Swift Package Manager to update dependencies (all are dn-m).
swift package updateCompiles code and runs tests in terminal.
swift testAsk Swift Package Manager to generate a nice Xcode project.
swift package generate-xcodeprojOpen it up.
open NotationModel.xcodeproj/The NotationModel package contains several modules:
Package Metadata
Repository: dn-m/notationmodel
Default branch: master
README: README.md