chore: version packages - #49
Merged
Merged
Conversation
This file contains hidden or 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
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.
Releases
musictheoryjs@3.2.0
Minor Changes
9b4ce96: A sequence module with drums and tempo maps, MusicXML and rhythm-aware ABC
import, and the analysis deep cuts: Forte set classes, counterpoint
checking, and twelve-tone rows.
musictheoryjs/sequence— notes placed in time. Streams are timed inquarter-note beats and convert exactly to MIDI ticks, notation scores, or
seconds:
melody, with rests and cyclingdurations) or from rhythm patterns (
patternMelody), combined in timewith
concatStreams,mergeStreams,shiftStream,loopStream,transposeStream.arpeggiate(named contours or explicit index patterns, octaveextension) and
strum(spread, direction, voices releasing together).compProgression— Roman numerals in a key to voice-led, rhythm-placedevents in one call;
compChordsfor chord lists (withN.C.silences);basslinewith roots, root–fifth, and a deterministic walking style withchromatic approach tones.
swingas a piecewise-linear warp (inner subdivisions bendproportionally), meter-aware
accent(correct in irregular meters),reproducible
humanize,gate, andrampVelocity— crescendos anddiminuendos as linear velocity ramps over a beat span.
sliceStream— a time window cut from a stream, truncated at the edgesand re-zeroed so it loops and concatenates (or kept in place with
keepPosition).retrograde,invertMelody(spelled chromatic mirror,or tonal within a scale),
augment, and the classicaldiatonicSequence(chromatic neighbours ride their anchor tone).
songFormexpands "AABA" (or named sections) over parts into onetimeline with section boundaries.
sequenceToMidi/midiToSequence(beats ↔ ticks, exact),sequenceToScore(chords grouped, gaps to rests, triplets kept — refuseswhat a score cannot express),
sequenceSeconds.GM_DRUMSnames the General MIDI percussion notes, anddrumPatternlays drum-machine grids ("x..X"strings with accents, orany rhythm pattern) onto a stream ready for channel-9 MIDI.
sequenceSecondsandsequenceToMiditake beat/BPM points(each tempo holding until the next), and
midiTempoMapreads a file'stempo changes back in beats — so a ritardando survives the whole trip.
MusicXML import —
fromMusicXMLin the notation module readsscore-partwiseandscore-timewisedocuments with a dependency-free XMLreader: spelled pitches, chords, ties merged across barlines, multiple
voices via backup/forward, multiple parts, and title/key/time/tempo. The
result is a beat-timed stream per part, ready for the sequence, analysis,
and MIDI layers.
ABC import reads rhythm —
fromABCused to skip durations; now thetune's body also comes back as the same kind of beat-timed
stream:duration factors against the unit note length (
L:, or the standard'sdefault from the meter), broken rhythms (
>,<), rests as gaps,(p:q:rtuplet groups, chords stacked at one onset, ties merged intosingle events (keeping their accidental across the barline), and the
Q:field as
tempoin quarter-note BPM.notesstill lists every writtenpitch, so existing callers see what they saw before.
MIDI tempo maps — a parsed file now keeps every FF 51 tempo event
(
tempoMap, in tick order),writeMidiwrites them all back, andmidiToNoteStreamintegrates over them so seconds stay honest throughtempo changes.
Set theory completed —
pcsetInvert,pcsetComplement,pcsetNormalForm,pcsetPrimeForm(Rahn's convention), andpcsetIntervalVectorjoin the mask primitives;forteName,fortePrimeForm, andforteZMatecover the full Forte catalog — all 224set classes, validated structurally in tests.
Counterpoint checking —
checkCounterpointexamines two lines againstthe classical rules: parallel fifths and octaves (antiparallels included),
direct fifths and octaves, voice crossing, and voice overlap, each issue
timed and pinned to its notes.
Twelve-tone rows —
toneRow,rowTransform(all 48 P/I/R/RI forms),rowMatrix, andidentifyRowFormfor naming which form a passage states.Also: passing a progression where a key belongs
(
parseProgression("ii7 V7 I", "C major")) now names the real mistake —the arguments are swapped — instead of only "invalid key".
Patch Changes
9b4ce96: Fix the exported
VERSIONconstant, which reported"3.0.0"on 3.0.1, 3.0.2,and 3.1.0. It is a literal so the bundles stay self-contained, and nothing kept
it in step with
package.json.Two changes so it cannot drift again: the
versionscript now runsscripts/sync-version.tsimmediately after Changesets bumpspackage.json, anda test asserts the two match — so a release that skips the sync fails CI instead
of shipping a wrong version string.