feross / timidity

Play MIDI files in the browser w/ Web Audio, WebAssembly, and libtimidity
https://bitmidi.com
MIT License
368 stars 38 forks source link

Fork with AudioWorklet implementation #16

Open miker2049 opened 3 years ago

miker2049 commented 3 years ago

Hi, I really like this library, and I have made an attempt to reuse a lot of its bits and create a version that uses AudioWorkletProcessor rather than the very deprecated ScriptProcessorNode. Can be found here.

I need to work on completely copying the api here, with the duration features and events, but it stays pretty close right now otherwise. Most of the original index.js is now bundled into a registerProcessor for the AudioWorkletGlobalScope, and a second interface class MIDIPlayer handles all the messy communication with the worklet, as well as instantiating itself from an async static builder.

Some improvements otherwise include dynamically loading the timidity.cfg file on building the instance, and simply requiring that the pat folders are found in the same place. Also, a built in build system with rollup is now included.

I am not sure there is PR interest/how active this library is, and this is a pretty big set of changes. But let me know! It is right now working pretty well.

frantic0 commented 3 years ago

this is pretty interesting @miker2049. I tried to install your fork but I'm running into errors

Enter passphrase for key '/Users/francisco/.ssh/id_rsa': ⸨░░░░░░░░░░░░░░░░░░⸩ ⠴ idealTree:timidity-audio-worklet: sill idealTr⸨░░░░░░░░░░░░░░░░░░⸩ ⠴ idealTree:timidity-audio-worklet: sill idealTree buildDeps
npm ERR! code 128
npm ERR! command failed
npm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/miker2049/gravisPats.git
npm ERR! git@ssh.github.com: Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/francisco/.npm/_logs/2021-06-07T13_20_22_537Z-debug.log

It seems that there is a dependency to your repo https://github.com/miker2049/gravisPats