Подключить входы и выходы?

Имеет ли узел WebAudio доступ к другим узлам, подключенным к нему (в качестве входов или выходов)?

Например, у меня есть узел усиления и узел источника буфера. Узел источника буфера подключен к узлу усиления, а узел усиления подключен к конечному получателю:

var gainNode = ac.createGainNode(); // gain node
ac.createBufferSource().connect(gainNode); // source
gainNode.connect(ac.destination);

Имея только ссылку на узел усиления, могу ли я получить ссылку на исходный узел? И наоборот.


person katspaugh    schedule 19.09.2013    source источник


Ответы (1)


Неа. Хотя я не совсем уверен, почему. Кажется, это сделало бы несколько вещей немного проще.

РЕДАКТИРОВАТЬ:

Если вы чувствуете себя авантюрно, вы могли бы попробовать что-то сумасшедшее, как это:

AudioNode.prototype.connect = (function(){
  var func = AudioNode.prototype.connect;
  return function(){
   ( this.outputs || ( this.outputs = [] ) ).push(arguments[0]);
   return func.apply(this, arguments);
  }
}());

Что дало бы подключенным AudioNodes массив output их выходных узлов. Вам также придется переопределить AudioNode.prototype.disconnect аналогичным образом, чтобы удалить их из массива.

Вероятно, это ужасная идея, но она может сработать для вас в зависимости от того, что вам нужно сделать.

person Kevin Ennis    schedule 19.09.2013
comment
Ну хорошо :) Спасибо, Кевин! - person katspaugh; 19.09.2013
comment
Нет, это не так, но причина в том, что если бы мы предлагали интроспекцию графа на таких узлах, как этот, мы не смогли бы собирать мусор для подграфов узлов, которые закончили воспроизведение (потому что вы могли бы вернуться к узлам из пункта назначения). , и вы могли бы видеть, как они исчезают, а это значит, что вы могли бы наблюдать сборку мусора в действии, что является определенным нет-нет JS). - person cwilso; 20.09.2013
comment
Вы можете сделать переопределение connect(), которое вы предложили выше, потому что это только в одну сторону (основная проблема заключается в самоанализе того, что подключено к входу узла, а не к тому, к каким выходам они подключены); но вам все равно нужно быть очень осторожным, чтобы не повлиять на время жизни объекта. - person cwilso; 20.09.2013