Robin's Latest Site

rgrma.jpg
Robin's expertise is in A/V technology and related hardware/software research and development.

Currently Robin mainly works as contractor for Harrison, Manufacturer of the World's Finest Consoles. He develops the Digital Audio Workstation Ardour and produces a line of professional Audio Plugins.

roB.log

linux film browsing

Happy new 1984 2009! Neujahr what a great day to update the blog.

I spent the quiet days unwrapping the web-interface of the sodankyla film server; adding an audio-decoder and streaming capability. Quite a cool gift for media archivers. It's the last piece of infrastructure before work on the compositor and session management can begin. I've attached a few screenshots of the bare-bone interface: seeking to frames and streaming/exporting an excerpt.

The PHP front reports few new dokuwiki plugins; that require documentation and announce emails. I'm about to put it all together by concluding updates to the linuxaudio.org web-style over the next week.

  • tagentry - provides checkboxes to assign tags to a DokuWiki page.
  • tbt - renders time based text.
  • dokuladspa - visualize LADSPA plugins and demonstrate effect presets on a wiki page.
  • metabox is being rewriten and the tagmatrix plugin is having a comeback..

View slide-show

“Diane, when two events happen simutaneously, pertaining to the same object of inquiry, we must always pay strict attention!” (Agent Dale Cooper in Twin Peaks)

Qjackctl Dbus

A while ago I've written a patch to qjackctl which adds DBUS support to start and stop the JACK audio server. It's available and enabled by default in qjackctl from version 0.3.4.11 upwards.

The main use-case for it is to bring up the JACK server after a suspend/resume cycle on laptops. More information about this is available on a Wiki Page. This blog will just give minimal usage information to tease you :)

An example script to re-launch JACK with the last chosen preset looks like this:

/etc/pm/sleep.d/90qjackctl.sh

#!/bin/bash
case $1 in
  thaw|resume)
    (sleep 4 ; dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.start)&
    ;;
  *)
    ;;
esac
· 10.01.2010 22:39 · Robin Gareus

Roadtriping through the Middle East

Tres bonne année 2010. I'm just back from a three week vacation and my luggage is still somewhere in Bucharest..

Well, let me start from the beginning: My old friend Florian relocated from Amsterdam, NL to Tel Aviv, IL. He owns a pretty cool Mini-Cooper Convertible and the most obvious way to get it down there was - of course - just drive.. After a bit of preparation - ie. to get a Visa for Syria, some change some Euros into Baksheesh suitable currencies and organize a flight back - we hit the road on December 13 2009. Carolina in the back, Florian and me on the front-seats. 10 days, 11 countries, 5500km.

00_map.jpg Amsterdam → Munich → (Villach) → (Ljubljana) → (Zagreb) → Beograd → Sofia → Istanbul → (Akçakoca/Black Sea) → Göreme → حلب/Aleppo → دِمَشقُ‎/Damascus → (عمّان‎/Amman) → البتراء/Petra → (אֵילַת‎/Eilat/Red Sea) → רְחוֹבוֹת/Rehovot

Our deadline was x-mas, so in the beginning we blasted through with almost no stops - known territory - through snow-storms to Beograd where we stayed in a boat-hostel on the Danube river and had 15 cm of snow on the car next morning.. Passing into Bulgaria we left the European-winter behind and welcomed the sun with some Vodka in Sofia. We were on the road every day, apart from Istanbul and Damascus where we stayed two days each. Sounds fast, well it was, but so were we: We had enough time to discover major cities and landmarks on the way. Heck we even did a full day hike around Petra. Looking back, we could have taken 3 Months for the whole journey.

Having been in Istanbul before, the most stunning part of the journey started with the border-crossing into Syria. It took us 90mins to clear customs, which is very fast by Syrian standards, but apparently we got lucky and found the right people to talk to. Aleppo (Haleb) was a culture shock and well worth the stay. It's a messy, dirty and crowded place full of Arab atmosphere. It was by far the largest non-touristic city on our way, buzzing with life that most of the time made no sense to us: “Is that a bank or are they selling passports there?”. While it was sometimes hard to communicate, the people were really friendly and helpful. By the way, parking the car in the Sheraton basement for a night cost just the same as our hotel-room for 3 persons: 1000 Syrian Pound.

Next stop: Damascus. The oldest still inhabited city in the world. Our stay in the Damascus Hostel brought yet another cool adventure. It is located in a tower of the old-city wall and unifies ancient Syrian style, willful design and pleasant hospitality in an adventurous location. Our way in was to climb the old-city wall by rope-ladder. The owner - Raymond - and his team were not only forthcoming and funny but also really helpful, sharing local secrets and advice that got us started exploring Damascus in a way not described in any tour guide. After traveling the north of Syria on our own this suddenly felt like being with a family. The old-city is a huge Labyrinth shared by Christians, Muslims and a few Jews. Damascus is very diverse in all accounts: architecture, people and shops. Lot's to experience, hard to describe..

