New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@resequence/patterns-utils

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@resequence/patterns-utils

Shared utilities for MIDI rendering, validation, built-in tunings, and keyframe/slide evaluation. Used across pattern implementations and the rendering pipeline.

latest
Source
npmnpm
Version
0.1.1
Version published
Maintainers
1
Created
Source

@resequence/patterns-utils

Shared utilities for MIDI rendering, validation, built-in tunings, and keyframe/slide evaluation. Used across pattern implementations and the rendering pipeline.

npm install @resequence/patterns-utils

Also available as @resequence/patterns/utils or resequence/patterns/utils when using the full library or bridge package.

MIDI Rendering

Render a pattern tree to Standard MIDI Files:

import { renderMidi, renderAllEvents } from "@resequence/patterns-utils";

const midiFiles = renderMidi(song, { ppq: 480 });
// Map<string, Uint8Array> — one MIDI file per port

const events = renderAllEvents(song);
// Event[] — all events unfiltered (used by the Router for the complete event stream)

The renderer handles pitch bend allocation across MIDI channels (avoiding conflicts with simultaneous bends), CC events, lyric meta events, tempo changes, time signatures, and markers.

Low-Level Encoding

import { encodeMidi } from "@resequence/patterns-utils";
import type { MidiNote, MidiPitchBend } from "@resequence/patterns-utils";

Tempo Map

Build tempo-aware time conversion from pattern events:

import { collectMetadata, buildTempoMap, beatsToSeconds, secondsToBeats } from "@resequence/patterns-utils";
import type { TempoMap, CollectedMetadata, MarkerPoint, RegionPoint, TempoPoint, TimeSignaturePoint } from "@resequence/patterns-utils";

const metadata = collectMetadata(events);
// metadata.tempoMap, metadata.markers, metadata.timeSignatures, metadata.regions

const seconds = beatsToSeconds(beat, tempoMap);
const beat = secondsToBeats(seconds, tempoMap);

Validation

import { validate } from "@resequence/patterns-utils";
import type { ValidationWarning } from "@resequence/patterns-utils";

const warnings = validate(song);
// Reports orphaned notes — notes without port routing in their ancestor chain

Built-in Tunings

All tuning presets except Chromatic (which is in @resequence/patterns-core as the default). Each is a pre-configured tuning created via core's createTuning() or createIndexTuning():

import { Just, Pythagorean, Meantone, Werckmeister, A432, Midi } from "@resequence/patterns-utils";
import { tuning } from "@resequence/patterns-core";

tuning(pattern, Just.config);
TuningDescription
Midi12-TET A=440, octave range [-1, 9]
A43212-TET A=432
QuarterTone24 steps per octave
Just5-limit just intonation
Pythagorean3-limit frequency ratios
MeantoneQuarter-comma meantone
WerckmeisterHistorical well-temperament
Pelog7-step gamelan tuning
Slendro5-step gamelan tuning
BohlenPierce13 steps per tritave (octave ratio 3)
Tet19 / Tet31 / Tet53Equal temperaments with 19/31/53 steps
IInteger-index-based tuning for programmatic access

Chord and Scale Utilities

import { CD, CS } from "@resequence/patterns-utils";
import type { ScaleAccessor } from "@resequence/patterns-utils";

CD("Cm7", 2);               // chord — returns a layer of notes
CD("Gmaj9", 4);

const scale = CS("C4 minor");
scale(0);                    // C4
scale(2);                    // Eb4

Keyframe Evaluation

import { applyCurve, evaluateAt } from "@resequence/patterns-utils";

applyCurve(0.5, "exponential");    // apply curve shaping to a normalized value
evaluateAt(keyframes, beat);       // evaluate a keyframe array at a beat position

Slide Utilities

import { evaluateSlide, evaluateSlideCents, mergeSlides } from "@resequence/patterns-utils";

Evaluate pitch slides at tick intervals for pitch bend automation. Used by the MIDI rendering pipeline and slide modifier.

FAQs

Package last updated on 29 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts