DriverHeaven.net

 
Looking for the skin chooser?
 
 
  • Home

  • Reviews

  • Articles

  • News

  • Tools

  • GamingHeaven

  • Forums

  • Network

 

Go Back   DriverHeaven.net > Forums > Hardware and Related Topics > kX Project Audio Driver Support Forum > Effects and the DSP


Reply
 
LinkBack Thread Tools
Old Jun 7, 2003, 04:22 AM   #1
DriverHeaven Junior Member
 
Join Date: Jan 2003
Posts: 48
Rep Power: 0
wilho is on a distinguished road

crossfeed dsp plugin?

Hi!

This is partially question and another part request, cos I know the answer

So is there dsp plugin for Headphone crossfeed, or can I do it right with current stuff?

I have allready mixed channels like this:
http://kotisivu.mtv3.fi/aw_k/dsp.gif
Wheres pans are set to 50/50, and crossing channels cut down to 33% in mono mixes.

Problem is that thats not all, there should be ~0.3 ms timeshift in crossover signal. Delay should be lower at higher frequences to prevent shadowing effect. Allso some frequency shaping ( cutting down lower frequences of crossover signals ) for good acoustic effect might be required...

EDIT: Here's an guide to DIY device for correct crossfeeding with some theory, for those who are interested
EDIT2: Another good link. Search for a "The Psychoacoustics of Headphone Listening"


Dsp coders, here's you're next challenge ....which reminds me - is there any tutorial / document to dsp-coding? I thought that maybe I could make simple timeshifter, even that's better than nothing.

Last edited by wilho; Jun 7, 2003 at 07:10 AM.
wilho is offline   Reply With Quote


Old Jun 7, 2003, 06:44 AM   #2
DriverHeaven Junior Member
 
Join Date: Jan 2003
Posts: 48
Rep Power: 0
wilho is on a distinguished road

Re: crossfeed dsp plugin?

double, sorry
wilho is offline   Reply With Quote
Old Jun 7, 2003, 10:27 AM   #3
DriverHeaven Lover
 
Join Date: Feb 2003
Posts: 210
Rep Power: 0
Mata Hari is on a distinguished road

If I understand it all correctly, you want to mix left with right for some 33%, and have 3 ms delay on that line..?
you can fiddle around a bit with the sourounder plugin, and mix the rear channels with the front channels, crossed.
The rear channels in the surounder have a settable delay (or actually the front channels)

Maybe, the surounder, even has a workable preset allready, if not, then this would be a great addition I think.
Mata Hari is offline   Reply With Quote
Old Jun 7, 2003, 03:17 PM   #4
DriverHeaven Junior Member
 
Join Date: Jan 2003
Posts: 48
Rep Power: 0
wilho is on a distinguished road

You understood just right. Thanks for a hint.

I'm not quite sure that I found all possible use of surrounder, but it seems to me that what it does is that it adds timeshifted and original signal to rear output. That's at least better than nothing, but not exactly what I need - which is crossfeeding the timeshifted signal only. And of course, there's still that frequency-related amount-of-delay still missing.

Damn portable headphones, allways runs out of battery... I'll have to take a charging brake to experimenting...
wilho is offline   Reply With Quote
Old Jun 10, 2003, 04:16 PM   #5
DriverHeaven Junior Member
 
Join Date: Jan 2003
Posts: 48
Rep Power: 0
wilho is on a distinguished road

If, someone is interested to try this out, I got some decent results with chain crossing-channels -> delay (found in this thread) 1% of .5S = 0.5ms -> lowpass -filter -> and finally stereo-mixing 100%orig/40%crossed-channels.

I had to do that lowpass-filtering, becouse slightly delayed voice with original creates harshness or somekind of ringing in high frequences (shadowing effect).

Last edited by wilho; Jun 11, 2003 at 02:37 AM.
wilho is offline   Reply With Quote
Old Jul 8, 2003, 08:41 PM   #6
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

I hope I have the working version of such plugin for EAX/DirectSound3D spatialization stuff as soon as I start coding spatialization

/E
Eugene Gavrilov is offline   Reply With Quote
Old Jul 9, 2003, 08:42 PM   #7
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

>> When do you start coding

hmm.. I'm unsure

anyway, a working plugin would be a good contribution from the kX Community
so, you (or anybody else) can start coding the plugin right now

