2008-11-06 40 views
9

Tôi có cả phần mềm Fruityloops và Propellerheads Reason synths trên máy tính Windows của mình.fruityloops scripting hoặc propellerheads lý do từ VB hoặc Python?

Bất kỳ cách nào tôi có thể lấy và viết kịch bản lệnh này từ Visual Basic hoặc Python? Hoặc ít nhất gửi tin nhắn Midi đến synths từ mã?

Cập nhật: cố gắng sử dụng thứ gì đó giống như "midi-mapper" (nhờ liên kết MusiGenesis) dường như không hoạt động. Tôi không nghĩ rằng Lý do hoặc FL Studio hoạt động giống như tiêu chuẩn GM Midi synths.

Cập nhật 2: Nếu bạn quan tâm đến câu hỏi này, check out this too.

Trả lời

2

Tôi nghĩ cả FL Studio và Lý do có thể được định cấu hình làm thiết bị phát lại mặc định MIDI. Để gửi tin nhắn MIDI đến hoặc từ VB.NET, bạn cần phải PInvoke các cuộc gọi midiOutOpen, midiOutShortMsg và midiOutClose API. Dưới đây là một liên kết đến các mẫu mã:

http://www.answers.com/topic/midioutopen

Họ cho VB6, nhưng họ nên dễ dịch để VB.NET.

Tôi biết FL Studio có thể được "điều khiển" từ một plugin được tạo cho FL (hoặc plugin VSTx), nhưng tôi nghĩ rằng chúng luôn được viết bằng C hoặc C++.

Chỉnh sửa: Tôi vừa biết được rằng Windows Vista đã bỏ MIDI Mapper (điều này có thể đã thiết lập FL hoặc Lý do làm thiết bị MIDI mặc định đơn giản). Kinh ngạc. Đây là một liên kết Tôi tìm thấy với một giải pháp thay thế:

http://akkordwechsel.de/15-windows-vista-und-der-midi-mapper/

Tôi chỉ cố gắng nó ra (nó chỉ là một file * .CPL mà bạn nhấp đúp để chạy) và nó xuất hiện để làm việc (mặc dù GM Synth là lựa chọn duy nhất có sẵn trên máy tính xách tay của tôi, vì vậy tôi không chắc chắn nếu nó sẽ nhận FL hoặc Lý do là lựa chọn).

+0

bất kỳ ý tưởng nào về cách định cấu hình này. Tôi đang sử dụng FL Studio 7 và dường như không thể tìm thấy bất kỳ tùy chọn để làm cho nó nhận Midi từ một trong hai chương trình VB hoặc Python của tôi mà dường như đi thẳng đến synth Windows GM. – interstar

+0

Tôi cho rằng bạn đang sử dụng Vista, cái mà tôi vừa mới học được không có trình quản lý MIDI nữa. Tuyệt vời - một lý do ẩn giấu khác khiến Vista chán nản đến thế. Xem bản chỉnh sửa của tôi để biết liên kết để giải quyết vấn đề. – MusiGenesis

+0

vâng ... không có MidiMapper sucks – interstar

2

Lưu ý: Câu trả lời này không chính xác trả lời những câu hỏi mà bạn hỏi nhưng nó có thể đạt được kết quả bạn muốn :)

Bạn có thể tác giả một plugin VST trong Java sử dụng jVSTWrapper (http://jvstwrapper.sourceforge.net/). Nếu bạn thực sự muốn sử dụng Python, bạn có thể sử dụng Jython để giao tiếp với java và làm theo cách đó. Ngoài ra, bạn có thể chỉ cần viết plugin trong Java hoặc một ngôn ngữ kịch bản khác cho JVM như Groovy.

0

Khi nói đến Lý do, bạn có thể làm với nó nhiều vì kiến ​​trúc đóng - bạn có thể sử dụng các plugin VST (hoặc bất kỳ loại nào khác như plugin DirectX) - tùy chọn duy nhất của bạn là sử dụng MIDI.

Về Fruity Loops, bạn có thể viết một plugin VST có thể lấy đầu vào từ ngôn ngữ kịch bản (VB, Python hoặc bất kỳ thứ gì) nhưng để viết như vậy bạn sẽ phải sử dụng Delphi hoặc C++.

Hoặc, bạn có thể kiểm tra MAX made by Cycling74 - nó giống như một IDE cho âm nhạc ;-) - và tôi khá chắc chắn bạn có thể sử dụng Python với nó.

0

Bạn có thể viết máy chủ Rewire. Mặc dù, bạn sẽ phải nhận được một giấy phép (giấy phép là miễn phí, nhưng ứng dụng của bạn phải là độc quyền, do đó, không có nguồn mở).

Hoặc, bạn có thể giao diện qua tin nhắn MIDI.

Cuối cùng, bạn có thể triển khai thiết bị âm thanh giả để định tuyến âm thanh đến/từ bất cứ nơi nào bạn muốn hoặc xử lý nó theo một cách nào đó. Tôi tưởng tượng tất cả những điều này sẽ rất khó khăn. MIDI có lẽ là dễ nhất trong ba (tôi không biết giao thức Rewire dễ sử dụng hay khó sử dụng).

+0

Bạn cũng có thể viết một plugin VST, nhưng Lý do không hỗ trợ chúng, AFAIK. – Dan

3

Cả hai ứng dụng đều hỗ trợ MIDI. Chỉ là họ không gặp nhau.

