HTPC HDMI Multichannel LPCM -> Digital XO

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
XBMC
AudioEngine AudioEngine - XBMC
Audio Output Audio output - XBMC

JRiver Media Center
Product JRiver Media Center software
Quote from: mojave on 26 Apr 2012, 09:17 pm
You can use the Parametric Equalizer DSP (it should probably have a broader name) to reroute audio using Mix Channels. If you put JRiver in 4 channel mode in Output Format for a two-way speaker, then Allocator should take the stereo signal and send out the four channels properly. If going with a 3-way system, you would want use set Output Format to 7.1. Of course you can use 7.1 for a two-way system, too, and the extra channels with just be blank or can be used for subwoofers.
Once you get this working, I would be interested in you comparing Allocator to directly creating the crossovers within JRiver using its high and low pass filters with various slopes, etc. Another user just designed his crossovers within JRiver while using REW's RTA feature to see the frequency response live as he was changing crossover frequencies and slopes.
Quote from: randytsuch on 26 Apr 2012, 12:59 am
I can run allocator as a VST plug in, in either Foobar or JRiver. I am leaning toward JRiver right now, Foobar has a problem where I can only run it once, and then I need to reboot my PC before I can run it again, if I have the VST plug in , and the ASIO plug in installed. Kind of annoying.
I need to make sure I can route the signals with JRiver, will try that tonight.
I think I could also make this work if I used Reaper with Rearoute. With Reaper, I can run Allocate as a plug in, or I could run it standalone, and use rearoute to map the ins and outs for Allocate. The Jriver plug in route is much easier to set up, so if that works I don't need to mess with Reaper.
Originally Posted by Pano on 4th October 2013, 10:08 PM
At the moment I'm using my M-Audio Fast Track Pro as the output, it has 4 channels out. The player is JRiver. I just tell JRiver that I want 4 output channels and the convolver script text file does the routing, crossovers and such. I currently have a file for HP and a file for LP, each 24 bit mono wav. JRiver hits the 4 channels with Left Low, Right Low, Left High, Right High, then it's straight out of the Fast Track to the amps. So JRiver is doing the splitting into 4 channels, I tell the convolver which impulse to use and where to route it. Simple, but took some time to figure out.​
AMD - RADEON
HDA Verbs http://www.x.org/docs/AMD/AMD_HDA_verbs.pdf
Product http://www.amd.com/uk/products/desk...6450/Pages/amd-radeon-hd-6450-overview.aspx#1

SAPPHIRE HD 6450 1GB DDR3
Product SAPPHIRE HD 6450 1GB DDR3

PIONEER VSX-1023-K
Product VSX-1023-K - <b>7.1 Channel Multi-Zone Networked AV Receiver</b><br> Featuring 3D and 4K Ultra HD Pass-through | Pioneer Electronics USA

AMBERY AU-HDMICP
Product HDMI LPCM Dolby Digital To Multi-Channel/Optical Audio Decoder With Amplifier
User Manual http://site.ambery.com/download/AU-HDMICP-Manual.pdf

ATLONA AT-HD570
Product Atlona Technologies connectivity solutions, cables, splitters, extenders, distribution amplifiers, converters, switchers for commercial, professional and industrial applications
User Manual http://www.atlona.com/pdf/manuals/AT-HD570_manual_v2.pdf
Data Sheet http://www.atlona.com/pdf/data_sheet/AT-HD570-ds.pdf
 

Attachments

  • SAPPHIRE Radeon HD6450.png
    SAPPHIRE Radeon HD6450.png
    360.7 KB · Views: 441
  • PIONEER VSX-1023-K.png
    PIONEER VSX-1023-K.png
    308.1 KB · Views: 449
  • ATLONA AT-HD570.png
    ATLONA AT-HD570.png
    79.8 KB · Views: 431
  • XBMC Multichannel LPCM support.png
    XBMC Multichannel LPCM support.png
    409.3 KB · Views: 429
Above would be PC-based solution (would be better to discuss in another forum: PC Based - diyAudio). However, it would be interesting to know how to embedded linear PCM audio to HDMI signal and how it could be implemented using FPGA for an example. Is it required to be encrypted or could the audio data be plain unencrypted PCM? Video streaming is easy (see fpga4fun.com - Welcome for an examples) but I haven't found any information on audio streaming over HDMI. There is commercial IP available but no open source I know about.
 
