midiin

midiin — Retourne un message MIDI générique reçu sur le port MIDI IN.

Description

Retourne un message MIDI générique reçu sur le port MIDI IN.

Syntaxe

kstatus, kchan, kdata1, kdata2 midiin

Exécution

kstatus -- le type de message MIDI. Peut être :

  • 128 (note off)

  • 144 (note on)

  • 160 (aftertouch polyphonique)

  • 176 (changement de contrôle)

  • 192 (changement de programme)

  • 208 (aftertouch de canal)

  • 224 (pitch bend

  • 0 si aucun message MIDI n'est en attente dans le tampon MIDI IN

kchan -- canal MIDI (1-16)

kdata1, kdata2 -- données dépendant du message

midiin n'a pas d'arguments en entrée, car il lit implicitement le port MIDI. Il travaille au taux-k. Normalement (quand aucun message n'est en attente), kstatus vaut zéro. kstatus ne prend la valeur du type de message adéquat que lorsque des données MIDI sont présentes dans le tampon MIDI IN.

[Note] Note

Il faut faire attention lorsque l'on utilise midiin dans des instruments de faible numéro car une note MIDI démarrera des instances supplémentaires des instruments, ce qui provoquera des duplications d'évènement et un comportement étrange. Utiliser massign pour diriger les messages de note MIDI vers un intrument différent ou pour désactiver l'activation d'instruments à partir du MIDI.

Exemples

Voici un exemple ce l'opcode midiin. Il utilise le fichier midiin.csd.

Exemple 542. Exemple ce l'opcode midiin.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

<CsoundSynthesizer>

<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in    No messages
-odac           -iadc     -d         -M0  -+rtmidi=virtual ;;;RT audio I/O with MIDI in
; For Non-realtime ouput leave only the line below:
; -o midiin.wav -W ;;; for file output any platform
</CsOptions>

<CsInstruments>

sr        =  44100
ksmps     =  10
nchnls    =  1

; Example by schwaahed 2006

      massign         0, 130  ; make sure that all channels
      pgmassign       0, 130  ; and programs are assigned to test instr


  instr   130

knotelength    init    0
knoteontime    init    0

kstatus, kchan, kdata1, kdata2                  midiin

if (kstatus == 128) then
knoteofftime    times
knotelength    =    knoteofftime - knoteontime
printks "kstatus= %d, kchan = %d, \\tnote#  = %d, velocity = %d \\tNote OFF\\t%f %f\\n", 0, kstatus, kchan, kdata1,kdata2, knoteofftime, knotelength

elseif (kstatus == 144) then
knoteontime    times
printks "kstatus= %d, kchan = %d, \\tnote#  = %d, velocity = %d \\tNote ON\\t%f\\n", 0, kstatus, kchan, kdata1, kdata2, knoteontime


elseif (kstatus == 160) then
printks "kstatus= %d, kchan = %d, \\tkdata1 = %d, kdata2 = %d \\tPolyphonic Aftertouch\\n", 0, kstatus, kchan, kdata1, kdata2

elseif (kstatus == 176) then
printks "kstatus= %d, kchan = %d, \\t CC = %d, value = %d \\tControl Change\\n", 0, kstatus, kchan, kdata1, kdata2

elseif (kstatus == 192) then
printks "kstatus= %d, kchan = %d, \\tkdata1 = %d, kdata2 = %d \\tProgram Change\\n", 0, kstatus, kchan, kdata1, kdata2

elseif (kstatus == 208) then
printks  "kstatus= %d, kchan = %d, \\tkdata1 = %d, kdata2 = %d \\tChannel Aftertouch\\n", 0, kstatus, kchan, kdata1, kdata2

elseif (kstatus == 224) then
printks "kstatus= %d, kchan = %d, \\t ( data1 , kdata2 ) = ( %d, %d )\\tPitch Bend\\n", 0, kstatus, kchan, kdata1, kdata2

endif

  endin

</CsInstruments>

<CsScore>
i130 0 3600
e
</CsScore>

</CsoundSynthesizer> 


Crédits

Auteur : Gabriel Maldonado
Italie
1998

Nouveau dans le version 3.492 de Csound.