2011-05-26 29 views
6

Tôi muốn tạo một công cụ VST có 16 đầu vào MIDI và ít nhất 16 đầu ra âm thanh. Tương tự như cách kontakt hoặc halion làm điều này.VST nhiều công cụ trong và ngoài

Bất kỳ ý tưởng nào?

+1

Nhưng bạn đã có một số kinh nghiệm với lập trình vst chưa? Tôi thấy thật ngạc nhiên khi 16 kênh nên có nhiều sự khác biệt để triển khai hơn 2 kênh, đây không phải là trường hợp khi xây dựng các plugin vst với phần mềm như SynthMaker (đó là cách duy nhất tôi đã thực hiện cho đến nay). Ở đó, bạn chỉ có thể thêm số lượng đầu vào và đầu ra tùy ý. – leftaroundabout

+0

Một số kinh nghiệm, tôi đã sử dụng nhà sản xuất synth trước đây. Nhưng dự án mới của tôi cần phải ở trong C++. –

+2

Một điều khác: bạn có thực sự cần 16 đầu vào MIDI hay chỉ 16 MIDI _channels_ (số nào được cung cấp bởi bất kỳ kết nối MIDI nào)? – leftaroundabout

Trả lời

4

Khi @leftaroundabout lưu ý, có thể bạn không cần 16 đầu vào và đầu ra, đặc biệt là cho một công cụ. Tuy nhiên, có 16 đầu vào MIDI và 16 đầu ra âm thanh rất phổ biến cho các máy trống và các công cụ đa nhiệm khác mà người dùng có thể muốn xử lý từng giọng nói riêng lẻ. Đầu vào âm thanh nói chung không đặc biệt hữu ích cho các thiết bị nói chung.

Điều đó nói rằng, bạn chỉ cần khởi tạo plugin của bạn như sau:

MyPlugin::MyPlugin(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 0, kNumParameters) { 
    if(audioMaster) { 
    setNumInputs(0); 
    setNumOutputs(16); 
    } 
    // other constructor stuff ... 
} 

Đó là điểm khởi đầu của bạn. Tuy nhiên, vì phần lớn các plugin chỉ là âm thanh nổi, có một loạt công việc khác mà bạn sẽ cần phải làm để có được máy chủ lưu trữ cung cấp cho bạn 16 kênh đầu ra (giả sử nó hỗ trợ nó). Bạn có thể cần phải gọi getSpeakerArrangement()setSpeakerArrangement() tại một số điểm và cũng ghi đè getOutputProperties().

Đối với kênh MIDI, máy chủ không nên xử lý chúng khác với bình thường. Bạn sẽ được cung cấp các sự kiện MIDI thông thường, dưới dạng VstMidiEvent s sẽ chứa dữ liệu MIDI thông thường (ví dụ: đối với tất cả 16 kênh nếu người dùng chọn). Đây là một phần dễ dàng - nó nhận được kết quả đầu ra thiết lập đó là lừa.

+0

Tôi cho rằng bạn biết Kontakt hoạt động như thế nào. Làm thế nào để thiết lập vst của tôi để mỗi kênh midi có thể được gửi đến một kênh khác bên trong vst? –

+2

Tất cả các sự kiện midi được gửi cùng nhau. Phân tách thủ công các sự kiện midi đến theo số kênh. – Shannon

+1

Điều gì @Shannon nói. ;) Về cơ bản, bạn lấy nibble thấp hơn từ byte trạng thái để lấy kênh và gửi nó đến giọng nói tương ứng. Cách bạn xử lý 16 kênh là một phần của thiết kế nội bộ của plugin và không liên quan gì đến khung công tác VST. –

Các vấn đề liên quan