6.2 Configurando Midi🔗
Introdução🔗
Esta seção trata do uso dos players FoxDot para sequenciar eventos musicais usando um dispositivo MIDI externo. Isso requer as versões mais atualizadas do FoxDot e do SuperCollider "FoxDot Quark". Você pode saber mais sobre como manter-se atualizado aqui.
Enviando mensagens para um dispositivo MIDI🔗
A primeira coisa a fazer é conectar seu computador ao dispositivo MIDI e certificar-se de que os drivers corretos estão instalados – isso geralmente acontece automaticamente, mas nem sempre. Em seguida, certifique-se de que o SuperCollider pode "ver" o dispositivo. Para fazer isso, abra o SuperCollider e execute esta linha de código:
Você deverá ver uma mensagem no "post window" semelhante a esta:
MIDI: device 0 2 -1202759152 (Microsoft GS Wavetable Synth)
MIDI: device 1 3 -1202759144 (USB2.0-MIDI)
MIDI Sources:
MIDIEndPoint("USB2.0-MIDI", "USB2.0-MIDI")
MIDI Destinations:
MIDIEndPoint("Microsoft GS Wavetable Synth", "Microsoft GS Wavetable Synth")
MIDIEndPoint("USB2.0-MIDI", "USB2.0-MIDI")
-> MIDIClient
Caso contrário, consulte a documentação do SuperCollider sobre MIDIClient. Esta é uma lista dos dispositivos MIDI para os quais o SuperCollider (e o FoxDot) podem enviar mensagens. No Windows (como no exemplo acima), o primeiro dispositivo é o sintetizador MIDI interno da Microsoft para Windows e o segundo é um dispositivo externo conectado por USB (eles podem ter nomes diferentes, dependendo do dispositivo e da conexão). Por padrão, o FoxDot enviará mensagens para o primeiro destino MIDI ("Microsoft GS Wavetable Synth" neste exemplo), mas você pode selecionar um dispositivo diferente executando o mesmo código, mas com o índice do dispositivo preferido entre colchetes. Portanto, para selecionar o dispositivo "USB2.0-MIDI", você executaria:
Agora você pode enviar mensagens para o seu dispositivo MIDI a partir do FoxDot! Para fazer isso, você precisa usar o sintetizador MidiOut. Ele funciona da mesma forma que um sintetizador normal, mas envia mensagens de nota e amplitude para um dispositivo MIDI, por exemplo:
Você pode especificar o canal MIDI como faria com qualquer outro atributo, por exemplo, usando channel=1, cujo padrão é 0.
Observe: Tenha cuidado ao repetir a mesma nota com a mesma duração; se um evento MIDI note-on for acionado um pouco antes do MIDI note-off do evento anterior, ele será interrompido pelo note-off. Esse é um bug conhecido e está sendo investigado.
Sincronização de mensagens MIDI e mensagens FoxDot🔗
Se você estiver usando o FoxDot e seu dispositivo MIDI, poderá notar que os eventos de som não estão sincronizados. Para corrigir isso, você precisa definir manualmente o Clock.midi_nudge = valor, que adiciona um atraso às mensagens MIDI. Aqui está um exemplo de código para ajudar a sincronizar as mensagens:
p1 >> MidiOut([0,4])
p2 >> play("x * ")
# O valor geralmente fica entre 0.15 e 0.25
Clock.midi_nudge = 0.2
Quando os sons estiverem sincronizados, eles permanecerão sincronizados até a próxima vez que você iniciar o FoxDot, então, lembre-se desse valor!