HardwareHeaven.com

HardwareHeaven.com

Looking for the skin chooser?
 
 
  • Home

  • Hardware reviews

  • Articles

  • News

  • Tools

  • Gaming at HardwareHeaven

  • Forums

 

Go Back   HardwareHeaven.com > Forums > Hardware and Related Topics > kX Project Audio Driver Support Forum > 3-D Audio


3-D Audio kX 3-D Audio, DirectSound 3D, OpenAL and EAX discussion

Reply
 
Thread Tools
Old Oct 14, 2005, 09:05 PM   #31
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Quote:
Originally Posted by mirko2
> The 'ON ITS OWN' - part, in otherwords - CL claims to do DTS:NEO - the 48Kxz that the DSP is locked at does prohibit the a decoding of dolby digital surround ALL on its own

DTS NEO:6 (or just "NEO:6") is just a matrix decoder for a stereo signal, like ProLogic. It's not the DTS you seem to think about (Dolby Digital). The following review compares matrix decoders for stereo signals, including NEO:6 (doesn't get a good rating):
http://www.hometheaterhifi.com/volum...c2-3-2001.html
I dont beleive this to be true.
http://www.dts.com/consumer/pc/

DTS:NEO 6 IS ownded by DTS - the NEO6 ADDED matrix decode to extract the 6th (rear center Channel) - AFTER decoding a 5.1 dobly digital surround encoded PCM stream.
Matrix anything is inferior to anything discrete.

DTS:NEO 6 - additionally added a way to upmix stereo to 6 channel - similar to CMSS or DPL/II.

Quote:
Originally Posted by mirko2
> There isn't a DPLII equivelent plug-in in KX, but im pretty sure if you knew C++ and microcode it is possible.

You'd have to have the DPL II algorithm... So far, I haven't found it anywhere (beyond cute diagrams). Is it possible that DPL II is still Dolby's secret?

Of all programs on my computer, including Creative's drivers, several media players, kx, open source filters etc., only Intervideo's WinDVD player has a ProLogic II option and the official logo. Curiously, while this program seems to be built entirely on DirectShow filters, I can not find an Intervideo ProLogic II DirectShow filter. The closest I have found is "InterVideo Audio Processor Fx", which has a TruSourroundXT tab. I don't think that's the ProLogic II filter. If anybody knows of a ProLogic II DirectShow filter (or how to use the WinDVD filter, if it exists), please report.
AC3 filter has a setting 'Dolby Pro Logic II'

The winDVD only supports DPLII in the 'Platinum' version. Not in Gold version.
Same with PowerDVD - it supports DPLIIEX - in its upgraded version.

Is DPLII a secret - I doubt it - its IS patented - and Im sure they agressivly attack those 'using their logo' with out a license.

Dolby shows the 'cute diagram' (- lol) which *could* be used to make a similar effect (in KX or otherwise) - but legally cant call it a DPLII decoder unless you pay their licensing fees.

Quote:
Originally Posted by mirko2
> KX plugins are no different - there is some effects that are dsp micro code only - and there are ones that have C++ code (thats compiled for the PC to execute) in addition to the microcode executed by the DSP.

But the C/C++ code is only for the user interface, right? There is no way to call C/C++ code from DSP code, right? Otherwise (if one could break out of DSP code and have C/C++ code in the signal path), it would be possible to encode EAX sound into AC3 with a software codec But I believe that's not possible: Once you are "on" the card, you are n the card and everything happens there, "outside" the computer. Or?
This is also NOT my understanding with KX - granted MOST seem to only use C++ for special GUI's - but Im pretty sure its not limited to that, if you know C++, I was under the impression things MUCH more domplex can be accomplished when combining DSP w/ C++.

Quote:
Originally Posted by mirko2
> I am convinced (even with CL drivers) DOLBY/DTS/THX surround decoding/compliance needs additional software and not just a driver

If you look at the list of installed DirectShow filters, you will find a whole lot from Creative, including AC3, Karaoke, CMSS3, etc. (but maybe these are just to initialize the DSP, so it may not mean anything).
I dont beleive they 'JUST' init the dsp - I would more assume they are interfaces to their proprietary software - like a bonus to add some additiojnal functionality.

