This commit is contained in:
alex 2022-05-02 21:27:02 +01:00
parent c23f9b8629
commit 53d82e5126
4 changed files with 10 additions and 8 deletions

View File

@ -4,7 +4,6 @@ Copyright (C) 2022 Strudel contributors - see <https://github.com/tidalcycles/st
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
export class Hap { export class Hap {
/* /*
Event class, representing a value active during the timespan Event class, representing a value active during the timespan
@ -82,7 +81,7 @@ export class Hap {
'(' + (this.whole == undefined ? '~' : this.whole.show()) + ', ' + this.part.show() + ', ' + this.value + ')' '(' + (this.whole == undefined ? '~' : this.whole.show()) + ', ' + this.part.show() + ', ' + this.value + ')'
); );
} }
showWhole() { showWhole() {
return `${this.whole == undefined ? '~' : this.whole.show()}: ${this.value}`; return `${this.whole == undefined ? '~' : this.whole.show()}: ${this.value}`;
} }
@ -97,4 +96,4 @@ export class Hap {
} }
} }
export default Hap; export default Hap;

View File

@ -7,7 +7,7 @@ This program is free software: you can redistribute it and/or modify it under th
export * from './controls.mjs'; export * from './controls.mjs';
export * from './euclid.mjs'; export * from './euclid.mjs';
import Fraction from './fraction.mjs'; import Fraction from './fraction.mjs';
export {Fraction}; export { Fraction };
export * from './hap.mjs'; export * from './hap.mjs';
export * from './pattern.mjs'; export * from './pattern.mjs';
export * from './signal.mjs'; export * from './signal.mjs';

View File

@ -80,7 +80,10 @@ export const chooseWith = (pat, xs) => {
if (xs.length == 0) { if (xs.length == 0) {
return silence; return silence;
} }
return pat.range(0, xs.length).fmap((i) => xs[Math.floor(i)]).outerJoin(); return pat
.range(0, xs.length)
.fmap((i) => xs[Math.floor(i)])
.outerJoin();
}; };
export const choose = (...xs) => chooseWith(rand, xs); export const choose = (...xs) => chooseWith(rand, xs);
@ -94,14 +97,14 @@ const _wchooseWith = function (pat, ...pairs) {
weights.push(accum); weights.push(accum);
} }
const total = accum; const total = accum;
const match = function(r) { const match = function (r) {
const find = r * total; const find = r * total;
return values[weights.findIndex((x) => x > find, weights)]; return values[weights.findIndex((x) => x > find, weights)];
}; };
return pat.fmap(match); return pat.fmap(match);
}; };
const wchooseWith = (...args) => _wchooseWith(...args).outerJoin() const wchooseWith = (...args) => _wchooseWith(...args).outerJoin();
export const wchoose = (...pairs) => wchooseWith(rand, ...pairs); export const wchoose = (...pairs) => wchooseWith(rand, ...pairs);

View File

@ -33,7 +33,7 @@ export const fromMidi = (n) => {
// modulo that works with negative numbers e.g. mod(-1, 3) = 2 // modulo that works with negative numbers e.g. mod(-1, 3) = 2
// const mod = (n: number, m: number): number => (n < 0 ? mod(n + m, m) : n % m); // const mod = (n: number, m: number): number => (n < 0 ? mod(n + m, m) : n % m);
export const mod = (n, m) => (n % m + m) % m; export const mod = (n, m) => ((n % m) + m) % m;
export const getPlayableNoteValue = (event) => { export const getPlayableNoteValue = (event) => {
let { value: note, context } = event; let { value: note, context } = event;