2012-12-03 3 views
3

나는 멜로디와 같은 다성 녹음에서 음을 분리하기 위해 오디오 알고리즘을 구현하고 있습니다. 내 계획은 VST 플러그인으로 만들기위한 것입니다. 문서를 공부하면서 비 실시간 작업을 구현하는 방법을 파악하기가 어렵습니다. 필요한 작업은 웨이브 파일을로드하고 실시간으로 루프 및 조작하기 전에 비 실시간으로 분석하는 것입니다. 언제든지 새 파일을로드 할 수 있어야합니다.오프라인 처리 - 파일 로딩, 비 실시간 알고리즘

주제에 대한 정보를 찾는 것은 매우 어렵습니다. 누구든지 경험이 있고 나에게 힌트를 줄 수 있다면 :

  • VST로 가능합니까? SDK는 오프라인 처리 기능을 제공하지만 DAW는이를 지원하지 않습니다.
  • 내 프로그램을 독립형으로 만들면 어떻게 VST 호스트와 동기화 할 수 있습니까?
  • 누구든지 훌륭한 책을 알고 있습니까?

답변

0

오프라인 물건을 너무 과장하고 있다고 생각합니다. :) 실제로는 꽤 쉽지만 까다로운 부분은 사용자에게 무슨 일이 일어나는지를 설명하는 좋은 UI를 만드는 것입니다. 내가 너라면, 나는 파일을 별도의 스레드에서 로딩하기 만하면된다.이 작업이 실행 중일 때, GUI에 "파일 로딩 중 ..."스피너가 나타나고 process() 루틴에 조용한 소리가 출력되어야한다. 이것은 3 개의 스레드 (GUI, 프로세스, & 로더)가 서로 무엇을하고 있는지를 알기 위해 약간의 뮤텍스를 필요로합니다.

플러그인의 독립 실행 형 버전을 작성하는 경우, Juce은 확실히 방법입니다. 이 멋진 프레임 워크는 VST/AU 플러그인 추상화를 처리하고 독립 실행 형 앱을 내보낼 수도 있습니다. Juce는 약간 비싸 보일지 모르지만이 플러그인으로 광고를 시작한다면 모든 가치가 있습니다. 상업적으로 사용할 계획이 아니라면 코드를 GPL로 만들어 무료로 사용할 수 있습니다.

독립 실행 형 플러그인에 대한 DIY 경로를 선호하는 경우 MrsWatson과 함께 뭔가를 해킹 할 수 있습니다. (면책 조항 : 나는 Wrson Mrson의 저자 임). Mrs Watson은이 프로젝트에 필요한 몇 가지 기능을 놓치고 있지만 앞으로는 추가 할 계획입니다. 이는 매우 일반적인 공통적 인 사례 중 하나이므로 지원하고 싶습니다.

좋은 VST 프로그래밍 책은 잘 모르겠다. =/

+2

경고 오디오 스레드 내에서 뮤텍스를 사용하지 마십시오. 이렇게하면 호스트가 오디오 콜백에 연결 한 경우 플러그인의 실시간 가능성이 손상되고 해를 끼칠 수 있습니다. 오디오 스레드에서는 메시지의 lockfree 큐 또는 스핀 록처럼 사용하는 원자 변수를 선호합니다. JUCE는 정말로 좋습니다. – dzada