|
@@ -80,17 +80,24 @@ function SamplePlayer (ac, source, options) {
|
|
|
var opts = options || EMPTY
|
|
|
when = Math.max(ac.currentTime, when || 0)
|
|
|
player.emit('start', when, name, opts)
|
|
|
- // cache
|
|
|
- var node
|
|
|
- for (var iterator in tracked) {
|
|
|
- if (buffer === tracked[iterator].source.buffer && tracked[iterator].startTime + buffer.duration < when) {
|
|
|
- node = resetNode(tracked[iterator], buffer, opts)
|
|
|
- }
|
|
|
- }
|
|
|
- if (!node) {
|
|
|
- node = createNode(name, buffer, opts)
|
|
|
- node.id = track(name, node)
|
|
|
- }
|
|
|
+ // --- original soundfontplayer code ---
|
|
|
+ var node = createNode(name, buffer, opts)
|
|
|
+ node.id = track(name, node)
|
|
|
+ // --- patch (?) (memory leak) ---
|
|
|
+ // "patch" from 2022-09 for memory leak, seems to cause audio stutter for some samples,
|
|
|
+ // and disabling this doesn't seem to cause leaks.
|
|
|
+ // // cache
|
|
|
+ // var node
|
|
|
+ // for (var iterator in tracked) {
|
|
|
+ // if (buffer === tracked[iterator].source.buffer && tracked[iterator].startTime + buffer.duration < when) {
|
|
|
+ // node = resetNode(tracked[iterator], buffer, opts)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // if (!node) {
|
|
|
+ // node = createNode(name, buffer, opts)
|
|
|
+ // node.id = track(name, node)
|
|
|
+ // }
|
|
|
+ // --- end patch ---
|
|
|
node.env.start(when)
|
|
|
node.source.start(when)
|
|
|
player.emit('started', when, node.id, node)
|