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

## pgmassign

pgmassign — Affecte un numéro d'instrument à un numéro de programme MIDI spécifié.

## Description

Affecte un numéro d'instrument à un (ou à tous) le(s) programme(s) MIDI spécifié(s).

Par défaut, le numéro de l'instrument est le même que celui du programme. Si l'intrument choisi est inférieur ou égal à zéro, ou n'existe pas, le changement de programme est ignoré. Cet opcode est normalement utilisé dans l'en-tête de l'orchestre. Cependant, comme massign, il fonctionne aussi dans les instruments.

## Syntaxe

    pgmassign ipgm, inst[, ichn]

    pgmassign ipgm, "insname"[, ichn]

## Initialisation

ipgm -- numéro de programme MIDI (1 à 128). Une valeur de zéro sélectionne tous les programmes.

inst -- numéro d'instrument. S'il est inférieur ou égal à zéro, les changements de programme MIDI à ipgm sont ignorés. Actuellement, l'affectation à un instrument qui n'existe pas a le même effet. Ceci pourra changer dans une version future afin d'imprimer un message d'erreur.

« insname » -- une chaîne de caractères (entre guillemets) représentant un nom d'instrument.

« ichn » (facultatif, par défaut zéro) -- numéro de canal. S'il vaut zéro, les changments de programme sont effectués sur tout les canaux.

Vous pouvez empêcher l'activation de n'importe quel instrument en utilisant l'en-tête ci-dessous :

            massign 0, 0
            pgmassign 0, 0

## Exemples

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

Exemple 648. Exemple de l'opcode pgmassign.

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  MIDI in
    -odac           -iadc     -d         -M0  ;;;RT audio I/O with MIDI in
    ; For Non-realtime ouput leave only the line below:
    ; -o pgmassign.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 1

    ; Program 55 (synth vox) uses Instrument #10.
    pgmassign 55, 10

    ; Instrument #10.
    instr 10
      ; Just an example, no working code in here!
    endin

    </CsInstruments>
    <CsScore>

    ; Play Instrument #10 for one second.
    i 10 0 1
    e

    </CsScore>
    </CsoundSynthesizer>

Voici un exemple de l'opcode pgmassign qui ignorera les évènements de changement de programme. Il utilise le fichier pgmassign_ignore.csd.

Exemple 649. Exemple de l'opcode pgmassign qui ignorera les évènements de changement de programme.

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

    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 1

    ; Ignore all program change events.
    pgmassign 0, -1

    ; Instrument #1.
    instr 1
      ; Just an example, no working code in here!
    endin

    </CsInstruments>
    <CsScore>

    ; Play Instrument #1 for one second.
    i 1 0 1
    e

    </CsScore>
    </CsoundSynthesizer>

Voici un exemple avancé de l'opcode pgmassign. Il utilise le fichier pgmassign_advanced.csd.

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

Exemple 650. Un exemple avancé de l'opcode pgmassign.

    <CsoundSynthesizer>
    <CsOptions>
    ; Select audio/midi flags here according to platform
    -odac   -F   pgmassign_advanced.mid  ;;;realtime audio out with midifile in
    ;-iadc    ;;;uncomment -iadc if real audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o pgmassign_advanced.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

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

    	massign 1, 1	; channels 1 to 4 use instr 1 by default
    	massign 2, 1
    	massign 3, 1
    	massign 4, 1

    ; pgmassign_advanced.mid can be found in /manual/examples
    ; pgmassign.mid has 4 notes with these parameters:
    ;
    ;	    Start time	Channel	Program
    ;
    ; note 1	0.5	   1	  10
    ; note 2	1.5	   2	  11
    ; note 3	2.5	   3	  12
    ; note 4	3.5	   4	  13

    	pgmassign 0, 0		; disable program changes
    	pgmassign 11, 3		; program 11 uses instr 3
    	pgmassign 12, 2		; program 12 uses instr 2

    ; waveforms for instruments
    itmp	ftgen 1, 0, 1024, 10, 1
    itmp	ftgen 2, 0, 1024, 10, 1, 0.5, 0.3333, 0.25, 0.2, 0.1667, 0.1429, 0.125
    itmp	ftgen 3, 0, 1024, 10, 1, 0, 0.3333, 0, 0.2, 0, 0.1429, 0, 0.10101

    	instr 1		/* sine */

    kcps	cpsmidib 2	; note frequency
    asnd	oscili .6, kcps, 1
    	outs asnd, asnd

    	endin

    	instr 2		/* band-limited sawtooth */

    kcps	cpsmidib 2	; note frequency
    asnd	oscili .6, kcps, 2
    	outs asnd, asnd

    	endin

    	instr 3		/* band-limited square */

    kcps	cpsmidib 2	; note frequency
    asnd	oscili .6, kcps, 3
    	outs asnd, asnd

    	endin

    </CsInstruments>
    <CsScore>

    t 0 120
    f 0 8.5 2 -2 0
    e

    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

midichn et massign

## Crédits

Auteur : Istvan Varga
Mai 2002

Nouveau dans la version 4.20

Précédent | Niveau supérieur | Suivant
peak | Sommaire | phaser1