python vb.net music

scripting fruityloops o propellerheads reason de VB o Python?



vb.net music (7)

Hay una estación de trabajo de música de código abierto, llamada Frinika, y puedes escribirla en Javascript. (Insertar / eliminar notas, cambiar los efectos midi como rueda de tono, etc.) Puede importar / exportar archivos midi regulares, por lo que funcionará con bucles Afrutados o cualquier otra cosa que tenga.

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

Otro ejemplo para leer / cambiar notas:

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/ También tiene un iniciador Java Webstart, por lo que ni siquiera tiene que instalar.

Solía ​​agrupar la documentación de Javadoc también, pero por alguna razón sus últimas descargas no incluyen eso. Es una pena, porque ahí es donde están documentados los enlaces de Javascript. Entonces, ahora tiene que navegar por la fuente o construir el Javadoc usted mismo. (Tiene algunos ejemplos incorporados a los que se puede acceder desde la ventana de creación de scripts, primero debe verificarlos. Mi primer ejemplo es desde allí).

Aquí está el archivo de origen donde encontrará los documentos de Javascript:

frinika Javascript doc / source

Pero también hay otras opciones. También puedes echar un vistazo a mingus , que es una biblioteca de Python para la teoría de la música y el manejo de archivos midi. Requiere Fluidsynth, y las aplicaciones de demostración también requieren GamePython, por lo que es un poco más complicado de configurar que Frinika.

PD: Frinika tiene un error en particular: al arrastrar notas vecinas, es posible que algunas no suenen la longitud correcta. Puede ayudarlo transponiendo adelante y atrás las notas consecutivas (bastante rápido en la vista de piano roll), o arrastrando la parte que contiene las notas adelante y atrás. Reiniciar Frinika también ayudará, pero esa es la manera más lenta. Por lo tanto, este error no afectará a los archivos guardados, ni a la exportación midi.

Tengo dos sintetizadores de software Fruityloops y Propellerheads Reason en mi PC con Windows.

¿De cualquier forma que pueda obtener y guiarlos desde Visual Basic o Python? ¿O al menos enviar mensajes MIDI a los sintetizadores desde el código?

Actualización: los intentos de utilizar algo así como un "midi-mapper" (gracias por el enlace MusiGenesis) no parecen funcionar. No creo que Reason o FL Studio actúen como sintetizadores GM Midi estándar.

Actualización 2: si está interesado en esta pregunta, revise esto también .


Creo que tanto FL Studio como Reason pueden configurarse como el dispositivo de reproducción MIDI predeterminado. Para enviar mensajes MIDI a VB.NET, deberá invocar las llamadas a la API midiOutOpen, midiOutShortMsg y midiOutClose. Aquí hay un enlace a ejemplos de código:

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

Son para VB6, pero deberían ser fáciles de traducir a VB.NET.

Sé que FL Studio puede ser "controlado" desde un plugin creado para FL (o un plugin VSTx), pero creo que estos siempre están escritos en C o C ++.

Editar: Acabo de enterarme de que Windows Vista eliminó el Mapper MIDI (lo que habría hecho que la configuración de FL o Reason como el dispositivo MIDI predeterminado sea simple). Asombroso. Aquí hay un enlace que encontré con una solución alternativa:

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

Acabo de probarlo (es solo un archivo * .CPL que hace doble clic para ejecutarlo) y parece funcionar (aunque GM Synth es la única opción disponible en mi computadora portátil, así que no estoy seguro si elegirá hasta FL o Reason como opciones).


Nota: Esta respuesta no responde exactamente a la pregunta que hizo, pero podría lograr el resultado que desea :)

Puede crear un plugin VST en Java utilizando jVSTWrapper ( http://jvstwrapper.sourceforge.net/ ). Si realmente quería usar Python, podría usar Jython para interactuar con Java y hacerlo de esa manera. Alternativamente, puede escribir el plugin en Java u otro lenguaje de scripts para la JVM, como Groovy.


Podrías escribir un host Rewire . Sin embargo, deberá obtener una licencia (la licencia es gratuita, pero su aplicación debe ser de propiedad exclusiva, por lo tanto, no debe ser de código abierto).

Alternativamente, puede interactuar a través de mensajes MIDI.

Finalmente, podría implementar un dispositivo de audio ficticio que enrutaría el audio hacia o desde donde quisiera o lo procesaría de alguna manera. Me imagino que todo esto sería bastante difícil. MIDI es probablemente el más fácil de los tres (no tengo idea de lo fácil o difícil que es usar el protocolo Rewire).


Lo que necesita es un complemento VST MIDI scripter / scripting para crear una lógica de eventos MIDI que pueden enviarse a cualquier canal MIDI. Debería establecer un canal MIDI en FL para el instrumento / efecto VST que necesita ajustar sus valores. Busque en Google hay algunos complementos y por favor vuelva a compartirlos aquí si encuentra algo útil :)


Ambas aplicaciones admiten MIDI. Es solo que no se ven.

Para enviar mensajes a través de MIDI entre aplicaciones, debe instalar un puerto midi virtual .

Hay varios disponibles de forma gratuita, pero este funciona: http://www.midiox.com/zip/MidiYokeSetup.msi

Obtendrá un puerto de salida MIDI virtual en el que puede escribir como si fuera un dispositivo MIDI normal. En Fruity Loops o Renacimiento, eliges ese puerto como entrada. Eso es todo lo que necesita hacer para conectar los programas.

Funcionará así:

Your Application -> Virtual MIDI Port -> FruityLoops


Cuando se trata de Reason, puedes hacer mucho con él debido a su arquitectura cerrada: puedes usar complementos VST (o cualquier otro tipo, como los de DirectX); tu única opción es usar MIDI.

Con respecto a Fruity Loops, podrías escribir un plugin VST que pueda tomar una entrada de un lenguaje de scripting (VB, Python o lo que sea) pero para escribir tal cosa deberías usar Delphi o C ++.

Alternativamente, puedes ver MAX hecho por Cycling74 , es algo así como un IDE para música ;-) y estoy seguro de que puedes usar Python con él.