1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/**
* Relabi generator UI
* @module src/ui/App.js;
*/
import * as React from "react";
import { useState, useEffect } from "react";
import Relabi from "../relabi";
import { Kalimba, Drums } from "../lib/instruments";
export default function App() {
const [relabi, setRelabi] = useState();
/**
* Instantiate the Relabi generator
*/
useEffect(() => {
if (!relabi) {
const relabiGenerator = new Relabi({
waves: [
{ type: "sine", frequency: 0.75 },
{ type: "sine", frequency: 1.0 },
{ type: "sine", frequency: 1.617 },
{ type: "sine", frequency: 3.141 },
],
bounds: [
{
level: -0.75,
color: "#f00",
sounds: [
{ instrument: Drums, index: 0 },
{ instrument: Drums, index: 1 },
],
},
{
level: 0.75,
color: "#f00",
sounds: [
{ instrument: Drums, index: 2 },
{ instrument: Drums, index: 3 },
],
},
{
level: -0.25,
color: "#00f",
sounds: [
{ instrument: Kalimba, frequency: 440 },
{ instrument: Kalimba, frequency: (440 * 3) / 2 },
],
},
{
level: 0.25,
color: "#00f",
sounds: [
{ instrument: Kalimba, frequency: (440 * 6) / 5 },
{ instrument: Kalimba, frequency: (440 * 6) / 7 },
],
},
],
});
relabiGenerator.start();
setRelabi(relabiGenerator);
}
}, [relabi]);
/**
* Render
*/
return <div>Relabi generator</div>;
}
|