Category Archives: Software

Interesting tools

MIDI recording using an Android device

midicontrolkeyboard

Raspberry Pi 3

I used a Raspberry Pi 3 on top of one of my musical instruments to send program changes, record and playback MIDI as well as recording audio. A cardboard box did host the computer, its touch screen, the power supply, and a lot of cables went out of it (power chord, two MIDI chords, two audio chords, and sometimes a mouse and kayboard connected via USB).

Recording MIDI via Bluetooth LE on Android 6

I wanted to get rid of most of the hardware required by using an Android 6 device with its Bluetooth LE MIDI capabilities. I was looking for a basic MIDI recording application. Rather surprisingly, there was none that did fulfill my essential needs (simply record any MIDI message incoming via Bluetooth).

Recording MIDI via USB using Audio Evolution Mobile Studio

So I looked for apps that at least can record MIDI via USB. It turned out not to be an easy task. I finally selected Audio Evolution Mobile Studio. Of all the apps I inspected, it was the one that is closest to a traditional digital audio workstation.

It doesn’t use the native Android 6 MIDI subsystem. As a consequence, it can’t cope with MIDI over Bluetooth. So I’m still stuck with an USB OTG cable, a power supply for it, and a MIDI to USB cable. Additionally, USB MIDI support is not included when purchasing the app. A further “In-App” purchase is required to unlock this feature. Unfortunately it didn’t accept my preferred USB to MIDI device, the excellent Edirol UM-1S. It did accept the cheap device I bought I couple of months ago, though. This leads to a couple of issues. Firstly, the instrument in question sends a couple of program changes before recording. They appearently all arrive at the handset (since they appear in the MIDI file exported from Audio Evolution Mobile Studio). However some of them get lost each time I playback the MIDI file. Furthermore, the instrument sends a MIDI system exclusive command to reset all program changes before the actual program changes. This command does either not arrive at Audio Evolution Mobile Studio, or it denies recording them.

Audio Evolution Mobile Studio supports the traditional three track types: Audio, virtual instrument, pure MIDI. When pressing the record button, Audio Evolution Mobile Studio automatically creates a new audio track in case no other track is present or switched to recording mode. This behaviour can be switched off via the preferences.

When it comes to MIDI recording, the app shows some neat features that perfectly fulfill my needs. I created four MIDI tracks to record the Kisselbach Gloria Klassik 240. One for the Main organ (MIDI channel 1), one for the swell (MIDI channel 2), one for the pedal board (MIDI channel 3), and one for the program changes plus the volume controller (MIDI channel 12). Audio Evolution Mobile Studio allows to enable recording for multiple tracks at once, plus it allows to choose for each track which MIDI channel should be recorded by it. I was pretty impressed to detect this feature set, since I assume it is a very exotic request that someone wants to record multiple MIDI channels at once.

I already recorded some piece and exported it to MIDI. Obviously it didn’t write the track names to the MIDI file. But otherwise, everything seemed to work fine.

Verdict

Appearently Audio Evolution Mobile Studio does the one thing I need quite well. However, I did not get rid of the cables since it does not support the native MIDI subsystem as instruduced in Android 6. Further, it seems to ignore SysEx data and ignores track names when exporting MIDI. The latter two mean that I have to circumvent those issues by manually editing the resulting MIDI files. It’s annoying, but not really an issue.

Taking into account the many features the app provides, the price tag seems to be OK. For my needs, it’s a bit too expensive (not to mention the extra fee for the MIDI recording feature). I decided to buy it anyway due to the lack of alternatives.

MIDI recording using an Android 6 device

SAMSUNG CSC

Surprisingly I didn’t find any app to record the pieces I play via MIDI (not to mention playback). Though I found a fistful of suitable apps, they still show some drawbacks. Most do not provide native Android 6 API support so I’m stuck to USB (heck, I wanted to get rid of the cables). And even via USB, the apps I tried (like the excellent Samsung Soundcamp) all force the incoming MIDI events to one channel. Unfortunately, my instrument sends events on 4 channels (2 keybeds, one pedalboard, channel 12 for controller data), so the recordings become rather useless.

And since I wanted to actually play the instrument rather than writing code, I do resist the temptation to write an app by myself. At least for the moment :) .

MIDI in Android 6

MidiFemaleConnector-300px

Android Marshmallow (v6, API level 23) features a more advanced MIDI API. Phil Burk has written a suite of example apps. Two of them, MidiScope and MidiSynth, are “official Google examples”. Martini Moe also made use of the new API and wrote a basic remote control für digital audio workstations.

I played a bit with the tools and code provided, since the new API also adds Bluetooth low energy as a supported MIDI transport medium. This could save me some cables plus the Raspberry Pi I currently use to control one of my instruments. My current verdict reads like “It’s great, though not straightforward yet”.

USB

In order to send or receive MIDI with a handset or tablet, an OTG adapter is required. I tried to connect three simple USB to MIDI interface cables to the phone, but only one worked. At the target device, the commands arrived corrupted. I assume it has to do with the current the phone is capable to offer – a handset usually provides much less than the usual 500mA.

Bluetooth LE

The Quicco Sound mi.1 is a phatastic device. It just gets plugged into the MIDI ports of any instrument, operates bus powered and translates the signal to Bluetooth LE. It worked absolutely reliably during my first tests.

The software part is much more tricky. An application that wants to access bluetooth MIDI devices must gain location permissions. From the docs:

This LOCATION permission is required because it may be possible to guess the location of an Android device by seeing which BTLE devices are nearby.

The application must then scan for available devices and offer a selection to the user. One more quote:

Once the MIDI/BTLE device has been opened by one app then it will also become available to other apps […]

MidiBtlePairing just does this job. Here’s a hint from the docs:

Exit the app by pressing the Home button, not the Back button.

Exclusive device access

In the abovementioned docs, it is recommended to exit any MIDI application by pressing the Back button. Otherwise the MIDI device is still occupied by the application (at least in case it was written as intended) and not available to other devices:

Exit the application by pressing the Back button.

