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 537. 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 538. 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