hrtfearly

hrtfearly — Génération audio binaurale 3D avec des premières réflexions haute-fidélité dans une pièce paramétrique au moyen d'un algorithme de troncature de phase.

Description

Cet opcode inclut essentiellement l'opcode hrtfmove dans la modélisation d'une pièce en forme de boîte à chaussure définie par l'utilisateur. On peut choisir une pièce par défaut ou l'on peut définir des paramètres avancés de la pièce. Les surfaces de la pièce peuvent être contrôlées avec les coefficients d'absorption hautes et basses fréquences et avec les facteurs de gain d'un égaliseur à trois bandes.

Bien que valide comme opcode autonome, hrtfearly est conçu pour fonctionner avec hrtfreverb afin de fournir une révervération binaurale dynamique spatialement fidèle. Plusieurs sources peuvent être traitées dynamiquement en utilisant plusieurs instances de hrtfearly. Toutes peuvent ensuite être traitées avec une instance de hrtfreverb.

Syntaxe

aleft, aright, irt60low, irt60high, imfp hrtfearly asrc, ksrcx, ksrcy, ksrcz, klstnrx, klstnry, klstnrz, \
      ifilel, ifiler, idefroom [,ifade, isr, iorder, ithreed, kheadrot, iroomx, iroomy, iroomz, iwallhigh, \
      iwalllow, iwallgain1, iwallgain2, iwallgain3, ifloorhigh, ifloorlow, ifloorgain1, ifloorgain2, \
      ifloorgain3, iceilinghigh, iceilinglow, iceilinggain1, iceilinggain2, iceilinggain3]

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ées HRTF du MIT) sont disponibles sous trois différents taux d'échantillonnage : 44.1, 48 et 96 kHz et sont nommés en conséquence. Le sr d'entrée et de traitement doit correspondre au sr du fichier de données. Les fichiers doivent se trouver dans le répertoire courant ou dans 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.

idefroom - pièce par défaut, moyenne (1 : 10*10*3), petite (2 : 3*4*3) ou grande (3 : 20*25*7). Détails des murs (coefficients d'absorption hautes et basses fréquences, gain1, gain2, gain3) : 0.3, 0.1, 0.75, 0.95, 0.9. Plancher : 0.6, 0.1, 0.95, 0.6, 0.35. Plafond : 0.2, 0.1, 1, 1, 1. Si ce paramètre vaut 0, les paramètres de pièce facultatifs seront lus.

ifade - facultatif, nombre de tampons de traitement pour les fondus de changement de phase (8 par défaut). Compris entre 1 et 24. Voir hrtfmove.

isr - facultatif, 44.1kHz par défaut. Valeurs acceptées : 44100, 48000 et 96000.

iorder - facultatif, ordre des images traitées : plus il est élevé et plus il y a de premières réflexions. Vaut 1 par défaut. Valeurs acceptées : 0 à 4.

ithreed - facultatif, les sources d'image sont traitées en trois dimensions (1) ou en deux dimensions (0, par défaut).

iroomx - facultatif, taille x de la pièce en mètres. Ce paramètre est lu si aucune pièce par défaut n'est choisie (tous les paramètres ci-dessous se comportent de la même manière). La taille minimale de la pièce est 2*2*2.

iroomy - facultatif, taille y de la pièce.

iroomz - facultatif, taille z de la pièce.

iwallhigh - facultatif, coefficient d'absorption hautes fréquences des murs (les quatre murs sont supposés identiques). Les coefficients d'absorption affectent la durée de la réverbération en sortie.

iwalllow - facultatif, coefficient d'absorption basses fréquences des murs.

iwallgain1 - facultatif, gain du filtre centré sur 250 Hz (tous les filtres on un Q impliquant 4 octaves).

iwallgain2 - facultatif, gain du filtre centré sur 1000 Hz.

iwallgain3 - facultatif, gain du filtre centré sur 4000 Hz.

ifloorhigh, ifloorlow, ifloorgain1, ifloorgain2, ifloorgain3 - facultatif, comme ci-dessus, pour le plancher.

iceilinghigh, iceilinglow, iceilinggain1, iceilinggain2, iceilinggain3 - facultatif, comme ci-dessus, pour le plafond.

ksrcx position x de la source, au moins 10 cm à l'intérieur de la pièce. De plus, les HRTF proches ne sont pas traités, afin que la source ne soit pas modifiée spatialement dans un rayon de 45 cm autour de l'auditeur. Ces restrictions s'appliquent également aux paramètres ci-dessous.

ksrcy position y de la source.

ksrcz position z de la source.

klstnrx, klstnry, klstnrz position de l'auditeur, comme ci-dessus.

kheadrot - facultatif, angle de rotation de la tête.

asrc - Signal source en entrée.

irt60low - durée de réverbération basses fréquences suggérée pour une réverbération binaurale consécutive.

irt60high - comme ci-dessus, pour les hautes fréquences.

imfp - chemin libre moyen de la pièce, à utiliser avec une réverbération consécutive.

Exemples

Voici un exemple des opcodes hrtfearly et hrtfreverb. Il utilise le fichier hrtfearly.csd.

Exemple 440. Exemple de l'opcode htrfearly.

<CsoundSynthesizer>
<CsOptions>

; Select flags here
; realtime audio out
 -o dac
; file ouput 
; -o hrtf.wav
  
</CsOptions>
<CsInstruments>

nchnls = 2

gasrc init 0	;global

instr 1		;a plucked string, distorted and filtered

  iamp = 15000
  icps = cpspch(p4)

  a1 pluck iamp, icps, icps, 0, 1
  adist distort1 a1, 10, .5, 0, 0
  afilt moogvcf2 adist, 8000, .5 
  aout linen afilt, 0, p3, .01
  
  gasrc = gasrc + aout

endin

instr 10	;uses output from instr1 as source
  
  ;simple path for source
  kx line 2, p3, 9

  ;early reflections, room default 1
  aearlyl,aearlyr, irt60low, irt60high, imfp hrtfearly gasrc, kx, 5, 1, 5, 1, 1, "hrtf-44100-left.dat", "hrtf-44100-right.dat", 1

  ;later reverb, uses outputs from above
  arevl, arevr, idel hrtfreverb gasrc, irt60low, irt60high, "hrtf-44100-left.dat", "hrtf-44100-right.dat", 44100, imfp

  ;delayed and scaled
  alatel delay arevl * .1, idel
  alater delay arevr * .1, idel

  outs	aearlyl + alatel, aearlyr + alater
  
  gasrc = 0

endin
  
</CsInstruments>
<CsScore>

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

; Play Instrument 10 for 13 seconds.
i10 0 13

</CsScore>
</CsoundSynthesizer>

Voir aussi

hrtfreverb hrtfmove, hrtfmove2, hrtfstat, hrtfer.

Crédits

Auteur : Brian Carty
Maynooth
2011