Unforgettable in Syria is the portrait of Bashar al-Assad, just because it's everywhere you can look at. I also have to say it's the region with the best food - only contested by the Israeli Hummus and Shakshouka..

ASCII ASCII

On we went, passed Amman, and drove to Petra. What we thought would be a few hours of visiting turned into a full day impressive hiking excursion. The site is breathtaking. We took more images there than on all other days combined.. still you best go there for yourself.

Exhausted from the day, we made it just in time to Aqaba before the border-control closes. You expect a international crossing to be signposted, but there's no sign, nothing, we needed to ask a Taxi to drive ahead of us to find Eilat. Crossing into Israel was yet another experience. The good thing: you know what to expect and that everything is pretty safe. The downside: “Please take everything out of the car.” We ask: “Well, we have accumulated quite a bit of trash and what about those engine-oil and gas canisters?” The reply was simple: “If we say everything, we mean everything.” . So they ended up x-raying our rubbish before we could throw it away.. At least it was good to clean out the car, and the customs officer was fascinated, too. He drove an extra round after the inspection because it was his first Mini.. After a late dinner on the red-sea we took off through the dessert - amazing star-gazing - and arrived in Rehovot (close to Tel Aviv) at two in the morning on x-mas day.

Image-Slideshow of the Road-trip