/E
Eugene Gavrilov is offline   Reply With Quote
Old Jul 15, 2003, 03:12 AM   #8
DriverHeaven Junior Member
 
Join Date: Jan 2003
Posts: 48
Rep Power: 0
wilho is on a distinguished road

Quote:
errr....1% of 0.5sec = 5msec. Not 0.5msec. So what do you need? 5ms or 0.5ms? If you want i can code a adustable stereo delay (say; 1~10msec per channel) for you with crossfeed output etc.
What LP filter cuttof freq do you need and how steep?
Oh..well, let me no if you are interested.
Oh and I wondered why it sound bad after all, when I got over my thrill - it was 0.5ms what I wanted. Check graph: http://www.zainea.com/hdrm4.gif - I had over 10 times more delay than needed.

Quote:
>I had to do that lowpass-filtering, becouse slightly delayed voice with original creates harshness or >somekind of ringing in high frequences (shadowing effect).

yep,..mixing a delayed signal with it's original creates a 'combfilter'.
In this case, where delay is small, the 'combfilter' affects mostly the high frequencies.
If you would lfo sweep the delaytimes you'll get a 'Phaser/Flanger"
Somebody with interest of physics could calculate right values, I don't know them exectly, I just cutted as it sounded best for me. As said purpose was only to get rid of that affect of combifilter. I'm very accurate and helpfull here, right? Anyway, as bass frequencies below 100Hz are irrelevant in terms of sensing direction and space, they should be removed too.
wilho is offline   Reply With Quote
Old Jul 17, 2003, 03:58 AM   #9
DriverHeaven Junior Member
 
Join Date: Jan 2003
Posts: 48
Rep Power: 0
wilho is on a distinguished road

Man, you just became my personal hero . I'll let you know how it worked for me when I get home from work.

edit: Not bad at all, It passed even my ultimate test - quakeworld DM challenge; Ihave listened those explosions countless of hours, so It's quite easy to notice littlebit smaller differences too Might be that It's even better without that highpassfilter - It can be done with separate plugin anyway, and there's allways that lack of gprs's, and results are pretty good without it too.

This is quite much what I was looking for. Thanks.

Last edited by wilho; Jul 17, 2003 at 11:25 AM.
wilho is offline   Reply With Quote
Old Jul 19, 2003, 04:41 AM   #10
DriverHeaven Junior Member
 
Join Date: Jan 2003
Posts: 48
Rep Power: 0
wilho is on a distinguished road

Quote:
> It can be done with separate plugin anyway,.............
Hmm..yes, but not quite. The hipass (or Locut) must be 'in' the crossfeed signal only.
I should think beforehand...I'll never learn. It's definitely good thing to have.

Quote:
I noticed that low end (bass etc) get's less 'punchy' when
more crossfeed is added. So personaly I think adding an adjustable lowcutt around 50~500Hz to
the crossfeed signal would give better results.
What filter/mix values you ended up to use? Lopass was at 50 % its ~1000Hz, how about hipass?

Hmm, with kxl-version and gui - how would you describe it - I wouldn't have to ask. There's lot of good .da sources floating around boards...somebody should collect them, and if needed, compile them as 'real' plugin with gui, and put them available. Would it be quite easy, because you can export to C from .da with kxEditor, and there's that kx-sdk available? Eyagos, your page, translate it in english as you said somewhere!

Quote:
>quakeworld DM challenge; Ihave listened those explosions countless of hours
Nice...Do you use a ripped 'test' .wav or just start the game?
Nah, playing is more fun than listening it's noise...

Quote:
Btw; Do you agree that both reffered artikels are a bit confusing?
I mean, one is about how to get rid of headphone listening fatique,
the other a lengthly explanation about 'real' 3D spatialization.
Both are somewhat in the same field ofcourse, but what we do here is the first, namely;

"Trying to mimic the 'soundstage' of near-field speaker monitoring while using headphones"

As far as I can see it, we just narrow the 'soundstage' in certain frequency bands.
What I have listened so far, 3d spatializions and such usually do more harm than good - might be that I haven't heard good one yet, but this 'lite' -version here seems better to me, that is if we are talking about mixing/mastering/listening music. Games are all another thing, It's very nice that we are going to have hw-3d to Kx.

