2010-07-09 5 views
2

프로그래밍 악기 에뮬레이터 관련 정보를 제게 알려 줄 수 있습니까? 예를 들어 here (iPhone 용 Smule 's Ocarina 앱)을 참조하십시오.악기 용 에뮬레이터 프로그래밍?

이 주제에 대한 충분한 정보를 찾을 수 있습니다. 예를 들어 오카리나 앱을 실행하면 개별 메모가 어떻게 생성됩니까? 결과는 호흡의 강도와 "구멍"이 억제되어 있기 때문에 프로그래밍 방식으로 처리해야하지만 프로그래밍 방식으로 생성되는 전체 사운드 또는 백 엔드에서 사운드 샘플을 사용하여 수정합니다 (또는 여러 샘플을 사용하는 경우)?

이 주제에 대한 리소스가 있습니까? 모든 검색 결과는 음악을 재생하는 방법 (표준 오디오 만) 또는 음악을 만드는 방법 (음악 편집 소프트웨어)에 대한 정보가 있지만 그 동영상에 표시된 내용을 수행하는 방법에 대한 정보는 제공되지 않습니다.

응답이 오카리나와 엄격하게 관련 될 필요는 없습니다.

+0

사람들이 아이폰에 휘파람을 불고 있습니까? 이 사과 사업은 점점 더 우스꽝스러워집니다. 어쨌든 악기 합성은 물리학이나 수학에 대한 확실한 지식이 필요한 어려운 사업입니다. 인터넷 검색은 약간 도움이 될 수 있습니다. –

답변

3

... http://www.csounds.com/chapter1/index.html

내가 조금 그것으로 주위를 연주하고 몇 진부 신디사이저 일어나고있다 : 당신은 선발 투수에 대한 CSound에 좀보고 할 수 있습니다 사각 파 또는 FM을 기반으로하는 단순한 합성 모듈로 리버브 필터가 붙어 있습니다. 그래서 저는 그것이 예술적으로 생성 된 사운드를 줄곧 추측하고 있습니다. 이 도구 중 하나를 직접 만들 계획이라면 원할 경우 샘플 세트를 기초로 사용할 수 있습니다. 아래에 다른 방법을 언급 할 가능성이 있습니다.

호흡 입력 처리 : 호흡 입력은 일반적으로 입력 마이크의 공기 압력을 나타내는 값으로 변환됩니다. 이는 입력 오디오 신호의 작은 덩어리를 취하여 각 청크의 피크 또는 RMS를 계산하여 수행 할 수 있습니다.

MIDI에서
int BUFFER_SIZE = 1024; // just for purposes of this example 
float buffer[BUFFER_SIZE]; // 1 channel of float samples between -1.0 and 1.0 
float rms = 0.0f; 
for (int i=0; i<BUFFER_SIZE; ++i) { 
    rms += buffer[i]*buffer[i]; 
} 
rms = sqrt(rms/BUFFER_SIZE); 

,이 값은 일반적으로 값이 후 지속적으로 볼륨을 제어하는 ​​데 사용되는 0과 127 사이의 값으로 채널 CC2에 전송 : 내가 좋아하는 무언가에 의해 계산되는, RMS를 선호 출력 사운드. (iPhone에서는 MIDI가 내부적으로 사용되거나 사용되지 않을 수도 있지만 개념은 동일합니다.이 값은 여기에서 CC2라고 부릅니다.)

키 누름 처리 :이 경우 키 누름은 대개 해당 메모에 직접 매핑됩니다. 그런 다음 새로운 음표 이벤트로 악기에 전송됩니다. 거기에 환상적인 모델링이 없다고 생각합니다.

기타 제어 형식 : 오카리나 계기는 iPhone의 기울기를 사용하여 비브라토 주파수 및 볼륨을 제어합니다. 이것은 대개 낮은 주파수 오실레이터 (LFO)로 모델링되며, 스케일링, 오프셋 및 나머지 악기의 출력과 곱 해져서 펄럭이는 볼륨 효과를냅니다. 또한 피치가 변동하는 악기의 피치를 조절하는 데 사용할 수도 있습니다. (샘플을 가지고 작업하는 경우이 작업을 수행하기가 어려울 수 있지만 파형을 사용하는 경우에는 상대적으로 쉽습니다.) 멋진 MIDI 바람 컨트롤러는 손가락 압력과 물린 압력을 추적하여 매개 변수로 표시 할 수 있습니다. 뿐만 아니라 함께 사운드를 형성하십시오.

호흡 장비 (201) : 그들은 숨 컨트롤러에 의해 제어 될 때 사람들이 소리를 더 표현하기 위해 당겨 약간의 트릭이 있습니다

  • 이 출력은 한 번에 하나 개의 음을 연주되어 있는지 확인은 ; 새 음으로 전환하면 자동으로 이전 음이 끝납니다.
  • 호흡 압력이 일정하고 키 누름이 연결된 경우 이전 음표에서 새 음표까지의 음량이 부드럽게 유지되는지 확인하십시오. 이렇게하면 레가토 연주와 분리 연주를 구별 할 수 있습니다.

호흡 장비 (301) : overblowing 시뮬레이션하는 방법, 할 수있는 실제 관악기와 같은 등 음색 변화, 부분 운지법, : 그리고는 우리는 재미있는에 도착. 여기에서 생각해 볼 수있는 몇 가지 접근법이 있습니다.

  • 자연스런 시끄러운 소리 또는 숨소리를주기 위해 호흡 입력 자체의 사운드를 믹싱합니다.
  • 속도 레이어간에 크로스 페이드를 사용하여 고속으로 사운드를 완전히 다른 사운드로 변환합니다. 바꾸어 말하면, 새로운 소리가 희미 해지는 동안 문자 그대로 소리가 퇴색됩니다. 그들은 같은 피치를 연주하고 있지만 새로운 사운드의 새로운 음조 특성은 점차 명백해질 것입니다.
  • 고주파 성분이 많은 복잡한 사운드를 사용하십시오. 컷오프 주파수가 CC2에 의해 제어되는 로우 패스 필터를 연결하십시오. CC2 값이 증가하면 컷오프 주파수가 증가합니다. 입력에 힘을 불어 넣으면 고주파수 콘텐츠가 흥미 진진하게 증가 할 수 있습니다.
  • 하드 코어 방법은 물리적 모델링이라고합니다. 여기에는 에뮬레이트하려는 악기의 물리적 인 동작에 대한 상세한 수학적 모델을 만드는 작업이 포함됩니다. 이렇게하면 매우 현실적인 오버 블로잉 효과를 얻을 수 있으며 숨 입력 및 운지법이 사운드를 모양 짓는 방법의 여러 가지 미묘한 효과를 포착 할 수 있습니다. Princeton's Sound Lab에이 접근법에 대한 간략한 개요가 있으며 in the STK C++ library –으로 찌르는 샘플 악기가 있지만 경고가 있습니다. 수학적으로 희미한 것이 아닙니다!
0

우선, 귀하의 질문이 무엇인지 잘 모르겠습니다.

소리 합성에는 꽤 많은 종류가 있습니다. 내가 알고 몇은 다음과 같습니다

  • 주파수 변조
  • 진동 웨이브
  • 표 (기반 샘플)

진동이 매우 간단하고 시작하는 아마 장소. 440Hz에서 구형파를 생성하면 "A"또는보다 구체적으로 중간 A가됩니다.

그런 종류의 단순 합성은 실제로 매우 재미 있고 쉽습니다. 어쩌면 PC 스피커 용으로 간단한 신스를 만들 수 있습니다. 오,하지만 모든 운영체제에서 액세스 할 수 있는지 여부는 알 수 없습니다. LADSPA는 좋은 예가 있습니다. 리눅스를위한 libs가 많이 있습니다. 그것은 상당히처럼 특정 악기 나에게 들리

관련 문제