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

## midremot

midremot — Un opcode que l'on peut utiliser pour implémenter un orchestre midi distant. Cet opcode envoie des évènements midi d'une machine source vers une machine de destination.

## Description

Avec les opcodes midremot et midglobal il est possible d'exécuter des instruments sur des machines distantes et de les contrôler depuis une machine maître. Les opcodes distants sont implémentés suivant le modèle maître/client. Toutes les machines concernées contiennent le même orchestre mais seule la machine maître possède l'information de la partition midi. Durant l'exécution, la machine maître envoie les évènements midi aux clients. L'opcode midremot envoie des évènements d'une machine source à une machine de destination. Pour envoyer des évènements à plusieurs destinations (diffusion), on utilise l'opcode midglobal. Ces deux opcodes peuvent être utilisés en combinaison.

## Syntaxe

    midremot idestination, isource, instrnum [,instrnum...]

## Initialisation

idestination -- une chaîne représentant l'ordinateur de destination (par exemple 192.168.0.100). C'est l'hôte de destination qui reçoit les évènements de l'instrument donné.

isource -- une chaîne représentant l'ordinateur hôte (par exemple 192.168.0.100). C'est l'hôte source qui génère les évènements pour l'instruments donné et les envoie à l'adresse donnée par idestination.

instrnum -- liste des numéros des intruments qui seront joués sur la machines destinataire.

## Exemples

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

Exemple 602. Exemple de l'opcode midremot.

L'exemple montre une fugue de Bach jouée sur 4 ordinateurs distants. La machine maître est nommée "192.168.1.100", le client1 "192.168.1.101" et ainsi de suite. Démarrer le client sur chaque machine (ils attendront de recevoir les évènements de la machine maître), puis démarrer le maître. Sur un système linux, on démarre un client avec la commande (csound -dm0 -odac -+rtaudio=alsa midremot.csd -+rtmidi=Null), tandis que la commande sur la machine maître ressemble à ceci (csound -dm0 -odac -+rtaudio=alsa midremot.csd -F midremot.mid).

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

    <CsInstruments>
    sr	= 44100
    kr	= 441
    ksmps	= 100
    nchnls = 2

    massign 1,1
    massign 2,2
    massign 3,3
    massign 4,4
    massign 5,5

    ga1 init 0
    ga2 init 0

    gi1	sfload	   "19Trumpet.sf2"

    gi2	sfload	   "01hpschd.sf2"

    gi3	sfload	   "07AcousticGuitar.sf2"

    gi4	sfload	   "22Bassoon.sf2"

    gitab	ftgen	1,0,1024,10,1

    midremot "192.168.1.100", "192.168.1.101", 1
    midremot "192.168.1.100", "192.168.1.102", 2
    midremot "192.168.1.100", "192.168.1.103", 3

    midglobal "192.168.1.100", 5

    	instr 1
    	sfpassign	   0, gi1
    ifreq	cpsmidi
    iamp	ampmidi 10
    inum	notnum
    ivel	veloc
    kamp	linsegr	1,1,1,.1,0
    kfreq	init	1
    a1,a2	sfplay	ivel,inum,kamp*iamp,kfreq,0,0
    	outs	a1,a2
    vincr ga1, a1*.5
    vincr ga2, a2*.5
    	endin

    	instr 2
    	sfpassign	0,    gi2
    ifreq	cpsmidi
    iamp	ampmidi 15
    inum	notnum
    ivel	veloc
    kamp	linsegr	1,1,1,.1,0
    kfreq	init	1
    a1,a2	sfplay	ivel,inum,kamp*iamp,kfreq,0,0
    	outs	a1,a2
    vincr ga1, a1*.4
    vincr ga2, a2*.4
    	endin

    	instr 3
    	sfpassign	0,    gi3
    ifreq	cpsmidi
    iamp	ampmidi 10
    inum	notnum
    ivel	veloc
    kamp	linsegr	1,1,1,.1,0
    kfreq	init	1
    a1,a2	sfplay	ivel,inum,kamp*iamp,kfreq,0,0
    	outs	a1,a2
    vincr ga1, a1*.5
    vincr ga2, a2*.5
    	endin

    	instr 4
    	sfpassign	0,    gi4
    ifreq	cpsmidi
    iamp	ampmidi 15
    inum	notnum
    ivel	veloc
    kamp	linsegr	1,1,1,.1,0
    kfreq	init	1
    a1,a2	sfplay	ivel,inum,kamp*iamp,kfreq,0,0
    	outs	a1,a2
    vincr ga1, a1*.5
    vincr ga2, a2*.5
    	endin

    instr	5
          kamp midic7 1,0,1
          denorm ga1
          denorm ga2
    aL, aR  reverbsc ga1, ga2, .9, 16000, sr, 0.5
            outs aL, aR
    	ga1	=	0
         ga2   =     0
    endin

    </CsInstruments>
    <CsScore>
    ; Score
    f0  160
    </CsScore>

    </CsoundSynthesizer>

## Voir aussi

insglobal, insremot, midglobal, remoteport

## Crédits

Auteur : Simon Schampijer
2006

Nouveau dans la version 5.03

Précédent | Niveau supérieur | Suivant
miditempo | Sommaire | min