8 channel LPCM over HDMI, It's Multi Amp for Everyone

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Cheap! Full digital CrossOver!

:smash:
Now I implemented Stream mode.

Package:
http://koonlab.com/MultiAmpForEveryone/GPUFIR_Stream_08172008.zip

It works as generic CrossOver, I'm listening CD Player - PC/HDMI 6 channel output - HDMI AV AMP - 3Way LINN Activ.

This crossover's spec is interesting. I don't need crossovers in market anymore.

8192 Taps real FIR, without FFT. (expandable), True phase linear.
over 200dB/Oct cutoff (at 8192 taps)
4 Way output (expandable)

Price: around $1,000 (Fanless GeForce equipped PC)
Power usage: 76W

Fully customisable with source code
Input: SPDIF or WAV file (or anything what you like)
Output: HDMI Linear PCM 8ch (6ch available for AV amplifier) (or what you like by little modification)

DRC: Straight Phase Room EQ by FIR coeff generator
Level: Channel Level Control, by dB offset
Delay: Channel delay control, 1/44100 sec step
Or any effect? you have source and easy to find where to change.

low CPU load
An externally hosted image should be here but it was not working when we last tested it.


I will implement some features, and GUI controller, 24/96 for my mod SACD player etc, but they are not a core issue. Current source is just a minimum, below 600 lines. good version to learn. any porting is welcome.



Next I'm thinking to make LAN I2S device with 6ways I2S outptut, using "NetBurner" micro.

http://www.netburner.com/products/development_kits/network_development.html
 
KOON3876, wait a second, does this mean you are done, it works?
I have a laptop with Geforce card and HDMI output, going to force a CUDA driver on it later on but I got to order some cheap receiver for testing first. If it works I will aim for a Pioneer Susano receiver with ICE Power amplifiers.
This project is not just for the people on the budget, problem was with the need for multiple devices and complex arrangement, now it all goes through HDMI making it simple and flexible.
One can even use a pre/pro and add amplifiers like Nuforce.

If this works out I can't thank you enough, be sure to prepare some sort of donation option.
 
good morning,
>Soundcheck
I think NetBurner has enough power to process 2.8MB/sec PCM stream to external FPGA. NetBurner has 16bit data bus. I have to buy & measure performance first. If it's OK new thread will appear.

>nuhi
You should ask your friend who has HDMI receiver, try your PC can play 8 channel PCM first. Then download CUDA drivers / SDK / sample App to see your GeForce can process CUDA.

Yes I did, it is working. current configuration is here.
An externally hosted image should be here but it was not working when we last tested it.


now we don't need huge space to store preamp - crossover - many amplifiers. One AV amp works as 3Way volume control and 6 channel power amplifier.
 
KOON3876, I tried it on the LCD HDMI TV and there was pic and sound.
Sure I will first check it with 8ch.

But for now there are some basic issues.
I installed the Cuda driver and the Cuda toolkit (because the cudart.dll was needed).
Still the cudart.dll was reported missing. I copied it to syswow64 (32bit system32 in Vista64) and then it started but it just showed blank CMD windows a standard crash.

That was with Cuda 2 beta toolkit, now installed 1.1 beta and it doesn't even recognize cudart.dll when in syswow64.

Am I missing something obvious, is this crash showing that the GPU isn't compatible or I should use the files differently because you never mention the CUDA toolkit/drivers and what is the proper way of using them. Remember it doesn't detect it in the c:\Cuda on it's own.

Thanks.

edit: Testing other CUDA apps, same issue. Installing older driver, used the latest Beta. CUDA was reported present by one app, will update in a few minutes.
 
Ok my CUDA driver works but the issue seems to be 64bit operating system and something else.

If I install CUDA Toolkit x64 SDK samples run fine but yours and some other user programs report error 0xc000007b.

If I install CUDA Toolking x86 SDK samples report error 0xc000007b, other programs work but yours report error 0xc0150002.

Try to compile your program so it pushes 32bit (not Any CPU) or compile separate one for 64bit please.

Let me know if you need more testing. I installed VC 2005 and 2008 runtimes. We can also continue this over PM, I am a programmer myself so I can help at least by testing.
 
Hi, I'm still not sure about "runtime" environment of cuda?

I have cudart.dll at C:\CUDA\BIN (same as nvcc.exe directory).
and WaveX05.exe requires these dll, by dependency walker.

