radical idea for an active digital speaker

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

in discussion with a colleague I came up with an interesting idea, since I want to know if it s feasible.

At home I mainly listen to digitized music - stored on my hard drive.
I came up with the idea that the best playback can be achieved if it is transfered as long as possilbe as an jitter free, error corrected digital audio stream and converted to analogue audio as late as possbile in the process.

So my basic idea is to build a speaker with an built in dac (2 or four for each chassis), some built in mono amplifiers to make a bi- (or quad-)amping active speaker.

The music should be transfered over tcpip (wireless) to get an error corrected stream directly to the speaker.

In the speaker a small linux bo picks up a channel, acts as an all digital frequency-separating filter and delivers the signal to the DAC(s).

In Theory this should deliver the best possbile reproduction of an digital signal.

My question is:
What do you think?
Has somebod done this before?
And if not - why?

Best Regards
_Atari_
 
Volume control is another factor to consider. If you are sending the signal to the speaker as a digital stream, you DON'T want to turn it down by reducing the digital values in the stream at the sending end. That way loses DAC resolution fast. If you are say, playing 30dB from the highest value the digital path can represent (and the highest level the speaker can presumable play), then you've lost 30dB of dynamic range that the DAC is capable of, and that's not good.

You'd best send the stream over scaled so that the peaks are near full-scale, and then also send some digital instruction to the speaker to specify how loud it should be playing. Control the volume AFTER the DAC.
 
There have always been jokes about linux running on this and that, but now "My speakers runs linux" :)

Given the small size of systems I am working on that run linux, why not ?

So basically what we have is sound being broadcast over an IP network (wireless or otherwize) to the speakers which then do crossover and whatever other processing. How about Ambisonics, for example, after all our network can have many more than two nodes.

I might suggest using FPGA's. Put a CPU running Linux into part of the FPGA to handle the networking. Put the crossover filters and whatever else into the rest of the FPGA as VHDL or Verilog to get good speed.

Now the big problem here is time synchronization. Each linux OS is sucking data down from a central source and they all need to output nice jitter free samples samples in sync. No matter if there is some difference between one and another, after all you get that from normal distance variations betwen speaker and listener. But that difference should be too big or change much. some how a common clock has to be distributed to all those DACs.


Interesting.
 