Actually I tested a couple of applications which did not release the device properly. Add to that the occasional loss of bluetooth connectivity every now and then, it isn’t suprising that the user experience is not that straightforward (First run MidiBtlePairing to make the device accessible, then run an app, then run another app and notice the bluetooth device isn’t availble, retry, reboot, etc.).

Further issues

According to MidiDeviceMonitor.java, Android 6 features a nasty bug which will be fixed in Android 7:

The MidiManager.unregisterDeviceCallback() method was not working. So if an app was rotated, and the Activity destroyed and recreated, the DeviceCallbacks would accumulate in the MidiServer. This would result in multiple callbacks whenever a device was added. This class allow an app to register and unregister multiple times using a local list of callbacks. It registers a single callback, which stays registered until the app is dead.

Conclusion

MIDI over Bluetooth LE works in Android 6 and IMO is a really great feature. Users should be willing to figure out how to use the tools, though. For my today’s tests, I had to run the MidiBtlePairing tool, the MIDI application and the task manager several times before I got a usable connection. It then worked reliably, thought.

Ein günstiges USB-MIDI-Interface kann Aufwand nach sich ziehen

USB-MIDI-Cable-3

Bisher betrieb ich an einem Raspberry Pi eine externe Edirol UA-25 USB-Soundkarte. Die ist wirklich topp und zuverlässig, braucht aber auch eine Menge Platz. Da ich momentan nur MIDI am Raspberry nutze und den Platzbedarf reduzieren wollte, erwarb ich ein günstiges USB-MIDI-Kabel für rund 12 €. Wie befürchtet funktionierte das nicht sonderlich gut – die Daten werden teils verfälscht übertragen. So führt beispielsweise das mehrfache Absenden einer Reihe der immer gleichen Programmwechselbefehle am Zielgerät zu sich ändernden Programmaufrufen.

Da ich das Kabel nur genau für diesen einen Zweck verwende und es auf ein paar Millisekunden nicht ankommt, lasse ich meine Software jetzt nach jedem Programmwechselbefehl eine kurze Pause einlegen. Das war relativ zügig erledigt und führte zum Erfolg. Ich kann mir aber nicht vorstellen, dass das Kabel viel Freude bereitet, wenn jemand damit MIDI-Daten aus einem Sequencer an ein oder mehrere Klangerzeuger schicken möchte.

Page turns by blink detection

Ricardo-Lente-Objetiva-lens-objective

Recently I got interested in displaying sheet music electronically. I finally chose ComicsReader after adjusting its screen sensitivity a bit, though it requires to convert PDF scores to raster images in a cbz container.

I still dream of some touch free control for turning pages while playing the piano or organ. Voice control could have been an option, but Android currently does not allow application developers to use the built-in speech recognition continuously (but of cource hacks exist to circumvent the limitation).

But Android features face detection via Mobile Vision (though it was unavailable just at the time I tried using it), and most tablets feature a front facing camera. Google provides a tutorial how to use a pipeline to track barcodes and faces. Sample applications are available via Github. nesterov-n also provides a “Smiley” sample application.

The multiprocessor creates a Tracker instance for each face identity detected. Methods like onNewItem(), onUpdate() and onMissing() can be used to retrieve the face objects. The objects contain facial landmarks. Values between 0 and 1 provide information about the probability of smiling or wether the eyes are open. I wanted to check whether one (xor) eye was closed for a certain amount of time and to use this information to turn pages. Thus I used a fifo buffer to collect a certain amount of samples.

I got something to work in a spike, but it still is too unreliable. On the one hand closing one eye for a couple of seconds sometimes does not exceed the thresholds I was using. On the other hand false positives appeared every now and then, accidentally turning pages while playing though the head didn’t move at all.

It’s worth being investigated further, though. I’m currently playing a piece of six pages, and hands-free page turns by eye blinks were more than welcome during the test runs.

Reading sheet music electronically

Cantio belgica

About nine months ago, I restarted playing pipe organs. I focussed on playing, though not exclusively, french composers of the baroque era. The International music score library project hosts tons of free scores in PDF and even MIDI formats. I immediately tried to use electronics to display them, but switched to printing on paper sheets soon since I didn’t find a convincing solution.

Since my repertoire is growing, the desire for a digital solution still exists. Many musicians nowadays use software installed on a tablet to display scores. That’s great for single page scores (like lead sheets). But as soon one page is not sufficient (or the tablet provides a small display), scrolling becomes a mandatory feature. To do so, singers usually can tap on the touch screen to turn pages. Trumpet players can use a wireless bluetooth pedal (like the PageFlip Cicada or the AirTurn). Piano players in a combo still have the option to just drop a couple of notes of the left hand while turning pages.

Unfortunately organ players need both hands and feet to play the instrument, and dropping notes often is not an option. Physically I can at least place two or three sheets of paper (letter respectively A4 size) beneath one another. For longer pieces, it often still is possible to arrange the sheets in a way that they can be turned at a suitable occasion. Further, it is quite easy to add annotations using all kind of stationery. The disadvantage is that it becomes unconvenient to manage the scores as soon as the collection grows, and carrying the stuff around also becomes more and more inconvenient.

The advantage of tablets include the small size, the capability of arranging the required scores in setlists before a gig, sharing scores with annotations within a combo, and at least theoretically making page turns much easier than with physical sheets.

The disadvantage of tablets include the danger of broken displays in case of a fall, the danger of a drained battery and the limitation of the screen size (the typical 10 inches is even too less for displaying one single traditional A4 page).

The only application I know of that provided touch free page turns is piaScore for iOS (demonstration video). Unfortunately the feature was dropped due to technical issues. None of the other candidates (like Zubersoft’s popular MobileSheets or Orpheus for Android devices) has integrated such gestures. Since the tablets usually have built-in mikes, a further workaround could be speech recognition, but I didn’t find any application that included such a feature for page turns. I additionally checked plain PDF readers but to no avail.

Verdict? Using a tablet for displaying scores is an option. It works as long as the score does not exceed the size of one page, or in case the notes are set in a manner that the player can free one of the hands or feet at the end of a page. Even that those conditions are met, a physical backup of the notes is still useful just in case the battery unexpectedly drained or, even worse, the tablet got damaged due to an accident.

