hrtfmove — Génère un signal audio 3D binaural pour casque par magnitude interpolée et phase tronquée.
Cet opcode prend un signal source et le spatialise dans les trois dimensions entourant l'auditeur en réalisant le produit de convolution de la source et de filtres basés sur une fonction de transfert stockée en relation avec la tête (HRTF).
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. |
imode -- facultatif, 0, par défaut, pour une phase tronquée, 1 pour une phase minimale.
ifade -- facultatif, nombre de tampons de traitement pour le fondu-enchaîné du changement de phase (8 par défaut). L'intervalle autorisé est 1-24. Une faible valeur est recommandée pour les sources complexes (4 ou moins : une valeur plus élevée peut rendre audible le fondu-enchaîné), une valeur plus élevée pour les sources à bande étroite (8 ou plus : une valeur plus faible peut rendre audible l'incohérence due aux changements de phase par le filtre). N'a aucun effet sur le traitement de la phase minimale.
Note | |
---|---|
Les fondus peuvent parfois se chevaucher (si des trajectoires artificiellement rapides/complexes sont demandées). Dans ce cas, un avertissement est imprimé. Utiliser un fondu-enchaîné plus court ou changer légèrement la trajectoire pour ne pas risquer l'apparition d'incohérences. |
isr - facultatif, 44.1 kHz par défaut : valeurs autorisées : 44100, 48000 et 96000.
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 la troncature de phase. Des fondus-enchaînés sont implémentés pour minimiser/éliminer d'éventuelles incohérences causées par la mise à jour des valeurs de phase. Ces fondus-enchaînés sont réalisés sur des tampons de traitement convolutif dont le nombre peut être défini par l'utilisateur. Les sources complexes peuvent ne nécessiter un fondu-enchaîné que sur un tampon ; les sources à bande étroite peuvent en nécessiter plusieurs. L'opcode offre aussi un traitement basé sur la phase minimale, une méthode plus traditionnelle et complexe. Dans ce mode, les filtres hrtf utilisés sont réduits à des représentation de phase minimale et l'interpolation utilise ensuite la relation entre la magnitude de phase minimale et les spectres de phase. Le délai interaural, qui est inhérent au procédé de phase tronquée, est réintroduit dans le procédé de phase minimale au moyen de lignes à retard variables.
Voici un exemple de l'opcode hrtfmove. Il utilise le fichier hrtfmove.csd.
Exemple 441. Exemple de l'opcode hrtfmove.
<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 hrtfmove 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>
Plus d'information sur cet opcode : http://www.csoundjournal.com/issue9/newHRTFOpcodes.html, écrit par Brian Carty.