Hi Scott,
On 5/23/2012 11:30 AM, Scott Dorsey wrote:
> In article<jphhqn$en5$
1...@dont-email.me>, MarkK<
mako...@yahoo.com> wrote:
>> 2) if you have sufficent buffer, you may have excessive latency if this is a
>> live sound reenfrcment situation.
>
> Yes. It's not an easy problem, BUT it's a problem that has been solved already
> by several people. The AES has a committee that is
> already arguing abouttrying to standardize
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Where are the inexpensive, ubiquitous products? :>
> audio over ethernet. The LAST thing we need is another
> competing standard.
Standards (and compliance with them) make sense if:
- interoperability is a concern
- the standard, plus whatever tweeks your application needs,
addresses all of your design criteria (size, cost, performance,
reliability, functionality, etc.)
There are standards for how to organize books in a library -- yet
I suspect few of us keep our *personal* bookshelves thusly ordered.
Why bother? We aren't catering to "visiting librarians"!
There are standards dictating the roles and colors of each conductor
in a POTS drop. Yet, these have changed and/or been ignored over
the years -- to the point that you hardly know *what* to expect
if you peek inside your RJ11! "Who cares?! The CO doesn't
care if you swap tip and ring!"
Look at how RS-232 has "changed" over the years -- from ~20
defined signals to as few as *two* (in a simplex application).
Even the *roles* of various signals have changed over the
years (e.g., RTS used to initiate a transmission over the local
TxD; now it is commonly used as a "pacing" signal notifying the
remote end of the link when the local node is "Ready To Receive"!)
How much of a "standard" is something wherein the very functions
implemented on its signals are subject to change??
[Of course, this came about because the standard's original role
evolved as other "users of the Standard" bastardized it to fit
*their* needs. I.e., when the costs of using the standard as
originally intended proved too great for their application.
(having spent some time designing telecom equipment, I can
attest to how many wacky variations of "RS232" *big* equipment
makers rationalized! Weird signals used for handshaking and
pacing: RLSD?? Oddball voltage supplies on pins: "Aw, no one
ever uses SRTS anyway..." etc.)]
Cisco opted to use the "unused pairs" on 10/100Mb networks for
a crude, *proprietary* PoE capability before IEEE 802.3af-2003
was formalized. The "existing standard", at the time, didn't
suit their needs!
"Standards are great! Everybody should have one! :> "
When I decided I was tired of all the various bits of audio and
video kit lying around the house and never having the material
that I wanted *where* I wanted it, it was only natural to think
about a media server. They exist. Just *buy* something and
plug it into the network! "Instantly", the problem will be
solved!
A bit of research and the applicable "standard" was UPnP.
*Any* device can pull whatever it wants off a UPnP server!
Gee, what more could you ask for!
But, wait. Now I am replacing the existing "HiFi"s with
a *different* box. But, it's *still* a box. Still wants
to *sit* someplace ACCESSIBLE so I can push its buttons,
point *its* remote at it, view its *display*, etc. And,
it still needs to *feed* an amplifier. And the amplifier
still needs to be tethered to speakers. And it's yet
another power cord to plug in. Yet another box to
configure. No doubt it will need software updates, etc.
"What am I gaining?" I'm just REPURCHASING all my audio kit
ALL OVER AGAIN (like buying a cassette desk to replace the
turntable; a CD-player to replace the cassette deck; a PMP
to replace the CD player; etc.) And, all I've really gained
for this effort is access to my media library regardless of
location (as long as I purchase one of these boxes for *each*
room in which I might want to hear music!)
I've still got lots of matte black boxes that need to be
dusted every few days. Lots of LED/VFD/PGD displays eerily
lighting up the rooms at night. Even *more* remote controls
to keep track of, etc. I wonder how many of them will be
"clever" and display the "current time" when idle? I wonder
how many of them will use a time service to keep that time
*current*? Will I be running around the house after each
power outage resetting a dozen *more* clocks??? :<
And, if I want to add smarts to the system (i.e., so the music
"follows me" as I move around the house; so the music is
attenuated when I answer the phone; so the "doorbell annunciator"
can be mixed in with the audio signal; etc.), I now have to
hope the folks who made these boxes did so with external command
and control capabilities in mind. And, that it actually *works*
as advertised, is "secure" from hacking, will *keep* working 5/10/15
years from now, etc. If I start a "play list" on *all* of these
boxes simultaneously (think: party), will they all be in sync?
Will they *remain* in sync?
Even without doing much research, it seemed pretty obvious that
my wish list was going to far exceed the capabilities of anything
available! (can you spell "EXPENSIVE custom system"?)
When the ULF distribution system project came along, it seemed
like kismet! A "no brainer"! Sure, there are all sorts of
audio/video containers out there. That's why COTS media servers
and "players" are so costly -- they have to do too much! And,
they are designed as if *they* were controlling the media
stream (it's a "pull" model: they fetch what you want to hear
from the server) which means it will always be difficult getting
two or more of them to "play nicely", together.
If, instead, you adopt a *push* model, you eliminate the need
for a display and controls. Something *else* decides what the
node will "play" and it just sits and waits for "audio" to
come down the pipe! Once the display and controls are gone,
you can change the packaging to something less conventional:
"Hey, why not make it really *tiny* and cram it into a
standard 1 gang electrical box? Something about the size
of an ice cube. Put a wall plate on that Jbox that has a
couple of binding posts to attach the loudspeaker (or an
RCA/SPDIF jack to connect to an amplifier) and *hide* it
in the wall! Don't even need to put it in a pretty *case*
since it is never going to be "exposed"! No more clutter!
No more dusting! Heck, put a couple in the ceiling so
you don't have to have loudspeakers sitting in various
corners of the room -- where would I put them in the
*kitchen*, otherwise? On the *counters*???"
And, since the device only *takes* what you *give* it (and not
the other way around), you can decide to only *give* it files
in a single format. No need to put a slew of different CODECs
into the device. And, have to update them each time someone
comes up with another CODEC-du-jour. Instead, handle that on
the server end where you (conceptually) have more resources!
Ah, but wait! Why use *any* existing "file format"? The network
is just acting as a speaker cable. Pick whatever scheme you want
to push bytes down it. As long as your protocol will operate
within standard fabric, you can leverage the commodity nature of
those items and repurpose them for your own needs! So, we can
pick a suitable CODEC ("standard") and *bend* it to fit our needs.
No reason to include support for a variety of different sample
rates, data formats, metadata, etc. So, strip that cruft out of
the standard...
Deliver power to the devices over the network? OK, here's a
standard (PoE). use that! Ah, but it doesn't allow me to
*control* that power delivery -- it's intended for nodes to
have the power supplied all the time (I surely don't want
all these devices powered up just because someone failed to
consider the possibility of powering them *down*!). And,
PoE only recognizes a device when initially connected. How do
I trick it into supplying some idle current that a "sleeping"
device could use with which to signal its desire to be powered
up? E.g., if I put a VoIP *phone* on a PoE-capable network
drop, it would be nice to only power up the phone when someone
takes it offhook! I need a comm back-channel that runs in the
"absence" of power...
OK, so we'll have to bend *that* standard to coerce it to
provide the features we want.
Let's see... need to ensure each node has a reference timebase
to synchronize against. And, it needs to be very fine-grained.
NTP is out. But, PTP should work! But, PTP has capabilities in
it that really make little sense in this application. How could
the notion of the master (clock) node possibly change while the
system is operating? Is, suddenly, the network speaker in the
dining room going to be "elected" as the new master clock?
And, the media server will have to synchronize to *it*??
"Yeah, right!" (not)
OK, so we'll bend *that* standard to remove all that extra
unnecessary cruft...
So, you end up with the benefits of lots of "standards" and
the engineering thought that went into them -- without the
*costs* of all of the fluff they imply.
Sure, I can't buy a piece of third party kit and expect it
to talk DIRECTLY to my network speakers, individually. But,
it wouldn't have been able to speak to those speakers
regardless -- it would always have had to speak to whatever
was *driving* them. Whatever piece of *digital* kit that was
sitting in the middle. In my case, that's the media server!
*It* can bear the costs of any/all of that "interoperability"
freeing the "speakers" to concentrate on reproducing *sound*.
If the ear cushions on my headphones wear out, I don't expect
to be able to buy "standardized" ear cushions to replace them.
The headphones are standardized AT THE PHONE PLUG. Anything
*within* the headphone assembly is at the discretion of the
manufacturer -- they could opt to use left-handed screws,
yellow wires (instead of the more common BLACK) for the
"ground/return", an L-Pad for a "volume control", etc.
The same is true of my multimedia system: standards apply
at the *outside* interfaces, only!