I’ll probably start using a tablet for pieces that meet the aforementioned conditions. Not because it really is advantageous, but to stay connected to the further technical development.

Raspberry Pi 3 networking issues

I run a Raspberry for some special purpose application, mainly to record and playback audio and MIDI and remotely controlling some musical instrument. Former hardware revisions provided too little horse power for the task, so the Pi 3 was very tempting. Actually, QTractor now runs without complaining about insufficient CPU frequency, so it obviously was the right decision :) .

The Pi 3 provides two cool new features, both onboard Bluetooth and Wifi connectivity. Thus I bought a Logitech K400 Wireless Touch keyboard (the former model, not the current one) which was just plug and play.

However, I ran into trouble concerning network connectivity. HTTP is very slow. I got none of the NTP applications to work, which is rather painful since the Raspberry provides no battery to keep the time between reboots. ssh is barely usable, since establishing a connection is like some lottery and typing characters via ssh has some severe lagging issues (“5 secs per character!”).

There are a couple of web pages which show that I’m not the only one. For the moment, I gave up in the hope some OS update will improve the situation. Here’s what I tried so far.

Update the operating system

After the issues appeared, I updated the operating system.


sudo apt-get update
sudo apt-get upgrade

To no avail.

Switching to Edimax

The former models I ran had no problems connecting to the network using an Edimax EW-7811UN Wireless USB Adapter. Thus I disabled the internal WIFI adapter by editing


/etc/modprobe.d/raspi-blacklist.conf

# Disable onboard WIFI
blacklist brcmfmac
blacklist brcmutil
# Disable onboard Bluetooth, if desired
# blacklist btbcm
# blacklist hci_uart

To no avail.

Disable IPv6

Assuming my rather dated router has problems with the default IPv6 connectivity in Debian Jessie, I tried to completely switch to IPv4:


/etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

To no avail.

Disable power saving for the WIFI adapter

Some people reported that disabling the power saving for the WIFI adapter did solve the issues for them. However, a temporary


sudo iwconfig wlan0 power off

does not work for the adapter. The iw command even does not recognize it. iwlist wlan0 power reports that power saving is off already: wlan0 Current mode:off. Anyway I tried to add a line to the interface in /etc/network/interfaces:


iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
wireless-power off

There are several other pages with hints concerning this issue. I dropped ntp and openntp in favour of ntpdate according to aufschnur.de. Meanwhile, after performing several attempts, I got the time sync working manually using ntpdate -s 0.de.pool.ntp.org – once. After a reboot, the internet connectivity is as unstable as before, and the aforementioned command does exactly nothing. I assume this is due to some built-in timeout.

Power Supply

kyuzumaki reports that the power supply may have an impact. I once also had issues with a touch screen not working corrently which I actually solved by attaching a more powerful supply. However, that current issue was not solved by using the official RPI wall wart.

Conclusion

The issue may have to do with changes between Debian Wheezy and Jessie. I did not try to return to the former one. For the moment I’m fine with waiting, since the main issue for my application is that the date is always wrong. I can do all other things I intend to do with the current installation.

A Rasberry Pi and the god of winds…

Despite the low CPU footprint of Aeolus, it turned out that the Raspberry Pi was too weak to run it with many stops “pulled”. Therefore I tried the more recent Raspberry Pi 2 Model B in conjunction with an Edirol UA-25 UB breakout audio box. The first tests look very promising so far.

Here are some configuration hints. The list is neither complete nor free of bugs, since I wrote it after the work was done.

For connectivity, I use the EDIMAX EW-7811UN Wireless USB Adapter. A web search easily unveils the required configuration steps, like this one.

As soon the Raspi is diconnected from its power supply, it will forget about dates and times. I use ntpdate instead of ntp to set this information as soon the OS boots. I used some instruction from this page. It’s in german language, though – je regrette.

Here’s another german page describing how to increase the power of the on-board USB ports. It didn’t help on my machine to cause the low power indicator square at the right top of the screen to disappear. I recommend to use a powered USB hub anyway. Unfortunately some hubs are rather weak in processing certain protocols.

Here’s some stuff I installed:

sudo apt-get install aeolus qjackctl kmidimon vlc-plugin-jack wpagui scrot okular

I use those settings in qjackctl to get stable jack perfomance. The latency is acceptable, though not great. I hope to improve it later.

Persuading VLC to use jack is a bit confusing on german language machines. Choose

Einstellungen, Audio, "Hardware Audioausgabe" (sic!)

To make applications to start automatically after login to LXDE, edit

~/.config/LXDE-pi/autostart

and enter the name of the application prefixed by an »@«:

@qjackctl

Aeolus will compute the “waves” for each particular stop during startup, which can be rather annoying. To avoid that, the waves can be saved to disk via the »Save« button. This, however, requires that Aeolus can write to a subdicrectory named »waves« in the stop directory. This is not the case in the stock installation. Thus I copied the stops to the home directory:


mkdir ~/.aeolus
cp -rf /usr/share/aeolus/stops/ ~/.aeolus

I did some further tweaks to the Aeolus installation, though quick and dirty. Last but not least I wrote a dirty script which is run by qjackctl after jackd is up and running. It automatically starts Aeolus with some parameters, and sets up the required audio and MIDI connections.

I’m running a owncloud server in the LAN which I use to transfer files between my machines. For the Raspi the main purpose is to share music scores and ogg respectively mp3 files of organ music. There’s an owncloud-client in the repository, but it’s rather barbed and not compatible with recent versions of the Owncloud server. Some tutorial to compile it manually didn’t work straightforward, so I stopped those efforts. Currently I’m mounting the file share via webdav. However, the sync is fast as snails, so I don’t recommend it. I hope to get the owncloud client compiled during the next weeks. Until then, a USB thumb drive will do…

After testing several PDF readers to display music scores, I got stuck with Okular. Left button clicks will switch to the next, RMB clicks to the previous page. The left button click can be done by touching the screen (great), but I wished there was some more intelligence, so as touching left and top would go to the previous, and right and buttom to the next page.

That’s it so far from my installation log file. It’s not a tutorial, and a lot of detail is missing. It’s just a reminder for the next time I’ll set one up.

