본문 바로가기

개발언어/NAudio15

[c#] HTTP를 통해 스트리밍 된 WAV를 실시간으로 mp3로 변환 배경 : MIME 유형이 audio/wav 인 데이터를 반환하는 서비스를 사용하고 있습니다. 이 오디오 (현재 MVC 응용 프로그램으로 구축)에 대한 재생 메커니즘을 제공해야합니다. 예를 들어, 엔드 포인트는 https://audio.fooservice.com/GetAudio?audioId=123 오디오는 8kHz, 1 채널 U-law입니다. HTML5 태그를 사용할 때 브라우저에서 다양한 형식 지원으로 인해 Internet Explorer에서 재생할 수 없으므로 원래 u-law wav를 사용할 수 없습니다. 내 제안 솔루션은 소스 형식에서 mp3로 실시간 변환하는 것입니다. 여기 및 NAudio 포럼의 다양한 다른 질문에서 부분적으로 작동하는 솔루션을 함께 모았지만 아래 의견에 명시된 것처럼 예외가 발.. 2021. 7. 9.
[C#] 리소스에 있는 mp3 재생하기 중복재생하기 제목이 어렵죠? 뭐 하나하나 mp3 리소스에 있는거 재생하기 동시에 두개의 음원 재생하기 이런식으로 분리하기 싫어서 한번에 넣었습니다. wma라면 using System.Media; 이것만 추가하시면 다 됩니다. 난 반드시 mp3를 사용할꺼야 라는 분들만 보세요. 일단 mp3를 재생하기 위해서는 Windows Media Player를 사용하거나 아래처럼 NAudio(링크)라는 dll을 사용해야합니다. (디코더가 들어있습니다.) 그런데 리소스에 넣은 음원을 재생하려면 NAudio에서 해야합니다. windows Media player는 하다가 안되서 포기 ㅠㅠ 별거 없으니까 설명을 생략하겠습니다. using System; using System.Windows.Forms; using System.IO; usi.. 2021. 7. 9.
[Digital Audio] 4. Audio Signal Chains 강의 introduce를 보고, 이거 나랑 너무 별 상관없는 주제 아닌가? 싶어서 적당히 넘기려던 순간, '프로그래머의 경우 특히 이 내용을 아는 것이 중요합니다' 라고 하는 걸 듣고 각잡고 앉았다. ...그러나 강의 내용은 정말, 정말, 정말, 내 흥미와는 매우 거리가 멀었다.... 아니, 나도 프로그램의 flow가 중요한 건 아는데, 그래도 이걸 프로그래머에게 중요하다고 하는 건 좀 그렇지 않나... 저자가 말하는 '프로그래머'는 아무래도 '음악 프로그램을 작성하고자 하는' 프로그래머인가 보다. 나는 아니었다. 흠. 1~3강은 그런 적이 없었는데, 4강은 중간에 흥미가 떨어져서 2번이나 딴짓을 했다. 순수 재생 시간은 40분짜리를. (뭐 중간에 멈추고 되돌려보고 필기하고 뭐하고 하다보니 2시간은 걸리.. 2021. 7. 8.
[Digital Audio] 3. Audio Effect 물론 앞의 파트들도 내가 잘 모르는 내용이었지만, 이 파트는 그야말로 아는 내용이 더 적은 수준이었다. 게다가 앞의 파트에서 모르던 것들은 뭐랄까, 좀 세밀한 파일 구조 따위를 몰랐다면, 이 부분은 프로그래밍적인 것과는 별개로 음악에 대한 지식이 모자라서 모른다는 느낌이 들어서 좀 미묘했다. 스스로가 음악에 별로 조예도 관심도 없다는 건 잘 알았지만은... 흐음. 특히 EQ는 그동안 살면서 누가 얘기할 때마다 내가 가장 궁금하면서도 이해하지 못했던 것. 이제야 뭔지는 알았지만 역시 이걸 어떻게 쓰는 건지는 알 수가 없다. 다른 사람 머릿속엔 이게 재생이 되나...? 난 안 될것 같은데... 흐음. 강의에서는 다양한 종류의 sound effect 를 소개하였는데, 개중에 나와 정말 연이 없는, 음악적인 부.. 2021. 7. 8.
[Digital Audio] 2. Audio File Format 이미지가 그렇듯이 audio도 파일 포맷이 존재한다. 먼저 uncompressed, 이미지로 치자면 BMP에 해당하는 게 있으니 PCM(Pulse Code Modulation) 이라고 한다. 그리고 compressed 가 있는데, 이는 codec을 사용하여 압축 된 포맷을 말한다. wav 는 비 압축 오디오를 저장하기 위한 가장 일반적인 선택이다. mp3 는 인기 압축 포맷으로 전세계에서 가장 유명한 포맷이라고 해도 과언이 아니다. mp3처럼 원본 소리(PCM)을 압축하고, 압축한 것을 다시 복구하여 재생하기 위해서는 codec 이라고 불리는 것이 필요하다. 대충 동영상 따위를 볼 때 여기저기서 코덱이 필요합니다, 코덱이 없으니 설치하세요 등을 많이 봤던 그 코덱이다. 오디오와 동영상은 약간 다르지만 역.. 2021. 7. 8.
[Digital Audio] 1. Audio Sampling 이번 프로젝트는 Audio 편집기이다. 그러나 나는 디지털 오디오에 대해 매우 아는 바가 없기 때문에, 좀 공부를 한 뒤에 프로젝트를 진행하려고 한다. 하다못해 mp3 도 잘 안 듣는데다 eq한번 건드려 본 적 없는데 뭘 알겠어... 설마 그걸 내가 직접 짤 날이 올줄은 몰랐지. 일단 최소한의 튜토리얼을 위해, 강의를 보면서 공부하고 기록을 남겨 두기로 했다. 처음에는 수기로 작성하였는데 내 필기 솜씨가 개판인데다 내가 필기로 남겨놓은 자료를 다음에 읽어 본 기억이 없다. 그리고 분명 잃어버릴 것이다. 그렇기에 아예 블로그에 남겨두려고 한다. 대단한 지식은 아니더라도 남겨두어서 나쁠 일은 없을 테니까. 강의를 들으면서 필기하고 그 뒤에 블로그에 옮겨적는 중. 정확히는 강의를 필기한 다음에 내가 이해한 걸.. 2021. 7. 8.
[NAudio] 반복재생하기 이번에도 역시 예제를 기반으로 약간 수정했다. https://markheath.net/post/looped-playback-in-net-with-naudio Looped Playback in .NET with NAudio Mark Heath's Development Blog markheath.net 위 예제는 음원이 종료되면 다시 시작하는 방식이라서, 원하는 위치를 지정하고 해당 위치에서 반복할 수 있도록 했다. 매우 단순하니 그냥 코드만 적어놓겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51.. 2021. 7. 8.
[NAudio] 재생 속도 조절 가장 메이저한 음향 편집 기능, 재생 속도 조절이다. 실제로 강의에서도 말했기에 굉장히 쉬운 기능일 거라고 생각했는데 생각보다 어려운 기능이었나 보다. NAudio에는 추가되어있지 않았고, 공식적으로 올린 예제가 있긴 했는데 다른 오픈소스(SoundTouch) 를 이용해서 구현한 것이었다. 코드의 버전 문제로, .NetFramework 4.5.1 에서만 구동된다. 해당 버전부터 제공되는 함수를 코드상에서 사용하기 때문. vs2017에서도 돌아가니 불만 말고 쓰자. 원본 출처는 아래이다. https://markheath.net/post/varispeed-naudio-soundtouch Varispeed Playback with NAudio using SoundTouch Mark Heath's Develop.. 2021. 7. 8.
[NAudio] Spectrogram 그리기 spectrogram 을 완성했다. 스스로도 꽤나 무식하고 단순하게 구현하였다는 자각이 있으므로, 해당 부분의 태클은 삼가해 주기를...ㅠ 실 사용을 위해서는 상당히 많은 부분에서 손을 대야 할 것 같은데, 어차피 중단된(내 손에서 떠난) 프로젝트라서 뭐... 흐. 포기할 때는 꽤 아까웠는데 하면서 진짜 이거 하면서 느끼기를, 구현은 할 수 있는데(어쨌든 하루만에 만들었으니) '예쁘게' 만드는 데에 얼마나 걸릴지 짐작이 안 갔다. 포기하길 잘한 것 같다. 어휴. 아무튼간에, 굉장히 비효율적이나마 구현은 해냈다. NAudio 예제를 보면서 작업하였는데, 여기서 코드를 가져다가 쓰는 바람에 불필요하게 코드가 복잡해졌다. 원본은 spectrogram이 아니라 spectrum analyzer 였기에 '매 순간'.. 2021. 7. 8.
[NAudio] 6. Recording Audio 5강을 스킵했지만, 6강도 마찬가지다. 오히려 5강은 어느정도 쓸모가 있지만 6강은 아예! 쓸모가 없으므로 완전 스킵하도록 하겠다. 나는 녹음 관련 기능은 만들 의사가 없다... 내 프로젝트에서 녹음 기능이 필요 없으니까! NAudio 에서 녹음 기능을 사용하기 위한 overview 정도만 올려놓도록 하겠다. 출처 : https://m.blog.naver.com/luku756/221903977560 2021. 7. 8.