mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-11 05:38:34 +00:00
add run + test + docs
This commit is contained in:
parent
77e0237148
commit
468ccc6288
@ -114,6 +114,14 @@ const timeToRands = (t, n) => timeToRandsPrime(timeToIntSeed(t), n);
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* A discrete pattern of numbers from 0 to n-1
|
||||
* @example
|
||||
* run(4).scale('C4 major').note()
|
||||
* // "0 1 2 3".scale('C4 major').note()
|
||||
*/
|
||||
export const run = (n) => saw.range(0, n).floor().segment(n);
|
||||
|
||||
/**
|
||||
* A continuous pattern of random numbers, between 0 and 1.
|
||||
*
|
||||
|
||||
@ -44,6 +44,7 @@ import {
|
||||
ply,
|
||||
rev,
|
||||
time,
|
||||
run,
|
||||
} from '../index.mjs';
|
||||
|
||||
import { steady } from '../signal.mjs';
|
||||
@ -908,6 +909,11 @@ describe('Pattern', () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
describe('run', () => {
|
||||
it('Can run', () => {
|
||||
expect(run(4).firstCycle()).toStrictEqual(sequence(0, 1, 2, 3).firstCycle());
|
||||
});
|
||||
});
|
||||
describe('linger', () => {
|
||||
it('Can linger on the first quarter of a cycle', () => {
|
||||
expect(sequence(0, 1, 2, 3, 4, 5, 6, 7).linger(0.25).firstCycle()).toStrictEqual(
|
||||
|
||||
@ -3118,6 +3118,27 @@ exports[`runs examples > example "round" example index 0 1`] = `
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`runs examples > example "run" example index 0 1`] = `
|
||||
[
|
||||
"[ 0/1 → 1/4 | note:C4 ]",
|
||||
"[ 1/4 → 1/2 | note:D4 ]",
|
||||
"[ 1/2 → 3/4 | note:E4 ]",
|
||||
"[ 3/4 → 1/1 | note:F4 ]",
|
||||
"[ 1/1 → 5/4 | note:C4 ]",
|
||||
"[ 5/4 → 3/2 | note:D4 ]",
|
||||
"[ 3/2 → 7/4 | note:E4 ]",
|
||||
"[ 7/4 → 2/1 | note:F4 ]",
|
||||
"[ 2/1 → 9/4 | note:C4 ]",
|
||||
"[ 9/4 → 5/2 | note:D4 ]",
|
||||
"[ 5/2 → 11/4 | note:E4 ]",
|
||||
"[ 11/4 → 3/1 | note:F4 ]",
|
||||
"[ 3/1 → 13/4 | note:C4 ]",
|
||||
"[ 13/4 → 7/2 | note:D4 ]",
|
||||
"[ 7/2 → 15/4 | note:E4 ]",
|
||||
"[ 15/4 → 4/1 | note:F4 ]",
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`runs examples > example "s" example index 0 1`] = `
|
||||
[
|
||||
"[ 0/1 → 1/2 | s:bd ]",
|
||||
|
||||
@ -4,7 +4,7 @@ import { MiniRepl } from './MiniRepl';
|
||||
|
||||
const getTag = (title, item) => item.tags?.find((t) => t.title === title)?.text;
|
||||
|
||||
export function JsDoc({ name, h = 3, hideDescription }) {
|
||||
export function JsDoc({ name, h = 3, hideDescription, punchcard, canvasHeight }) {
|
||||
const item = docs[name];
|
||||
if (!item) {
|
||||
console.warn('Not found: ' + name);
|
||||
@ -40,7 +40,7 @@ export function JsDoc({ name, h = 3, hideDescription }) {
|
||||
{item.examples?.length ? (
|
||||
<div className="space-y-2">
|
||||
{item.examples?.map((example, k) => (
|
||||
<MiniRepl tune={example} key={k} />
|
||||
<MiniRepl tune={example} key={k} {...{ punchcard, canvasHeight }} />
|
||||
))}
|
||||
</div>
|
||||
) : (
|
||||
|
||||
@ -61,3 +61,7 @@ As a chained function:
|
||||
## silence
|
||||
|
||||
<JsDoc client:idle name="silence" h={0} />
|
||||
|
||||
## run
|
||||
|
||||
<JsDoc client:idle name="run" h={0} punchcard />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user