진동기의 파형이 다른 문제

2388 단어 WebAudioAPIJavaScript
뭐랄까, Firefox의 Web Audio API의 진동기, 신호파 이외의 경우에는 DC로 필터를 제거하고 걸러냈다?LFO 파형이 뚜렷하지 않아...뭐, 이 일대는 처음부터 끝이 없어.-g200kg (@g200kg) 2014년 11월 24일
이런 트윗을 봤기 때문에 각 파형은 1Hz/10Hz441Hz882Hz 각각의 주파수로 주기를 포착했다.

WebKit의 발진기 파형



Firefox의 발진기 파형



확실히 완전히 다르다.
파형을 생성하는 알고리즘이 다르기 때문이다
  • WebKit->PeriodicWave(주파수 정보표에서 생성)
  • Firefox -> BLIT (bandlimited impulse train)
  • 이런 방법은 생성된다.둘 다 별명 소음이 발생하지 않는 방법이어서 웹 오디오 API의 진동기는 소리가 좋다고 여겨지지만, LFO처럼 파형을 제어하는 용도로 사용하면 파형이 다르면 번거롭다.그 전에 Firefox의 저주파역이 전혀 작동하지 않았어요.그나저나 슈퍼콜리더는 톱니 웨이브를 내기 위해 두 가지 사운드 소스용 Saw와 LFO용 LFSaw를 준비했다.
    [추기 2015/02/20 16:30]
    다음은 많이 썼지만 전체적으로 어수선하지는 않다.
    Firefox는 37과 WebKit에서 동일합니다.
    #어떻게 하면 좋을까?
    앞으로는 똑같을 수도 있고 그렇지 않을 수도 있다(웹 오디오 API의 규격상 구체적인 알고리즘이 없고 원가와 이상적인 균형을 이루도록 노력하겠다고 적혀 있다) 하지만 이제는 각자의 노력으로 극복할 수밖에 없다.
    ## 1. 사용자 정의 웨이브 사용
    OscillatorNode는'setPeriodicWave()'방법으로 파형을 사용자 정의할 수 있기 때문에 표준 설정의 Sine, Square, Sawtooth, Triangle 각각의 PeriodicWave로 대체할 수 있다.
    http://the.mohayonao.com/web-audio-api/periodic-wave/
    파형을 생성하는 알고리즘
    https://github.com/mohayonao/the.mohayonao.com/blob/master/public/web-audio-api/periodic-wave/periodic-wave.js
    나는 Triangle의 시작 위치가 매우 이상하다고 생각한다. 그 외에는 기본적으로 모두 괜찮다.하지만 LFO 용도로 생각하면 예쁜 파형이라고 할 수는 없다.
    [추기 2014/12/1517:00]
    Firefox34.0 시 PeriodicWave에 버그가 있는 것 같아서 정상적으로 작동하지 않습니다.
    검사 페이지

    2. BufferSourceNode 사용


    샘플링 확률과 같은 크기의 오디오 버퍼를 만들어 파형을 기록해 활용하면 버퍼소스 노드의 플레이백 레이트를 주파수 대신 사용할 수 있다.그러나 이 방법은 웹키트의 플레이백 레이트에 오디오노드를 연결해도 반영되지 않는 문제가 있어 LFO로 LFO를 모의할 수 없다.

    3. 용도에 맞게 쓰기


    만약 위의 방법으로 해결할 수 없다면, 나는 열심히 쓸 것이다.사운드를 만들기 위해 시도할 때마다 실수할 때마다 열심히 다시 쓰느라 힘들 것 같아요.
  • BufferSourceNode
  • LFO를 고려한 LFO의 Buffer Source Node를 사용하여 방법
  • AudioParam의 setValueCurveAtTime 사용법
  • ScriptProcesserNode를 사용한 방법
  • 좋은 웹페이지 즐겨찾기