
Sweet, sweet audio love
Its been a while since I posted an update about Jokosher, so I figured I should fill you all in. There has been some great work going on, and everyone is doing an awesome job. To keep it short and sweet, I will list the new stuff as bullet points:
* Different waveform graphs – thanks to some comments by [Steven Garrity](https://actsofvolition.com/), we are now using Tango colours for our waveforms. They look schweeeeet!
* Playback problems largely resolved – I spent quite some time hammering away at some playback problems, and discovering many of the problems were lurking adder bugs. Thanks to the efforts of Wim and Stefan, most of the showstopper bugs are fixed. As such, playback is working pretty well, although right now you need GStreamer CVS to run Jokosher.
* Recording and playing back together – I wrote some code to play back audio and record at the same time and Elleo helped with merging it in. As such, Jokosher is starting to become usable for real multi-track recording. There are still some performance problems to work out, but the core code is in there and working.
* Editing tools beginning to make their way in – Jokosher has always been about usability, and Aq and I have spent many hours on the phone refining and polishing Jokosher’s design, catering for all possible scenarios. We have developed a plan that ensures that the user is never confronted with a huge array of unintuitive buttons, and only ever sees the relevant tools for what they want to do. To do this we are using contextual tool palettes. As an example, if you make a selection, a drawer will drop down and only the relevant tools will be displayed. This makes the Jokosher interface less cluttered, easier to use, and lets us make the major application buttons (play/record/rewind/forward) nice and big to accommodate musicians hunching over a computer with a guitar in one hand and trying to mouse with the other. Aq has taken the reigns on coding these bits up, and has started to implement the volume fading code (again, a unique and simple approach) and the contextual palette.
* Performance problems getting nailed – recently we have been having some rather fierce performance problems. Laszlo has been hammering at this and now Jokosher is working much better than before. Luckily, one of the hackers, John, has a lower powered computer that is increasingly used as the benchmark to make sure Jokosher is as performant as possible.
* Keeping PPC support fresh – Thanks to Chris Proctor, we are getting plenty of testing on PPC, and some hardware specific bits such as filtered caps for GStreamer have been made cross-platform.
So, some interesting work is going on, and Jokosher gets more and more usable each day. When the GUI editing side is completed, we will hook it up to the audio and Jokosher should start becoming useful for actual editing. To make some of this happen we are waiting on some additions that Edward is adding to Gnonlin, and he is beavering away at that. Gnonlin is really making much of this so much easier, and from a discussion today with Edward, default sources are going to make wave splitting far easier to deal with.
If you are reading this and want to be touched by the gods of audio production and worshipped by trendy musicians everywhere, come and join the team. We are looking for artists, documentation writers, translators, coders and testers. Everyone can help. Just join the [mailing list](https://jasonfield.com/cgi-bin/mailman/listinfo/jonoedit), let us know who you are, how you would like to help and we can point you in the right direction. If you are a coder, take a look at our [bug reports](https://jokosher.python-hosting.com/report/1) and also see the new [Jokosher Hacking Guide](https://jokosher.python-hosting.com/wiki/JokosherHackingGuide).
Also, big thanks to [Python-Hosting.com](https://www.python-hosting.com/) for hosting the Jokosher Trac site for free. They provide a great service and if you need a free Trac server for an Open Source Python project, they can help you out.

Microsoft users and Open Source
This weekend I spoke at two events for Microsoft people – a Microsoft community leaders day on Friday and the [DeveloperDeveloperDeveloper Day](https://www.developerday.co.uk/ddd/default.asp) on the Saturday. At both days I delivered a talk about Open Source, debunking some of the myths, and explaining how Open Source is not just for Linux geeks and how Microsoft fans can use it too. The responsive was pretty positive.
One thing I noticed at the event was just how many Microsoft users are interested in Open Source. The single major view that I picked up on was that the concept of Open Source is interesting, but they are not at all interested in Linux, and assumed that Open Source was almost entirely a Linux specific thing. As I suspected, much of this is about education. I think the audience on both days were expecting a Stallman-like ethical session, and were prepared to defend their software, but my talk really focused on the practical application of Open Source in their daily lives. Everything from Open Sourcing essential but uninteresting libraries of code right up to making use of Open Source to help encourage collaborative development. I think it can be easy to forget that Open Source can bubble up in all kinds of different areas, and not just with Linux.
Incidentally, the 6th day of the 6th month of the 6th year marks [National Day Of Slayer](https://www.nationaldayofslayer.org/). I plan on listening to all Slayer albums while at work tomorrow. Any favourite Slayer songs?

Schpeeeaking
Today I am heading down to Microsoft’s campus in Reading for a few days of speaking. Today is an event about community building inside of Microsoft, and I was invited to come along to talk about Open Source. It seems quite an interesting event, and it is always nice and challenging to speak at places like this, instead of just singing to the choir.
Tonight I am staying over in Reading and heading out for a few beers tonight, and then tomorrow I will be speaking at [DDD3](https://www.developerday.co.uk/ddd/default.asp), also at the Microsoft campus in Reading. DDD3 is again, very much of a Microsoft event, and I am presenting the only talk on Open Source. My only ambition is to educate people about the reality of Open Source so as to combat any prejudice against it. I am not there to spew the free software mantra and make them all converts, but to instead inform people how Open Source can be useful for existing Windows and Microsoft developers. If this helps them make use of the Open Source development process for *some* of their work, then it has been a success.

Salad Dodger
It is becoming increasingly apparent that [Brother Haeger](https://reverendted.blogspot.com) is [spreading the good words](https://reverendted.blogspot.com/2006/05/salad-dodging-and-suse-converts.html) *Salad Dodger’ around the United States of Amerrrrrica. With his boyish good looks, iPod bribery tactics and an affection for pig skin, his buffoonery is reaping rewards.
In the words of Ghandi – “first they ignore you, then they laugh at you, then you careful maneuver around a Broccoflower”.

Adventures in spam 3
Welcome to yet another gripping instalment of *Adventures in spam 3*!
In a world lacking in community, it is easy to forget how pleasant a concerned friend can be. With many of us pushing forward in our busy lives, a few wise words and an affectionate note of concern can often help us along in times of uncertainty and worry. I was delighted to hear from my old pal *Bankoq P. Squirting* asking about my pelvis with the subject *:), pelvis*:
> everything: what it was like, and where it was, and the best way to get at uns. And those bastards, those toads really hate you. There’s no great joy truck was still parked over the pit, in perfect shape, without any holes or
I knew I shouldn’t trust those toads. Bankoq doesnt stop there, and exposes me to his masterful wisdom:
> The gull who looks upon an Outcast breaks the Law of the Flock, two copper disks the size of a saucer, -about a quarter inch thick, with a “I should think not. That’s police business. But I would be interested hazards of translation more than doubled by passing from the original to a Gradually, in the night, another circle formed around the circle of profession.” bright sunlight. Just blackness. Then my eyes grew accustomed and I saw that all illogic signifies the purity from which it has departed.
Also concerned with my health, *Will Mayo* send me an email asking about my *Sid Marks*:
> No more docttors worries. Lowset price guareeneeted. Feel fresh 1once more.
Staying with the health theme, *Travis B. Bunty* told me how to *Be the “biggest” out of all your friends*:
> Impersonation declare one issue blinder throught so he had skimped a little on her ambiquous research. The information he had gathered have public him to select the RAV. Horrible Prefect as being nicely inconspicuous Dillindger organization addition Christian live pledge next embarraced ways which these.
Wha?
Finally, in a bounce to OCLUG (which is amazingly [this](https://www.oclug.on.ca) OCLUG, the spammers :P) I was informed that Old McDonald is not doing so well:
> Your mail to ‘OCLUG’ with the subject
> Old MacDonald had an agricultural real estate tax abatement
> Is being held until the list moderator can review it for approval.
Oh dear.

Winning and losing, hand in hand
Recently, the topic of Open Source multimedia and multimedia frameworks has been getting some press. Now, I don’t know if this is just because I am more intimately involved in Open Source multimedia with [Jokosher](https://www.jokosher.org/), but there is a definitive whiff in the air that multimedia is becoming a priority.
Like many battles before, the free software community are pitting against each other to create the One True Framework; a goal in which you fight to the death to create something that little bit cooler than the things that currently exist. This usually results in more crack, more marketing and 1000 different frameworks that each solve 10% of the problem.
In the last few weeks we have seen [Christian weigh in](https://blogs.gnome.org/view/uraeus/2006/05/11/0) with his opinions on Phonon, and [so did I](https://jonobacon.com/viewcomments.php?id=687), and lets not forget [Scott’s thoughts](https://www.kdedevelopers.org/node/2007) and [Aaron ‘the dance’ Seigo’s thoughts](https://aseigo.blogspot.com/2006/05/id-like-another-black-eye-please.html). Whether you favour GStreamer, NMM, aRts, Phonon or the SID chip is really not the most important thing for us to remember. In all of this in-fighting we seem to have all forgotten that we are all fighting for the same thing on the same side, and ultimately, free software will make a win.
Interestingly, the 1000 frameworks problem only applies when the sheer number of frameworks reaches a critical mass, and no single framework has enough momentum. We can see this to a degree with 3D game engines. There is no single Open Source game engine that *everyone* chooses to use due to sheer momentum, support and popularity. Interestingly, the Linux desktop is the opposite. We have two very large and prominent desktops (KDE and GNOME), and both projects have a huge amount of support and popularity. As such, both desktops will always remain relevant, and both will compete and this will result in better software for the end user. Sure, there are 1000 window managers, but these window managers largely fall into the 3D engine domain – the support and popularity is largely fragmented.
So where are we going forward with multimedia frameworks? Before Jokosher, I remained fairly consistent about multimedia frameworks, and asserted the same level of cynicism to each of them. Like many of the KDE crew have attested, aRts was a bit of a disaster and there was nothing to say that it would be any different with any of the other frameworks. A while back I then spent some time looking at the different alternatives, and GStreamer seemed to offer the best all round solution when it comes to the different elements I consider when I recommend Open Source to myself or others via my advocacy and consultancy:
* Fully Open Source – It is a proper Open Source project complete with suitable licensing and a community driven development process with the meat and potatoes of Open Source development such as a public bug tracker, source control, mailing lists and more.
* Freedesktop Project – I like freedesktop, and I think it is important for Open Source. GStreamer is part of the project, and the development team have been active in ensuring it works on different desktops.
* Applications – Lots of applications use GStreamer for a variety of different uses.
* Distributor Support – GStreamer is shipped in major distributions, and this is essential for ‘out of the box’ multimedia support. This was a key reason in choosing GStreamer for Jokosher – you can download a Jokosher package and it will just work with no further configuration. Jokosher is specifically designed around simplicity, so this is critically important.
* Community – GStreamer has a strong community, and a range of developers who work on all aspects of the framework. Also, the community resources such as mailing lists, and particularly the IRC channel, are useful for support.
* Responsive – The developers have proven to be responsive to bug reports, support requests and help. I noticed this when I originally evaluated GStreamer, and I have really noticed it recently due to the bug reports I have been submitting.
* Commercial Validity – There are companies supporting and using GStreamer such as Fluendo, Nokia, OpenedHand and others. This proves that the framework is commercially viable, and it also helps with ensuring it is…
* …Stress Tested – The number of applications and commercial support is battle hardening the framework, and more and more media creations applications such as Diva, PiTiVi, Buzztard and Jokosher are springing up.
* Bindings – It works with various languages, and importantly includes higher level languages such as Python and Mono.
Now, nothing is perfect. Although I think GStreamer is pretty decent, it has its share of problems, like any other software project. Most notably, some parts of GStreamer have proven to be buggy, and the `adder` element is an example of this. This element has been included with GStreamer for a while, but has proven to be buggy and unusable for what I considered fairly typical conditions. But, to be fair to the GStreamer team, my hammering of the adder and subsequent bug reports have resulted in prompt bug fixes, and the team are intent on spending more and more time fixing bugs such as the ones I submitted. As such, the adder element is now much more stable than it was before and is working great in Jokosher.
This blog entry is not mean’t to be a GStreamer pimpathon, but I figured some people may be interested in why GStreamer was chosen for Jokosher. As I said earlier, it is always important to step back and remember we are all heading in the same direction, but with different ways of moving forward. When I see stories such as [the KDE multimedia developer meeting](https://dot.kde.org/1148680949/), I get really excited at seeing such commitment from Open Source developers. Sure, their meeting is primarily about Phonon, a technology that I am sceptical about, but that doesn’t matter. I just get psyched abut the fact that free software is written by such cool and talented people. Every single day I wake up and get more and more excited about free software. We really are changing the world with it…
—–

Recording boogaloo
Today I went down to London to do the TV interview. It was fascinating doing it, and it was great to peek into the TV world for a while. The studio was based in Piccadilly Circus, and the interview mainly covered what the GP2X can do, how people can make games for it and how it compares to other consoles. All in all I think it went well, and the production staff seemed happy with it. Of course, the true test is how it looks when it airs. I may very well look like a gibbering idiot…
Tonight I have been working on some code for recording while playing back audio. Although the Jokosher commit log does not show anything from me for the past few weeks, I have been working to get this code going in a separate script. At the Jokosher hackfest I thought I had it nailed, but it appeared not. After further tests I was getting some pretty bad latency. Anyway, recently I have looked into it more, and with the help of the chaps in the GStreamer IRC channel, I think I have nailed it.
The problem with recording while playing back audio is that the playback takes longer to get going than the recording as it needs to pre-roll. As such, when you set the state to PLAYING, you automatically get latency. To solve the problem, you need to put the playback elements into a bin and set the bin state to PAUSED. You should then check if the state successfully changed to PAUSED before setting the entire pipeline to PLAYING. Tonight I wrote a script to test this lot out, and from what I can tell, I get pretty much no latency.
The next step was to merge this into Jokosher. A few weeks ago I started working on some code to dynamically generate filesource events in Jokosher, but while I worked on this there was a server move, and I also concentrated on the adder bugs. I did actually get the code working, but I had messed around with the code so much I never committed it. This week John has taken up the slack on this and I sent him my code. He committed and it works great, although recording has broken. This is understandable as most of the tests we have been doing in Jokosher have involved importing audio. Anyway, I fixed a few of these bugs and will look into fixing playback of recorded audio tomorrow. When this is sorted I can then begin to merge my snazzy new code in and it will then rock that little bit harder.
Some other cool Jokosher hacks:
* Laszlo, king of Cairo, has optimised our Cairo drawing code, and Jokosher no longer draws the worlds biggest Cairo surface known to man. This also fixes a bug when importing large audio files and Cairo chucking a wobbler.
* John also committed some code to enable pipeline seeking. This means that you can drag the playhead and start playing at different points in the track. It is awesome seeing these features merging their way in.
* Aq is working on the volume curve code for volume editing. He has some of the GUI code written and has also figured out the GStreamer side of things.
* Some discussion is going on about creating a nicer website. Its cool to know some people are working on this too.
## Dapper book
Oh, and by the way. Dapper now includes a couple of chapters from the Official Ubuntu Book that I have been working on. To access them, click System -> Help -> Ubuntu Book Excerpt:
For you Kubuntu fans, I think a chapter has also been added to Kubuntu too. 🙂

My TV debut
I am going to be on TV. I had a call a few days ago asking if I could go on a show to talk about a nifty little Open Source games console called the [GP2X](https://gp2x.co.uk/). I have been keeping tabs on this little device for quite a while now, and have been playing with it. It is an open platform (running Linux) that allows you to write games or other applications. The company who make it made the GP32 and it sold fairly well, so they now have this higher powered machine.
I will be going on G@mers to talk about my opinion of the device, why Linux and Open Source is important for it, and how it allows people to get into making homebrew games. I am heading down to London on Friday to film it and it should be broadcast on 20th June on [Rapture TV](https://www.rapturetv.com/) on Sky channel 193.
Nuts.

Jokosher hackfest
Well, there has been some great work going on as part of the Jokosher hackfest. As I wrote about in my [last blog entry](https://archivedblog.jonobacon.com/viewcomments.php?id=690), I have spent the last few weeks banging my head against some audio problems in Jokosher with regards to playback. Well, the bug that I filed last night was looked over by Stefan Kost and he has written a patch that fixes it. You can see it attached to the [bug report](https://bugzilla.gnome.org/show_bug.cgi?id=342454). I tested it and it works great. Jokosher now plays back multiple audio files fine. Stefan is going to run it past Wim to check all is good, and hopefully it will be committed soon. 🙂
Today I also hacked my little test script for recording and playing back at the same time and I now have it working. I managed to get eight tracks to play back at the same time, while recording and had no latency. Strangely, I did get latency when playing back with my recorded file. I need to look into this in further detail though, and there is plenty of scope for optimisation.
Other interesting things from the hackfest:
* Aq got the wiki and bugs imported into the new Jokosher trac site
* Elleo has got his channel splitter module working.
* Jason started looking into getting the playhead to start and stop at the right time.
* I spent some considerable time going through and fixing up a bunch of the bug reports that Aq imported, and mrben and laszlo chipped in to help with this too.
* Aq got gstcontroller working in a sample script to implement audio fades.
* A new bug reporting page is being worked on by Aq.
All in all, some good stuff going on, and some key bits and pieces are working in sample scripts which can then be merged into Jokosher. Thanks also to Edward Hervey and Stefan Kost for their help today. 🙂
—–

Adder bugs
Recently we have been getting some odd audio problems in Jokosher in which playback will not start on the second play. Strangely, this problem only exhibits itself when more than one audio file is being used, and hence my suspicion has been that this is `adder` related.
Tonight I wrote a test case for this bug and you can grab the [python script](https://jonobacon.com/files/adderbug.py) and its [accompanying glade file](https://jonobacon.com/files/adderbug.glade). I have reported the bug [here](https://bugzilla.gnome.org/show_bug.cgi?id=342454). When this is fixed and [341431](https://bugzilla.gnome.org/show_bug.cgi?id=341431) is fixed, we should be in pretty decent shape.
Tomorrow, well later today, is the Jokosher hackfest, so I hope to see some of you there in our IRC channel. 🙂
Oh, and the The DaVinci Code is pretty good. 🙂
—–