브라우저에서 AudioContext를 활용할때 gainNode를 이용해서 오디오의 볼륨을 조절할 수 있습니다.
HTML의 <audio>태그 보다 훨씬더 많은 작업을 할 수 있습니다.
유튜브 영상을 올리고 BGM을 중간에 넣을때 어떤 소리를 더 크게 넣나 섞는 기능도 있는데 해당기능에 AudioContext가 활용될겁니다.
아래와 같이 퍼센트라고 생각하면 좋습니다.
gainNode.gain.value : 1
0 = 0 %
1 = 100 %
2 = 200 %
이 글은 gainNode mute가 안될때 해결방법을 알려주는 글이 될수도 있겠습니다.
공식적으로 함수 설명이 잘 되어있는게 아니라 이런 함수가 있다 정도로만 작성된 문서가 많아 IE를 제외한 모든 브라우저를 지원하는데도 잘 쓰이는것 같지는 않습니다.
함수에 대해 설명이 부족해 잘못작성한 예시와 제대로 작동하는 코드를 모두 준비했습니다.
잘못작성한 예시 (Wrong Example)
bufferSource.connect(audioContext.destination);
gainNode=audioContext.createGain();
bufferSource.connect(gainNode);
gainNode.connect(audioContext.destination);
gainNode.gain.value = 0;
이렇게 작성된 경우 소리가 조금 작아지는 현상이 있을 수 있습니다. 안작아지는건 아닌데 조금 줄어서 애매하더라고요.
버퍼소스(원본)이 오디오에 병렬로 연결되어 gainNode의 제어를 받을 수 없습니다.
bufferSource | audioContext.destination |
gainNode |
제대로 작성한 예시 (Right Example)
gainNode=audioContext.createGain();
bufferSource.connect(gainNode);
gainNode.connect(audioContext.destination);
gainNode.gain.value = 0;
bufferSource | gainNode | audioContext.destination |
bufferSource(원본)가 -> gainNode(증폭)를 거쳐 -> AudioContext로 전달되어 음소거및 소리 증폭을 할 수 있습니다.
따로 오디오 지식도 없었고, 문서도 부족하여 찾아봐도 안나오길래 크롬 디버거로 혼자 찾아보다가 해결한 문제입니다.
AudioContext 관련 정보가 많이 없기 때문에 AudioContext 소리조절/음소거를 하고 싶을때 도움이 되셨으면 합니다.
'웹 프로그래밍 > HTML' 카테고리의 다른 글
여러 웹툴을 만들어보며 느낀점, 프론트엔드 (0) | 2020.11.23 |
---|---|
CSS) nth-child, nth-of-type 다양한 활용방법 (2) | 2020.08.04 |
웹브라우저에서 와이파이 감지하기 (1) | 2020.08.04 |
구글 검색 더 눈에 띄게 꾸미기 FAQ편 (7) | 2020.07.11 |
JS) getComputedStyle로 스타일 가져오기 (0) | 2020.07.04 |
CSS 선택자로 유튜브 링크에 아이콘 넣기 (0) | 2020.06.25 |
CSS) list-style 다양한 종류 (list-style-type) (3) | 2020.06.25 |
CSS content 깨지는 현상(주의점) (1) | 2020.06.23 |
저작권 보호안내
무단 전재, 재배포 행위는 금지됩니다. (글을 복사하여 게시금지)
본문의 일부(링크용 문장) 인용은 가능하지만, 출처와 링크(a 태그)를 남기셔야 됩니다.
(웹툴을 이용하고, 스크린샷/녹화하는것은 상관없습니다.)
예외적으로. 저에게 허락받은 경우에는 본문을 전재할 수 있습니다.
만약, 본문 공유를 원하신다면 링크 공유를 해주세요
저작권 정책 확인하기링크 공유하기