2013-08-19 11 views
5

W przypadku nadchodzącego projektu przy użyciu interfejsu Web Audio API chciałbym móc zwiększyć głośność niektórych dźwięków.Wzmocnienie dźwięku za pomocą interfejsu Web Audio API

Jak czytam w dokumentacji, węzeł wzmocnienia mnoży przychodzący sygnał przez jego wartość wzmocnienia. Dokumentacja stwierdza, że ​​ta wartość jest w zakresie od 0 do 1, stąd wzmocnienie wydaje się nie być wykonalne z węzłem wzmocnienia. Ale jak inaczej mógłbym to zrobić?

+0

Specyfikacja interfejsu sieciowego (https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#GainNode) wydaje się dopuszczać> 1 wartości, ale implementacje mogą zignoruj ​​wartości powyżej 1. ("nominalna" maxValue "to 1, ale wyższe wartości są dozwolone.") W szczególności wydaje się, że Chrome wzmacnia> 1 wartości. Uwaga boczna: powodem ograniczenia nominalnego> 1 jest to, że większość wzmacniaczy sterowanych napięciem (http://electronicmusic.wikia.com/wiki/Voltage_controlled_amplifier) ​​(VCA) nie wykorzystuje wzmocnienia powyżej jednego. – apsillers

+0

Och, tylko po to, żeby wyjaśnić: nie mam odpowiedzi na twoje pytanie. Nie polegałbym na niezdefiniowanym zachowaniu przeglądarki "gain> 1" (lub nawet między aktualizacjami przeglądarki). – apsillers

Odpowiedz

3

Aby być bardziej szczegółowym: jak powiedział Kevin, "nominalna" wartość jednego reprezentuje zysk jedności - tj. Bez zmian. To NIE jest takie samo jak zasięg. Wdrożenia MUSZĄ wspierać wartości> 1 - w rzeczywistości cały zakres wartości. Istnieje wiele scenariuszy, które używają dużych wartości skalowania zysku do robienia interesujących rzeczy i byłyby bardzo zepsute, gdyby implementacje tego nie obsługiwały.

W skrócie: użyj wzmocnienia> 1, aby wzmocnić rzeczy. Jeśli w ogóle obawiasz się obcinania, umieść po nim węzeł procesora dynamiki.

1

Nie jestem świadomy implementacji, która nie zwiększa zysku powyżej 1. To jest to, czego używałem we wszystkich moich projektach i nie natrafiłem na żadne problemy.

Jeśli jesteś bardzo zatroskany o to, myślę, że możesz użyć ScriptProcessorNode i po prostu pomnożyć wszystkie próbki przez dowolną wartość skalowania, ale wydajność będzie nieco gorsza niż w przypadku węzeł wzmocnienia. Poza tym byłoby to po prostu śmieszne.

Sposób, w jaki czytam specyfikację, nie daje mi żadnego powodu, by sądzić, że wartości większe od 1 zostaną zignorowane dla parametru GainNode 'gain. Zasadniczo mówiąc po prostu 1 jest wartością nominalną. Innymi słowy, jeśli chcesz, aby twoje audio przechodziło przez nieuszkodzone, ustaw wartość na 1. W przeciwnym razie dostaniesz osłabienie lub wzmocnienie.

Powiązane problemy