Im fairly certain they perform much more and utilize cpu useage (just like the AC3 filter does - even has a CPU usage meter on it) - but the filters you mention got un-installed when I went to KX - so I dont have them now. - Im suprised they work for you. - Media source gave me errors without seeing the CL driver (i assumed thats why it didnt work).

My ac3 filter that I use is from source forge -not CL btw.

Quote:
Originally Posted by mirko2
> Its alot of fun too.

Yes

PS: Why don't you post your kx graphs? I don't have a 2x2 system but would be intersted anyway.
I can - BUT - realize there are other setting NOT JUST in the DSP - for instance - for 5.1 DDS playback - I use a completely cleared DSP - and all channels are routed thru the P16V (P16V - routing in KX) - via the AC3 filter (set to use default Direct sound device and I selected - '24bit source stream' or something like that) - which then just simply uses the default direct show device (I have WAVE HQ selected - in windows sound control panel applet) - in turn sends the channels to the outputs.
(on my A2ZS Plat - using KX 3538h) - This may be something over looked in that version of the driver and not sure if its intended or a bug/anomaly.

I can post the pictures of my dsp set ups, but its not the 'full story' - but I can if you like.

Last edited by Maddogg6; Oct 14, 2005 at 10:12 PM.
Maddogg6 is offline   Reply With Quote


Old Oct 14, 2005, 11:17 PM Threadstarter Thread Starter   #32
DriverHeaven Newbie
 
Join Date: Oct 2005
Posts: 18
Rep Power: 0
mirko2 is on a distinguished road

> DTS:NEO 6 IS ownded by DTS

Yes.

> the NEO6 ADDED matrix decode to extract the 6th (rear center Channel) - AFTER decoding a 5.1 dobly digital surround encoded PCM stream.

Nope. It don't want to sound like a broken record but "NEO:6" decodes two channels (L/R) into multi channel 6.1 sound. This decoder is in the same class as Dolby Prologic (II), CMSS3 etc. I've found this explained on many web sites and already posted two links in the thread.

> but the filters you mention got un-installed when I went to KX - so I dont have them now. - Im suprised they work for you

They don't work for me. It's just a lot of references left in the system (by the dumb Creative uninstaller). They are gone but apparently still registered.

> AC3 filter has a setting 'Dolby Pro Logic II'

Yes, but that's an encoder, not a decoder. The special features of ProLogic II are on the decoder side. The same author has written a decoder (MatrixMixer) but admits ProLogic II is not properly implemented, due to lack of information. I doubt it's implemented at all in his codec because the ProLogic II option described in the manual can not be found in the program I'm still looking for a DirectShow ProLogic II codec.

> Same with PowerDVD - it supports DPLIIEX - in its upgraded version.

Don't have that one. Can its ProLogic II decoder be accessed as DirectShow filter (can you see it in GraphEdit)?

> This is also NOT my understanding with KX

Do you have any source to prove that C/C++ code can be executed inside the DSP's signal path and that DSP code can effectively call C/C++ code? I find that highly unlikely.

> just like the AC3 filter does

That's different, DirectShow filters sit BEFORE the card (multimedia software -> DirectShow graph -> DirectShow device -> card -> DSP graph). They process the signal before it enters any PCI hardware (ie. sound card). As soon as the signal has entered the card/graph/dsp, I believe the signal is out of reach for software on the computer?

> use a completely cleared DSP e.

I see. That's not so interesting.

Last edited by mirko2; Oct 14, 2005 at 11:27 PM.
mirko2 is offline   Reply With Quote
Old Oct 15, 2005, 01:15 AM   #33
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

From DTS's website...
Quote:
DTS Neo:6
DTS Neo:6 provides up to six channels of matrix decoding from stereo matrix material.
DTS Neo:6 is available in all DTS-ES-equipped receivers.
the words STEREO MATRIX - I interpit that as being encoded - like DPL/DPLII is encoded

Then theres:
Quote:
DTS-ES
DTS-ES is the only digital audio format capable of delivering 6.1 channels of discrete audio in the consumer electronics market. DTS-ES is also fully backwards-compatible with DTS decoders that are not Extended Surround equipped.
Which tells me - something capable of NEO6 - does discrete also.

