Loud ramblings of a Software Artisan

Saturday 11 July 2020

Introducing Minuit

It all started with a sketch on paper (beware of my poor penmanship).

Sketch of a UI

I was thinking how I can build a musical instrument in software. Nothing new here actually, there are even applications like VMPK that fit the bill. But this is also about learning as I have started to be interested in music software.

This is how Minuit is born. The name come from a mix of a play on word where, in French, Minuit is midnight and MIDI is midday. MIDI of course is the acronym Musical Instrument Digital Interface, which is the technology at the heart of computer aided music. Also minuit sounds a bit like minuet which is a dance of social origin.

I have several goals here:

  1. learn about MIDI: The application can be controlled using MIDI.
  2. learn about audio: Of course you have to output audio, so now is the best time to learn about it.
  3. learn about music synthesis: for now I use existing software to do so. The first instrument was ripped off Qwertone, to produce a simple tone, and the second is just Rhodes toy piano using soundfonts.
  4. learn about audio plugins: the best way to bring new instruments is to use existing plugins, and there is a large selection of them that are libre.

Of course, I will use Rust for that, and that means I will have to deal with the gaps found in the Rust ecosystem, notably by interfacing libraries that are meant to be used from C or C++.

I also had to create a custom widget for the piano input, and for this I basically rewrote in Rust a widget I found in libgtkmusic that were written in Vala. That allowed me to be refine my tutorial on subclassing Gtk widgets in rust.

To add to the learning, I decided to do everything in Builder instead of my usual Emacs + Terminal combo, and I have to say it is awesome! It is good to start using tools you are not used to (ch, ch, changes!).

In end the first working version look like this:

Basic UI for Minuit showing the piano widget and instrument selection

But I didn't stop here. After some weeks off doing other things, I resumed. I was wondering, since I have a soundfont player, if I could turn this into a generic soundfont player. So I got to this:

Phase 1 of UI change for fluidlite

Then iterated on the idea, learning about banks and preset for soundfont, which is straight off MIDI, and made the UI look like this:

Phase 2 of the UI change for fluidlite

Non configurable instruments have a placeholder:

UI for generic instrument placeholder

There is no release yet, but it is getting close to the MVP. I am still missing an icon.

My focus forward will be:

  1. focus on user experience. Make this a versatile musical instrument, for which the technology is a mean not an end.
  2. focus on versatility by bringing more tones. I'd like to avoid the free form plugins but rather integrated plugins into the app, however leveraging that plugin architecture whenever possible.
  3. explore other ideas in the musical creativity.

The repository is hosted on GNOME gitlab.

Friday 10 March 2017

So, I got a Dell

Long. Overdue. Upgrade.

I bought a Dell XPS13 as my new portable workstation for Linux and GNOME. This is the model 9360 that is currently available as in a Developer Edition with Ubuntu 16.04 LTS (project Sputnik for those who follow). It satisifies all I was looking for in a laptop: lightweigh, small 13", 16 GB of RAM (at least), core i7 CPU (this is a Kaby Lake) and must run Linux well.

But I didn't buy the Developer Edition. Price-wise the Developer Edition is CAD$150 less than the Windows version in the "business" line and CAD$50 less than the Windows version in the "home" line (which only has that version). Exact same hardware. Last week, it was on sale, CAD$500 off the regular price, so it didn't matter. I got one. I had delayed so long for getting one, this was the opportunity for a bargain. I double checked, and unlike the previous Skylake based model that didn't have the same wifi card, this one is really the same thing.

