Hooray, audacity files are XML

Plumbing for the next web, by ian forrester

I’ve been looking for a way to create SMIL files with an editor for a while. Main reason being to speed up the creation of creating podcasts for the Perceptive Podcast client and make it easier for those who don’t understand markup/code.

One of the techniques we deployed during the Visual Perceptive Media project was to export final cut xml out of final cut/premiere pro then transform the lot with XSL/Python/etc to something else more usable. Its something I’ve had in mind for a long time, as you can see with this paper/presentation I wrote 12 years ago.

There was a point when Wmas, could create an editor for our director/writer (Julius) or allow him to use tools he was familiar with (non-linear editor like Finalcut/Premiere). Of course we choose the latter and converted the final cut xml (which isn’t really an official spec) into json using python. We were able to use markers and zones to great effect, indicating the interactive intentions of the director in a non-linear editor. This meant the intentions can exist and run completely through to the very end, rather than tacking it on at the end.

So with all that in mind, I started thinking if I could turn Audacity into a editor in a similar way? Is there a final cut xml format for audio? Thats when I came across this article which made perfect sense – Audacity files are just XML documents, sooo

Structure of a empty project

<?xml version=”1.0″ standalone=”no” ?>
<!DOCTYPE project PUBLIC “-//audacityproject-1.3.0//DTD//EN” “http://audacity.sourceforge.net/xml/audacityproject-1.3.0.dtd” >
<project xmlns=”http://audacity.sourceforge.net/xml/” projname=”blank-audacity_data” version=”1.3.0″ audacityversion=”2.2.1″ sel0=”0.0000000000″ sel1=”0.0000000000″ vpos=”0″ h=”0.0000000000″ zoom=”86.1328125000″ rate=”44100.0″ snapto=”off” selectionformat=”hh:mm:ss + milliseconds” frequencyformat=”Hz” bandwidthformat=”octaves”>

Just the title ignited my mind, the actual content of the blog is less interesting but I realised I may have a free & open-source editor which runs on every platform and with a bit of XSL magic could be the start of the editor I was looking for? The idea of it being a pipe, which leads on to more is something which fits in the bigger pipeline chain

I also found a GIT project to Parse audio track times from an audacity .aup projects. Its uses XSL to do the processing, so I may spend a bit of time playing with it to make something useful.

Just need to dust off my old XSL development skills… Which reminds me what happened to XPROC (XML pipeline language)?

What happened to attribution friendly Xpointer?

xpointer use for attribution

I was thinking while writing the last blog post. What happened to the Xpointer standard?

XPointer (the XML Pointer language) allows hyperlinks to point to specific parts (fragments) of XML documents.

I guess in the rush to move away from XHTML in favour of HTML5, the whole idea of compound documents got shuffled into a back alley and stabbed to death by the XHTML haters. So even if browsers supported Xpointer, it simply wouldn’t parse and therefore work.

Interestingly HTML 5.0 has embed but its not the same solution as Xpointer was solving. For example here’s wordpress creating a iframe which twitter (the 3rd party) can choose to put what they link in. I think originally it was oembed but got changed

I’m already slightly over the concern that one day my blog will be full of ads, spam, malware, tracking cookies and worst. The day that happens, I’ll be removing all iframes using XSL or a wordpress plugin.

Its a crying shame because attribution is the lifeblood of the creative industry and without it, were pretty much screwed. Its seems crazy that I can’t easily traceback my steps to how I found quotes, blog posts, etc. Right now this whole thing is broken, bookmarking isn’t the solution. It needs to be at the word level. Personal annotation style?

I have to favourite things on twitter, look through my play history and search my emails to find who actually recommended something to me. Maybe this can only be solved by the quantified self and lifestreams but I think there’s unexplored ways which xpointer was leaning towards.

A mindmapping standard?

I am having a hard time finding mindmapping apps which support a number of thing.