Oh ok - It just hit me - I see All DTS-EX enabled devices will do neo6 - but not necessarily the other way around.
It just so happens everything that does neo6 that I found, does do DTS/DDS also. Is there something out there that ONLY does neo 6 and NOT DTS/DDS?

Quote:
Yes, but that's an encoder, not a decoder. The special features of ProLogic II are on the decoder side. The same author has written a decoder (MatrixMixer) but admits ProLogic II is not properly implemented, due to lack of information. I doubt it's implemented at all in his codec because the ProLogic II option described in the manual can not be found in the program [img]images/blue_heaven/smilies/wink.gif[/img] I'm still looking for a DirectShow ProLogic II codec.
You obviously are more informed about the ac3 filter than I. I have no DPL/II material except for what ever the TV is providing, and I dont use AC3 filter for that.

Quote:
> Same with PowerDVD - it supports DPLIIEX - in its upgraded version.

Don't have that one. Can its ProLogic II decoder be accessed as DirectShow filter (can you see it in GraphEdit)?
I dont have it either - but like with windvd - im sure there are some DS filters installed...?? no idea what they do tho.

Quote:
> This is also NOT my understanding with KX

Do you have any source to prove that C/C++ code can be executed inside the DSP's signal path and that DSP code can effectively call C/C++ code? I find that highly unlikely.
Well, first off - i said C++ that the PC EXECUTES - the DSP ONLY understands microcode - which is alot like assembly language.

Also, the fact a PC needs a driver to use a SB card - indicates its a combination of PC executed code and DSP microcode. The KX driver includes the source / SDK but its all greek to me. So to find an example would mean nothing anyway.

Previous threads discuss IR filtering with KX, which was indicated 'would need extesive C++ code to acheive'. Which was affirmation that if you combine DSP/PC much more is capable. Are you familiar with DX/VST effects - which run in PC only - but output (near or) realtime effects to just about any sound card and are NOT direct show filters.

Quote:
> just like the AC3 filter does

That's different, DirectShow filters sit BEFORE the card (multimedia software -> DirectShow graph -> DirectShow device -> card -> DSP graph). They process the signal before it enters any PCI hardware (ie. sound card). As soon as the signal has entered the card/graph/dsp, I believe the signal is out of reach for software on the computer?
So, if a DS filter can, why can't anything else?

Directshow is NOT the only interface to a KX driven SB card - theres ASIO also - which btw - gives far supeior latency.
Maddogg6 is offline   Reply With Quote
Old Oct 15, 2005, 05:19 AM   #34
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,676
Rep Power: 64
Tril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud of
System Specs

Quote:
Do you have any source to prove that C/C++ code can be executed inside the DSP's signal path and that DSP code can effectively call C/C++ code? I find that highly unlikely.
You can't. You can send the signal to the processor for processing by using ASIO. You lose the hardware acceleration but you can do stuff that is impossible with microcode.

I tried to make an ASIO host that would take six channels of audio and compress it to AC3 to use with passthru. I almost got it working and then I gave up due to lack of time, frustration and lack interest. I have a SB live so even if I got it working it would be useless since my sound card does not support passthru.

The information to make such a program is available on the internet. You can look in the ASIO SDK, on MSDN, in the source code of VLC, in the source code of VSTHost and in the source code of FFMPEG. That's where I looked and I found all the information necessary there and many examples of working code. I also used an example of how to use waveout found using google. Using those ressources, a good programmer (better than me) should be able to make something that works.

If what I made was coded better and if I did not do so much copy pasting from other people work, I would share what I did with other programmers so they would not have to start from scratch. They could find the bug(s) or mistakes I made. It may be something silly that keeps the software from working like incorrectly using a pointer.

I'll probably restart working on this project someday but it won't be soon. If I ever get it working, I'll rewrite the borrowed code and share the working project. I usually get frustrated when I can't get what I'm programming working and don't stop working on it until I succeed. This time, I lacked the time to work on it until it worked but I was close. I don't know which part of my code does not work and its hard to find out for me.


I'll try to give some information. You can easily make an ASIO host by using the working example in the ASIO SDK. You need to add a little bit of code to read what are the available ASIO drivers on the computer and choose the correct one. You can use getDriverNames.