Để gửi tin nhắn qua MIDI giữa các ứng dụng, bạn cần cài đặt cổng midi ảo.

Có một số tự do có sẵn, nhưng hoạt động này: http://www.midiox.com/zip/MidiYokeSetup.msi

Bạn sẽ nhận được một cổng đầu ra MIDI ảo mà bạn có thể viết thư cho như thể nó là một thiết bị MIDI bình thường. Trong Fruity Loops hoặc Rebirth bạn chọn cổng đó làm đầu vào. Đó là tất cả những gì bạn cần làm để kết nối các chương trình.

Nó sẽ làm việc như thế này:

Your Application ->Virtual MIDI Port ->FruityLoops

1

Những gì bạn cần là một VST MIDI scripter/kịch bản plugin để tạo ra một logic của sự kiện MIDI có thể được gửi cho bất kỳ kênh MIDI nào. Bạn sẽ cần phải thiết lập một kênh MIDI trong FL cho các công cụ/hiệu ứng VST bạn cần phải tinh chỉnh các giá trị của nó. Google cho nó có một số bổ sung xung quanh và vui lòng chia sẻ chúng ở đây nếu bạn thấy bất kỳ điều gì hữu ích :)

+0

SuperMidiScripter: http://azertopia.free.fr/Supermidiscripter.html và cũng có VstLua trông đẹp mắt nhưng tôi không thể tìm thấy liên kết tải xuống từ trang web của tác giả gốc. Chia sẻ nếu bạn tìm thấy nó xin vui lòng hoặc nếu có ai có nó xin vui lòng tải nó ở đâu đó cho chúng tôi. – stagas

0

Có một máy trạm nhạc mở, được gọi là Frinika và bạn có thể viết bằng Javascript. (Chèn/xóa ghi chú, thay đổi hiệu ứng midi như bánh xe sân vv) Nó có thể nhập/xuất các tệp midi thông thường, vì vậy nó sẽ hoạt động với các vòng Fruity hoặc bất kỳ thứ gì khác bạn có.

// Insert New 

song.newLane("MyMidiLane", type("Midi")); 
lane = song.getLane("MyMidiLane"); 

part = lane.newPart(time("10.0:000"), time("4.0:000")); 

part.insertNote(note("c#3"), time("11.2:000"), time("2:0"), 120); 
part.insertNote(note("f3"), time("11.3:000"), time("1:0"), 100); 
part.insertNote(note("g#3"), time("11.3:000"), time("1:0"), 100); 
part.insertNote(note("b3"), time("11.3:000"), time("0:64"), 100); 
part.removeNote(note("f3"), time("11.3:000")); 

part = song.newLane("MyTextLane", 
type("Text")).newPart(time("24.0:000"), time("10.0:000")); 
part.text = "This is the test text to be inserted."; 
part.lane.parts[0].remove(); // remove initially inserted text-part 

Một ví dụ khác cho việc đọc/thay đổi ghi chú:

lane = song.getLane("MyMidiLane"); 
// a lane has a fixed instrument assigned 


lane.parts[0].notes[0].duration=64 
lane.parts[0].notes[1].duration=32 
lane.parts[0].notes[1].startTick=120 
// Parts are blocks of notes that you can drag around together in the Frinika GUI. 
// They're like patterns in trackers. 
for (i in lane.parts[0].notes){ 
    println("i: "+i+", n: "+noteName(lane.parts[0].notes[i].note)); 
    println("i: "+i+", dur: "+lane.parts[0].notes[i].duration); 
    println("i: "+i+", startT: "+lane.parts[0].notes[i].startTick); 
} 

http://frinika.appspot.com/ Nó có một launcher Java Webstart là tốt, do đó bạn thậm chí không phải cài đặt.

Nó cũng sử dụng để đóng gói tài liệu Javadoc, nhưng đối với một số tài liệu lý do các lần tải xuống mới nhất của họ không bao gồm tài liệu đó. Thật đáng tiếc, bởi vì đó là nơi các liên kết Javascript được ghi lại. Vì vậy, bây giờ bạn có để duyệt nguồn hoặc tự xây dựng Javadoc. (Nó có một số ví dụ tích hợp có thể truy cập từ cửa sổ kịch bản, bạn nên kiểm tra chúng trước. Ví dụ đầu tiên của tôi là từ đó.)

Đây là nguồn tài liệu bạn sẽ tìm thấy tài liệu Javascript:

frinika Javascript doc/source

Nhưng cũng có các tùy chọn khác. Bạn cũng có thể xem mingus, thư viện Python cho lý thuyết âm nhạc và xử lý tệp midi. Nó đòi hỏi Fluidsynth, và các ứng dụng demo đòi hỏi GamePython quá, do đó, nó là một chút phức tạp hơn để thiết lập hơn Frinika.

P.S .: Frinika có lỗi cụ thể: khi kéo xung quanh ghi chú lân cận, một số có thể không phát ra độ dài phù hợp.Bạn có thể giúp điều đó bằng cách chuyển tiếp và quay lại các ghi chú liên tiếp (khá nhanh trong chế độ xem cuộn piano) hoặc kéo phần chứa ghi chú ra và quay lại. Khởi động lại Frinika cũng sẽ giúp, nhưng đó là cách chậm hơn. Vì vậy, lỗi này sẽ không ảnh hưởng đến các tập tin lưu, không xuất khẩu midi.

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