Top ! » Blog

Hello !

Here's the third part of my description of Top !'s vector graphics renderer. It will discuss the practical aspects of passing down data to the GPU with OpenGL and trying to optimize the performance of the renderer. (it will not explain all the steps to setup and manage OpenGL, so some familiarity with OpenGL API and GLSL may be required).

In Part 1 we saw how paths were built with GraphicsMoveTo(), GraphicsLineTo() and GraphicsCurveTo() functions, and how path stroking was implemented in GraphicsStroke().
In Part 2 we discussed polygon triangulation algorithms and how they were used to fill ...
Read More →


This month I have been pretty busy replacing the whole rendering system of Top's user interface, which was based on Cairo Graphics, with my own handmade vector graphics renderer, using OpenGL. I discussed in a previous post the reasons why I wanted to drop Cairo, but in short : it's adding a bunch of dependencies we don't fully use, it complexifies the building and bundling of the application, and it's quite slow using either the software or the Quartz backend.

I'm pretty happy with the new renderer, and I will put a new build online ...
Read More →

Hello !

This is the second part to my series of posts describing the 2D vector graphics system behind Top's user interface. This one will focus on the triangulation of polygons, an essential operation when filling user-defined paths.

Note : if you find notations (especially mathematical ones) hard to read, this post is also available here with (hopefully) better formatting. I couldn't achieve the same formatting here with BBCode.

As we saw in the previous post, the user can describe a path using line segments and cubic Bezier curves. But as we can approximate those curves with series of line ...
Read More →


This month I mainly worked on a debugging/profiling infrastructure for Top !, in order to, uh well, debug and profile stuff.
It will enable me to track down some bugs and to identify hotspots more conveniently, and maybe provide a base for a small built-in performance diagnostic tool (eg. showing DSP load, plug-ins processing time, file access/buffering overhead, etc...).

This means there is little visible change overall, but I thought it was worth putting on new build online anyway, as it comes along with some bug fixes and minor changes :

  • Fixed various thread related bugs crashing the audio ...
Read More →

Top ! features are still moving and nothing is really definitive here, but I thought this could do no harm to explain a bit about how it is supposed to work anyhow. So if you happen to work with sound "accompaniments" to live shows (let's call it that way to include audio elements of theatre, dance, events, radio programs and so on), you can try it for yourself and play around its core principles... and even make me some comment if you're so inclined !

Top ! is based on "Cues", each of which correspond to some event or action happening ...
Read More →

Top ! alpha 0.0.2 Update

Martin Fouilleul  — 4 months, 3 weeks ago
Here comes Top ! alpha build 0.0.2 ! This build brings an enhanced save system as well as various GUI bug fixes.

Audio files references

The updated save file format introduces an AudioFiles chunk which stores unique records to all audio files used in the cue list. Each audio cues then references its audio file by a unique identifier, rather than maintaining its own (possibly duplicated) information about the file. This allow for an easier management of broken paths in cases where the audio files or the save file are moved to another location. It also allows changing a reference ...
Read More →

Top ! joins the Handmade Network !

Martin Fouilleul  — 5 months, 2 weeks ago
Hello everyone,

Top ! is now live on the Handmade Network. It's quite something to join such an amazing community !

Constructive feedback can be hard to get, and is one of the most valuable things a community like Handmade can offer to small team or solo developers. So I will regularly write blog posts about the development of Top ! to give an overview of its structure and design decisions, as well as occasional glimpses of its code, and most certainly, a lot of open questions. I hope you'll be interested in following the progress of Top ! and I'm ...
Read More →