ADV7513 schematic here (scroll down a little bit) shows a circuit with four I2S input channels (I8S):

HDMI Made Easy: HDMI-to-VGA and VGA-to-HDMI Converters

The chip is a 64-pin LQPF one, data sheet here:

ADV7513 datasheet and product info | 165 MHz High Performance HDMI Transmitter | Analog/HDMI/DVI Interfaces | Analog Devices

* No audio master clock needed for supporting S/PDIF and I2S

Now guess we need an FPGA just to produce a some picture to input to the chip (or can HDMI used in audio-only configuration).
 
It would be interesting to know how to embedded linear PCM audio to HDMI signal and how it could be implemented using FPGA for an example. Is it required to be encrypted or could the audio data be plain unencrypted PCM?
Hi mhelin, thanks for your suggestion. Basically, the aim of this present diyAudio post is to tell people that :
1) HDMI Multichannel LPCM is now working (or not?)
2) XBMC and JRiver have built-in signal routing and DSP capabilities (to what extend?)
3) XBMC and JRiver can host DSP plugins (like VST) for extending the DSP capabilities at will (does it mean a stereo 3-way crossover with best IIR BiQuad filter use, and best FIR filter use?)

Just in case, please note that Flowstone is a graphical DSP compiler easy to use, able to generate a VST. Have you experimented, specifying a VST compiled by Flowstone, as plugin for XBMC or JRiver?

All the above components are available, affordable, and already tested by three experimenters (mojave, randytsuch, Pano).

We can expect XBMC and JRiver to be ported on Android. This means that in a couple of years a 99 dollar Android Tablet will output the HDMI Multichannel LPCM, feeding a 8-channel power amplifier with remote controlled volume.
Such 8-channel power amplifier connected on WiFi, receiving commands from the Android Tablet acting as control surface.
Such Android Tablet extracting audio over WiFi, from your 8 Terabyte NAS.
You see the picture?

You are talking about some homemade FPGA, or some HDMI conversion chip made by Analog Devices.
1) Do you fear the Stereo Audio being split in 8 channels by the VST within XBMC or JRiver, to be not-HDCP compliant, to become muted by the HDMI receiver of devices like PIONEER VSX-1023-K, AMBERY AU-HDMICP, ATLONA AT-HD570? Have you tried this?
2) Don't you like the DACs used inside the PIONEER VSX-1023-K, AMBERY AU-HDMICP, ATLONA AT-HD570? Do you want to hook your own DACs? That's already feasible if you dare opening those devices, unsoldering the existing DACS and intercepting the I2S lines. Possibly you'll need to generate a MCLK if the DACs are I2S masters.
 
Hi all,

Are there any posters having experience with motherboards HDMI output led to multichannel Receivers such as the Pioneer?

If this set up would work decently, one could skip soundcards and save costs that way. Furhermore, decent 7.1 receivers in the 60 W rms channel range, such as products Onkyo and Denon with HDMI inputs are dirt cheap nowadays. We need multi channel amplification anyway with digital 2-3-4 way x/o s anyway.

Maybe I am overlooking problems here, so correct me if this suggestion is wrong.

Regards,

Eelco
 
Studied HDMI specs todays, implementing HDMI audio transmitter on FPGA is doable. Biggest problem is in syncing the audio data with the video data (guess black image with only vsync and hsync signals is enough for receiver). N and CTS parameters used in audio clock regeneration in HDMI sink might need updating, see:

https://engineering.purdue.edu/ece477/Webs/S12-Grp10/Datasheets/CEC_HDMI_Specification.pdf
(not the official repository for specs but google better one if that link stops working)

Basically if video and audio clocks are derived from the same clock there shouldn't be problems. Audio data is transmitted on Data Island Periods during horizontal and vertical blanking periods using specified packet and subpacket structures (timing is important) using the same TDM channels as video (HSYNC and VSYNC obviously must be transferred continuosly).
 