ADVAPI32.DLL
CUDART.DLL
GDI32.DLL
KERNEL32.DLL
MSVCR80D.DLL
MSVCRT.DLL
NTDLL.DLL
OLE32.DLL
PORTAUDIO_X86.DLL
RPCRT4.DLL
SECUR32.DLL
USER32.DLL
WINMM.DLL

Rebuilded as "Win32" "Debug" and zipped here.
http://koonlab.com/MultiAmpForEveryone/GPUFIR_Stream_08182008.zip
with some dlls in c:\cuda\bin, of XP32.

I copied this folder to Vista64, and waveX05 could (just only)start up.
(my vista64 has no sound device now - can not run through)

This zip also contains project file for VS2005.
Please try re-building (download PortAudio first),

=======

cudart.dll in vista64 is 399KB, and in XP32 is 164KB. (cuda 1.1)
Mine was built for 32bit cudart.dll, and in your PC, 64bit cudart.dll was used. maybe. Now I packed 32bit cudart.dll also.
 
Took me some time but here we go.

First note that to run it you need a 32bit Cuda Toolkit and if the path wasn't properly applied in the Environment then copy that cudart.dll in the root. But it crashes with Cuda 2, you need that dll you put in the second zip.
I presume you will update to Cuda 2 eventually.

I also installed a 32bit SDK so that works as well, just can't mix 64bit tookit and 32bit SDK and vice versa no matter the Windows architecture.

Most importantly the reason why your program didn't run is because it needs Microsoft.VC80.DebugCRT.
C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT

If you can test it on any PC without Vistual Studio 2005 you would see it doesn't run, then copy this folder in the root of the program and it will run.
Read upon that common issue and at least switch to non-Debug version so you can distribute it with the program legaly.

C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT

Simply copy that folder after you disabled all Debug switches in the Release project properties. Also check the custom build switches.

Another major thing for the guide is the Sound Card Recording, it crashed if all were disabled then I enabled the Stereo Mix and it RUNS! :) Now processing blindly, haven't actually tested with the receiver.
I will use an USB soundcard with SPDIF input. Is this actually lossless, maybe it goes through Kmixer or whatever is in Windows while you push it from input to output through directx?

Oh another note is that message about the CFG file, I used your INI in the folder. I have no clue about that but that will come later on as I actually get the receiver.

So if I may suggest this would be a todo list:
- update to cuda 2
- fix that debug runtime dependency
- make a better installation guide or catch all those errors and popup an appropriate message

Other than that this is one serious potential, I hope I didn't sound too whiny.
 
Koon,
I'm a little confused about the advantages/disadvantages of FFT based vs. direct methods for executing FIR filters. On your site you mention time information getting lost with the FFT approach. I've read through discussions in this forum in the past on whether or not the direct method gives a different result than something like brutefir. Some seemed to be claiming that a properly executed filter in brutefir will give the same result. Can you point me in the direction of info to help me understand how to compare the two methods? I've found a fair bit about the computational efficiency of using fft's for this application, but nothing discussing in depth their impact on the accuracy of the filter.
thanks,
Dan
 
Hi,

>nuhi
user distribution is messy for me :( a while..

>Dan_E10
Please mention that I just want to make it simple.

FFT does is here, (only a sample, you have to refer DFFT/IDFFT theorem)
original PCM is time domain / sampled data.
{0x023E, 0x0144, 0x1B32, 0x8CE2....} ex, 1024 length.
after DFFT, converted to Frequency domain.
{0-43Hz=0.22+i0.11, 43-86Hz=0.03-i0.65, 86-129Hz=-0.37+i0.41, .....}
Filter coeff for FFT
{0-43Hz=1.00, 43-86Hz=1.00, 86-129Hz= 0.00, .....}
convolution is frequency domain * Filter value.
after convolution filter
{0-43Hz=0.22+i0.11, 43-86Hz=0.03-i0.65, 86-129Hz=-0.00, .....}
Then output 1024 signal is re-generated from frequency domain information. more longer sample, more accurate result.

What I want is.. make it simple.
when straight FIR, one sample ex: 0x41C7 is caclucated from previous 8192 sample * 8192 coeff TAPS convolution.
 
KOON3876, I don't understand completely what you meant with that reply. Your Engrish sounds weird in both answers and you act like you ignored all the issues I found. Isn't that the whole point of this topic.

It will develop faster if people don't have to spend hours just to start it up.
I can run it now so don't get me wrong, just trying to help.


Dan_E10, if Brutefir can output to HDMI 8ch format that would be great, any chance of that happening?
Anyone?
 
nuhi said:

Dan_E10, if Brutefir can output to HDMI 8ch format that would be great, any chance of that happening?
Anyone?

I have no experience with brutefir, but AFAIR it outputs to jack. If there are alsa drivers supporting 8channel HDMI (AMD/ATI developers have been contributing numerous ATI HDMI patches to alsa recently), I do not see a major problem. Just my 2 cents, no real experience with brutefir/HDMI.
 
nuhi? cool you down, it's Tuesday, the program is only 2 days old.
and you are programmer, you can rebuild as you like.

I don't have PC "without" visual studio. I ordered SSD and after it arrives, I have chance to install clean Xp32 for runtime environment.

CUDA 2.0 / 1.1 are still both active on download page, and for this application there are no difference between 1.1/2.0, but I would try later.

install guide
An externally hosted image should be here but it was not working when we last tested it.

my GUI module sets up everything, this is easy to deploy .net 2.0 application but should be modified to include additional features.
 
Hi Koon,

wonderful work, as usual :)

