hrtfstat — Génère un signal audio statique 3D binaural pour casque en utilisant un modèle de Woodworth de tête sphérique avec précision améliorée de la phase en basse fréquence.
Cet opcode prend un signal source et le spatialise dans les trois dimensions entourant l'auditeur en utilisant des filtres basés sur une fonction de transfert en relation avec la tête (HRTF). Il produit une sortie statique (les paramètres d'azimut et d'élévation sont de taux-i), car une source statique permet un traitement bien plus efficace que hrtfmove et hrtfmove2.
iAz -- valeur d'azimut en degrés. Les valeurs positives représentent les positions sur la droite, les valeurs négatives les positions sur la gauche.
iElev -- valeur d'élévation en degrés. Les valeurs positives représentent les positions au-dessus de l'horizontale, les valeurs négatives les positions sous l'horizontale (min -40).
ifilel -- fichier des données spectrales HRTF de gauche.
ifiler -- fichier des données spectrales HRTF de droite.
Note | |
---|---|
Des fichiers de données spectrales (basés sur la base de donnée HTRF du MIT) sont disponibles dans trois taux d'échantillonnage : 44.1, 48 et 96 kHz et sont nommés en conséquense. Le sr d'entrée et de traitement doit concorder avec celui du fichier de données. Les fichiers doivent se trouver dans le répertoire courant ou le SADIR (voir Variables d'Environnement). |
Note | |
---|---|
Les fichiers de données HRTF à utiliser avec hrtfmove, hrtfmove2, hrtfstat, hrtfearly et hrtfreverb ont été mis à jour pour les versions 5.15 et ultérieures de Csound (le code a été mis à jour et il est plus efficace). Les anciens fichiers de données sont maintenant obsolètes. |
iradius -- facultatif, rayon de la tête en centimètres utilisé pour le calcul du spectre de phase (9.0 par défaut).
isr - facultatif (44.1 kHz par défaut). Les valeurs autorisées sont 44100, 48000 et 96000.
Une spatialisation statique sans artefact définie par l'utilisateur est rendue possible au moyen d'un algorithme basé sur l'interpolation de magnitude spectrale et un spectre de phase dérivé basé sur le modèle de tête sphérique de Woodworth. La précision de l'ensemble de données fourni est augmentée en extrayant et en appliquant au spectre de phase un facteur de pondération dépendant de la fréquence, ce qui conduit à un délai interaural plus précis dans les basses fréquences. On peut contrôler le rayon de la tête pour la dérivation de la phase ce qui donne un niveau simple d'individualisation. La version à source statique de l'opcode utilise la convolution par chevauchement et addition (le traitement par TFCT n'est pas nécessaire, voir hrtfmove2), et elle est ainsi considérablement plus efficace que hrtfmove2 ou hrtfmove, mais elle ne peut pas générer de sources en mouvement.
Voici un exemple de l'opcode hrtfstat. Il utilise le fichier hrtfstat.csd.
Exemple 444. Exemple de l'opcode hrtfstat.
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 ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o hrtfstat.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 gasrc init 0 instr 1 ;a plucked string kamp = p4 kcps = cpspch(p5) icps = cpspch(p5) a1 pluck kamp, kcps, icps, 0, 1 gasrc = a1 endin instr 10;uses output from instr1 as source aleft,aright hrtfstat gasrc, 90,0, "hrtf-44100-left.dat","hrtf-44100-right.dat" outs aleft, aright clear gasrc endin </CsInstruments> <CsScore> i1 0 2 .7 8.00 ; Play Instrument 1: a plucked string i1 .5 2 .7 8.00 i1 1 2 .7 8.00 i1 2 2 .7 7.00 i10 0 12 ; Play Instrument 10 for 2 seconds. </CsScore> </CsoundSynthesizer>
Voici un autre exemple de l'opcode hrtfstat. Il utilise les fichiers htrfstat-2.csd et Church.wav, qui contient un son échantillonné avec boucle.
Exemple 445. Deuxième exemple de l'opcode hrtfstat
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o hrtfstat-2.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 iAz = p4 iElev = p5 itim = ftlptim(1) ; transeg a dur ty b dur ty c dur ty d kamp transeg 0, p3*.1, 0, .9, p3*.3, -3, .5, p3*.3, -2, 0 ain loscil3 kamp, 50, 1 aleft,aright hrtfstat ain, iAz, iElev, "hrtf-44100-left.dat","hrtf-44100-right.dat" outs aleft, aright endin </CsInstruments> <CsScore> f 1 0 0 1 "Church.wav" 0 0 0 ;Csound computes tablesize ; Azim Elev i1 0 7 90 0 ;to the right i1 3 7 -90 -40 ;to the left and below i1 6 7 180 90 ;behind and up e </CsScore> </CsoundSynthesizer>
Plus d'information sur cet opcode : http://www.csoundjournal.com/issue9/newHRTFOpcodes.html, écrit par Brian Carty.