I see some Raw Motion. \o/

Quick update.

Read a great set of XInput2 blog posts by Peter Hutterer and fiddled around with the code examples,
and the end-result is nice: System-wide multi-touch events!

So. Next up in the MyMoves roadmap will be refactoring it for multi-touch support.

N950 is getting 6 simultaneous touches, will that be enough for gestures?: P

Introducing MyMoves: system-wide gestures for Harmattan

Hiyouall! I’d like to demonstrate the results of the small 3-day home hackathon I ended up having : )

(Links to sources and .debs in the bottom, I recommend reading through first : P )

It’s a thing called MyMoves. MyMoves is an attempt to bring configurable
gestures to Harmattan, written in QML/C++. The idea of MyMoves is to be able
to create a gesture, and attach an arbitrary shell command into it.

The current prototype of MyMoves consists of two parts:
– mymoveserver, handles the touch events via XRecord, saves the gestures and performs the recognition
– Configuration UI for adding new gestures and starting/stopping the gesture observation
The server is controlled by the configuration UI via D-Bus commands

So. What on earth can we do with this? Let’s take a closer look. Here’s the configuration UI:

It consists of three buttons: “New Move“, “Start observing gestures“, and “Stop observing“.
The first thing to do is to is to create new gestures. Pressing “New Move” shows the screen for adding a gesture:

It’s a very simple screen with a box where you draw the gesture (it’s a QmlCanvas btw)
and buttons for saving and clearing the gesture box. Here’s one drawn gesture:

Let’s take a look at the video on how adding gestures goes:

Now that the gestures are set up, it’s time to attach them to shell commands,
which currently means getting dirty with the terminal. The gestures are saved
into files called mymoves[number] under /home/user/MyDocs/moves. Each
gesture has the shell command and the gesture data, so the start of a gesture file looks
something like this:

Add your command here
-128 430
-105 436
-95 441
-76 447
-57 455
-38 460
-21 466
-2 474
14 479

Now we can just edit the file, and add the command we want to run
on that specific gesture, let’s say e.g. the calendar, so we replace
Add your command here
/usr/bin/invoker –no-wait –type=m /usr/bin/organiser -showWindow 1 &

The command needs to be added just like to a command to a terminal, so no quotes.
Make sure to add & to the end of the command, so it’ll start in a non-blocking way.
Also, the MyDocs folder is in users possession, so use su – user to get permissions for editing the files.
Do that for each of the mymoves[number] files, and you’re set up!

Now using the gestures is as simple as firing up MyMoves and pressing “Start observing gestures“.
Here’s MyMoves in action:

Enough for the talking! Where can I get it?

Source code: http://gitorious.org/mymoves
Harmattan debs: http://koti.kapsi.fi/~sh8dfwk/mymoves

Installation only via command line. SSH to your phone, copy the .debs under /home/user/MyDocs,
and run dpkg -i mymoveserver_0_0_1_armel.deb mymoves_0_0_1_armel.deb.

Plans for the future:
– Making the server more robust
– Decoupling the server from the configuration UI so that it starts from the boot
– A usable UI for configuring everything (such as dialogs for selecting an application to run on a gesture etc)
Multi-touch gestures : )
– anything else that pops into my mind

Have fun! 🙂

FunkeySynth 0.12.1 for Harmattan available

Hi all!

Tagged a new release of FunkeySynth for N9/N950. Main changes since version 0.12:
– Recording&playback of 16-sec loops
– UI for the 3 additional oscillators
– Support for algorithms (different routing for the oscillators)

Download the latest .deb from http://koti.kapsi.fi/~sh8dfwk/funkeysynth

Please note: if you haven’t got portaudio already, install it from the above location too!
Installing goes the traditional way via command line:
Log in as root, copy .debs to /home/user/MyDocs, dpkg -i package.deb for each package

For loop support, there’s a new record/playback button in the main screen:

Functionality of the button:
– Press once -> it goes to ‘ready for recording’ state
– Start playing the keys -> recording starts
– Press again to stop recording
– Now it’s a play button. Press to start/stop playback of the loop
– Long-press to clear the loop from memory. The button returns to the initial state

Another big update, a new screen for adjusting the additional oscillators:

With this screen, you can adjust various properties of the oscillators,
such as attack, decay, sustain, release, and wave type. Also, there’s an
algorithm selection button available (the black&white thing with numbers).

The algorithm selection button controls how the signals from the oscillators are routed,
e.g. in the screenshot above all of them are in series. This means that oscillator 4’s
output is fed into oscillator 3, oscillator 3’s output to 2, and so on. Oscillator 1
is the ‘main’ one, dynamics of which you can control in the main screen.

In total, there are six algorithms available, varying between having all the oscillators
in series to having them in parallel, where it’s just four signals summed to get the output.

Below is a demo video of the new updates. It demonstrates the use of
the algorithm selector and the looping. You might not notice too big difference
between the different algorithms via the video, the best way is to experiment
with the app yourself and see what kind of sounds you come up with.

(Disclaimer: Playing touch-screen keyboard with one hand is hard : P)