hrtfstat

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.

Description

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.

Syntaxe

      aleft, aright hrtfstat asrc, iAz, iElev, ifilel, ifiler [,iradius, isr]
    

Initialisation

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] 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] 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.

Exécution

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.

Exemples

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>


Voir aussi

hrtfmove, hrtfmove2, hrtfer.

Plus d'information sur cet opcode : http://www.csoundjournal.com/issue9/newHRTFOpcodes.html, écrit par Brian Carty.

Crédits

Auteur : Brian Carty
Maynooth
2008