My idea was to install Freemind/Freeplane and then find a way to edit the mindmaps from Freemind on my Samsung Tab 7+ but can i find anything which supports it? Nope! So I considered the fact freemind might not be the ideal format and maybe I could import and export into freemind for editing on my Ubuntu laptop.

There seems to be no solid universal mindmap format which most mindmapping apps can read and write. It also seems export and import is very hit and miss.

The problem seems to be each one wants to innovate on top of a moving base in a different way and lock their users into using that application. A couple have apps across different platforms. Of course those platforms don’t include Linux making them almost pointless for myself.

What do people use and how do they get around the problem of converting back and forth? It seems crazy that this stuff isn’t described in XML or RDF with SVG for strokes?

Someone tell me something which works on Ubuntu and Android? Please!


Microblogging dataportability at last?

Twitter data dump

Finally got the ability to download my tweets… Over 6 years of tweets in 6.8 meg of files.

It comes in a zip file not a tar file which is interesting because Facebook uses Tars for its data dumps. Structures interesting because its less of a dump and more a formal backup of your data complete with HTML file bring it all together. Theres a README.txt file which reads…

# How to use your Twitter archive data
The simplest way to use your Twitter archive data is through the archive browser interface provided in this file. Just double-click `index.html` from the root folder and you can browse your entire history of Tweets from inside your browser.

In the `data` folder, your Twitter archive is present in two formats: JSON and CSV exports by month and year.

  • CSV is a generic format that can be imported into many data tools, spreadsheet applications, or consumed simply using a programming language.
  • ## JSON for Developers
  • The JSON export contains a full representation of your Tweets as returned by v1.1 of the Twitter API. See https://dev.twitter.com/docs/api/1.1 for more information.
  • The JSON export is also used to power the archive browser interface (index.html).
  • To consume the export in a generic JSON parser in any language, strip the first and last lines of each file.

To provide feedback, ask questions, or share ideas with other Twitter developers, join the discussion forums on https://dev.twitter.com.

Most of the data is JSON which bugs me a little only because I would personally have to transform it all to XML but alas I’m sure everyone loves it. The CSV spreadsheets are odd and could do with being XML instead of CSV but once again sure its useful to someone out there. The nice thing is there is tons of meta around each microblog/tweet including the geo-location, time and device/client. Even the URLs have some interesting things around it, because I was wondering how they were going to deal with shorten urls, retweets and mentions…

 “urls” : [ {
“indices” : [ 69, 89 ],
“url” : “http://t.co/GSzy55vc”,
“expanded_url” : “http://epicwerewolf.eventbrite.com/”,
“display_url” : “epicwerewolf.eventbrite.com”
} ]

Doesn’t always work… specially when using urls shortener which don’t keep the url after a certain time period. Interesting internally twitter always uses its own t.co for everything…

Right now I’m just interested in the period around my brush with death… Real shame theres no references to mentions you’ve had, as I would have loved to have seen some of those. Guess Twitter were not going to delve into that can of worms…

I want to know why theres no status.net inporter?

Cnet have a overview of how and what to do with the archive. Thanks Matt

Plex media server ups the media server game

plex media server screenshot

Plex has always been on my horizon as its part of the future change in home entertainment, however Technicalfault shared a link to a blog post from the Plex media server team.

In this aint your grandfathers DLNA (Digital Living Network Alliance), the Plex media server team (PMS) outline why the inclusion of Plutinosoft’s fabulous DLNA SDK, makes PMS the best DLNA server.

The result (besides a lingering scent of cologne and flowers) is the world’s best DLNA server. No, really. I’m not prone to hyperbole. This DLNA server can do things that no other DLNA server on the planet can do. And the coolest part is that with this new release, all the content served up by your Plex Media Server is now accessible by an insane amount of new devices, including ones that may already be in your homes (your LG washing machine doesn’t have DLNA? Send it back!)

So somewhere between all the hype and banging of chests, there might be something interesting…

