Introducción
Los usuarios de Musescore nos encontramos que al usar Instrumentos Virtuales Externos, no podemos hacer uso de ciertos controladores. Concretamente, en los instrumentos de vientos, metal y cuerdas, nos encontramos que la valor de velocidad de las notas MIDI son interpretados como velocidad de ataque del sonido y no como intensidad de las notas. En estos instrumentos la intensidad del sonido es regulada con un controlador MIDI, concretamente con la rueda de modulación. Y es por ello que estos instrumentos suenan sin dinámica alguna, pues sólo la velocidad de las notas MIDI afectan a si el sonido es más o menos percusivo. Lo ideal sería que los reguladores de la partitura actuasen sobre los valores del controlador MIDI y aplicase la correspondiente dinámica, pero desafortunadamente no es así. Para simular esta dinámica existe la posibilidad de usar las características de «scripts» implementadas en el Kontakt 5 y usar los valores de velocidad de las notas MIDI para actuar sobre el controlador MIDI que regula la intensidad del sonido. A continuación detallaremos como hacerlo.
Requisitos e instalación
Los requisitos son obvios, disponer del Garritan Personal Orchestra 2 y del Kontakt 5 (gratuito). Respecto al resto del software es libre.
El software que debemos instalar en OpenSuSE Leap 15.0 es:
- Musescore 2.2.1 (disponible en la web de OpenSuSE)
- wine 3.7 (disponible en la distribución)
- qjackctrl 0.4.3 (disponible en la distribución)
- dssi-vst 0.9.2 (https://www.rncbc.org/archive/dssi-vst-0.9.2-2.rncbc.suse.x86_64.rpm)
Posteriormente debemos instalar el Garritan Personal Orchestra 2.
Luego la actualizacion al Kontakt Player 2.
Y por último el Kontakt 5 que puedes conseguirlo gratuitamente aquí,
lo instalamos.
Configuración de Musescore con jack
Una vez instalados todos los programas procederemos a la configuración. Primero iniciamos qjackctrl para arrancar el subsistema de sonido de baja latencia jack, pulsando el boton «Setup» y lo configuramos usando el Driver «alsa» y el Driver MIDI «seq».
Una vez configurado lo arrancamos pulsando «iniciar».
Una vez iniciado arrancamos Musescore y vamos a «Editar» y a «Preferencias», lo configuramos para usar el servidor de audio jack.
Aplicamos los cambios y reiniciamos Musescore.
Configuración de dssi-vst
Para poder usar el programa vsthost, que permite cargar los plugins VST con jack, debemos definir las variables de entorno que afectan a este programa. Para ello y como «root», crearemos el archivo «profile.local» en la carpeta «/etc». En este archivo definiremos dos variables de entorno.
export DSSI_PATH=/usr/lib64/dssi:/usr/local/lib64/dssi export VST_PATH="/home/pepeir/.wine/drive_c/Program Files/Native Instruments/VSTPlugins 32 bit/"
Después debemos editar el icono del acceso directo a la aplicación del escritorio para que use vsthost y no wine para iniciar el pluging VST Kontakt 5.
En la pestaña «Aplicación» pondremos en el apartado «Orden:» lo siguiente.
vsthost "Kontakt 5.dll"
Por último reiniciamos el equipo para que carge las variables de entorno.
Integrando Musescore y Kontakt 5
Iniciamos primero qjackctrl, seguidamente Musescore y por ultimo Kontakt 5 (con vsthost). Tras ello, en Musescore deshabilitamos el sintetizador interno. Vamos a «Ver» y a «Sintetizador», seleccionamos el SoundFont que carga por defecto y le damos a «Eliminar».
Cerramos la ventana y vamos a qjackctrl. Vamos en «Conexiones» a la pestaña «ALSA» para ver el nº de orden de puerto de entrada del Kontakt 5.
Después vamos a la pestaña «MIDI» y allí conectamos «mscore» con «midi_playback_(nº de orden de puerto de enrada del Kontakt 5)».
Ahora vamos al Kontakt 5 para cargar un banco de sonido.
Programación del script para mandar los valores de «Key Velocity» de las notas al «Controlador»
En el último paso modificaremos el script «Transform», proporcionado por Kontakt 5, para añadir la nueva característica. Para ello añadiremos un ítem adicional en el menú 1.
add_menu_item($menu_1,"Velocity",7)
Después crearemos una sección nueva con el código correspondiente al ítem «Velocity», justo después de la sección {Program Change}.
{Velocity} if (($MIDI_COMMAND = $MIDI_COMMAND_NOTE_ON and $MIDI_BYTE_2 > 0) and $menu_1 = 7) set_midi($MIDI_CHANNEL,$MIDI_COMMAND_NOTE_ON,$MIDI_BYTE_1,$MIDI_BYTE_2) select ($menu_2) case 2 {Controller} if ($channel_2 = -1) set_midi($MIDI_CHANNEL,$MIDI_COMMAND_CC,$cc_number_2,$MIDI_BYTE_2) else set_midi($channel_2,$MIDI_COMMAND_CC,$cc_number_2,$MIDI_BYTE_2) end if case 3 {Pitch Bend} if ($channel_2 = -1) set_midi($MIDI_CHANNEL,$MIDI_COMMAND_PITCH_BEND,0,$MIDI_BYTE_2) else set_midi($channel_2,$MIDI_COMMAND_PITCH_BEND,0,$MIDI_BYTE_2) end if case 4 {Mono AT} if ($channel_2 = -1) set_midi($MIDI_CHANNEL,$MIDI_COMMAND_MONO_AT,$MIDI_BYTE_2,0) else set_midi($channel_2,$MIDI_COMMAND_MONO_AT,$MIDI_BYTE_2,0) end if case 5 {Poly AT} if ($channel_2 = -1) set_midi($MIDI_CHANNEL,$MIDI_COMMAND_POLY_AT,$poly_number_2,$MIDI_BYTE_2) else set_midi($channel_2,$MIDI_COMMAND_POLY_AT,$poly_number_2,$MIDI_BYTE_2) end if case 6 {PC} if ($channel_2 = -1) set_midi($MIDI_CHANNEL,$MIDI_COMMAND_PROGRAM_CHANGE,$MIDI_BYTE_2,0) else set_midi($channel_2,$MIDI_COMMAND_PROGRAM_CHANGE,$MIDI_BYTE_2,0) end if end select end if if ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_OFF or ($MIDI_COMMAND = $MIDI_COMMAND_NOTE_ON and $MIDI_BYTE_2 = 0)) if ($menu_1 = 7) set_midi($MIDI_CHANNEL,$MIDI_COMMAND_NOTE_OFF,$MIDI_BYTE_1,$MIDI_BYTE_2) end if end if
Una vez modificado lo guardaremos como «Transform2».
Finalmente probaremos a reproducir en Musescore una partitura con dinámicas para ver como la rueda de modulación se mueve en función de la intensidad de las notas.