-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[v2.0.0-SNAPSHOT] Useful semantic headers and refactored track normalization #22
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
… issues with 6|8 meter and the like
…in interpreters. Need to fix tests.
… bach.track-test. Temporarily disabled bach.track-test/compilation for quick deploy smoke test.
… Also renamed bach.track/compile-track to bach.track/compose.
… semantic headers and compose func
…o various bach.track funcs to elegantly handle divide by 0 situations (e.g. empty tracks). Allowed total-beat-units and total-pulse-beats headers to be provisioned (which fixed several tests).
… to coerce hiccup formatted notes (in bach.track/normalize-measures) as a vector
…malize-measures to ensure that resulting 'notes' are always a vector, preventing need for conditional type checks in integrators (breaking change)
…malize-measures are always a collection (vector). Also removed redundant wrapper 'atom' property from resulting notes (breaking change).
…on test for nested lists (should be disallowed for simplicity)
…ude semantic headers and normalize notes as a vector
…ions, and generally updated content to match new interface
…ures to more generic beat.items, in order to increase flexibility and applicability of bach (breaking change)
…binding nomenclature in bach.track/normalize-measures
… created useful def aliases in bach.track
…lexibility by making headers and elements generic, removing the previous limitation to Note, Scale, Chord, Meter, etc.
…ywords and headers work)
…admap and bumped version to 2.0.0-SNAPSHOT in code snippets
…string in bach.track/reduce-values
…r-measure to provisioned bach.track headers. Also fixed header parsing regression, ensuring label and kind are always strings.
…me/identifier bindings in bach.ast-test
…hat prevented single-character name bindings from being used
…sition-test to include new provisioned headers
…lize-measures variable declarations
…dation variable name binding test
…h.track/ms-per-beat (adds consistency with other aliases to reinforce domain semantics)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Major improvements and fixes to
bach.track
.Introduces several new headers (such as
total-ms-per-pulse-beat
,beat-unit
and more) to ease high-level interpretation and to reinforce domain semantics.Also optimizes the format of
bach.track/normalize-measures
to allow high-level interpretation to be more pragmatic and generic.The grammar/syntax was also updated to enable
bach
to be applied to any rhythm-based problem, instead of locking into concrete constructs such asNote
,Chord
, etc. More specifically, this allows headers and beat elements to use any name binding containing non-special chars.This syntax update does not subtract from semantics, as
Note
,Chord
,Scale
and the like are still reserved for their original use cases. This change simply allows users to be more free and to establish their own constructs and semantics to sync with rhythms.Using a
SNAPSHOT
version because the software is still considered pre-alpha and not production ready, however I need to be able to track breaking versions between various integration modules.Changes
lowest-beat
topulse-beat
throughout (breaking change)notes
toitems
in resultingbach.track/normalize-measures
beat elements (breaking change)items
(previously notes) are always returned as a collection (breaking change)atom
object in resultingitems
(breaking change)bach.track/compile-track
tobach.track/provision
and addedbach.track/compose
, a smart wrapper aroundprovision
(breaking change)headers
andkeywords
to be arbitrary strings of text containing non-special characters; only-
and_
are "special" chars allowed inname
bindings. (breaking change)@Time
header to@Meter
(breaking change)Future
durations
resulting frombach.track/normalize-measures
to be normalized to eitherbeat-unit
,beat, or
pulse-unit(currently locked into
pulse-unit`, since it's optimized for iteration)lists
andpairs
from being nested at any levelTickets
1.1.0-SNAPSHOT
)