You access the buffer containing all the ASIO input data in the bufferSwitchTimeInfo callback. If you don't know how to do it, you can look into the source code of VSTHost to see how it's done.

You use the function audio_encode from FFMPEG avcodec to encode to a52. An example is in the file apiexample.c.

You then need to make a conversion from a52 to spdif. One of the reasons why it's necessary is that the a52 audio is 6 channels and spdif is 2 channels. VLC does it and the source code is available. You can look at how it's done.

You then need to queue the spdif audio to be played by sending it to a waveout function.

You adjust the passthru setting in kX and it's done.

Apart from that, you need more code to initialize the waveout device (with the correct type of file to be played, and many more settings) and the parameters of the AC3 encoding.

All of that needs to be done fast without slowing down the execution of the ASIO callback thread or else it will skip. What I did was to make a function in a separate thread for the encoding, the conversion and sending the data to be played. I gave this thread a high priority. The bufferSwitchTimeInfo callback trigered an event and the encoding thread executed every time this event was trigered.

To get my code working I'll probably modify the code to output the sound at intermediate steps to the speakers or to write it to disk. That will allow me to find where in the chain it stops working.

Some of this information may not be totally accurate but I tried my best to explain all the details of what I know.
Tril is offline   Reply With Quote
Old Oct 15, 2005, 07:40 AM   #35
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Thanks for the informative post Tril.

Quote:
I tried to make an ASIO host that would take six channels of audio and compress it to AC3 to use with passthru.
Would the resulting stream be Dolby Digital Surround compatable/complient?
If no, how would it differ?

the discussion has been more in the lines of decoding instead of encoding - the most recent inquiry you may be able to help with:

Dose there exist a direct show filter that is a Dolby Pro Logic II complient decoder?

Do you happen to know what algrythm is used in prologica (KX Plug-in)?

Another question I do have (because of your informative post) -

Is ASIO the only interface between the PC and the 10Kx DSP - for creating effects not possible with DSP microcode alone - I would imagine a direct show filter could be made that used 10Kx DSP to offload some CPU strain. - Is this correct?
in otherwords is a direct show filter that used KX dsp (completely or partially) to decode DPLII or DTS NEO:6 even possible?

What about DX plugin - that interfaces with the 10Kx DSP (again to offload burden from CPU) ?

I assume with quite some assurity that CL DTS:NEO6 implementation is a combination of DSP and PC code - is this correct/do you agree?

Its just curiosity, as Im not even close to being a programmer, its more to verify my assumptions.
Maddogg6 is offline   Reply With Quote
Old Oct 15, 2005, 09:22 AM   #36
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,676
Rep Power: 64
Tril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud of
System Specs

Quote:
Would the resulting stream be Dolby Digital Surround compatable/complient?
If no, how would it differ?
I don't really know much on the subject but it seems logical to think that it would be or else it would not work with an external decoder.

Quote:
Dose there exist a direct show filter that is a Dolby Pro Logic II complient decoder?
I have absolutely no idea.

Quote:
Do you happen to know what algrythm is used in prologica (KX Plug-in)?
I don't. I took a quick look at the microcode and it's hard to understand. If I took the time to write down the equations from the microcode and I tried to understand, I would be able to figure out what it does.

Quote:
Is ASIO the only interface between the PC and the 10Kx DSP - for creating effects not possible with DSP microcode alone - I would imagine a direct show filter could be made that used 10Kx DSP to offload some CPU strain. - Is this correct?
in otherwords is a direct show filter that used KX dsp (completely or partially) to decode DPLII or DTS NEO:6 even possible?
You can use an ASIO host and a plugin to do something like that. You can apply some DSP filtering to a signal, send it to the ASIO host, filter the signal with a filter loaded in the host, send the audio back to the sound card using ASIO, filter it some more and output it. I used a similar setup before when I experimented with applying big FIR filters in realtime or when I played with active noise cancellation in realtime.

You could make a custom ASIO host that loads a direct show filter instead of a normal ASIO plugin. I think that it's possible but I know close to nothing on direct show filters. Same thing with a DX plugin. You would need to make a special host to load it and use it.

Quote:
I assume with quite some assurity that CL DTS:NEO6 implementation is a combination of DSP and PC code - is this correct/do you agree?
I don't really understand what CL DTS:NEO6 is and what it does so I can't say how it works.