First Jolla steps

Meanwhile I got a bit more used to Jolla’s user interface, and I’m quite curious how well it will serve me.

Of course I immediately started to configure the handset to my uses. Subsequently I shed some light on things I found surprising.

  • Operating System updates are available. The installation requires creating a Jolla account, though.
  • Creating the Jolla account requires passing rather detailed personal information, like a user name, real name, an e-mail address, a country, and even a birthday.
  • Several attempts to download apps or OS updates ended in endlessly looping progress indicators. A Reboot fixed this, though only once. Fortunately there’s a detailed tutorial how to make good use of the recovery mode
  • Connecting the device via USB requires the MTP protocol, which Mac OS X does not support. Copying files to the phone will thus require to insert a microSD card prefilled with the desired data. Hackers alternatively may want to use scp.
  • I managed at least to configure one (of four) owncloud calendars to appear in the phone’s calendar application. All dates appear shifted by an hour, though. Appearently time zones are ignored. The stock calendar application of Android allows to subscribe to multiple CalDAV calendars, and time zones never have been an issue.
  • I didn’t manage to configure CardDAV contacts via owncloud, and according to this (german language) posting, it doesn’t seem to be a problem at my end.
  • An attempt to import contacts from a VCF file caused the people application to be busy for quite some while (actually, unlike this posting, it’s not finished yet). I quit it and tried anew, which finally resulted in imported contacts within seconds. Unfortunately it didn’t import the contacts avatars, though this is a minor issue for my needs.
  • The owncloud news reader (I’m happy it exists!) requires online connectivity to mark messages as read. A notification that the synchronisation failed appears each message the user reads. The Android app is capable of buffering this information offline until the next sync.
  • A file manager is not available, unless the user activates the developer mode and uses the terminal application to activate the file manager. Unfortunately, the file manager shows a blank screen only. I uninstalled it via the shell, and installed the public domain File Browser via the Jolla Store.
  • A chess game is missing, ignoring the fact that GNU chess is available as a command line interface (aka CLI) application.
  • A media player is availabe via the Jolla Store. I was rather surprised that it immediately did show the mp3 as well as the ogg files of the microSD. It even showed album covers for ogg files, which are just jpg images placed in the folders containing the album’s ogg files. I’m happy :) .
  • The final pulse to go for a Jolla Phone was that someone ported MoNav for Sailfish and made it available via openrepos.net. I copied some map data to the microSD. To make it available in MoNav, I enabled the developer mode to get access to the terminal application. Then I used vi ~/.config/MoNavClient.conf. I added a section named [MapPackages] and the key-value-pair path=/media/sdcard/6632-3036/MoNavMaps/. I hope the 6632-3036 is some static UUID for my sdcard and does not change during the next reboot.
  • I’m missing a chess game, ignoring the fact that GNU chess is available as a command line interface (aka CLI) application :) .

MoNav for Jolla respectively Sailfish OS

I just was notified that MoNav, a routing application for the Nokia N900 I helped to develop, is available for the Jolla phone respectively the Sailfish OS.

An installer is avilable via Openrepos.net. The source is hosted at Github. Some map material is available here.

I’m glad the code I wrote about three years ago is still of use for other people.

BTW: Some OwnCloud-Clients are available as well…

Automobiltechnik, die mich nicht begeistert

Kürzlich hatte ich für eine Fahrstrecke von rund 700 km über Stadtmobil einen VW Golf gebucht. Wenn man kein eigenes Fahrzeug unterhält, an das man sich gewöhnen kann, sondern immer wieder unterschiedliche Fahrzeuge nutzt, fällt es besonders auf, wenn man nicht intuitiv und spontan zurechtkommt.

Telefon

Mein Telefon wollte ich mitnichten an die Bordelektronik koppeln – weder wollte ich telefonieren, noch wollte ich Musik hören. Unangenehmerweise hatte der Vorbucher selbiges genutzt. Das Fahrzeug suchte daher verzweifelt erst nach diversen Geräten von Vorbuchern (die ich persönlich nicht kenne) und anschließend nach einer Reihe von Standardgeräten. Die Anzeige zwischen Drehzahl- und Geschwindigkeitsmessgeräten liegt dummerweise ziemlich zentral, weshalb die ständigen Wechsel der Meldungen extrem vom Verkehrsgeschehen ablenken.

Somit ist man versucht, die Meldung loszuwerden. Das ist mir teilweise gelungen. Im Armaturenbrett findet sich eine große Schalkfläche, die mit “Phone” beschriftet ist. Nach einigem Herumgeklickere ist es mir zwar nicht gelungen, den Wagen davon zu überzeugen, sich überhaupt nicht für irgendwelche Telefone zu interessieren, aber immerhin habe ich es durch Abschalten der Bluetooth-Konnektivität geschafft, dass die Anzeige einen statischen statt einen dynamisch wechselnden Text anzeigt. Das ist doch schomma was.

Ich habe allerdings keine Ahnung, ob diese Anzeige jetzt die nächsten fünfzehn Lebensjahre des Fahrzeuges verbleiben wird. 15 Jahre, in denen sich der Bluetooth-Standard sicher ändern und diese Einrichtung voraussichtlich unbrauchbar machen wird.

Geschwindigkeitsregelanlage

Ich bin ein großer Freund des Tempomats. Er hilft Treibstoff und Knöllchen sparen. Da Tachometer qua gesetzlicher Anforderung eher vor- denn nachgehen, stellt man natürlich gerne etwas mehr ein als das Hinweisschild anzeigt. Statt 80 km/h also 85 und statt 100 km/h 108. Wobei diese Maßnahme der Drängelei der nachfolgenden Verkehrsteilnehmer keinen Abbruch tut, aber das nur am Rande.

In einem Golf kann die Einheit schonmal aus einigen nützlichen Steuerelementen am Lenkrad bestehen, die zusätzlichen Geber wie Gas- und Kupplungspedal nicht mitgerechnet. Im Lenkrad finden sich 7 (in Worten: sieben) Bedienelemente. Wobei die Plus- und Minustasten doppelt belegt sind und zudem unterschiedlich reagieren. Macht also schon 9. Die Lernkurve ist somit recht steil. Eine intuitive Bedienung ist nicht gegeben.

