hrtfmove2

hrtfmove2 — Génère un signal audio dynamique 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).

Syntaxe

aleft, aright hrtfmove2 asrc, kAz, kElev, ifilel, ifiler [,ioverlap, iradius, isr]

Initialisation

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.

ioverlap -- facultatif, nombre de chevauchements pour le traitement de la TFCT (4 par défaut). Voir la section du manuel sur la TFCT.

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 : valeurs autorisées : 44100, 48000 et 96000.

Exécution

asrc -- Signal source.

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

kElev -- 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).

Les trajectoires sans artefact définies par l'utilisateur sont rendues possibles par 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 de l'opcode à source dynamique utilise un algorithme de Transformation de Fourier à Court Terme pour éviter les artefacts causés par les changements des spectres de phase dérivés. Le traitement par TFCT signifie que cet opcode est plus gourmand en ressources que hrtfmove qui tronque la phase, mais la phase est constamment actualisée par hrtfmove2.

Exemples

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

Exemple 442. Exemple de l'opcode hrtfmove2.

<CsoundSynthesizer>
<CsOptions>
; Select flags here
; realtime audio out 
 -o dac 
; For Non-realtime ouput leave only the line below:
; -o hrtf.wav
</CsOptions>
<CsInstruments>

sr = 44100
kr = 4410
ksmps = 10
nchnls = 2

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

 kaz	linseg 0, p3, 720		;2 full rotations

 aleft,aright hrtfmove2 gasrc, kaz,0, "hrtf-44100-left.dat","hrtf-44100-right.dat"

 outs	aleft, aright

endin

</CsInstruments>
<CsScore>

; Play Instrument 1: a simple arpeggio
i1 0 .2 15000 8.00 
i1 + .2 15000 8.04
i1 + .2 15000 8.07
i1 + .2 15000 8.11
i1 + .2 15000 9.02
i1 + 1.5 15000 8.11
i1 + 1.5 15000 8.07
i1 + 1.5 15000 8.04
i1 + 1.5 15000 8.00
i1 + 1.5 15000 7.09
i1 + 1.5 15000 8.00

; Play Instrument 10 for 10 seconds.
i10 0 10

</CsScore>
</CsoundSynthesizer>

Voir aussi

hrtfmove, hrtfstat, 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