I’ve never bought into the Plex way of doing things mainly because XBMC works for me. Plex although based on XBMC favors a ecosystem which seems to be about streaming from the server to their client. But reading the news about the PMS beta, I thought maybe I could use it on my server instead of using UPnP servers like Ushare and Mediatomb. I had just build my new server and had not yet installed a UPnP server yet. So after twelve47 sent me a link to the ubuntu beta, I installed it and tried it out.

My first thoughts is it won’t change much of the way I do things at home. I haven’t created a Plex account and frankly the ability to do transcoding is pretty much lost on my setup. I tend to watch 99% of things on my XBMC box in the living room. I do have another XBMC box in my bedroom room but I tend not to use it much (although this changed recently when I replaced my desktop machine with the XBMC box). So now I listen to my podcasts in the morning using XBMC…

XBMC does actually have a DLNA server built in, so I was interested to see which one is most standard complaint or works with devices around the flat?

UPnP and DLNA from a early time years ago has always captured the imagination. When I had my Nokia N80 work phone, I tried to get DLNA working, and for the most part it didn’t quite work. You could see the devices, but for the most part the services wouldn’t be compatible. When Microsoft added DLNA to the Xbox 360, things started looking up. Interestingly the Playstation3 has always had it.

This is also why I find the whole Apple Airplay such a joke because as usual, apple make it simpler (as they do own the ecosystem and the products) then claim it as there own (or at least there fanboys do). Funny enough XBMC now even supports AirPlay.

You could see the XBMC UPnP server but not actually stream anything, or even browse. So I was interested to see if this would be be any different with PMS?

For music… I can tell you its better than the XBMC UPnP server, as I was able to stream music without too much of a problem. This has never quite worked with XBMC UPnP server but PMS handled everything just fine.

However for Video what surprised me was the fact XBMC UPnP server and Plex Media Server could both stream my whole movie and TV collection without too much hassle. Obviously work had been done on XBMC UPnP since I last looked at it. I guess Plex does have the upper hand on the Xbox 360 because of the transcoding, but as default it down samples my glorious multichannel audio down to stereo, which seriously sucks for me. Couldn’t see at a glance where to turn on AC3/DTS comparability in Plex. Pictures is another area which XBMC UPnP server seems to fall short, while Plex was able to handle my complete collection without breaking a sweat.

So with the Xbox 360 sorted… I tried the other device which I’ve been playing with, the Wifi UPnP enabled Picture frame I picked up very cheap a while ago. Unfortunately although it did see the Plex server, it couldn’t do anything with it…

Although it didn’t work, the interesting part of the Plex Media Server is the ability to get down and nasty with DLNA and a XML config.

DLNA is a rather broad and flexible standard, and different devices interpret the standard in different ways. Some by design, some due to device bugs accident. This makes it impossible for a media server that supports DLNA to provide a one-size-fits-all implementation of the standard. Instead, the server must adapt to different clients by recognizing them and changing its behavior accordingly. A client profile is the basic unit of information that Plex Media Server uses for this purpose.

And this is where it gets very interesting… I’ll attempt to reverse engineer my picture frame’s DLNA support so I can share pictures with it and hopefully be able push forward with the conversation I had with Jas about extending my digital artifacts out into the real world.

Anything I buy now pretty much must have support for DLNA and the ability to hack Plex to get it working with the different devices is a very good thing.

Android has some great DLNA clients and I’m already thinking about hooking up my Archos Tablet (which I’m using as a desktop alarm clock, thanks to the kick stand and my Samsung Tablet 7+) to other things around the flat. Even thinking once I get my HTC 1x (yes I ordered one) instead of selling my HTC desire, maybe I could hook it up into different parts of my flat? This is why I find the Google Open Accessory API (ADK) really interesting and a certain nod to the future…

For now I’m keeping Plex Media Server on the server, and it may find more use in the future but generally right now I’m using Samba and NFS to stream media around the flat. My hope is XBMC now on version 11 (eden) will spend a little time on their UPnP server, as it was the best for a long time.