Besonders die Plus-Minus-Regler machen mir zu schaffen. Denn sie verhalten sich unterschiedlich. Kurzes Drücken regelt die Zielgeschwindigkeit in Zehnerschritten. Fein. Langes Drücken regelt die Zielgeschwindigkeit in Einerschritten. Auch fein. Gewöhnungsbedürftig ist, dass der Vorwärtsregler sich unterschiedlich verhält. Bei den Zehnerschritten wird zur Zielgeschwindigkeit hinzuaddiert. Fein. Bei den Einerschritten wird jedoch zur Momentangeschwindigkeit hinzuaddiert. Die zuvor in Zehnerschritten angepeilte Zielgeschwindigkeit springt also wieder komplett auf die Momentangeschwindigkeit zurück. Das überraschte mich.

Ferner regelt die Anlage nicht tatsächlich die Geschwindigkeit. Wenn ich auf der Landstraße mit 100 fahre und dreimal die Minustaste drücke, dann bremst ein Audi tatsächlich auf 70 km/h herunter. Sehr schön. Ein Golf mit 9 bzw. 11 Steuerelementen jedoch nicht. Insofern ist eines der Hauptnutzungsszenarien, nämlich das Vermeiden von Strafzetteln, nicht gegeben.

Reifenluftdrucksensoren

Kürzlich hatte ich den Firmenwagen zwecks Reifenwechsels in der Werkstatt. Die Gelegenheit war günstig, denn der Wagen erinnerte mich seit einigen Tagen bei jedem Einschalten der Zündung an den anstehenden Service, und die Frontschutzscheibe war durch einen Steinschlag lädiert.

Nach dem Abholen meldete der Wagen auf dem nächsten Weg zum Kunden einen Druckverlust. Ich habe also die Autobahn verlassen und den Druck geprüft. Alles in Ordnung eigentlich. Also neuen Termin vereinbart. Nicht ganz ohne Überheblichkeit bekam ich dann gezeigt, wie ich den derzeitigen Wert als Referenzwert im Wagenrechner hinterlegen kann. Hätte ich den Reifenwechsel selbst durchgeführt, wäre das sicher meine Aufgabe gewesen. Aber so? Naja…

Von der Lust, selbst ein Fahrzeug zu kaufen

Vorhin las ich in einer Nachrichtenmeldung, dass im Vergleich zu den 90er Jahren heute viel mehr Fahrzeuge von Firmen als von Privatpersonen zugelassen würden. Das wundert mich nicht. Die heutigen Fahrzeuge sind übersät mit Funktionen, Schaltern, Knöpfen und Displays, deren Bedienung mich schlicht und ergreifend nur nervt. Meinem Firmenwagen würde ich beispielsweise gerne abgewöhnen, das Radio bei jedem Starten automatisch einzuschalten. Trotz mehrmaligem Geklickere in den Fahrzeugmenüs habe ich es nicht hinbekommen. Das mag meiner Faulheit, das Wagenhandbuch zu lesen, geschuldet sein. In Zeiten von Smartphone und Apps möchte ich sowas jedoch ohne Lesen der Dokumentation hinbekommen können.

Ich habe das Gefühl, dass wir in der Softwareentwicklung trotz Smartphones noch immer einen weiten Weg vor uns haben, uns auf das Wesentliche zu konzentrieren und tatsächlich das zu schaffen, was wir gerne mit dem englischen Begriff »Value« zu umschreiben versuchen.

Ich bin dankbar darum, über Stadtmobil so viele verschiedene Fahrzeuge nutzen zu können. Keines davon überzeugt mich, und meine Lust, selbst eines zu kaufen, tendiert gegen null.

New drugs arrived

Yesterday this nice package arrived. It’s the revision B+ of the Raspberry Pi, providing improved audio quality and a microSD card slot instead of the formerly used SD card slot.

Additionally I bought a box to house it.

The board’s edge with the pins gets inserted into some kind of groove. On the opposite side, the housing provides two plastic pins which snap into the board’s drillings. To remove it, it is required to remove the microSD card first and to bend both plastic pins in direction of the HDMI port.

I’ve chosen Raspian as the operating system. The installation is quite simple. Insert the microSD card into your desktop computer. Format the card using SD Formatter 4.0. Download the NOOBS installer. Extract the archive and copy the resulting files to the micro SD card. Insert the card into the Pi. Attach a monitor via HDMI as well as a USB mouse and a keyboard (since the Dell U2312HM does not provide an HDMI input, an adaption to DVI is required).

Insert a Micro USB cable as a power supply. The Pi will start running the NOOBS installer; simply follow the instructions on the screen, and you are up and running within a couple of minutes.

The Pi will serve me for just one purpose – running a software synthesizer. Unfortunately the internal sound card is not suitable for this purpose. While the playback of some mp3 file went well, it failed completely as an audio device for the synth, not to mention jackd, the realtime audio sound server. USB devices will do a much better job. I tried a rather dated Terratec Aureon successfully. An Edirol UA25 seems to be supported as well. I even managed to (ab)use an Access Virus synth as an USB breakout box. Since jackd consumed quite some CPU, I ran the synth without it, accessing the USB hardware directly via ALSA.

I’m desperately looking for a touch screen of about 22″ @ a resolution of 1920×1080 px. The Iiyama ProLite T2236MSC-B1 reportedly works right out of the box, but unfortunately it’s built using a glossy screen. In case anyone knows of a touch screen display with similar specs but with a non-glare display please drop me a line.

That’s it so far. For the time being, I’ll be busy configuring Aeolus for seamless use on the Pi.

Can OsmAnd do bike routing from Achern to Strasbourg?

Still we enjoy the storks, but in a couple of days, in August, they will be heading towards Africa. They can do so since they have natively built-in navigation capabilities. What a pity, they will never know what joy it is to play with gadgets like personal navigation assistants!

About three years passed since I was the last time in Strasbourg by bike, checking the bike routing capabilities of MoNav. Due to the hot and humid weather I was a bit lazy and took the train to Achern so the cycling distance was about 40 but 90 kilometers.