While Florian flew back to see his kid on x-mas just the day after we arrived, Carolina and me stayed 10 days in Tel Aviv, visiting friends, Yarriv's parents and grave. Toured to the dead-sea and Jerusalem; celebrated 2010 at a friend's place in Yafo; went swimming on new-years day.. in short we had a pretty good time: Israeli winter feels like a summer in Amsterdam (though Carolina says that BS. She says: “There is no summer in A'dam and the sea is much more clean and warm in Israel”).

After all the great experiences there had to go something wrong, right? Right. Due to snow chaos in Europe the flights were delayed.. My trip to Paris went pretty smooth after all, however my luggage got lost halfway. I still hope it will show up - it contains almost all my clothes, a hand-made Shisha from Syria and my digital camera - but it's already been 2 days without update on it. Carolina was even less lucky: After waiting 4 hours on board without starting she got a nice hotel-room in Tel Aviv, before going via Riga (yet another hotel) and Stockholm to Amsterdam.. Picture Gallery of excursions to the Dead-Sea and Jerusalem

reogg - Prepare audio-files for radio loops

Did you ever want to automate live audio streaming from the command-line? Well, I do. To cut it short the requirements here were:

  • command-line (terminal) only
  • generate one long stream - concatenate all songs
  • retain (id3) tags
  • stream Ogg/Vorbis to an icecast server

In principle one can simply concatenate OGG files and use oggfwd to send it to icecast. However most players (in particular mplayer) will produce garbled output when mixing OGG files with different bitrate/samplerate/channels in one stream. Furthermore some input files may not be OGG/Vorbis encoded in the first place.

To remedy the situation, here's a simple shell-script that converts all files in a given folder to a common format and copies over the id3 tags. You'll need to have oggenc, oggdec, mpg321, flac123 and id3tool installed.

You can download the script from the repository, but it's simple enough to be printed here:

view reogg.sh source

#!/bin/sh
# reogg.sh:
#  converts audio files in SRC folder to a common OGG format which allows to
#  concatenate the resulting files.

SRC=${1-"/tmp/input"}
DST={$2-"/tmp/media"}

mkdir -p ${DST}
IFS=$'\n'
for file in $(ls ${SRC}); do
  DEC=""
  echo "${file}" | grep -e "\.mp3$"  >/dev/null && DEC="mpg321 -q -w- "
  echo "${file}" | grep -e "\.ogg$"  >/dev/null && DEC="oggdec -Q -o- "
  echo "${file}" | grep -e "\.flac$" >/dev/null && DEC="flac123 -q -w- "

  test -z "${DEC}"         && continue;
  test -r "${SRC}/${file}" || continue;

  NFN=$(echo ${file} | sed 's/flac$/ogg/' | sed 's/mp3$/ogg/')

  echo "${file}" | grep -e "\.mp3$"  >/dev/null && \
  TAG=$(id3tool "${SRC}/${file}" \
        | sed 's/"/\\"/g' \
        | awk '/^Song Title/{printf "-t \"%s\" ",substr($0,13);}
               /^Artist/    {printf "-a \"%s\" ",substr($0,10);}
               /^Album/     {printf "-l \"%s\" ",substr($0,9);}
               /^Genre/     {printf "-G \"%s\" ",substr($0,9);}
               /^Track/     {printf "-N \"%s\" ",substr($0,9);}')

  echo "${file}" | grep -e "\.ogg$"  >/dev/null && \
  TAG=$(ogginfo "${SRC}/${file}" \
        | sed 's/"/\\"/g' \
        | awk 'BEGIN{IGNORECASE=1;}
               /Title=/      {printf "-t \"%s\" ",substr($0,8);}
               /Artist=/     {printf "-a \"%s\" ",substr($0,9);}
               /Album=/      {printf "-l \"%s\" ",substr($0,8);}
               /Genre=/      {printf "-G \"%s\" ",substr($0,8);}
               /Tracknumber=/{printf "-N \"%s\" ",substr($0,14);}')

  echo "#-- FILE: ${file}"
  CMD="$DEC \"${SRC}/${file}\""
  CMD+="| oggenc --resample 44100 -q 6 -o \"${DST}/${NFN}\" ${TAG} -"
  echo "${CMD}"
  eval $CMD || exit
  echo
done



To transmit the converted files repeatedly to an icecast server I run the following shell script in a GNU Screen:

view loop_ice.sh source

#!/bin/sh

FILES=$(ls media/*.ogg)

function loopcat {
  while true; do
    # TODO: optionally randomize $FILES here..
    cat $FILES
  done
}

while true; do
  loopcat \
  | oggfwd localhost 8000 password -p -g "Genre" -n "Title" -d "Description" mountpoint.ogg;
  echo "---- LOST CONNECTION ----"
  sleep 2
done



If you find these scripts useful or want to suggest some improvements.. drop me a word:

Thinkpad smapi and Realtime Linux

The tp_smapi driver provides for Battery charge/discharge control and improved stability for the HDAPS driver. However the latest version (as of writing 0.40) does not work with a real-time patched Linux-kernel.

The problem is that rt-linux uses a new mechanism for mutex-locking, which allows preemption and is incompatible with current Linux-mainline. In order to get the tp_smapi driver compile with rt-linux you need to replace the MUTEX locks. I came up with a simple patch that applies to tp_smapi 0.40 to just do that.

Tested with linux 2.6.31.6-rt19. More information on tp_smapi can be found at http://www.thinkwiki.org/wiki/Tp_smapi

Enjoy.

rt2460 and linux 2.6.31

As of linux 2.6.31 there is no mainline support for the Ralink rt2680 Wifi chipset. While there is an official driver provided by Ralinktech, it is incompatible with 2.6.31 due to the fact that post 2.6.29 the kernel's net_device_ops API has changed and 2.6.31 also removed CONFIG_COMPAT_NET_DEV_OPS backwards compatibility.

So I came up with a small patch to the Ralink driver.

The solution is to get the module source from http://www.ralinktech.com/support.php?s=2 (tested with version 2.1.2.0 from 05/21/2009) and apply the patch before compilation..

Ralinktech provides a README file how to do this, basically you'll need the kernel-source or kernel-headers, and then simply type make after unzipping and patching the module source.

· 18.09.2009 13:03 · Robin Gareus

FOMS 2009

foms3.jpg This years FOMS (Foundations of Open Media Software) Workshop took place in Hobart, Tasmania and has not only been fun but also a great success!

The focus was on video & film, development of multimedia and collaborative video editing software such a metavid, pad.ma and videobin as well as free video codecs: dirac and ogg.

foms2.jpg Quite a few of the short-term Community Goals have been tackled, not only resulting in interesting discussion on ffmpeg-devel, but also yielding funding for open media now to publicly document codecs and prior art as an anti-patent strategy. linuxfilm.org started to index FLOSS authoring tools as a first step to indicate gaps for a professional workflow and and and..

FOMS was a very busy two days, extending into a multimedia mini-conf at LCA and quite a few days of hacking thereafter, not to mention the T42 bar evening excursions.

· 01.02.2009 06:25

wicked days

I spent the last days on the Wicked film set; driving the Chevrolet Impala set-car in gorgeous weather with an amazing team in the Amsterdamse Bos. Thanks everyone! Before post-production (and sodankyla development) begins I'm just about to release oauth-utils, preparing for the dokuwiki oAuth plug-in. Oh, a film-website is also on my ToDo list, besides ..well you don't wanna know. Stay tuned for more pictures!

Related to the movie-shooting I've been busy porting libltcsmpte to AVR-C and built myself a LTC SMPTE timecode reader. What else?

Arjan, Eelko and me are going to host the touch-screen workshop based on Frontera's justpoint at the DIY festival in Zuerich, CH. I'm looking forward to that, so I've updated the wordpress at http://fronteraproject.net/, the content and a new release is due around end of November as is the sound-track for Wicked. I'm firing up compiling ardour. See Ya.

View slide-show

· 17.12.2008 19:22 · Robin Gareus
 
start.txt · Last modified: 13.11.2022 18:23 by rgareus