pgmassign — Affecte un numéro d'instrument à un numéro de programme MIDI spécifié.
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.
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
Voici un exemple de l'opcode pgmassign. Il utilise le fichier pgmassign.csd.
Exemple 750. 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 751. 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 752. 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>