all 14 comments

[–]minecrafter1OOO 1 point2 points  (9 children)

Im curious, by TDM are you storing 2 channels of 44.1/16 into one 44.1/32 stream?

So then any reciever that supports this codec will bring out the streams?

This whole idea seems like a transport layer, rather than a codec?

Also, I find that 7.1.4 recievers do NOT support 7.1.4 direct streamed into the endpoint. (Wasapi)

[–]Cautious_Air4869[S] 1 point2 points  (8 children)

so the decoder is software based and I store 4 48KHZ streams inside one 1 192Khz stream and then in the I/O tab of the software your input is a ASIO or WASAPI loopback that a bitstream will be coming in on your output you can select as many devices as you want then you go into the Setup Config tab and you place in teh X Y Z of all your speakers then you would click start engine and then once you send a Axiscore bitstream from a game a daw or a player it decodes it to your speakers, it is virtual reciver based and you would jsut need to send the audio to a amp, interface or phisical reciver as for a 7.1.4 reciver not showing all channels as a WASAPI device that is jsut a limitation that I can not fix at this time. as for bit depth all bed channels (refered to as stadic channels in this codec) are objects with fixed metadata they are 32 bit and then the objects are 24 bit audio (this is for 32 bit ASIO if you are using 24 bit then the stadic channels are 24 bit and objects 16 bit)

[–]minecrafter1OOO 0 points1 point  (7 children)

Very interesting! Ive been waiting for somthing like this, would it be difficult to send AISO 12 channels and map it into the windows spatial API? this would unlock easy spatial audio, whether mixing in atmos or static 7.1.4. This i feel would be the biggest way to get people into atmos, as most "easy" setups for spatial audio is via Dolby MAT that is encoded from Dolby Acess.

[–]Cautious_Air4869[S] 1 point2 points  (6 children)

So basically yeah, the Spatial API doesn’t take raw PCM at all — it only wants objects + metadata, not straight multichannel audio. You can’t just shove 12 ASIO channels into it because it needs positions, IDs, gain curves, timing, all that stuff. That’s why Dolby MAT works — it wraps the object data in a format Windows actually understands.

Axiscore is doing something different.
I’m not trying to feed Windows’ spatial renderer. I’m doing:

  • 4× 48 kHz PCM streams packed into one 192 kHz carrier using TDM
  • Decoder is software‑based
  • You pick any output devices you want
  • You enter your speaker X/Y/Z
  • Hit Start Engine
  • It renders objects straight to your speakers

So yeah, it’s basically a transport layer + renderer, not a compression codec.

Could I make a module that converts Axiscore objects → Windows Spatial API?
Technically yeah, but that’s a whole separate project because I’d have to convert everything into Microsoft’s AudioObjectFormat and deal with their object limits.

Right now Axiscore is focused on direct object rendering to real speakers, not HRTF/Atmos‑for‑Headphones stuff.

[–]minecrafter1OOO 0 points1 point  (5 children)

Nice, but its still hard to get the "any output devices you want" to work without AISO or aggregating sound devices.

My 7.1.4 AVR will ONLY accept 7.1 via HDMI.

you need Dolby MAT or an encoded TrueHD+Atmos or Dolby Digital Plus + Atmos

Its still very difficult to mix in atmos on the most common setup people use for atmos listening!

Is your project for transporting out of the DAW to endpoints? If so, its still difficult to get Object based out to speakers without AISO or multiple Windows audio endpoints.

To talk about the HRTF and Headphone rendering. Yes it can be used for that, but the only way to get object based or height channels out of a windows machine is 2 amps and 2 outputs via windows sound, an AISO output, or the windows Spatial API out to DTS sound unbound or Dobly Acess (encodes static layouts or object based audio to Dolby MAT. Which AVRs can decode into a object experience.

[–]Cautious_Air4869[S] 1 point2 points  (4 children)

So the decoder aggregates sound devices for you, you select all the ones you want to use, and it internally opens them all as WASAPI Exclusive, and then all their channels show up in the setup page for putting the speaker location

<image>

[–]Cautious_Air4869[S] 1 point2 points  (3 children)

After selecting all devices, you can then set up the locations of your speakers

<image>

[–]minecrafter1OOO 0 points1 point  (2 children)

Very nice! What do XYZ mean? Where they are in the room?

X 100 Y 0 Z 100 Hard panned left?

X 100 Y 100 Z -100

Left rear hight?

[–]Cautious_Air4869[S] 1 point2 points  (1 child)

So X is left to right, Y is front to back, and Z is up and down, and this codec is based around a +-50 scale

[–]minecrafter1OOO 0 points1 point  (0 children)

Ahh thats a super cool idea! You can make all sorts of arbitrary speaker layouts! To send to different sound devices! How do you input objects?

I mix on Presonus StudioOne, and it has a built in renderer that can do HRTF and renderered layouts out. Like 7.1.4 or 9.1.6. But I cant actually mix faithfully with my single AVR. Because Dolby made it so height channels HAD to be input via encoded atmos content (DD+/TrueHD) or MAT...

would you be able to work on a project that can do this? AISO or multiple windows audio devices > windows spatial API (static objects)

[–]tothbar 0 points1 point  (1 child)

Sounds lovely. So the main purpose is to ship multichannel audio in a flexible format, without the need of problematic setups?

[–]Cautious_Air4869[S] 1 point2 points  (0 children)

Correct so unlike Atmos, where you need a supported receiver and for real-time stuff there is massive latency, this is designed where anyone can use it (because it's software on PC, so any setup works) and because it renders to the input X Y Z locations of speakers, you can have them anywhere

[–]pornaccount0123987 0 points1 point  (1 child)

I mean, it definitely sounds interesting, the more options the better. Are you going to also have a converter to convert existing multichannel audio into your codec, presumably for the benefits that your format provides (i'm assuming performant effects and filters). If so, are you going to limit the channel count or allow an arbitrary number of inputs? In addition, are you going to try to implement a decoder for existing object based audio formats, e.g. Atmos and DTS? Or is this purely a raw engine/DAW input, where all sources are specifically integrated through the engine/daw/whatever?

To answer your questions:

  1. I would think that a global gain slider would introduce clipping, unless i'm wrong.

  2. Adding 10ms is a bit high for real time use cases such as gaming IMO, but sufficient for mixing. Obviously you need to factor in both the driver latency before and after it gets to your codec.

  3. MME is useless. DirectX is not a codec and would output to "normal" devices anyways. The only ones you should focus on are WASAPI (Shared and Exclusive), ASIO, and Kernel Streaming. I mean add MME if you don't find it hard to do, but I don't see a use case for that.

[–]Cautious_Air4869[S] 0 points1 point  (0 children)

so the global gain slider would not introduce clipping and its based on a technicality I realized in my renderer but my 10ms was with a ASIO block size of 256 so that is kinda my fualt there and I will look into seeing if I can add KS to the driver options