Top ! » Blog

Hello !

This month I've been continuing to rewrite the cuelist code using POD structs, contiguous arrays and custom memory allocators. (Along the way I also started adding support for selecting/moving/deleting multiple cues in the timeline.)

It's been kind of a complete rewrite, because the gui code and the playback transport logic depended heavily on the structure of the cuelist. Which is another lesson learnt the hard way, that OOP doesn't really help with separation of concern. In fact in my case it merely lead me to try to hide cross-cutting concerns that I should have ...
Read More →

Hello !

This month I started to rewrite the cuelist subsystem of Top !, using a more low level style and trying to avoid the pitfalls of my first implementation.

That subsystem it responsible for organizing the cues into a cuelist (which is really a tree as group cues can contain other cues), allowing the user to select, insert, delete and move cues into the hierarchy. It also dispatches the gui update requests, recursively computes the timing values through the hierarchy to synchronize everybody, and passes the audio rendering requests to each cue. So it is really the backbone of it all ...
Read More →

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 →

Top ! alpha build 0.0.3

Martin Fouilleul  — 4 months, 4 weeks ago

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  — 6 months, 2 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 →

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 →