On Nov 6, 2018, at 14:06, Richard Elen <re...@brideswell.com> wrote:
> IIRC, you can store a full complement of metadata in a WAV file and there is 
> a standard for it, it's just not commonly done.
> 
There are several public standards for such, as well as a whole slew of _ad 
hoc_ private ones, invented by vendors for use in specific product lines. 


> I must admit that the one thing that has concerned me slightly is the fact 
> that the ingested files are completely unidentifiable - the idea of writing 
> out and maintaining the metadata in the ingested files in case of a need for 
> database reconstruction sounds like a neat idea on the face of it. 
> 
There are some options in Rivendell for aiding the recovery of a damaged audio 
store. See for example the --relink-audio switch in rddbcheck(8).


> On Mon, 5 Nov 2018, Fred Gleason wrote: 
> 
>> ...This was one of the fundamental design principles laid down at 
>> the very inception of the project: the audio store contains *only* audio; 
>> all other metadata goes in the SQL database.
> 
> What was the rationale behind this decision, incidentally? Given the amount 
> of thought that has gone into the project as a whole, I imagine there is a 
> very good reason for it.

At the time (ca. 2002) I was very familiar with a radio automation program 
(name withheld here to protect the guilty) that used this very technique of 
putting the metadata into the audio files. They had an auxiliary program called 
the ‘SoundHound’ (derisively referred to as the ‘SoundPig’ by one of my 
co-workers) that would continually scan the set of audio files on the system, 
building and updating a searchable database of the metadata. For you see, a 
broadcast automation system *needs* a database; it’s the only way you have of 
finding things quickly enough to be useful in a near-realtime system. The 
SoundHound would frequently get behind-hand in keeping the database in sync 
with the metadata that was in the audio files, resulting in all sorts of races, 
crashes and other system mayhem. Also, what’s often forgotten is that metadata 
in a broadcast automation system is an inherently *dynamic* thing; constantly 
being updated and changed. Since the audio files were also the metadata store, 
that meant that they had to rewrite the audio file every time a piece of 
metadata changed: a major non-orthogonality in the system.

Thus, in Rivendell, we make a strong separation: the audio store holds audio 
and the database holds metadata. Audio in the audio store is *immutable*; once 
it’s written, it can never be changed short of being *deleted*. Information in 
the database OTOH can be changed at any time. This separation immediately takes 
an entire class of hard-to-find-and-fix bugs involving the synchronization of 
two non-orthogonal processes off the table while greatly simplifying the 
conceptual model of how the overall system works: a major win in each case. It 
also allows us to use an off-the-shelf RDBMS (MySQL/MariaDB) that has had 
hundreds of thousands of man-hours invested in its design and debugging instead 
of having to whomp up one of our own (a major savings of resources). While this 
does create two sets of data that each require backup, there are 
well-understood techniques in the IT industry for managing such situations.

Cheers!


|----------------------------------------------------------------------|
| Frederick F. Gleason, Jr. |              Chief Developer             |
|                           |              Paravel Systems             |
|----------------------------------------------------------------------|
|      It's always good to take an orthogonal view of things.  It      |
|      develops ideas.                                                 |
|                                         -- Ken Thompson              |
|----------------------------------------------------------------------|
_______________________________________________
Rivendell-dev mailing list
Rivendell-dev@lists.rivendellaudio.org
http://caspian.paravelsystems.com/mailman/listinfo/rivendell-dev

Reply via email to