Есть музыкальная рабочая станция с открытым исходным кодом, называемая 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.