Continue reading

Updating Owncloud from v4 to v6

I run an installation of Owncloud 4 for quite some while now. I mainly used it to sync calendars and contacts between my business devices. Recently I retired my beloved Nokia N900, which served me very well for more than 4 years, in favour of an Android device, so syncing my private calendars and contacts is finally possible. Though news feeds are for people living in the past, finally the news reader of owncloud is now accessible by a native Android client. News marked as read on the go using a telephone appear as read on the tablet at home (and on Owncloud’s web interface, of course).

Continue reading

Testausritt mit Osmand und BRouter die Zweite

20140711-OsmandScreenshot

Nach dem Testlauf mit Osmand auf dem Tablet habe ich heute Osmand zur Radnavigation auf dem Telefon ausprobiert. Das Routing in Osmand hat BRouter übernommen, den es auch im Web zum Ausprobieren gibt.

Inzwischen habe ich Osmand ein wenig besser verstanden, aber es ist noch immer so, dass man Einstellungen vornimmt, die dann in einem anderen Kontext wieder rückgängig gemacht zu sein scheinen. Beim Einstellen muss man daher immer genau darauf achten, in welchem Modus man sich gerade befindet.

Das Mitloggen hat diesmal ganz anständig geklappt. Zumindest bis ich Osmand in Kandel beendet habe. Nachdem ich es neu gestartet hatte, war das Logging wieder ausgeschaltet, weshalb jetzt das Teilstück von Kandel bis Wörth fehlt. Unschön ist auch, dass man zwar einstellen kann, den gerade aufgezeichneten Track auf der Karte anzuzeigen. Das gilt aber nur so lange, bis ein neuer Track angelegt wird. Auch das muss man also immer wieder einstellen.

Inzwischen habe ich das Text-to-speech-Modul installiert bekommen. Ich habe somit die Kopfhörer ein- und das Telefon in die Tasche gesteckt und mich einfach mal überraschen lassen, was mir so vorgeschlagen wurde.

BRouter scheint geschotterte Wege mit einer recht hohen Strafe zu belegen. Der erste Routenvorschlag führte dann auch überraschenderweise über Kapsweyer. Ich bin dennoch über die Haardtmühle und Büchelberg zum Klotzweg gefahren, was der Routingengine gar nicht zu gefallen schien. Auf dem Klotzweg sollte ich jedenfalls noch für eine ganze Weile wenden. Erst nach einiger Zeit hat sich das Gerät damit abgefunden und ab dann auch artig über die Waldwege geführt. Ich werde mal versuchen, in der Konfiguration von BRouter die Waldwege mit dem Attribut tracktype=grade2 mit etwas weniger Strafzoll zu belegen. Allerdings muss ich zugeben, dass die Schotterwege aufgrund der Regenfälle der vergangenen Tage recht weich und daher anstrengend zu fahren waren. Insofern sind die Standardeinstellungen vielleicht gar nicht mal so schlecht.

Auf dem Rückweg hat mich BRouter dann überrascht, indem die Wegführung zuerst ein Stück gen Westen und dann über die Bildstraße, die im südlichen Teil geschottert ist, Richtung Schaidt führte. Das ist eine Variante, die ich bisher nie in Betracht gezogen habe, die aber gar nicht schlecht ist. Na also, geht doch. Wieso die erste Berechnung auf dem Hinweg den Umweg über Kapsweyer vorschlug, ist mir dadurch allerdings noch unverständlicher.

Was mir sonst noch so aufgefallen ist:

  • Die Abbiegehinweise kommen früh und zahlreich. Der erste Hinweis auf einen Abzweig kommt ca. in den Abständen 500m, 200m, 80m und dann direkt vor dem Abzweig. Der erste Hinweis kommt bei 20 km/h also etwa 90 Sekunden vor dem Abzweig, was mir eigentlich zu früh ist. Die 80m-Ansage und direkt am Abzweig wäre IMO ausreichend.
  • Im Stand, wenn das GPS-Signal um den Standpunkt mäandert, kommen öfter mal Ansagen wie »Wenn möglich bitte wenden« oder »Nach 400 m links abbiegen«. Über das Problem bin ich schon gestolpert, also ich MoNav Sprachausgabe beigebracht habe.
  • Manchmal erfolgte eine Routenneuberechnung bereits nach wenigen Metern (ich schätze so um die 20), nachdem ich die ursprüngliche Route verlassen hatte. Das ist vielleicht ein wenig schnell, denn einmal bin ich lediglich auf einen Parkplatz gefahren.
  • An einigen Kreuzungen habe ich gar keine Instruktionen bekommen, obwohl ich sie dringend hätte brauchen können. Das passierte auch gelegentlich an Ortsausgängen, an denen ich auf einen Wirschaftsweg hätte wechseln sollen.
  • Endet ein straßenbegleitender Wirtschaftsweg und setzt sich auf der anderen Seite 90° zur Hauptverkehrsstraße fort, erfolgt lediglich der Hinweis »In x Metern rechts abbiegen«. Ich habe noch keine Ahnung, wie man das besser machen kann, aber ich sehe schon, wie ich mir da was überlegen muss. Denn man folgt dann irgendwie intuitiv der Hauptverkehrsstraße.
  • Nervig finde ich Hinweise wie »In 120m rechts abbiegen«, wenn auf ebendiesen 120 Metern noch mehrere Abzweige vor der gewünschten kommen. Bei MoNav habe ich seinerzeit in diesen Fällen versucht, die Ansage solange sinnvoll möglich zurückzuhalten, bis man an den Abzweigungen vorbei ist, oder die Abzweige zu zählen, um sowas wie »An der dritten Möglichkeit rechts abbiegen« ausgeben zu können.
  • Nachdem man irgendwo abgebogen ist, folgt irgendwann »Dem Straßenverlauf für x km folgen.« Das könnte IMO sofort nach dem Abbiegen kommen.