I believe digital amplifiers start to become interesting when x-over is also digital, because with passive x-overs frequency response becomes load-dependent. And since nobody does, digital amps don`t have the reputation they should have, except among some fullrange lovers like me.
 
Yes, synchrnoization is a problem!

because you need a confident world clock between all speakers to prevent any kind of phase shift.
One idea I had was to use ping to measure timeshift to the source and use some kind of timing information in the audio signal - so that the speakers could use buffers to deal with network lag and network distortion.

Is there any prebuilt circuit that could help me?

To answer the questions:

Putting Linux in FPGA? Way above my head - so I am very interested in it!

Yes x-over should be done digital -since then you can do any funky equalizer x-over or even room adjustment in the digital domain to not disturb the signal.

Is anybody interested in helping me to come up with a real-world-speaker running linux ;)

Thanks for the encouraging response!

Marcus
 
Some clarification

Hi,

the basic idea goes a bit beyond the idea of an dsp-speaker (but that comes close to the main concept).

The idea tries to solve several speaker problems at once
(in common with the proposed meridian speakers)
1. reduce the complexity of an x-over by implemnting it in the digital domain
2. each driver gets its own amplifier to get tighter controll and less problems
(going beyond the meridian speakers)
3. to solve the problem of data transmission an error corrected protocol should be used
4. to solve the problem with cables a wireless transmission should be used

My current idea is to setup a proof of concept:
- Use a diy 2way speaker with one DAC and one amp per speaker (to have 2 channels to drive the 2 drivers).
- hook it up via usb to a computer and tr to configure linux audio so that it acts as an x-over and combines the 2 sound cards to a stereo sound card.

I will choose a simple linux computer since most of the configuation can be done in text files which is from my point of view perfect for that kind of prototyping

Can anybody recomind a good reasonable diy 2way speaker set? (prefereably to be ordered from europe and you can order it only in parts - so that i can leave out all the "classical" electronics.


thanks for your help!
 
I think the main problem with this approach would be to synchronise the different speakers. It is very important that the channels play in sync, within fractions of milliseconds, and this might be hard to acheive over TCP/IP.

Secondly, good old fashioned analog loudspeaker cables are not that bad. The improvement that you could acheive would be very small.
 
i'm also interested in doing much the same thing.
I'd suggest that you only need around a 600 MHz x86 cpu of some description, a Via C3 with a passive cooler on a small-form-factor motherboard would do it.

That should have enough grunt to handle two or maybe three 65536 coefficient filters.
I'd use a separate filter for each frequency split - you can actually merge the xover and the digital room and speaker phase correcting filters together and do it in one sequence of operations.

The problem i've been chewing on is affordable multichannel DAC's with reasonable S/N ratio.
They're hard to find.
SBLives / Audigys arn't bad, but they'd limit you to no more then 6 or 8 output channels in total. No, not per speaker, because they would have to be hacked to accept a separate hardware clock.

One could use a hammerfall or a EMU pro card, but then you're talking US$k's just for one card.

What i'd decided to try, (eventually), would be a set of usb stereo dac chips from BurrBrown.
( texas instruments by another name) - toward that end i've got 5 PCM270x's, (where the x is a 2, a 5 or a 6 - they've been sitting in my draw for a while now - been busy with uni)
Plan is to run them all from a pci usb card, or maybe just one or two hubs.
(probably i'd need two, they're only USB1.2)
Have them all on one board, and use their SPDIF outputs... and daisy chain them all from the one timing crystal.

I was going to just have them feeding straight into a set of various amps and put the lot in the one box...
S/N ratio of these is about -95 dB, which ain't too bad, considering all the other usb sound card thingos i've found seem to go with around -60 dB.
Or worse, -40dB :whazzat:

-112dB would be nicer though - so maybe the go would be to have an fpga to bridge the pci bus across to a set of class D amps - TI have one which is 2x 120W RMS, and it's a surface mount device :eek: , fed directly with sigma-delta differential digital (think of it as a 1 bit, pwm-ish thing, with a clock rate somewhere up in the MHz... this switchmode hash just can't be reproduced by the drivers, they naturally lowpass it away.)

Differential == Balanced line, or basically Why Firewire and USB and SATA are so fast with so few wires....

I'd prefer to have the mobo and fpga well shielded and away from the power amps. In theory you needn't worry about rf noise in audio... but, i've gotta point out that current theory only handles linear systems...... noone's quite sure how to analyse and control nonlinear systems just yet....

On a related note, i'm fairly sure this is why i get much better DRC filters when i run my measurement sweeps so attenuated that they're almost inaudible... keeps the amp and drivers (and dacs) running well in their linear mode of operation...

Oh, sorry - go have a look at www.duffroomcorrection.com if you haven't seen it yet.
I keep meaning to put up a 'success story' page there, but just haven't got around to it yet...

Anyway, synchronisation would be a big part of the problem for such a speaker system as you're suggesting.
You've gotta have one master unit and a separate (from the ecc data) clock distribution system, the easiest of which would be to use an antenna cable and a rf amp to carry the dac clocks around, and have just one crystal's opinion of the sample rate.
I don't think i'd trust timing information from ethernet or wifi to stay in sync - it's not designed with that in mind, but rather to keep resyncing to whoever on the network currently happens to be talking - probably why both only send data in packets, come to think of it - that way you're never talking bits long enough to fall out of sync, you just keep resyncing as part of the handshake before each packet.

I guess you could make the sample clock wireless - it'd be in the right frequency range, but you'd have to be careful there too - rf reflections would really stuff it up.

The idea of putting each power amp right next to each respective driver interests me greatly... one might also put a adc there and wrap the driver in a feedback loop local to it to try and circumvent nonlinearities - you'd have to add a pickup to each driver to do that - the electrical side of the driver would already be dealt with as far as feedback.

You'd then have to take that info back to the processor, and use it to tweak the digital filters as it goes - such a system should well be capable of tuning itself in, although you'd probably still want measurement sweeps to get everything to play nice.

My 10 channel usb sound card monster conceptually is only missing a few line ins - for which i'll need to find another variety of chip to do - otherwise there will be sync problems when i run measurement sweeps, and that'd be counterproductive.
The other big hold up with it is the actual construction. It's all smd, not thru hole, and i haven't built anything with smd parts yet....
I'm thinking i might have to cad the design with Eagle or the like, and outsource the pcb production... or wait a year until i'm working on my final year project and tuck a couple patterns into the corner of the pcb i'll surely be fabbing for that (whatever it is).

At the moment, i'm finding myself fairly content with playing with DRC on my main pc - spdif out to a cheap 5.1 decoding amp in 2.1 mode, .1 to a 12in sealed box about 20cm from my pillow, each of the other two channels thru a simple series passive crossover to two of the little midrange boxes that came as part of the original 5, and two distress stock forster ribbon tweeters from jaycar. ( in a couple of excellent little boxes of their own).

Signal source is currently my ipod nano into the linein of my onboard ice1724 sound card... less than perfect really, but the ipod is a very convenient remote.

I'm constantly being surprised how nice mp3s can sound... stereo does encode a lot more spatial information than you'd think.

Anyway
I'm prone to ramble, i should probably chop this up and post the bits elsewhere.. but i'm also lazy, so i'm just going to hit submit instead.
 
nice - he's sending the dac clock back up via ethernet to the pc.
Or rather, probably just using it to implement a double - ported double - clocked buffer on the fpga, with perhaps a bit of glue back up to the pc to prevent it being overrun or underun.
That would work a treat :)


*has a closer look*
Yup
A FIFO is a useful way to cross clock domains (from CPU clock to audio master clock).

Very cool - thanks for the link!
 
is that a joke ?

what exactly do you think you will gain compared to an
" outside" of the loudspeaker system ?

you are still using a digital source, a dac , an amp
and a driver

the placement of the items doens't change the sound

i am using my computer to feed directly my custom DAC
( mainly a RAKK unit + passive trannys )

and i do not see how this would differ from using a wireless or lan whatever corrected signal and then sending it to a dac ( same path )
within the box

please tell me if there is something i am not understanding here ..

and as far as i can tell there is nothing such as a digital amplification
( remember that even " digital" is some form of analogue..everything is analogue )
 
Hi,

no it is not ment as an joke. There are two design goals that lead to this solution:

1. Reduce the signal length of analogue signals
2. Do the X-Over in the digital domain - because it is much easier
3. Use seperate amplifiers per speaker driver to reduce side effects

Best Regards

_atari_
 
Just as an second addition:

JinMTVT said:

[...]
and as far as i can tell there is nothing such as a digital amplification
( remember that even " digital" is some form of analogue..everything is analogue )


Of course. Amplification can only be done analogue - It does not make sense to have louder 1 ;)
But alls my sound sources are digital (shame on me) the idea to have as little loss or problems as possible - by converting it to analogue just before sending it to the loudspeaker driver (see above for reasons).

Any opinions on that topic?
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.