Last edited:
Studied HDMI specs todays, implementing HDMI audio transmitter on FPGA is doable. Biggest problem is in syncing the audio data with the video data (guess black image with only vsync and hsync signals is enough for receiver).
Not sure about a FPGA acting as HDMI transmitter. Within a few months, with the arrival of Android 4.4 tablets running XBMC, everybody will have a device at home, able to output multichannel LPCM on HDMI.

Some XBMC add-on would be required for telling XBMC to always decode in stereo 24 bit at 48 kHz (downmix in stereo if source is multichannel), and output the audio, not to the built-in speakers, not to HDMI, not to S/PDIF, not to an USB sound attachment, but instead to a virtual sound device called "Xover Software".

Within such "Xover Software" we can implement IIRs, FIRs, delays, adders, etc ... making up a stereo 3-way crossover.
Within such "Xover Software" we can route all 6 channels to various devices to be chosen like HDMI multichannel LPCM, multichannel USB sound attachment, etc.

We need to tell how the listening volume gets defined.
A possibility is to leave the volume at 100%, and rely on the HDMI receiver knowing that most of them are equipped with a remote-controlled volume.
Another possibility is to embed volume control info in the HDMI CEC.
In case the "Xover Software" outputs the multichannel sound to a multichannel USB attachement, the listening volume could be processed by the associated driver, in some way.

Speaking about a FPGA, a nice device would be a HDMI traffic analyzer or repeater equipped with a few LEDs telling :
- is this HDMI multichannel LPCM or not ?
- what is the audio resolution (16, 24, 32 bits)
- what is the sampling frequency (44.1, 48, 96, 192 kHz)

You said there may be an image or a movie needed, for properly activating the HDMI in case we want to listen to a CD (music only). It is not that complicated. Think like you are using the HDMI connector as Secondary Display. Basically you would tell Android tablet to copy the content of the display and send it over HDMI. A more elaborate solution would consists of defining the HDMI as "desktop extension", on which you play your movies. In all cases, the HDMI will carry an image (the desktop extension) or a movie (the movie you are watching). In all cases, the HDMI receiver that's at the other end would be happy. Don't you think so?

Since Android 4.2, we have the concept of Secondary Displays.
Android now allows your app to display unique content on additional screens that are connected to the user’s device over either a wired connection or Wi-Fi. To create unique content for a secondary display, extend the Presentation class and implement the onCreate() callback. Within onCreate(), specify your UI for the secondary display by calling setContentView(). As an extension of the Dialog class, the Presentation class provides the region in which your app can display a unique UI on the secondary display.
To detect secondary displays where you can display your Presentation, use either the DisplayManager or MediaRouter APIs. While the DisplayManager APIs allow you to enumerate multiple displays that may be connected at once, you should usually use MediaRouter instead to quickly access the system’s default display for presentations.
To get the default display for your presentation, call MediaRouter.getSelectedRoute() and pass it ROUTE_TYPE_LIVE_VIDEO. This returns a MediaRouter.RouteInfo object that describes the system’s currently selected route for video presentations. If the MediaRouter.RouteInfo is not null, call getPresentationDisplay() to get the Display representing the connected display.
You can then display your presentation by passing the Display object to a constructor for your Presentation class. Your presentation will now appear on the secondary display.
To detect at runtime when a new display has been connected, create an instance of MediaRouter.SimpleCallback in which you implement the onRoutePresentationDisplayChanged() callback method, which the system will call when a new presentation display is connected. Then register the MediaRouter.SimpleCallback by passing it to MediaRouter.addCallback() along with the ROUTE_TYPE_LIVE_VIDEO route type. When you receive a call to onRoutePresentationDisplayChanged(), simply call MediaRouter.getSelectedRoute() as mentioned above.
To further optimize the UI in your Presentation for secondary screens, you can apply a different theme by specifying the android.presentationTheme attribute in the style that you’ve applied to your application or activity.
Keep in mind that screens connected to the user’s device often have a larger screen size and likely a different screen density. Because the screen characteristics may different, you should provide resources that are optimized specifically for such larger displays. If you need to request additional resources from your Presentation, call getContext().getResources() to get the Resources object corresponding to the display. This provides the appropriate resources from your app that are best suited for the secondary display's screen size and density.

Steph
 
Last edited:
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.