You gave me an idea. Maybe I should try to make an ASIO host that can load a direct show filter like AC3 filter and send it audio data. It's worth a try.
Tril is offline   Reply With Quote
Old Oct 15, 2005, 05:00 PM Threadstarter Thread Starter   #37
DriverHeaven Newbie
 
Join Date: Oct 2005
Posts: 18
Rep Power: 0
mirko2 is on a distinguished road

I assume what Tril means is that he gets a signal into the card - let's say via the wave 0/1 device - then applies a graph which outputs to an ASIO line, then has the signal in the computer again, does something to it which is not possible in microcode and then routes it to another input of the sound card, to yet another graph? So you can't write modules in C/C++ and use them in the graph like modules written in microcode (as far as I understand). Only the user interface of modules can be written in C/C++, and set the values in DSP registers?
> Is ASIO the only interface between the PC and the 10Kx DSP

Looks like the only software interface on the output side (the only software interface I see in epilog). If you'd feed a digital output back into a digital input, you'd have a hardware interface DSP->PC
mirko2 is offline   Reply With Quote
Old Oct 15, 2005, 07:46 PM   #38
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

I guess Im thinking it WONT be 'just a KX plug-in/module' that can do the FIR - but requires a special host.
This was my mis-understanding - As there is the C++ aspect in KX plug-ins - and the C++ (as probably the most popular to develope with) to aspect in external hosts. - I guess I was confusing the two.

If this is true - thats a shame - because if you could directly process audio in C++ via a 10Kx dsp plug-in - would seem to unleash even more potential - by accomplishing things like realtime FIR and transparent use with existing ASIO hosts, and the FIR's GUI in the DSP page in KX.

My grand visions have just become blurry - - lol

But it is disappointing to learn that the C++ side of KX is ONLY for making a nifty GUI.

That seems like a huge hinderence to have to create a special host to be able to 'gang' process (10Kx DSP and C++ cooperative) an audio stream out side of the 10Kx DSP.

Boy have I got alot to learn.
Maddogg6 is offline   Reply With Quote
Old Oct 15, 2005, 10:19 PM   #39
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,676
Rep Power: 64
Tril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud of
System Specs

Quote:
Originally Posted by Maddogg6
That seems like a huge hinderence to have to create a special host to be able to 'gang' process (10Kx DSP and C++ cooperative) an audio stream out side of the 10Kx DSP.
There is also the issue of latency. It takes time to transfer the audio data from soundcard to cpu to soundcard. It's usually best to stick with only dane plugins when possible.

Quote:
Originally Posted by Tril
You gave me an idea. Maybe I should try to make an ASIO host that can load a direct show filter like AC3 filter and send it audio data. It's worth a try.
I changed my mind on this. I won't be trying to make it and maybe it already exists. I was thinking that it could be possible to use the AC3 encoding built in AC3 filter but it's still in development and it does not seem to work like I thought it would.

You can read and write to registers using c++ code but it's only used to read and write parameters used in the microcode. It's not made to transfer large amount of data seamlessly.
Tril is offline   Reply With Quote
Old Mar 17, 2006, 03:50 PM   #40
DriverHeaven Newbie
 
Join Date: Mar 2006
Posts: 1
Rep Power: 0
omnichaos is on a distinguished road

Hi all,

I don't know if you're still interrested in a DPLII decoding directshow filter but if you are then check out Aud-X at www.aud-x.com. It's a free ds filter that decodes Pro Logic II signals.
Hope this helps.
omnichaos is offline   Reply With Quote
Old Apr 20, 2006, 09:46 AM   #41
DriverHeaven Newbie
 
Join Date: Apr 2006
Posts: 1
Rep Power: 0
radosuaf is on a distinguished road

I tried to go throug this thread but it's completely incomprehensable for me... I have just a tiny easy-to-answer question:
I own a Leadtek TV2000XP Expert CX23881 based card and a SB Live! 5.1 (with original Creative drivers) along with Logitech X-530 speakers. Is it possible to get Dolby Surround sound out of NiCAM broadcasts on my setup? Thanks in advance for any replies.
radosuaf is offline   Reply With Quote
Reply

Thread Tools