Comments (4)
Browser manufacturers force background pages to reduce resource consumption.
This is the rule for all browsers.
I don't want to fight browser makers.
from webaudiofont.
Use setTimeout or setInterval to queue ahead until the queue finishes playing. Then playback won't stop when you switch tabs.
code
code
from webaudiofont.
Thank you, that example indeed works and uses setInterval
, and the variant with setTimeout
works as well. setInterval
or setTimeout
seem nice for auto-repeating the song for an unlimited number of times.
On the other hand, for each playthrough of a song, I wonder whether anything speaks against simply setting stepDuration
to the song duration, i.e. queueing the entire song via queueWaveTable()
at once. The notes are then scheduled here via the start()
method of an AudioBufferSourceNode
, so the browser makers decide what to do with that, and we're not fighting them. (For now. :))
from webaudiofont.
Setting a long stepDuration
works in Firefox and for some MIDI files in Chrome. For other MIDI files in Chrome, the audio stops after a second. Maybe Chrome is stupid in that it focuses on computing something too early for future sounds instead of playing imminent sounds as intended (like Firefox does).
Instead of a long stepDuration
, what seems to work is to call each step with window.setTimeout
instead of window.requestAnimationFrame
. Both are unnecessarily resource-intensive except if setTimeout
takes into account when the next note will actually play instead of getting called every 10 milliseconds.
from webaudiofont.
Related Issues (20)
- Where is the code to generate this format? HOT 4
- I can not play full song HOT 1
- Using instruments in DAW apps (Reaper) HOT 1
- The pitch slides data structure HOT 3
- Change song without refreshing html page - Midiplayer.html HOT 1
- How to send the player queue into an mp3 file HOT 1
- Add minified version HOT 1
- Stop or pause event for WebAudioFontPlayer to listen to HOT 3
- How to stop or pause audio HOT 1
- a way of querying it for the current audio context time HOT 1
- Reverberator in TS and React HOT 1
- how to play tremolo effect? HOT 1
- Velocity and round robnin support HOT 3
- Pitch-bend range (sensitivity) HOT 5
- How to play the song only once? HOT 1
- Add comments or fix adjustments of loudness and delays
- Author attribution for commit d3d2959
- Dead link HOT 1
- Question on sound font generation HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from webaudiofont.