I'm dreaming this system. Maybe I'd start a "cuda for dummies" thread...

Do you think this can be useful?

ASUS Xonar HDAV1.3 with HDMI in/out

An externally hosted image should be here but it was not working when we last tested it.
An externally hosted image should be here but it was not working when we last tested it.


It can replace the hdmi multichanne receaver. I wonder if in addition it can receave data from the GPU via Portaudio.
 
:)

To clear things up (though correct me if I'm wrong)-

HDMI is an interconnect system. It is not directly related to GPUs or FIR filtering. It is useful in that it allows a computer soundcard to send 8 channels of lossless audio to an integrated amplifier (home theatre reciever) over 1 cable. This is much cheaper and easier than existing solutions involving multichannel soundcards and several discrete amplifiers.

Koon's FIR engine utilises Portaudio, a library which can access practically any soundcard's drivers. This is not in any way limited to HDMI, though in many situations this is an optimal solution.

Xonar HDAV1.3 Soundcard. This is useful for those who do not wish to purchase a compatible motherboard. It does not replace the home theatre reciever, it connects to it via HDMI. Portaudio will be able to access this cards drivers. The HDMI input on this card is used to recieve video from your video card. Many other soundcard options exist for those who don't require HDMI.





KOON: Thanks again for your hard work - we are a demanding bunch.
I've been trying to build your project, but had no luck. I think my build environment is stuffed and I'm going to try again on a fresh install. Could you please comment on the following?

Versions:
Cuda 1.1?
MS VC++ 2005? (Express will work won't it?) (SP1?)
Portaudio latest stable?
Windows SDK/Platform SDK? Not sure what to use here.

Do you use the default install locations for everything?
Where do you put your project folder? (Does this matter?)


Thankyou
 
Hi fb thank you for build effort and clear description.
Yes portAudio makes interface selection free. and makes code very simple. I want to keep this simplicity.

CUDA 1.1
MS VC++ 2005 Pro SP1
- Can you build and run other CUDA applications?
I think I spent pretty much time here.

PortAudio V19
- ASIO SDK
- Windows 2003 Server platform SDK
- DirectX 9.0 updateSDK Summer2003
These 3 are only required to build PortAudio.

Install Location: I created C:\GFM (Gpu Fir something I forgot) folder,
\GFM\Params Coeffs text
\GFM\Programs exe, dll

the dlls copied to here are these 3.
cutil32.dll
cudpp32.dll
portaudio_x86.dll

and path to c:\cuda\bin\cudart.dll

I will get 32G SSD tomorrow, so will try these.
(1) XP32 clean install / setup only drivers / my zip can run?
I'm interested in How to pack CUDA app for peoples.
(2) CUDA2.0, VS2005, PortAudio, DirectX, etc install & configure memos.
 
Koon, I am watching your web-site and posts here for some time. I think you did a great work sharing this. Best luck with net-burner, I guess that's the final step. However I'm not sure ethernet has a good enough latency for streaming audio.

By the way, why did you choose the netburner development kit and not one of the Xylo boards you've already worked with? For example Xylo LM has a lot of memory, I/O's and a rather big fpga. The price seems about the same with the netburner.

Good luck with your projects!
 
Hi SunRa,
Cobranet is using ethernet as physical layer.

first I want to check maximum throughput and responce, by single cross cable connection between PC and NetBurner.

Xylo LM : 10Mbps, ARM(GPIO), large FPGA
NetBurner : 100Mbps, Motorola(16bit Bus), no FPGA

I wrote some I2S distribution VHDL, and that is not a resource eater. I feel CPU speed / LAN speed / CPU Bus / RAM resource will be important for multi channel LAN I2S.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.