I got a surprise door bell ring, from the delivery person (the website didn't tell me it was en route).


The black box

It came in a box that contain a cardboard wrap and a nice black box. The cardboard wrap contain the power brick and the AC cord. I'm genuinely surprised of the power adapter. It is small, smaller than what I'm used to. It is just odd that it doesn't come in the same box as the laptop (not a separate shipping box, just that it is boxes in a box, shipped to you at once). The nice black box only bear the Dell logo and contain the laptop, and two small booklets. One is for the warranty, the other is a getting started guide. Interestingly it mentions Ubuntu as well, which lead me to think that it is same for both preloads. This doesn't really matter in the end but it just show the level of refinement for a high-end laptop, which until the last Apple refresh, was still more expensive than the Apple equivalent.

New laptop...

Fiddling with the BIOS

It took me more time to download the Fedora live ISO and flash it to the USB stick than the actual setup of the machine, minus some fiddling. As I had booted, Fedora 25 was installed in 20 minutes. I did wipe the internal SSD, BTW.

Once I figured out it was F2 I had to press to get the BIOS upon boot, to set it to boot off the USB drive, I also had to configure the disk controller to AHCI instead of RAID, as without that the Fedora installed didn't find the internal storage. Note that this might be more troublesome if you want dual boot, but I didn't want. also I don't know what's the default setup in the Developer Edition either.

Dell XPS13 BIOS configuration

Nonetheless, the Fedora installer worked well with mostly defaults. HiDPI is managed, which that I finally have a laptop with "Retina Display".

Hands on

The laptop is small, with a HiDPI screen, a decent trackpad that works out of the box with two finger scrolling. An aluminium shell with a non glowing logo in he middle, a black inside with keyboard, and glass touch screen. The backlit keyboard has a row of function keys at the top, like it should be, row that dub as "media" button with the Fn key or actually without. Much like on a MacBook. The only difference that will require me to get used to is the Control key is actually in the corner. Like it used to be... (not sure if that's on all Dell though, but I remember hating not have control in the corner, then got used to to it like there was no option, and that was more than a decade ago). That will make for a finger reeducation, that's sure. The whole laptop a good size, it is very compact. Light but solid.

As for the connectivity, there is a SD card reader, 2 USB 3.0 port (A type) and a USB 3.1 Type-C that carries HDMI and Thunderbolt. For HDMI looks like a CAD$30 adapter, but it seems to be standard so might not be a huge problem.


I am happy with it. GNOME is beautiful in HiDPI, and it is all smooth.

Wednesday 13 August 2014

I was at Guadec

Guadec 2014 Volunteers

I was at Guadec in Strasbourg - thanks to all the volunteers who helped making this event possible.. For those who don't know Guadec is the annual Gnome User And Developer European Conference. I hadn't attended since 2008 — such is life — but I reconnected with people I hadn't seen in a while, as well as met awesome people that joined the project since. Attending this year made me regain a lot of motivation on why a Free Software desktop and why Gnome are really necessary. This is even more important as to why at Mozilla I use Fedora Linux rather than MacOS X like most of my team mates —*hint* at least on Fedora I don't have code signing break existing apps, and I have a real full screen browser to use to do presentation based on web technologies or even the risk that one day third party browser be barred like they are on iOS — and it is important to keep the alternatives alive. And Matthew Garrett gave us, during his keynote, good arguments on the importance of a Free Software desktop designed with users in mind.

I'll defintely try to figure out how I can make it to Göteborg, Sweden next year ; this year was facilitated by having a work week in Paris just before Guadec. Maybe I'll even present something as I resumed working on my projects.

Sunday 20 July 2014

Going to Guadec

For the first time since 2008, when it was in Istanbul, I'm coming to Guadec. This time it is in Strasbourg, France. Thanks to a work week scheduled just before in Paris.

I won't present anything this year, but I hope to be able to catch up a bit more with the Gnome community. I was already at the summit last fall, as it was being held in Montréal, but Guadec participation is usually broader and wider.

Tuesday 31 January 2012

We need a Gnome computer

tl;dr we need a Gnome computer.

This is not about choice, it is about freedom.

A hardware platform that would be libre, that would run a libre OS, based on Gnome, Linux and GNU.

A hardware platform whose software stack would be vertically integrated for a maximum user experience: working out of the box, as advertised.

And for those who think it is about choice, think again. Choice is dealing with a bazillion different hardware configuration, drivers, etc. Dealing with more poorly written drivers (usually from hardware vendors) or proprietary (hello GPU driver) or even buggy firmware.

Next will come the portable devices: tablet, phones, etc.

Sunday 13 November 2011

geglmm 0.1.6

I just pushed out of the door Geglmm 0.1.6, the C++ bindings for GEGL. Nothing very special, they just needed an update.


Friday 10 July 2009

I write code

I don't know what the meme is about but:


nuf said.

Saturday 16 May 2009

libpanelappletmm 2.26.0

libpanelappletmm 2.26.0 has been pushed out of the door.

The main reason for that was the removal of libgnome* causing 2.22 to not build as is with GNOME 2.26.

It is available on the GNOME FTP

Wednesday 1 April 2009

porting to C++

In my attempts to fight my own boredom, as an unemployed hacker[1], I took on myself to do something: porting Tomboy to C++. It is actually not that hard, just a lot of work to do manually because there is over a dozen of thousands of lines of code. This show me that the door is open to reimplementing Gtk# software (or parts) in C++ with not too many problems, making it easy to have them available for C applications.

Nonetheless there are still some challenges:

  1. Garbage collection: I replaced this with a combination of Gtkmm memory management, std::tr1::shared_ptr<> and stack allocated object. Seems to be working so far. I could also be using a garbage collector, but it seems to be unecessary.
  2. String and file path utilities: Boost has string algorithms and Boost.Filesystem
  3. XML: while XML parsing is not a big issue with the various libraries available, APIs have enough difference to make it non-trivial. I also had to write a convenient wrapper of xmlTextWriter to make my life easier.
  4. Add-ins: I don't have the support for generic addins as found in Mono. No big deal, I implemented a factory in a few lines with a couple of macros. Some core features are actually implemented as add-ins, so I had to do it. Dynamic loading shouldn't be too hard.
  5. regex: some of these core feature use regulars expression. Not a big deal if it wasn't for apparently different syntax.

To help all of this, I have implemented a small library (in the same tree) called "sharp" aimed at helping port from Gtk#. In addition to boost, I also make an extensive use of Gtkmm and libxml++.

Of course the code is available. I have set up a repository on gitorious (Edit: Apr 1st 2016) — it is in GNOME git ; gitorious is dead.(/Edit) There is no tarball yet as I still need to iron a few major bugs. On over 13KLOC of code, there are to be some :-)


[1] emphasis mine

Tuesday 17 February 2009


Over the last week I spent some time rewriting bits of the AbiWord Gtk+ code to build with GTK_DISABLE_DEPRECATED defined. It took longer than expected as I originally thought that it was no more than 4 dialogs, but I was wrong... It is like a can of worm. I also fixed a few bugs in the mean time.

Thursday 12 February 2009

Moved to git

Thanks to Owen, Niepce Digital source code repository has been moved to git.

See the cgit interface for the details.

Thursday 4 December 2008

PSA: Gnome Devroom for FOSDEM

Re-post since he is still not on Planet Gnome

teuf says:

Months go by, and it's once again time to start thinking about the upcoming FOSDEM. It will take place on the 7th and 8th February week-end in Brussels.

This year, we'll have a devroom, we'll be on our own on Saturday, but on Sunday we'll share it once again with KDE and, this is new this year, with XFCE for talks of crossdesktop interest. I just got the confirmation about the room, so organization on our side is just starting, but if you already know you are going to FOSDEM and want to give a talk, please contact me and tell me about it :)

Another good news is that we'll also have a booth (like last year). The not-so-good news is that there is noone dedicated to the organization of said booth yet, so we'd need a volunteer to coordinate everything as soon as possible :) Contact me!!!

See the original post

Tuesday 7 October 2008


For the first time I'll be at the GNOME summit in Boston. See you there.

Saturday 26 July 2008


During my demo at GUADEC, I only showed JPEG images. But RAW support is supposed to be central to Niepce Digital. Here we go. Leveraging libopenraw and GEGL, I now have basic RAW demosaicizing working. It needs several adjustments, but it is there, much better than what I achieved before.


GEGL needs to be build with the "workshop" (see configure). I already have updated my packages for openSUSE. The code will soon be pushed to SVN.

Thursday 24 July 2008

Guadec slides

Just a quick note to let people know that I have put my slides online. They are linked from lgo (in OpenDocument).

I'll provide PDF and HTML versions soon.