PyroPlayer Post Banner

Introducing PyroPlayer

I love fireworks. At the crossing between science and art, beauty and power… So when last year, we were proposed my friend Adrien and I to develop a fireworks launch system, I immediately got very enthusiastic about the idea. And not only for the finality, but also because it was the perfect project to deploy the technologies we love.

Together with Adrien, we reviewed a panel of technologies before making our decision. We wanted to be able to prototype something rapidly, we had only 3 months before the first show. Boxes are built on top of Arduinos and XBee modules together with a special power cape we developed. Extensible, plug-and-play, and reusable. On the software side, we also had the constraint to be cross-platform. And to glue bricks together in a quick and clean way, what other language than Python?

Selecting the graphical toolkit was a tougher decision. Out of all the cross-platform libraries, two are clearly above: Qt and GTK. From experience, I knew that UI design is easier in GTK. Glade is very powerful and I prefer GtkBuilder with its dynamic loading over QtDesigner and its code generator that freezes the UI in an awful blob of code. But I was afraid of the support of GTK 3 on the other platforms than Linux. Especially together with GObject Introspection. Finally, it’s the multimedia toolkit that gave a final period to the story, as I could not find a proper solution for Python and Qt together. While GStreamer is perfectly integrated with GLib and GTK, it is difficult to find something that goes along with Qt and does a little bit more than playing a video in a widget. And if you add Python in the balance, there is simply nothing convincing.

Hopefully, I never had regrets about this choice. Using GObject Introspection, you get not only a good graphical framework, but a complete ecosystem of libraries tightly integrated together, sharing coding conventions and documentation philosophy, along with a reactive and helpful community. And though I hope that the support for other platforms than GNOME will improve, it revealed to be of a very sufficient and stable state for our target platforms. Did I say GNOME? But I mean it. Not only Windows and Mac requires some love from the GTK guys but also other Linux desktops, where the integration of GTK applications slowly sinks to something disappointing.

Our workflow also included Git, trac, Kicad and FreeCad, each incredibly powerful, professional and we loved working with all of them. Who said FOSS isn’t a serious  alternative? Our code is also Open Source, but at the moment, it is not free. I hope this will change in the future but meanwhile, I released the code for the music thumbnail widget, derived from Pitivi’s.