-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.ts
67 lines (55 loc) · 2.07 KB
/
test.ts
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
import { InstrumentNames } from './src/GM';
import { IMidiEvent, MidiEventTypes } from './src/IMidiEvent';
import {PlayerState, WerckmeisterMidiPlayer} from './src/WerckmeisterMidiPlayer';
import {ipanema, c9, mario, blackpages, ennios, pitch, cc} from './testmidi';
import 'regenerator-runtime/runtime'
const werckmeisterMidiPlayer = new WerckmeisterMidiPlayer();
const los = document.querySelector("button#los") as HTMLButtonElement;
const halt = document.querySelector("button#halt") as HTMLButtonElement;
const out = document.querySelector("#output") as HTMLElement;
const repoInput = document.querySelector("input[type=text]") as HTMLInputElement;
repoInput.value = werckmeisterMidiPlayer.repoUrl;
function log(str:string) {
out.innerHTML += `<li>${str}</li>`
}
werckmeisterMidiPlayer.onMidiEvent = (event: IMidiEvent) => {
if (event.type !== MidiEventTypes.Pc) {
//log(`♪ ${event.param1}`);
return;
}
log(`use instrument ${InstrumentNames[event.param1]}`);
};
let startPreparingTime: number;
werckmeisterMidiPlayer.onPlayerStateChanged = (oldState: PlayerState, newState: PlayerState) => {
if (newState === PlayerState.Preparing) {
startPreparingTime = performance.now();
}
if (newState === PlayerState.Playing) {
log(`Render Time: ${(performance.now() - startPreparingTime) / 1000}`);
}
log(PlayerState[newState]);
console.log(PlayerState[oldState], PlayerState[newState])
};
los.onclick = (ev: Event) => {
log("play pressed")
const visitor = {
newTasks: (tasks) => {
console.log('new tasks', tasks);
},
done: (task) => {
console.log('done', task)
},
message: (txt) => {
console.info(txt);
}
};
setTimeout(async () => {
werckmeisterMidiPlayer.initAudioEnvironment(ev);
werckmeisterMidiPlayer.setRepoUrl(repoInput.value);
await werckmeisterMidiPlayer.load(blackpages, visitor);
werckmeisterMidiPlayer.play();
});
}
halt.onclick = async (ev: Event) => {
werckmeisterMidiPlayer.stop();
}