midiin
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## 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
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 512. 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.

Précédent | Niveau supérieur | Suivant
mididefault | Sommaire | midifilestatus