cpstmid — Retourne un numéro de note MIDI (possibilité d'échelles micro-tonales).
Cette unité est semblable à cpsmidi, mais elle permet de particulariser des échelles micro-tonales.
ifn -- table de fonction contenant les paramètres (numgrades, interval, basefreq, basekeymidi) et les rapports d'accordage.
Seulement durant l'initialisation.
cpsmid nécessite cinq paramètres. Le premier, ifn, est le numéro de la table de fonction des rapports d'accordage, et les autres paramètres sont contenus dans la table de fonction elle-même. La table de fonction ifn doit être générée par GEN02, sans normalisation. Les quatre premières valeurs stockées dans cette fonction sont :
numgrades -- le nombre de degrés de l'échelle micro-tonale
interval -- l'intervalle de fréquence couvert avant de répéter les rapports des degrés. Par exemple, 2 pour une octave, 1.5 pour une quinte, etc.
basefreq -- la fréquence de base de l'échelle en Hz
basekeymidi -- le numéro de note MIDI auquel basefreq est assigné sans modification
Après ces quatre valeurs, on peut commencer à insérer les rapports d'accordage. Par exemple, pour une échelle standard sur 12 notes avec la fréquence de base 261 Hz assignée à la touche numéro 60, l'instruction f correspondante dans la partition pour générer la table sera :
; numgrades interval basefreq basekeymidi tuning ratios (equal temp)
f1 0 64 -2 12 2 261 60 1 1.059463094359 1.122462048309 1.189207115003 ...etc...
Un autre exemple avec une échelle de 24 notes dont la fréquence de base de 440 Hz est assignée à la touche numéro 48, et un intervalle de répétition de 1.5 :
; numgrades interval basefreq basekeymidi tuning-ratios (equal temp)
f1 0 64 -2 24 1.5 440 48 1 1.01 1.02 1.03 ...etc...
Voici un exemple de l'opcode cpstmid. Il utilise le fichier cpstmid.csd.
Exemple 181. Exemple de l'opcode cpstmid.
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 ;;;RT audio I/O with MIDI in ;-iadc ;;;uncomment -iadc if RT audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o cpstmid.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; after an example from Kevin Conder sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; Table #1, a normal 12-tone equal temperament scale. ; numgrades = 12 (twelve tones) ; interval = 2 (one octave) ; basefreq = 261.659 (Middle C) ; basekeymidi = 60 (Middle C) gitemp ftgen 1, 0, 64, -2, 12, 2, 261.659, 60, 1.00, \ 1.059, 1.122, 1.189, 1.260, 1.335, 1.414, \ 1.498, 1.588, 1.682, 1.782, 1.888, 2.000 instr 1 ifn = 1 icps cpstmid ifn print icps asig oscil 0.6, icps, 2 outs asig, asig endin </CsInstruments> <CsScore> f 0 20 ;sine wave. f 2 0 16384 10 1 e </CsScore> </CsoundSynthesizer>