Fazit? Gar nicht schlecht, auch wenn ich mich im Moment ganz sicher nicht blind führen lassen würde. Ich habe allerdings schon damals, als ich MoNav Sprachausgabe beibringen wollte, gemerkt, dass speziell für das Radfahren die Sache nochmal härter wird. Die Segmente werden speziell an Kreuzungen mit Radwegen links und rechts so kurz, dass eine sinnvolle Führung sehr sehr schwierig wird. Aber den momentanen Zustand kann man noch um einiges verbessern, bis man auf die wirklich harten Probleme stößt. Bis zu den nächsten verregneten Abenden werde ich mir eine Halterung besorgen, damit ich die Streckenführung auf dem Display kontrollieren kann und ich mich nicht ausschließlich auf die Audioausgabe verlassen muss.

An Osmand kann man eigentlich alles so einstellen, wie man es haben will (lediglich die Angabe der Reststrecke habe ich vermisst). Dazu muss man sich aber eine Weile mit den Einstellmöglichkeiten auseinandersetzen. Osmand ist jedenfalls eine tolle Software, dazu noch Open Source, und die Benutzeroberfläche ist recht schick gemacht. Mein Dank gilt daher den Autoren von Osmand – und natürlich BRouter. Morgen werde ich damit mal in den Schwarzwald fahren um zu sehen, wie sich das Routing in den Hügeln so macht :) .

Edit 2014-07-18: Über die Wochennotiz Nr. 208 (in der auch dieser Beitrag hier verlinkt ist) kam ich an die OsmAnd 1.8 Preview. Kann gut sein, dass der ein oder andere der oben genannten Punkte somit bald hinfällig ist. Feine Sache.

Neulich, als ich eine Datei von meinem Android-Gerät auf den Mac übertragen wollte

Wie ich vor knapp zwei Jahren schon schrieb, beherrscht Android seit Version 3 am USB-Kabel keinen Massenspeichermodus mehr, sondern nutzt das Media Transfer Protocol (MTP). Da Mac OS X von Haus aus das Protokoll nicht ins Dateisystem einbinden kann, bietet Google die »Dateiübertragung für Android« (»Android File Transfer«) an. Die aktuelle Applikation stammt vom 15.10.2012 und ist im Vergleich zum Massenspeichermodus machmal etwas umständlich zu nutzen. Aber die Applikation reicht auf jeden Fall, diverse Dateien (wie die eigene Musiksammlung) auf das Gerät zu kopieren. Super.

Heute wollte ich eine einsame Datei (den GPX-Track des heutigen Ausfluges) vom Android-Gerät auf den Mac übertragen. Leider bietet die Applikation von Google die neu hinzugekommene Datei nicht an, sondern zeigt standhaft die Inhalte von heute morgen. Das Drücken von F5 hat nichts gebracht, und auch sonst konnte ich keine Möglichkeit ausfindig machen, das Programm zu veranlassen, die Daten vom Gerät neu zu laden. Eventuell liegt das Problem darin begründet, dass der Dateiindizierer von Android die neu angelegte Datei nicht in die Datenbank aufnimmt. Zumindest wird im zugehörigen Fehlerticket vom November 2011 darauf hingewiesen, dass die Dateien sichtbar würden, nachdem man das Tool SDrescan hat laufen lassen. An anderer Stelle las ich die Empfehlung, doch einfach gleich auf AirDroid zu setzen – eine Maßnahme, die ich nicht unbedingt weiterempfehlen würde.

Ich habe letztlich die Datei einfach über meine ownCloud-Installation auf den Mac geschoben. Alternativ können Nutzer die Datei natürlich auch einfach per Mail vom Telefon aus an den Mac schicken. Beide Varianten sind aber natürlich viel zu umständlich, zumal wenn das Gerät sowieso schon zum Laden des Akkus per USB-Kabel am Rechner hängt. Man merkt deutlich, dass es den Anbietern sehr viel wichtiger ist, dass die Nutzer ihre Daten über ihre Server schicken, statt sie lokal bei sich zu behalten. Denn dass man die Daten nicht vom Telefon auf den Desktop kopieren kann scheitert nicht daran, dass es technisch schwierig wäre.

Testausritt mit Osmand auf dem Tablet

Über ein Posting bin ich auf BRouter aufmerksam geworden, da er verspricht, brauchbare Radrouten berechnen zu können und dabei auf Höhenprofile Rücksicht zu nehmen – ein Feature das ich in MoNav schmerzlich vermisse.

Der Webclient dient hauptsächlich zu Demonstationszwecken. Man kann sich den Router auch fürs Offline-Routing auf Android installieren und dann aus verschiedenen Navigationsapplikationen heraus aufrufen, darunter Osmand.

Ich habe also Osmand auf meinem Tablet von 1.5. auf 1.7 aktualisiert, BRouter installiert, Karten- und Routingdaten für beide Applikationen installiert, mich aufs Rad gesetzt und bin einfach mal losgefahren, wenn auch nicht ohne Ziel :) .

Tablet

Der Vorteil des Tablets im Vergleich zu einem Telefon ist, dass man darauf wirklich einen schönen Überblick über die Umgebung bekommen kann. Allerdings hatte ich das Gerät ob der Größe im Rucksack verstaut. Das hieß jedesmal absteigen, auspacken, nachsehen, einpacken, aufsteigen, weiterfahren. Schnaken und Bremsen wussten das sehr zu schätzen. Ich allerdings weniger… :) . Und auch der Rucksack nervt bei den derzeitigen Temperaturen. Die kommenden Tests werde ich daher mit dem Telefon vornehmen, das ich wie üblich in der Tasche oder der Otterbox verstauen kann.

BRouter

Osmand hatte ich angewiesen, BRouter zu verwenden. Gewählt hatte ich das Profil »Trekking«. Offensichtlich berücksichtigt dieses Profil keine geschotterten Waldwege, sondern bevorzugt asphaltierte Wege. IMO grundsätzlich eine gute Idee, denn auf Radreisen mit Lowridern und Gepäcktaschen kann Schotter richtig Kraft kosten. Für meine Zwecke heute aber leider unbrauchbar. Das Umstellen auf Fußgängerrouting wiederum nutzte auch schmale Wanderwege, die ich nicht fahren wollte. Ich will mich daher mit der Routingkonfiguration nochmal eingehender beschäftigen. Das Berücksichtigen von Steigungen konnte ich allerdings heute noch nicht testen. Dazu muss ich erst entweder in den Schwarzwald oder den Pfälzerwald bzw. die Vogesen ausweichen.

