скриптовый фруктовый цикл или пропеллер из VB или Python? - PullRequest
9 голосов
/ 06 ноября 2008

На моем ПК с Windows установлены программные синтезаторы Fruityloops и Propellerheads Reason.

Каким образом я могу получить и написать их из Visual Basic или Python? Или хотя бы посылать миди-сообщения синтезаторам из кода?

Обновление: попытки использовать что-то вроде «midi-mapper» (спасибо за ссылку MusiGenesis), похоже, не работают. Я не думаю, что Reason или FL Studio ведут себя как стандартные синтезаторы GM Midi.

Обновление 2: если вас интересует этот вопрос, проверьте это тоже .

Ответы [ 7 ]

3 голосов
/ 15 мая 2010

Оба приложения поддерживают MIDI. Просто они не видят друг друга.

Чтобы отправлять сообщения через MIDI между приложениями, вам необходимо установить виртуальный миди-порт .

Есть несколько свободно доступных, но этот работает: http://www.midiox.com/zip/MidiYokeSetup.msi

Вы получите виртуальный выходной MIDI-порт, на который вы можете записывать, как если бы это было обычное MIDI-устройство. В Fruity Loops или Rebirth вы выбираете этот порт в качестве входа. Это все, что вам нужно сделать, чтобы подключить программы.

Это будет работать так:

Your Application -> Virtual MIDI Port -> FruityLoops

2 голосов
/ 06 ноября 2008

Примечание. Этот ответ не совсем отвечает на заданный вами вопрос, но может привести к желаемому результату:)

Вы можете создать плагин VST на Java с помощью jVSTWrapper (http://jvstwrapper.sourceforge.net/). Если вы действительно хотите использовать Python, вы можете использовать Jython для взаимодействия с Java и делать это таким образом. В качестве альтернативы вы можете просто написать плагин на Java или другой язык сценариев для JVM, такой как Groovy.

2 голосов
/ 06 ноября 2008

Я думаю, что FL Studio и Reason можно настроить в качестве устройства воспроизведения MIDI по умолчанию. Чтобы отправлять MIDI-сообщения в VB.NET, нужно вызвать API-вызовы midiOutOpen, midiOutShortMsg и midiOutClose. Вот ссылка на примеры кода:

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

Они предназначены для VB6, но их легко перевести на VB.NET.

Я знаю, что FL Studio можно "запустить" из плагина, созданного для FL (или плагина VSTx), но я думаю, что они всегда написаны на C или C ++.

Редактировать: я только что узнал, что в Windows Vista пропал MIDI Mapper (что сделало бы настройку FL или Reason простым MIDI-устройством по умолчанию). Удивительно. Вот ссылка, которую я нашел с альтернативным решением:

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

Я только что попробовал (это просто * .CPL-файл, который вы запускаете дважды), и он работает (хотя GM Synth - единственная опция, доступная на моем ноутбуке, поэтому я не уверен, он выберет FL или Reason в качестве выбора).

1 голос
/ 15 мая 2010

Вам понадобится VST MIDI-скрипт / плагин скриптов для создания логики MIDI-событий, которые можно отправлять на любой MIDI-канал. Вам необходимо установить MIDI-канал в FL для инструмента / эффекта VST, который необходимо настроить для его значений. Google для этого есть несколько плагинов вокруг, и, пожалуйста, поделитесь ими здесь, если вы найдете что-нибудь полезное:)

0 голосов
/ 14 декабря 2010

Есть музыкальная рабочая станция с открытым исходным кодом, называемая Frinika, и вы можете написать это в Javascript. (Вставляйте / удаляйте заметки, меняйте миди-эффекты, такие как колесо тона и т. Д.). Он может импортировать / экспортировать обычные миди-файлы, поэтому он будет работать с циклами Fruity или чем-либо еще.

// 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 

Другой пример чтения / изменения заметок:

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/ Он также имеет панель запуска Java Webstart, так что вам даже не нужно установка.

Он также использовался для комплектации документации Javadoc, но для некоторых причина их последних загрузок не включает это. Жаль, потому что вот где привязки Javascript задокументированы. Итак, теперь у вас есть чтобы просмотреть исходный код или создать Javadoc самостоятельно. (В нем есть несколько встроенных примеров, которые доступны из окна скриптов, вы должны сначала проверить их. Мой первый пример оттуда.)

Вот исходный файл, в котором вы найдете документы Javascript:

Фриника Javascript doc / source

Но есть и другие варианты. Вы также можете проверить mingus - библиотеку Python для теории музыки и обработки миди-файлов. Для этого требуется Fluidsynth, а для демонстрационных приложений также требуется GamePython, поэтому его настройка немного сложнее, чем Frinika.

P.S .: У Frinika есть особая ошибка: при перетаскивании соседних нот некоторые могут звучать неправильно. Вы можете помочь в этом, транспонируя вперед и назад последовательные ноты (довольно быстро при просмотре рояля фортепиано) или перетаскивая часть, содержащую ноты, вперед и назад. Перезапуск Frinika также поможет, но это медленный путь. Так что эта ошибка не повлияет на сохраненные файлы и экспорт midi.

0 голосов
/ 06 ноября 2008

Вы можете написать Rewire хост. Тем не менее, вам придется получить лицензию (лицензия бесплатная, но ваше приложение должно быть проприетарным, поэтому нет открытого источника).

Кроме того, вы можете взаимодействовать через MIDI-сообщения.

Наконец, вы можете реализовать фиктивное аудиоустройство, которое будет направлять аудио в / из любого места или обрабатывать его каким-либо образом. Я думаю, что все это будет достаточно сложно. MIDI, вероятно, самый простой из трех (я не знаю, насколько простым или сложным является использование протокола Rewire).

0 голосов
/ 06 ноября 2008

Когда дело доходит до Reason, вы можете делать с ним многое из-за его закрытой архитектуры - вы можете использовать плагины VST (или любые другие типы, например DirectX) - ваш единственный вариант - использовать MIDI.

Что касается Fruity Loops, вы могли бы написать VST-плагин, который может принимать входные данные от языка сценариев (VB, Python или чего-либо еще), но для того, чтобы написать такое, вам придется использовать Delphi или C ++.

Кроме того, вы можете проверить MAX, сделанный Cycling74 - это что-то вроде IDE для музыки ;-) - и я почти уверен, что вы можете использовать Python с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...