Skip to content

Commit

Permalink
Adding bry shortcut for binrhythm
Browse files Browse the repository at this point in the history
  • Loading branch information
Bubobubobubobubo committed Jan 18, 2024
1 parent f451b81 commit 694b994
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 52 deletions.
4 changes: 3 additions & 1 deletion src/API.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1650,6 +1650,7 @@ export class UserAPI {
let tobin: boolean[] = convert.split("").map((x: string) => x === "1");
return this.beat(div) && tobin.beat(div);
};
bry = this.binrhythm;

// =============================================================
// Low Frequency Oscillators
Expand Down Expand Up @@ -1775,7 +1776,7 @@ export class UserAPI {
* @see noise
*/
const period = 1 / freq;
const t = (Date.now() / 1000 ) % period;
const t = (Date.now() / 1000) % period;
return (t / period < duty ? 1 : -1);
};

Expand Down Expand Up @@ -2659,4 +2660,5 @@ export class UserAPI {
public getThemes = (): string[] => {
return Object.keys(colorschemes);
}

}
96 changes: 48 additions & 48 deletions src/IO/SampleLoading.ts
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
/**
* This code is taken from https://github.com/tidalcycles/strudel/pull/839. The logic is written by
* This code is taken from https://github.com/tidalcycles/strudel/pull/839. The logic is written by
* daslyfe (Jade Rose Rowland). I have tweaked it a bit to fit the needs of this project (TypeScript),
* etc... Many thanks for this piece of code! This code is initially part of the Strudel project:
* https://github.com/tidalcycles/strudel.
*/

// @ts-ignore
import { registerSound, onTriggerSample } from "superdough";
import { registerSound, onTriggerSample } from "superdough";

export const isAudioFile = (filename: string) => ['wav', 'mp3'].includes(filename.split('.').slice(-1)[0]);

interface samplesDBConfig {
dbName: string,
table: string,
columns: string[],
version: number
dbName: string,
table: string,
columns: string[],
version: number
}

export const samplesDBConfig = {
dbName: 'samples',
table: 'usersamples',
columns: ['data_url', 'title'],
version: 1
dbName: 'samples',
table: 'usersamples',
columns: ['data_url', 'title'],
version: 1
}

async function bufferToDataUrl(buf: Buffer) {
return new Promise((resolve) => {
var blob = new Blob([buf], { type: 'application/octet-binary' });
var reader = new FileReader();
reader.onload = function (event: Event) {
reader.onload = function(event: Event) {
// @ts-ignore
resolve(event.target.result);
};
Expand Down Expand Up @@ -65,7 +65,7 @@ const processFilesForIDB = async (files: FileList) => {
};


export const registerSamplesFromDB = (config: samplesDBConfig, onComplete = () => {}) => {
export const registerSamplesFromDB = (config: samplesDBConfig, onComplete = () => { }) => {
openDB(config, (objectStore: IDBObjectStore) => {
let query = objectStore.getAll();
query.onsuccess = (event: Event) => {
Expand Down Expand Up @@ -107,49 +107,49 @@ export const registerSamplesFromDB = (config: samplesDBConfig, onComplete = () =
};

export const openDB = (config: samplesDBConfig, onOpened: Function) => {
const { dbName, version, table, columns } = config
const { dbName, version, table, columns } = config

if (!('indexedDB' in window)) {
console.log('This browser doesn\'t support IndexedDB')
return
}
const dbOpen = indexedDB.open(dbName, version);
if (!('indexedDB' in window)) {
console.log('This browser doesn\'t support IndexedDB')
return
}
const dbOpen = indexedDB.open(dbName, version);


dbOpen.onupgradeneeded = (_event) => {
const db = dbOpen.result;
const objectStore = db.createObjectStore(table, { keyPath: 'id', autoIncrement: false });
columns.forEach((c: any) => {
objectStore.createIndex(c, c, { unique: false });
});
dbOpen.onupgradeneeded = (_event) => {
const db = dbOpen.result;
const objectStore = db.createObjectStore(table, { keyPath: 'id', autoIncrement: false });
columns.forEach((c: any) => {
objectStore.createIndex(c, c, { unique: false });
});
};
dbOpen.onerror = function(err: Event) {
console.log('Error opening DB: ', (err.target as IDBOpenDBRequest).error);
}
dbOpen.onsuccess = function(_event: Event) {
const db = dbOpen.result;
db.onversionchange = function() {
db.close();
alert("Database is outdated, please reload the page.")
};
dbOpen.onerror = function (err: Event) {
console.log('Error opening DB: ', (err.target as IDBOpenDBRequest).error);
}
dbOpen.onsuccess = function (_event: Event) {
const db = dbOpen.result;
db.onversionchange = function() {
db.close();
alert("Database is outdated, please reload the page.")
};
const writeTransaction = db.transaction([table], 'readwrite'),
objectStore = writeTransaction.objectStore(table);
// Writing in the database here!
onOpened(objectStore)
}
const writeTransaction = db.transaction([table], 'readwrite'),
objectStore = writeTransaction.objectStore(table);
// Writing in the database here!
onOpened(objectStore)
}
}

export const uploadSamplesToDB = async (config: samplesDBConfig, files: FileList) => {
await processFilesForIDB(files).then((files) => {
const onOpened = (objectStore: IDBObjectStore, _db: IDBDatabase) => {
// @ts-ignore
files.forEach((file: File) => {
if (file == null) {
return;
}
objectStore.put(file);
});
};
openDB(config, onOpened);
// @ts-ignore
files.forEach((file: File) => {
if (file == null) {
return;
}
objectStore.put(file);
});
};
openDB(config, onOpened);
});
};
};
2 changes: 1 addition & 1 deletion src/documentation/inlineHelp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -788,7 +788,7 @@ const completionDatabase: CompletionDatabase = {
name: "counter",
category: "patterns",
description: "Counter/iterator",
example: "counter('my_counter_, 20, 1)",
example: "counter('my_counter', 20, 1)",
},
drunk: {
name: "drunk",
Expand Down
3 changes: 1 addition & 2 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -578,12 +578,11 @@ export class Editor {
// @ts-ignore
this.hydra_backend = new Hydra({
canvas: this.interface.hydra_canvas as HTMLCanvasElement,
width: 1280,
height: 768,
detectAudio: false,
enableStreamCapture: false,
});
this.hydra = this.hydra_backend.synth;
this.hydra.setResolution(1280, 768);
(globalThis as any).hydra = this.hydra;
}

Expand Down

0 comments on commit 694b994

Please sign in to comment.