This is as days pass by, by Stuart Langridge

And this is Jokosher Remote and Mini Jokosher, written , and concerning Jokosher, LugRadio

Nokia have, immensely kindly, donated a Nokia 770 to the Jokosher project. We plan to implement two different Jokosher things on the 770: Jokosher Remote and Mini Jokosher. Jono and I spent some time hashing over details of both of these, and he's written up an initial spec for Jokosher Remote. In essence, it's a remote control for Jokosher; it doesn't do any music stuff itself, but instead lets you see what your main Jokosher screen is up to and lets you control what it's doing from your 770. One of the major use cases here is for when you're recording with the band: imagine, for example, that you're the drummer. In the corner of the studio is your recording computer, running Jokosher. You've got all the instruments plugged into the mixing desk and the desk plugged into the computer; you've got all the instruments set up in Jokosher itself. Now you're sitting on the other side of the room, behind your drums, and you want to start recording. Do you want to stumble across the room, through the mess of leads and discarded guitar cases, to get to the computer to hit play? Hell, no. So you take your trusty Nokia 770 out of your pocket and start Jokosher Remote. It automatically notices that there's a real Jokosher running (which it will do because it's on the wireless network, and Jokosher will advertise its presence with the Avahi ZeroConf library) and displays the details of the project that's currently open. You, in turn, simply hit the big record button on the 770's screen. The buttons are all really big, so they can be pressed with fingers rather than fiddling about with a stylus, and when you're playing you can see the tracks recording so you know it's working. You stop playing and want to listen to that recording back, so you hit Play on your 770 and it makes the real Jokosher installation play. You can skip through the playback, forwards and backwards. If you want to re-record one instrument, you can arm that one instrument for recording and record it again. You can set up an overdub and then record it, all without leaving your drum stool. No more walking backwards and forwards! No more tripping on the mic lead! Jokosher Remote is all you ever wanted! There are a few little tricky technical issues. The first is that, at the moment, there is no way for something outside core Jokosher to control what the program is doing. Since we also need this to make plugins work, and plugins are critical, the development of a plugin system is on the roadmap for Jokosher 0.2 (at the moment, we're in bugfix mode for 0.1, due for release in three weeks at LugRadio Live 2006). Once that plugin API exists, it will be a lot easier to build a Jokosher Remote plugin. Secondly, I need to think about the best way of shipping data back and forth between JR and J itself. I suspect I'll use something simple to implement like XML-RPC, but if anyone's got any suggestions for an on-the-wire protocol which (a) already has a pure-Python implementation, (b) can ship Python dictionaries, and (c) will be highly easy to implement, let me know. The other thing that I want to do is Mini Jokosher. This is a port of most of Jokosher to the 770 itself. The use case here is for taking it with you in your pocket to do interviews for your popular podcast; you can drop the 770 in your pocket along with a USB mic, and then you have a studio on the move. The goal here is not that you can do absolutely everything in MJ that you can do in real J, but tha you can record to storage on the device (buy an MMC card!), you can create instruments, record a clip, delete that clip, re-record it, and move clips around to do basic editing. Then, when you bring the 770 back to your house, it will automatically hook up with your real Jokosher (via ZeroConf again) and offer to upload the project; the project then uploads seamlessly to real Jokosher where you can do your proper editing. It's a heavily cut-down version of real J, but it's a proper audio recording application; this means that we will need most of the GStreamer stuff that real J needs. It'll be interesting seeing how complete the GStreamer port to 770 is. Jokosher Remote comes first, though, because it's simpler to implement and because the use case is a little more compelling. Exciting times ahead for our audio editor! The big thing I need to do first is to set up a Nokia-770-in-a-window environment on my developer machine. Is there an easy guide somewhere around to how to do this? It strikes me that it should be easy, and I keep seeing things that make reference to "Xephyr", but there doesn't seem to be an easy way to just have a 770-in-a-window on my machine (so I don't have to keep copying things to the real device). There must be something, though, so I must have missed it; can anyone point me at it?

Comments

Simon Willison

Does JSON with simplejson fit the bill? It's great for passing Python dictionaries around (I use it at work for getting data out of PHP and in to a Python interpreter where it can be useful) but it doesn't solve the over-the-wire bit - you'd have to pass it around with HTTP or something.

sil

Hm, could do. I'd have to write my own mini HTTP server, but there's already SimpleHTTPServer in Python anyway. Would work; it's a bit less intense than XMLRPC, which would be a good thing.

Schwuk

I think Jokosher Mini sound better (and more consistant) that Mini Jokosher.

Apart from that, two very good ideas.

sil

Schwuk: you're not wrong there, I have to say. Branding stuff is Someone Else's Job, not mine. :)

schwuk.com

Why undersell?

why 0.1? why not 1.0?

Michael Sheldon

I think what you're looking for in terms of a Nokia 770 in a window is a combination of the Maemo SDK, scratchbox and Xephyr. Instructions for setting the environment up are available at: http://www.maemo.org/platform/docs/tutorials/Maemo_tutorial.html#Installation

Doesn't seem to require a 770 at all, so I think I may set it up myself so I can lend a hand in the Jokosher Remote work.

mrben

Jokosher is rapidly becoming _the_ most "popular technology compliant" application out there - gstreamer, and now avahi and the 770! How cool are we ;)

Chris Rose

What about Pyro?

http://pyro.sourceforge.net/

sil

Chris Rose: I'd never heard of Pyro. Interesting.

It looks like, though, the Pyro daemon runs its own loop. I'd have to integrate it with the gtk mainloop, which would be a bit awkward. There's a section about doing that, though, and it looks pretty simple. Thanks for the pointer! I'll have a look at it.

sil

mrben: we're fully buzzword compliant, certainly! You missed out that we use the Tango icons, though :)

Andy Wingo

I'd use Twisted, its perspective broker library is pretty good and is all python. A bit of a learning curve though, and not too interoperable with other systems. Ask in #fluendo if you want a pointer.

sil

Andy: ooh. Twisted. Hm. It's a bit of a heavy dependency if all I want is to chuck dictionaries across the network, though.

This website belongs to Stuart Langridge. Contact details are available. Don't eat yellow snow. Valid HTML5, at least in theory, except for the bits that aren't because I'm that futuristic that I'm ahead of the spec, oh yes. HTML5 help from Bruce Lawson, among others. Fonts from the superb FontSquirrel. End.