Osmand

Mit Osmand bin ich nicht gut klargekommen – das hat sich seit meinen Versuchen mit Version 1.5 im letzten Jahr nicht geändert. An Kreuzungen schalte ich das Display ein, schaue nach, und schalte es wieder ab. Das scheint mir der Grund für mehrere der nachfolgenden Punkte zu sein. Hier ein paar Dinge, die mich verwirrt haben:

  • Vor der Abreise bin ich die Einstellmöglichkeiten von Osmand durchgegangen. Diese sind zahlreich (und im Vergleich zu älteren Versionen viel besser organisiert). Allerdings ist es für den Nutzer nicht ganz leicht zu durchschauen, wie sich die Einstellungen gegenseitig beeinflussen.
  • Beim Einrichten von Osmand gelang es mir nicht, das Text-to-speech-Modul zu installieren. Ich konnte es zwar anwählen und auf den Laden-Knopf drücken, die Fortschrittsanzeige lief aber in wenigen Millisekunden durch, das Anwahlfeld war wieder leer und auf dem Datenträger war keine Datei angekommen. Ich bin daher auf die alternativen Sprachsamples ausgewichen.
  • Ich hatte letztes Jahr auf dem Tablet das GPS-Subsystem komplett abgeschaltet, damit es mir zuhause in der Wohnung nicht die Batterie leersaugt. Glücklicherweise habe ich mich daran erinnert, ansonsten hätte ich wahrscheinlich jahrelang darauf warten können, dass Osmand eine GPS-Position ermittelt.
  • Nach dem Einschalten des Displays während der Tour wurde teilweise keine Karte mehr angezeigt. Erst nach manuellem Stoppen der Applikation über die Systemeinstellungen und Neustarten der Applikation erschien die Karte wieder. Den Grund dafür kenne ich nicht, bin aber froh, wenigstens diesen Umweg gefunden zu haben.
  • Sobald (und solange) das Display ausgeschaltet war, schien Osmand keinerlei Positionsbestimmungen vorgenommen zu haben, obwohl ich den Hintergrundmodus eingeschaltet hatte. Sobald ich also anhielt und das Display einschaltete, musste ich immer eine Weile warten, bis das Tablet wieder eine GPS-Position ermittelt hatte. Schnaken und Bremsen hatte ich bereits oben erwähnt… :)
  • Vermutlich aus diesem Grunde gab das Tablet bei ausgeschaltetem Display keinerlei Sprachanweisungen aus. Erst beim Einschalten des Displays und nach der Neubestimmung der Position teilte mir Osmand mit, dass ich seit x Metern die Route verlassen hätte. Sprachanweisungen und automatische Routenneuberechnungen im Rucksack wären cool gewesen. Ich vermute, ich habe Einstellungen durcheinandergebracht.
  • Osmand kann Tracklogs aufzeichnen. Allerdings finde ich die zugehörigen Einstellmöglichkeiten und Kontrollelemente ziemlich verwirrend. Während des Ausflugs legte Osmand tatsächlich vier GPX-Dateien an. Zwei davon enthielten immerhin jeweils einen Punkt, eine davon zwei, und eine wenigstens 5. In JOSM sieht das dann wie oben abgebildet aus. Wenn man sich eine Weile mit Osmand beschäftigt hat weiß man sicher, wie man alles einstellen muss. Aber von der Zuverlässigkeit von MoNav oder gar eines Garmin ist Osmand noch ein Stück entfernt. Das Einstellen der Frequenz, mit der Punkte aufgezeichnet werden sollen, erfolgt übrigens nicht über das Einstellungsmenü, sondern die Controls im Hauptbildschirm von Osmand, sobald man das Tracking aktiviert. Die Standardeinstellung ist 10 Sekunden statt einer.
  • Die verwendete freie Version kann keine Wikipedia-Artikel darstellen und begrenzt die Anzahl der Downloads auf 10. Klingt nach viel. Da aber das Kartenmaterial stark zerteilt ist und ich im Grenzgebiet von Baden-Württemberg, Rheinland-Pfalz und dem Elsass wohne, benötige ich bereits für die üblichen Wochenendtouren mindestens drei Downloads. Hinzu kommt noch mindestens ein Sprachpaket, Bayern, das Saarland und weitere Bundesländer, die ich gelegentlich besuche. Die 10 Downloads sind somit schneller aufgebraucht als man erwartet. Glücklicherweise gibt es noch die Bezahlversion, bei der die beiden Limitierungen wegfallen. Die hatte ich mir letztes Jahr auch besorgt. Dummerweise hat mich Osmand dann im entscheidenden Moment mit der nachfolgenden Meldung im Stich gelassen. Ja, ich hatte im Urlaub die Roamingkosten gescheut. Oder um genauer zu sein, im Hotel Osmand nicht hochgefahren, sondern nur Mail, RSS und so weiter. Ich habe daher die Bezahlversion sofort wieder entfernt. Es gibt wenige Momente in meinem Leben, in denen ich wirklich sauer bin. Dieser gehörte dazu. Und ich war mitnichten sauer auf die Entwickler von Osmand, die eine wirklich erstaunliche Software auf die Beine gestellt haben.

Fazit

Osmand ist eine tolle Software, zumal man die Kartendarstellung und das Routing offline arbeiten lassen kann. Auch dürfte es nicht allzuviele Features geben, die die Durchschnittsnutzer noch vermissen. Die Kehrseite der Medaille ist, dass man sich mit der Software beschäftigen muss, bis man wirklich damit klarkommt. Mich juckt es in den Fingern, an der Usability zu arbeiten. Allerdings ist die Anlaufhürde recht groß, da ich (im Gegensatz zu Maemo) mit Android bisher nur am Rande gespielt habe. Alternativ könnte ich mal Locus oder Oruxmaps ausprobieren. Osmand hat allerdings den Vorteil, GPL-lizensiert zu sein.