serialWrite — Ecrit des données sur un port série.
Voici un exemple de l'opcode serialWrite. Il utilise le fichier serialWrite.csd.
Exemple 952. Exemple de l'opcode serialWrite.
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 -n ;;;no output ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o serialWrite.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 500 ; the default krate can be too fast for the arduino to handle nchnls = 2 0dbfs = 1 instr 1 iPort serialBegin "/dev/cu.usbmodemfa131", 9600 ;connect to the arduino with baudrate = 9600 kGain init 16 ;read our knob value kVal serialRead iPort if (kVal != -1) then kGain = kVal/128 endif aSig in ;get our audio input and get its rms kRms rms aSig*kGain kRms = kRms*kRms*255 ;scale the rms to a good value for the LED and send it out serialWrite iPort, (kRms < 255 ? kRms : 255) ;must be in range: 0-255 endin </CsInstruments> <CsScore> f 1 0 1024 10 1 1 1 1 1 1 i 1 0 200 e </CsScore> </CsoundSynthesizer>
Le code Arduino correspondant est :
void setup() { // active la communication serie Serial.begin(9600); // declare la pin 9 comme sortie : pinMode(9, OUTPUT); } void loop() { // n'agir que si l'on recoit quelque chose (doit être au taux-k de csound) if (Serial.available()) { // fixe la brillance de la LED (connectée à la pin 9) a notre valeur d'entree int brightness = Serial.read(); analogWrite(9, brightness); // recupere la valeur du bouton rotatif et l'envoyer à csound int sensorValue = analogRead(A0); Serial.write(sensorValue/4); // ramene dans l'intervalle d'un octet (0-255) } } .....