Quote:
My personal goal in this all is to be able to make an acceptable pre-Mixdown on headphones.
(Final adjustments/mixdown are carried out on near-field monitors)
At home I'm forced to use headphones 90% of the time, so having a "speaker sound" during
the whole audio process would save me a lot of time/problems in the end.
Oh, then you do have some speakers, and propably nice ones bacouse you're talking about near-field monitors. I don't. Well, nobody else is listening my mixes, so it won't matter don't you think
wilho is offline   Reply With Quote
Old Aug 5, 2003, 08:45 AM   #11
DriverHeaven Junior Member
 
Join Date: Jan 2003
Posts: 48
Rep Power: 0
wilho is on a distinguished road


Came back to this thread, and all LeMury's messages have been disappeared!!? ...well, here's his code again, if somebody is interested.

;---------------------------------------------------
name "Xfeed";
copyright "By LeMury 2003";
engine "kX";
created "07-19-2003";
comment "Headphones Crossfeed Filter";
guid "c7c0735d-ab70-4dd1-b743-d658b8c210f7";

;registers
input inl, inr
output suml, sumr
control Hipass=0.5
control Lopass=0.5
control X-Mix=0.5
static tl1=0x0, tl2=0x0, hl2=0x0
static tr1=0x0, tr2=0x0, hr2=0x0
temp tmp, tmpl, tmpr, f
;code
macs tmpl, inl, 0, 0
macs tmpr, inr, 0, 0
exp f, Lopass, 0x7, 0x0
macsn tmp, tmpl, tl1, 1
macs tl1, tl1, tmp, f
macsn tmp, tmpr, tr1, 1
macs tr1, tr1, tmp, f
exp f, hipass, 0x7, 0x0
macsn hl2, tl1, tl2, 1
macs tl2, tl2, hl2, f
macsn hr2, tr1, tr2, 1
macs tr2, tr2, hr2, f
macs suml, tmpl, hr2, x-mix
macs sumr, tmpr, hl2, x-mix
end;
;---------------------------------------------------------
wilho is offline   Reply With Quote
Old Aug 6, 2003, 08:43 AM   #12
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Yes I did remove all my posts.
Sorry about that, see;
http://www.driverheaven.net/showthre...040#post178040

Regards,

/Lemury
Lex Nahumury is offline   Reply With Quote
Old Aug 23, 2003, 02:25 AM   #13
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Hi Eugene,

As promised here is the 'Headphone Speakersim' stuff again.

I first add some simple backgound info for other ppl who just 'tuned in' ok?

The original intention(purpose) of this plugin was to get rid of the
'stringent' Left/Right stereo field common in auditing stereo music over Headphones.

When auditing over a 2 speakers stereo system, there is always 'crosstalk'.
I.e. left ear always hears a 'portion' of the Right speaker and vica versa.
That 'portion' is not simply an attenuated copy of it's original.

According to research in 3D positional audio, that crosstalk portion
is attenuated, colorized and delayed/phaseshifted.
These phenomenas are reconstructed in so called 'head-related transfer functions' (HRTFs).
So far for the theorie. Ppl can check the various 3D links for in-depth info.

Back to the plugin:
For simplicity sake we leave out Room accoustics, coming close to
'Near Field Monitoring' over speakers which also (tries) to rule out
room accoustics.

We take a 'copy' of the Left input, cut some high freq, delay it
and feed/mix some to the Right output.
Same for the Right input. Hence,..Crosstalk (CrossFeed..duh)

**So basicly we are just 'narrowing' the stereo field in certain freq bands**
I.e. mimicing Near Field monitor speakers over Headphones.

To make the 'Crosstalk' signal I used a very simple LowPass IIR filter;
// c = 0..1 (1 = passes all, 0 = passes nothing)
// output(t) = output(t-1) + c*[input(t)-output(t-1)]
// out_new =old_out + c*(in_new - old_out)
// out = t1 + c*( in - t1)

IIR filters act like analog filters and in this case gives the desired delay of ~0.3msec,
and ,of course, cuts high frequencies in the Crosstalk signal.

