mirror of
https://codeberg.org/uzu/strudel
synced 2026-07-25 15:06:05 -04:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f44a96a5ce | |||
| b94a686394 | |||
| 728552b669 | |||
| 8b427bc1dd | |||
| ae47d767ce | |||
| e60ecba393 | |||
| f0d49e0e22 | |||
| a3947d1ccf | |||
| 6c0d550b6b | |||
| cf12e3e1d8 |
@@ -1865,12 +1865,12 @@ export const { nudge } = registerControl('nudge');
|
|||||||
* Sets the default octave of a synth.
|
* Sets the default octave of a synth.
|
||||||
*
|
*
|
||||||
* @name octave
|
* @name octave
|
||||||
|
* @synonyms oct
|
||||||
* @param {number | Pattern} octave octave number
|
* @param {number | Pattern} octave octave number
|
||||||
* @example
|
* @example
|
||||||
* n("0,4,7").s('supersquare').octave("<3 4 5 6>").osc()
|
* n("0,4,7").scale("F:minor").s('supersaw').octave("<0 1 2 3>")
|
||||||
* @superDirtOnly
|
|
||||||
*/
|
*/
|
||||||
export const { octave } = registerControl('octave');
|
export const { octave, oct } = registerControl('octave', 'oct');
|
||||||
|
|
||||||
// ['ophatdecay'],
|
// ['ophatdecay'],
|
||||||
// TODO: example
|
// TODO: example
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import {
|
|||||||
stringifyValues,
|
stringifyValues,
|
||||||
} from './util.mjs';
|
} from './util.mjs';
|
||||||
import drawLine from './drawLine.mjs';
|
import drawLine from './drawLine.mjs';
|
||||||
import { errorLogger, logger } from './logger.mjs';
|
import { logger } from './logger.mjs';
|
||||||
|
|
||||||
let stringParser;
|
let stringParser;
|
||||||
|
|
||||||
@@ -414,7 +414,7 @@ export class Pattern {
|
|||||||
try {
|
try {
|
||||||
return this.query(new State(new TimeSpan(begin, end), controls));
|
return this.query(new State(new TimeSpan(begin, end), controls));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorLogger(err, 'query');
|
logger(`[query]: ${err.message}`, 'error');
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -540,7 +540,7 @@ export const getDistortion = (distort, postgain, algorithm) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getFrequencyFromValue = (value, defaultNote = 36) => {
|
export const getFrequencyFromValue = (value, defaultNote = 36) => {
|
||||||
let { note, freq } = value;
|
let { note, freq, octave = 0 } = value;
|
||||||
note = note || defaultNote;
|
note = note || defaultNote;
|
||||||
if (typeof note === 'string') {
|
if (typeof note === 'string') {
|
||||||
note = noteToMidi(note); // e.g. c3 => 48
|
note = noteToMidi(note); // e.g. c3 => 48
|
||||||
@@ -549,7 +549,7 @@ export const getFrequencyFromValue = (value, defaultNote = 36) => {
|
|||||||
if (!freq && typeof note === 'number') {
|
if (!freq && typeof note === 'number') {
|
||||||
freq = midiToFreq(note); // + 48);
|
freq = midiToFreq(note); // + 48);
|
||||||
}
|
}
|
||||||
|
freq *= Math.pow(2, octave);
|
||||||
return Number(freq);
|
return Number(freq);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -668,6 +668,7 @@ export const superdough = async (value, t, hapDuration, cps = 0.5, cycle = 0.5)
|
|||||||
curve: 1.5,
|
curve: 1.5,
|
||||||
});
|
});
|
||||||
lfo.connect(amGain.gain);
|
lfo.connect(amGain.gain);
|
||||||
|
audioNodes.push(lfo);
|
||||||
chain.push(amGain);
|
chain.push(amGain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,16 +5,7 @@ This program is free software: you can redistribute it and/or modify it under th
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Note, Interval, Scale } from '@tonaljs/tonal';
|
import { Note, Interval, Scale } from '@tonaljs/tonal';
|
||||||
import {
|
import { register, _mod, logger, isNote, noteToMidi, removeUndefineds, getAccidentalsOffset } from '@strudel/core';
|
||||||
_mod,
|
|
||||||
errorLogger,
|
|
||||||
getAccidentalsOffset,
|
|
||||||
isNote,
|
|
||||||
logger,
|
|
||||||
noteToMidi,
|
|
||||||
register,
|
|
||||||
removeUndefineds,
|
|
||||||
} from '@strudel/core';
|
|
||||||
import { stepInNamedScale, nearestNumberIndex } from './tonleiter.mjs';
|
import { stepInNamedScale, nearestNumberIndex } from './tonleiter.mjs';
|
||||||
|
|
||||||
const octavesInterval = (octaves) => (octaves <= 0 ? -1 : 1) + octaves * 7 + 'P';
|
const octavesInterval = (octaves) => (octaves <= 0 ? -1 : 1) + octaves * 7 + 'P';
|
||||||
@@ -303,7 +294,7 @@ export const scale = register(
|
|||||||
}
|
}
|
||||||
if (offset != 0) scaleNote = Note.transpose(scaleNote, Interval.fromSemitones(offset));
|
if (offset != 0) scaleNote = Note.transpose(scaleNote, Interval.fromSemitones(offset));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
errorLogger(err, 'tonal');
|
logger(`[tonal] ${err.message}`, 'error');
|
||||||
return; // will be removed
|
return; // will be removed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7302,18 +7302,18 @@ exports[`runs examples > example "nrpv" example index 0 1`] = `
|
|||||||
|
|
||||||
exports[`runs examples > example "octave" example index 0 1`] = `
|
exports[`runs examples > example "octave" example index 0 1`] = `
|
||||||
[
|
[
|
||||||
"[ 0/1 → 1/1 | n:0 s:supersquare octave:3 ]",
|
"[ 0/1 → 1/1 | note:F3 s:supersaw octave:0 ]",
|
||||||
"[ 0/1 → 1/1 | n:4 s:supersquare octave:3 ]",
|
"[ 0/1 → 1/1 | note:C4 s:supersaw octave:0 ]",
|
||||||
"[ 0/1 → 1/1 | n:7 s:supersquare octave:3 ]",
|
"[ 0/1 → 1/1 | note:F4 s:supersaw octave:0 ]",
|
||||||
"[ 1/1 → 2/1 | n:0 s:supersquare octave:4 ]",
|
"[ 1/1 → 2/1 | note:F3 s:supersaw octave:1 ]",
|
||||||
"[ 1/1 → 2/1 | n:4 s:supersquare octave:4 ]",
|
"[ 1/1 → 2/1 | note:C4 s:supersaw octave:1 ]",
|
||||||
"[ 1/1 → 2/1 | n:7 s:supersquare octave:4 ]",
|
"[ 1/1 → 2/1 | note:F4 s:supersaw octave:1 ]",
|
||||||
"[ 2/1 → 3/1 | n:0 s:supersquare octave:5 ]",
|
"[ 2/1 → 3/1 | note:F3 s:supersaw octave:2 ]",
|
||||||
"[ 2/1 → 3/1 | n:4 s:supersquare octave:5 ]",
|
"[ 2/1 → 3/1 | note:C4 s:supersaw octave:2 ]",
|
||||||
"[ 2/1 → 3/1 | n:7 s:supersquare octave:5 ]",
|
"[ 2/1 → 3/1 | note:F4 s:supersaw octave:2 ]",
|
||||||
"[ 3/1 → 4/1 | n:0 s:supersquare octave:6 ]",
|
"[ 3/1 → 4/1 | note:F3 s:supersaw octave:3 ]",
|
||||||
"[ 3/1 → 4/1 | n:4 s:supersquare octave:6 ]",
|
"[ 3/1 → 4/1 | note:C4 s:supersaw octave:3 ]",
|
||||||
"[ 3/1 → 4/1 | n:7 s:supersquare octave:6 ]",
|
"[ 3/1 → 4/1 | note:F4 s:supersaw octave:3 ]",
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user