strudel/packages/tonal
Jade (Rose) Rowland d198910a86 Publish
- @strudel/codemirror@1.2.7
 - @strudel/core@1.2.6
 - @strudel/csound@1.2.7
 - @strudel/draw@1.2.6
 - @strudel/embed@1.1.2
 - @strudel/gamepad@1.2.6
 - @strudel/hydra@1.2.6
 - @strudel/midi@1.2.7
 - @strudel/mini@1.2.6
 - mondolang@1.1.2
 - @strudel/mondo@1.1.6
 - @strudel/motion@1.2.6
 - @strudel/mqtt@1.2.6
 - @strudel/osc@1.3.1
 - @strudel/reference@1.2.2
 - @strudel/repl@1.2.8
 - @strudel/sampler@0.2.4
 - @strudel/serial@1.2.6
 - @strudel/soundfonts@1.2.7
 - superdough@1.2.7
 - supradough@1.2.5
 - @strudel/tonal@1.2.6
 - @strudel/transpiler@1.2.6
 - vite-plugin-bundle-audioworklet@0.1.2
 - @strudel/web@1.2.7
 - @strudel/webaudio@1.2.7
 - @strudel/xen@1.2.6
2026-01-17 15:26:28 -08:00
..
test Don't tag when scale fails, allow mixed sharps and flats, simplify scale function 2025-10-16 16:26:33 -05:00
index.mjs fix: tonal import in autocomplete + add tonal to codemirror package dependencies 2025-10-18 08:49:31 +02:00
ireal.mjs fix: ^7 voicings 2023-07-23 21:18:18 +02:00
package.json Publish 2026-01-17 15:26:28 -08:00
README.md the big rename: @strudel.cycles/* -> @strudel/* 2024-01-18 09:54:37 +01:00
tonal.mjs Use errorLogger for query and tonal errors 2025-11-24 19:05:42 -06:00
tonleiter.mjs Working version with note names 2025-08-22 11:25:13 -05:00
vite.config.js remove cjs builds 2024-02-08 12:19:11 +01:00
voicings.mjs github > strudel 2025-06-12 14:36:45 +01:00

@strudel/tonal

This package adds tonal / harmonic functions to strudel Patterns.

Install

npm i @strudel/tonal --save

Example

import { sequence } from '@strudel/core';
import '@strudel/tonal';

const pattern = sequence(0, [1, 2]).scale('C major');

const events = pattern.firstCycle().map((e) => e.show());

yields:

(0/1 -> 1/2, 0/1 -> 1/2, C3)
(1/2 -> 3/4, 1/2 -> 3/4, D3)
(3/4 -> 1/1, 3/4 -> 1/1, E3)

play with @strudel/tonal codesandbox

Tonal API

See "Tonal API" in the Strudel Tutorial