This is a very 'Experimental' plugin! (A toy if you wish)
I also added a HighPass to cut lows and a control to 'flip' the Crosstalk signal phase 180 degrees.
One can mess with the stereo field. Either 'Narrowing' or 'Widening' it.
In extreme settings it can act as a 'Vocal Remover'
(this works bad with some mp3s, because of the mp3 compressing algo's etc)
(use it on a good stereo source and hear stuff normally 'masked' by other stuff in a mix.)
Playing around with this thingie also proofs that high freq determine stereo position much more than lower freq.

For it's intentional purpose however, it should be set to a very subtile Crossfeed.

For ppl who actually want to use this plugin;
-keep in mind that the Lopass and Hipass sliders set the cutoff points!
-XPhase at 0 = Inverted, 100 = NOT Inverted
-Dry_Wet at 0 = All dry, 100 = All wet (set to 100 to hear the crosstalk signal only)

Here is a freq response plot of various filter settings (same for LP):
http://members.home.nl/nahutec/kxplu...pass_graph.jpg
(I've put in an exponential filter control to get a 'human' control)

Here is the documented dsp code for all you 'code lurkers'..
Or DL it here:
http://members.home.nl/nahutec/kxplugins/crossfeed.da

;crossfeed.da
;---------------------------------------------------------
name "Crossfeed";
copyright "By LeMury 2003";
engine "kX";
created "08/23/2003";
comment "Headphones Crossfeed/Vocal Remover";
guid "6fa996e3-857e-4456-9865-a6cf624fc349";

input inl, inr ;
output outl, outr ;
control Lopass=1 ; lopass cuttoff freq
control Hipass=0 ; hipass cuttoff freq
control XPhase=1 ; xfeed phase 'select'
control Dry_Wet=0.5 ; direct/xfeed mix
static tl1=0x0
static tl2=0x0, hl2=0x0
static tr1=0x0
static tr2=0x0, hr2=0x0
temp tmp, tmpl, tmpr, f

; read inputs
macs tmpl, inl, 0, 0 ; get L dry sample
macs tmpr, inr, 0, 0 ; get R dry sample

exp f, Lopass, 0x7, 0x0 ; exp scale lp filter coef
; left lopass
macsn tmp, tmpl, tl1, 1 ;
macs tl1, tl1, tmp, f ; (tl1 is lp out)
; right lopass
macsn tmp, tmpr, tr1, 1 ;
macs tr1, tr1, tmp, f ; (tr1 is lp out)

; feed lopass output into hipass
exp f, Hipass, 0x7, 0x0 ; exp scale hp filter coef
; left hipass
macsn hl2, tl1, tl2, 1 ; tl1 is input to hp
macs tl2, tl2, hl2, f ; (hl2 is hp out)

; right hipass
macsn hr2, tr1, tr2, 1 ; tr1 is input to hp
macs tr2, tr2, hr2, f ; (hr2 is hp out)

; make inverted xfeed signals
macsn f, 0, hr2, 1
macsn tmp, 0, hl2, 1

; pan/'select' between normal and inverted xfeed signal
interp hr2, f, XPhase, hr2
interp hl2, tmp, XPhase, hl2

; pan/mix between dry and crossfeed sigal, output
interp outl, tmpl, dry_wet, hr2
interp outr, tmpr, dry_wet, hl2
;-----------------------------------------------------------------
end;

Eugene,
Allthough 3D HRTFs related, this stuff is more 'basic Binaural 2D' as I see it.
Anyway, maybe it's usefull to your research in some way.
Apart from that, if any (user) interest, I can dll it for UI stuff etc.

Regards,

/LeMury

Last edited by LeMury; Aug 31, 2003 at 02:01 PM.
Lex Nahumury is offline   Reply With Quote
Old Aug 24, 2003, 07:39 PM   #14
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

thanks -- I'll try it

btw, concerning the 'best speaker simulation':
do you have WinDVD installed? it has an option to output to 'headphones'
in this mode it uses either 'Dolby Headphones' or 'SRS Headphones' algorithms
these algorithms emulate 'room experience' (and have a slider 'room size': small, medium, large)
the '5.1' input (well, '5.0') is placed in this virtual room

that is, the desired effect should have 5( 6 ) inputs (center, left/right, surround left/right, rear center) and should create a virtual room experience (to be experienced with headphones)

the algorithm is really a kind of HRTF with phase / delay / colorization...
similar algorithms were created by Creative ('Headphones' mode), Sensaura and QSound

a possible place for this effect in the present kX DSP layout: a preset for the Surrounder effect

and, btw, without a crosstalk, such effect [could] produce a more 3-D-like surround for 2-speaker configuration

so, the goal is to reproduce Dolby/Sensaura/QSound-like surround effect: including both 'virtual speakers' (5->2 stereo) and 'virtual room' (5->headphones)

I understand that this is not an easy task -- moreover, a real surround effect might require some scientific researches (with HRTF modeling ) -- and the usage for this effect will be limited for gaming (because I doubt any audio engineers use such effects for auditing their tracks...)

please let me know if you have any ideas...

/E

p.s.
present 'Surrounder' doesn't use any real 3-D algorithms but performs a generic ProLogic-like encoding (when 'surround' mode is on)
Eugene Gavrilov is offline   Reply With Quote
Old Aug 27, 2003, 03:50 AM   #15
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Eugene,

Let's see if I understand it right.

-As I mentioned, the 'Crossfeed' plugin is for normal stereo 2 > 2 auditing over headphones.
It just takes a 2 channel stereomix and mimics 'Near Field Monitoring' as used in a studio setup.
Room accoustics are intentionally left out in those cases. I.e. no room reverberation at all.
(of course, in practis this is never 100% the case)

-Yep, I have treid those Headphone sims you mentioned, that emulate 'room experience'.
For studio/music monitoring they all fail imho due to that 'room emulation' (amongst other things).
In general, we don't want any room colorization in 'Near Field Monitoring'
Sound engineers sit close at a fixed angle and at fixed distance to their Monitor speakers.
(well, at least in small studio's they do..)

So we have to clearly distinghuis between 3D audio techniques/algos for gaming experience,
DVD playback and such, and plain 'good old' 2 channel stereo audition.


-If I understood you right, we (also) need a dsp plugin that does a good 3D > Stereo Headphones simulation.
I.e. 3D hardware accelerated Surround, Dolby, EAX, etc. Game sound on Headphones,
without having to use a Surround Speaker set.
At the same time, one could test 3D programming/performance using headphones.

If so, this is quite interesting since I'm looking for a good 3D Game sound on headphones solution
for a long time now. I don't wanna use surround speakers.
(Not pleasant for neighbours and family members..)

Let me know if I 'git' it right.

Regards,

/LeMury
Lex Nahumury is offline   Reply With Quote
Old Aug 27, 2003, 09:37 AM   #16
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

hello

1. I think we should keep your 'crossfade' effect as a possible 'surrounder' preset -- for audio engineers and 'plain "good old" stereo audition'

2. yes, we definitely need a set of DSP effects for gaming / movie purposes:
* headphones (emulates 5.1 room)
* 2.0 (emulates 'virtual rear' and 'virtual center')
* 4.0 (emulates 'virtual center')
* 5.0 (emulates a 'room' experience -- not very important, but might produce a better 'cinema' effect)

3. we should also keep in mind two audio technologies: Dolby ProLogic encoding and decoding
that is, the surrounder effect should be capable of processing the incoming stereo wave and 'expanding' it into 4.0/5.1,
as well as process the incoming '5.1' data and encode it into 'stereo' (ProLogic)

yes, the present Surrounder performs these tasks, but we should keep this functionality for gaming purposes, too

probably, we should keep the '7.1' speaker configuration in mind, too (for future updates)

/Eugene

P.S.
Surrounder currently handles passive ProLogic matrix. we should have a closer look at ProLogic ][...

P.P.S.
and, definitely, the 'headphones' effect will help us to develop better 3-D audio engine [especially for our neighbours and family members ]
Eugene Gavrilov is offline   Reply With Quote
Old Sep 4, 2003, 09:45 AM   #17
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Hi Eugene,

Understood..!

I've gathered info, White Papers, Docs, HRTF databases etc. etc. regarding
current 3D/Surround/AC3 Dolby etc. audio standards/technologies.
Indeed not easy, but quite intreging.

Anyway; I have to finish other (promised) Kx-stuff first, before I can start on this.

Regards,

/LeMury
Lex Nahumury is offline   Reply With Quote
Old Sep 4, 2003, 05:59 PM   #18
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

>> HRTF databases

you've got them? really? where?

>> I have to finish other (promised) Kx-stuff first, before I can start on this

that's ok
and, by the way, there's one more task -- EAX reverb
I'm currently working on the API front-end, but the actual reverb (probably based on Max's kXU one or CLEAX3Reverb) should be written, too

so, there's always enough work for DSP Engineers and effect writers

/E
Eugene Gavrilov is offline   Reply With Quote
Old Sep 4, 2003, 06:29 PM   #19
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

>> HRTF databases

http://interface.cipic.ucdavis.edu/C...F_database.htm

I haven't yet took a deeper look at it, so I can't say if it's usefull.
Seems to be in Matlab format.

/LeMury
Lex Nahumury is offline   Reply With Quote
Old Sep 5, 2003, 07:06 PM   #20
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

a-ha! thanks for the link. I'm unsure if we will need the 180Mb databases...

btw, some links I've found useful:
http://headwize2.powerpill.org/tech/sshd_tech.htm
(also a lot of info here: http://headwize2.powerpill.org/tech/index.htm)

it seems that the dolby headphone technology isn't listener-specific (at least, it is not so ear size-dependent)

/Eugene
Eugene Gavrilov is offline   Reply With Quote
Old Sep 6, 2003, 01:23 AM   #21
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

>> I'm unsure if we will need the 180Mb databases...

No,...at least not in praktise. But I DL-ed it anyway to have some reference.
Yet more scienetific links:
http://www.mat.ucsb.edu/240/C/


>>it seems that the dolby headphone technology isn't listener-specific
>>(at least, it is not so ear size-dependent)

Yeah, they use a 'single universal HRTF setting'. (whatever that may be)
Hmm...I guess it's some average of common HRTFs.
In PowerDvD there is also a "Dolby virtualizer", (probably the same you mentioned in WinDvD)
Well, it sounds like a normal Room Reverb with some phase inverting to me.
I wonder if it's the same technology as "Dolby's Headphone":
http://www.dolby.com/dolbyheadphone/
I hope not..

Thanks for the Headwize links. Good and usefull reading stuff.
Can't wait to start on this.
(duh...I wish I had an extra 'lifetime' to do all the things I want to do....)

/LeMury
Lex Nahumury is offline   Reply With Quote
Old Sep 6, 2003, 07:23 PM   #22
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

>> Headwize
yep, a very good source of information -- lots of articles
----------

after browsing the Net (including the dolby.com site etc..) I finally created a prelimenary specification for the "kX Surrounder+" effect: ()

input: 2 stereo + 7.1 content (10 ins)
output: up to 7.1 (8 outs)

internal routing:

stereo -> [expansion: Surround/ProLogic, ProLogic II, ProLogic IIx?] -> mixer
5.1 / 7.1 content -> [expansion: a-la DolbyDigital EX] -> mixer

expansion is optional and can be turned on and off
(that is, at least two switches: 'Decode Surround / Movie mode' and 'Decode 6.1/7.1 Surround')
the decoder is obviously applicable only when playing back any stereo sources with encoded information
(such as a stereo TV in, an AVI file with generic movie sound track, an audio CD with DolbySurround/ProLogic track)
the expansion is not related to AC-3 stuff at all
the expanded signal is mixed with '5.1/7.1 content', thus, enabling further processing (e.g. dolby surround encoding )

the mixer has the following output options:
1. prologic II encoder (compatible with prologic 1 and dolby surround by design) --> two stereo channels
- to be connected to external decoders, HiFi systems or to be recorded
(we might have problems with prologic ][ since its encoding/decoding algorithm is somewhat complicated and not fully described)
2. headphones:
- [hrtf]: a-la dolby headphones with 2-3 different room settings --> two stereo channels
the reverberation algorithm might be shared with our Reverb effect (that is, probably an EAX3 reverb should be used)
sub-settings: '5.1', 'stereo', 'monitoring' (the last one is used to simulate audio monitors)
sub-settings select the preferred HRTF algorithm and depend on source signal type (movies/games or stereo tracks)
3. speakers: [virtual]
- 2.0/2.1
- 3.0/3.1
- 4.0/4.1
- 5.0/5.1
- 6.0/6.1
- 7.0/7.1

for any non-5.1 setting, an HRTF algorithm similar to dolby virtual speaker is used
speaker settings:
- 'direct' (any sound data sent to non-existent channels is lost) -- no downmixing is performed
- 'downmix' (simple mix: center->left&right; rear->front -- depending on speaker config)
- 'copy' (rear=front)
- 'surround' (hrtf-based with virtual speakers)

bass options:
LFE channel has 3 main options (the way it is currently implemented):
- 'use physical LFE channel' (if inactive, the LFE stream is mixed with Left & Right channels)
- 'redirect bass' (if active, the Left & Right stream is filtered and LFE information is extracted and mixed with the direct LFE stream)
- separation frequency

----
the dolby prologic 2 decoder has (per specs) two options: 'music' and 'movie' and three controls: 'center width', 'panorama', 'dimension'

----

we could probably investigate the ways Creative implemented similar effects for 10kx-cards
(no reverse-engineering, of course )
kxctrl -mx <dll name> will do the trick

----

trademark / copyright issue:
we won't use any registered trademarks, so, for our purposes, all prologic/surround stuff should be called 'Surround'
('Surround encoding' / 'Surround decoding')
we should also invent a good term for "virtual speaker" and "hrtf-based headphones"

/E
Eugene Gavrilov is offline   Reply With Quote
Old Sep 6, 2003, 07:34 PM   #23
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

[almost forgot]:
the code for the effect will be generated on-the-fly depending on the options currently active
I will implement a function similar to 'update_microcode' and will add it to the SDK (as well as enable this functionality for the kX Dane editor)

probably, it would be nice to implement a dynamically generated C-like syntax for Dane, too (DynamicDane)
(something similar to the present prolog/epilog code, but much more programmer-friendly)

for instance, here's a [possible] C++ code

void generate_surrounder(int pgm_id)
{
KXDynamicDane d;

d.begin();
d.guid("2b8b7fa8-98b9-4f6e-81a0-400d3ba39c6f");
d.name("Surrounder+");

d.declare_input("left");
d.declare_input("right");

if(user_option&DECODE_SURROUND)
{
d.declare(temp,"tmp");

d.MACS("left",.....);
d.MACINTS(...);
}
...
if(user_option&ENCODE_SURROUND)
{
d.declare_static("delay");

d.MACINTS(...);
}
...

d.update_microcode(pgm_id);
}

---------

/Eugene
Eugene Gavrilov is offline   Reply With Quote
Old Sep 7, 2003, 03:41 PM   #24
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Pffffeeeww,....You have been quite busy

I have to properly 'digest' all this firts.., but it sounds great and ok!
(especialy the [almost forgot] part.. )

I have just started on a real "headphones virtualizer" a'la Dolby/WinDvD/Creative.
Looks promising so far.
To me this is vital because I need some means to hear a decent Surround/5.1 sound representation
over headphones for 3d development purposes.
Sure, I could buy a surr.speaker set, but that won't work at night, besides that, I like the 'isolation'
when programming, thinking and uhh...drinking)

I'll keep you posted.

/LeMury
Lex Nahumury is offline   Reply With Quote
Old Sep 13, 2003, 05:44 PM   #25
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Considerations on how to simulate 'Surround Speaker Sound' on a Headphone

Eugene, Max,

The direct use of HRTF data is, although the "best" approach,
very hard to implement in general, and in 10kx particulair.
It would require convolution between the HRTF's impulse response (HRIR) data and
the input data stream. I have no idea how this could be done in 10Kx.

An alternative way is to 'modell' a HRTF rather then using a fixed HRTF data set.
(Creative's Headphone virtualizer also uses this approach as far as I could tell from the code)

After studying several docs here;
http://interface.cipic.ucdavis.edu/C...blications.htm
it appears that PRTFs (Pinna Related Transfer Function) almost only gives Elevation clues
and hardly any Azimuth clues.

Correct me if I'm wrong, but when listening to, let's say a 5.1 surround speaker set,
one does NOT get different Elevation clues from the speakers itself. Only Azimuth.
I.e. if a fixed test signal is output in sequence (surround panned) to the speakers,
one only gets different (changing) Azimuth clues.
The elevation remains the same. (speaker hight placement)
If there are any elevation clues, then they must already have been recorded in
the audio signal.
Please comment on this observation!

So, If this is true, then a lot of HRTF data can be ignored, namely the elevation data and the PRTF part.
This could simplify implementation drasticly.

Good results seems to be possible with using only:
-IID / ILD (Interaural Intensity/Level Difference) = sound pressure
-ITD (Interaural Time Difference) = frequency dependant delay
-Head Shadow (causing ITD) = Low pass filtering

Of course this approach has it's drawbacks.
It could work fine in the Horizontal Front Range, but it would be hard to make a good 'Back' perception.
I have made several Freq. response plots from Kemar HRTFs at 'Back' Azimuth.
Hope I can derive some function from it.
Also; in order to get an 'Out of head' perception, some form of Room reverb must be applied.
But this would also be the case with the direct HRTF approach.

Suggestions/comments are welcome,

/LeMury

Last edited by LeMury; Sep 14, 2003 at 02:43 AM.
Lex Nahumury is offline   Reply With Quote
Old Sep 14, 2003, 03:17 PM   #26
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

>> An alternative way is to 'model' a HRTF rather then using a fixed HRTF data set.

[one possible approach]:

imagine we have 5 virtual speakers
each position is given, including elevation
so, we have 5 3-D sources, azimuths, distance and so on

now we simply process the 5 incoming streams with 5 parametric equalizers
(each equalizer has its own parameters that are related to =constant= speaker position)
this won't emulate the real 3-D, but will at least emulate '5.1 speaker set'

of course, the parameters for the equalizer can be simplified (thus giving the curves that are close to the given HRTF data)

note that the effect should have 8 inputs (corresponding to all the 8 directions: n,nw,w,sw,s,se,e,ne)
this is also true for the 'surrounder +' effect itself
(+ one additional 'LFE' input and two 'stereo' inputs ==> 11 inputs )

[some thoughts]:
the above scheme doesn't deal with 3-D source 'elevations' (only with speaker elevations)
this is not 100% correct
the elevation is 'emulated' by creative drivers by using a separate input with a custom filter applied
that is, if the source is elevated, its 3-D position components (5 or 8) are decreased, while the 9th component is increased
this seems to be a good idea
so, the final 'Surrounder+' might have 12 inputs

-=-=-=

note that the elevation and spatialization is calculated by the driver, not by the DSP code
the DSP code receives a set of [already distributed in the space] waves that correspond to an 'ideal 8-channel speaker-set'

-=-=-=-

Quote:
-IID / ILD (Interaural Intensity/Level Difference) = sound pressure
-ITD (Interaural Time Difference) = frequency dependant delay
-Head Shadow (causing ITD) = Low pass filtering
yep, I'm sure this will be sufficient
so, we have 8 different [pre-calculated!] parameters for each 'virtual' speaker
[and these can be configured via a custom user-friendly application ]
these parameters include:
* level / attenuation
* left/right delay
* filter curve (it depends on the azimuth and elevation angles)

of course, I doubt we will need 8 different filters -- we will need to optimize a little

-=-=-=-

"room reverb"
- yes, of course
however, at the moment I suggest we don't include this part of the code in the Surrounder+ effect

/E
Eugene Gavrilov is offline   Reply With Quote
Old Sep 15, 2003, 06:17 PM   #27
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

further reading

yes, I know it is not the main task at the moment however, here's a good link:
http://www-ccrma.stanford.edu/~jos/w...rberation.html

the FDN-based reverberation is used by Creative Labs
moreover, they have some patents assigned (e.g. us6188769 and the 'inventor' is said to be Jot! -- can be downloaded from our site)

there's also some info about spatialized reverberation, as well as lots of pages dealing with different filters and DSP
(http://www-ccrma.stanford.edu/~jos/waveguide/ and http://www-ccrma.stanford.edu/~jos/filters/Index.html)
moreover, the site has an open-source audio processing library written in C
(http://www-ccrma.stanford.edu/software/stk/)

/E
Eugene Gavrilov is offline   Reply With Quote
Old Sep 16, 2003, 07:42 PM   #28
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

and one more thing

please review the following topic:
3-D effect for headphones

/E
Eugene Gavrilov is offline   Reply With Quote
Old Sep 17, 2003, 03:25 AM   #29
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,884
Rep Power: 48
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

1. Great,..more reading stuff....
No,..j/k. Great info + SDK.

2. I'll buy a second Audigy tommorow for the PC I'm programming on,
(don't wanna run up & down from my working room to my studio all the time),
then I will check out your '3dsetup' and get back to you.

/LeMury
Lex Nahumury is offline   Reply With Quote
Old Sep 17, 2003, 06:24 PM   #30
kX Project Lead Programmer and Coordinator
 
Join Date: Dec 2002
Posts: 3,037
Rep Power: 56
Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!Eugene Gavrilov is just super!

btw, the headphone effect might be used with live, too -- but it uses =too= many resources...

and please check the two 'unused' inputs of the HpSp effect -- I wonder what they might be used for...

/E
Eugene Gavrilov is offline   Reply With Quote
Reply

Bookmarks

Thread Tools