diff --git a/src/API.ts b/src/API.ts index e4781b0..cb06d71 100644 --- a/src/API.ts +++ b/src/API.ts @@ -483,7 +483,7 @@ export class UserAPI { // Sequencer related functions // ============================================================= - public slice = (chunk: number): boolean => { + public div = (chunk: number): boolean => { const time_pos = this.epulse(); const current_chunk = Math.floor( time_pos / Math.floor(chunk * this.ppqn()) @@ -491,13 +491,13 @@ export class UserAPI { return current_chunk % 2 === 0; }; - public barslice = (chunk: number): boolean => { + public divbar = (chunk: number): boolean => { const time_pos = this.bar() - 1; const current_chunk = Math.floor(time_pos / chunk); return current_chunk % 2 === 0; }; - public seqslice = (...args: any): any => { + public divseq = (...args: any): any => { const chunk_size = args[0]; // Get the first argument (chunk size) const elements = args.slice(1); // Get the rest of the arguments as an array const timepos = this.epulse(); @@ -1002,12 +1002,19 @@ export class UserAPI { return results.some((value) => value === true); }; + public modpulse = (...n: number[]): boolean => { + const results: boolean[] = n.map((value) => this.epulse() % value === 0); + return results.some((value) => value === true); + }; + pmod = this.modpulse; + public modbar = (...n: number[]): boolean => { const results: boolean[] = n.map( (value) => this.bar() % Math.floor(value * this.ppqn()) === 0 ); return results.some((value) => value === true); }; + bmod = this.modbar; // ============================================================= // Rythmic generators diff --git a/src/Documentation.ts b/src/Documentation.ts index 59162a4..452081b 100644 --- a/src/Documentation.ts +++ b/src/Documentation.ts @@ -143,7 +143,12 @@ Some functions can be leveraged to play rhythms without thinking too much about \`\`\` - onbar(...values: number[]): returns true if the bar is currently equal to any of the specified values. -- modbar(...values: number[]): returns true if the bar is currently a multiple of any of the specified values. +- modbar(...values: number[]) or bmod(...): returns true if the bar is currently a multiple of any of the specified values. +- modpulse(...values: number[]) or pmod(...): returns true if the pulse is currently a multiple of any of the specified values. + +- div(chunk: number): returns true for every pulse in intervals of given number of beats +- divbar(chunk: number): returns true for every pulse in intervals of given number of bars +- divseq(...values: number[]): returns true for every pulse in intervals of given number of beats returning different value each time. ## Rhythm generators