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

## midichn

midichn — Retourne le numéro de canal MIDI duquel la note a été activée.

## Description

midichn retourne le numéro de canal MIDI (1 à 16) duquel la note a été activée. Dans le cas d'une note venant d'une partition, il retourne 0.

## Syntaxe

    ichn midichn

## Initialisation

ichn -- numéro de canal. Si la note courante provient d'une partition, il prend la valeur zéro.

## Exemples

Voici un exemple simple de l'opcode midichn. Il utilise le fichier midichn.csd.

Exemple 507. Exemple simple de l'opcode midichn.

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
    -odac -M0 -+rtmidi=virtual ;;; midi file input
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs  = 1

    instr 1
    ;change channel on virtual midi keyboard
    i1 midichn
       print i1

    endin
    </CsInstruments>
    <CsScore>
    f 0 20	;runs for 20 seconds

    e
    </CsScore>
    </CsoundSynthesizer>

Voici un exemple avancé de l'opcode midichn. Il utilise le fichier midichn_advanced.csd.

Ne pas oublier qu'il faut l'option -F flag lorsque l'on utilise un fichier MIDI externe comme « midichn_advanced.mid ».

Exemple 508. Un exemple avancé de l'opcode midichn.

    <CsoundSynthesizer>
    <CsOptions>
    ; Select audio/midi flags here according to platform
    -odac -F midichn_advanced.mid ;;;realtime audio out with MIDI file input
    ; For Non-realtime ouput leave only the line below:
    ; -o midichn_advanced.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs  = 1

    	massign  1, 1		; all channels use instr 1
    	massign  2, 1
    	massign  3, 1
    	massign  4, 1
    	massign  5, 1
    	massign  6, 1
    	massign  7, 1
    	massign  8, 1
    	massign  9, 1
    	massign 10, 1
    	massign 11, 1
    	massign 12, 1
    	massign 13, 1
    	massign 14, 1
    	massign 15, 1
    	massign 16, 1

    gicnt	=  0		; note counter

    	instr 1

    gicnt	=  gicnt + 1	; update note counter
    kcnt	init gicnt	; copy to local variable
    ichn	midichn		; get channel number
    istime	times		; note-on time

    	if (ichn > 0.5) goto l2		; MIDI note
    	printks "note %.0f (time = %.2f) was activated from the score\\n", \
    		3600, kcnt, istime
    	goto l1
    l2:
    	printks "note %.0f (time = %.2f) was activated from channel %.0f\\n", \
    		3600, kcnt, istime, ichn
    l1:

    icps	cpsmidi		; convert midi note to pitch
    kenv	madsr	0.1, 0, 0.8, 0.9
    asig	pluck	kenv, icps, icps, 1, 1
    	outs	asig, asig

    endin
    </CsInstruments>
    <CsScore>
    t 0 60		;beats per minute

    f 0 8		;stay active for 8 seconds
    f 1 0 4096 10 1	;sine

    e
    </CsScore>
    </CsoundSynthesizer>

Sa sortie contiendra des lignes comme celles-ci :

    note 1 (time = 0.00) was activated from channel 1
    note 2 (time = 2.00) was activated from channel 4
    note 3 (time = 3.00) was activated from channel 2
    note 4 (time = 5.00) was activated from channel 3

## Voir aussi

pgmassign

## Crédits

Auteur : Istvan Varga
Mai 2002

Nouveau dans la version 4.20

Précédent | Niveau supérieur | Suivant
midichannelaftertouch | Sommaire | midicontrolchange