Rocket is an intuitive new way of... bah, whatever. It's a sync-tracker, a tool for synchronizing music and visuals in demoscene productions. It consists of a GUI editor (using Qt5), and an ANSI C library that can either communicate with the editor over a network socket, or play back an exported data-set.
The Rocket editor uses qmake as a build-system abstraction, which can be used to output Makefiles, Microsoft Visual Studio project files or can be built directly from QtCreator. See the qmake documentation for details.
Rocket contains an example client called
example_bass. This is a simple
OpenGL, SDL 1.2 and BASS audio library application, that demonstrates how to
use the Rocket API.
If you're using Microsoft Visual Studio 2013 or above, this should happen automatically, as these libraries are consumed through NuGet.
The header files and libraries can be installed local to the project by
copying all .lib-files to
examples/lib/, all .h files to
examples/include/, and all .dll files to
Once the prerequisites are installed, the example can be compiled either by
opening examples.sln and selecting
Build Solution from Visual
Studio 2008 or 2013, or by doing
make examples/example_bass on Unix-based
Rocket should work out-of-the-box using
devkitPPC. However, before
sync_create_device, you should init the FAT filesystem and the
network interface, eg. by calling respectively
Make sure DNS is also set up correctly when testing on real hardware.
Using the editor
The Rocket editor is laid out like a music-tracker; tracks (or columns) and rows. Each track represents a separate "variable" in the demo, over the entire time-domain of the demo. Each row represents a specific point in time, and consists of a set of key frames. The key frames are interpolated over time according to their interpolation modes.
Each key frame has an interpolation mode associated with it, and that interpolation mode is valid until the next key frame is reached. The different interpolation modes are the following:
- Step : This is the simplest mode, and always returns the key's value.
- Linear : This does a linear interpolation between the current and the next key's values.
- Smooth : This interpolates in a smooth fashion, the exact function is what is usually called "smoothstep". Do not confuse this mode with splines; this only interpolates smoothly between two different values, it does not try to calculate tangents or any such things.
- Ramp : This is similar to "Linear", but additionally applies an exponentiation of the interpolation factor.
Some of the Rocket editor's features are available through the menu and some keyboard shortcut. Here's a list of the supported keyboard shortcuts:
|PgUp/PgDn||Move cursor 16 rows up/down|
|Home/End||Move cursor to begining/end|
|Enter||Enter key frame value|
|Del||Delete key frame|
|i||Enumerate interpolation mode|
|Alt+PgUp/PgDn||Go to prev/next row-bookmark|
|Ctrl+B||Bias key frames|
|Shift+Ctrl+Up/Down||Quick-bias by +/- 0.1|
|Ctrl+Up/Down||Quick-bias by +/- 1|
|Ctrl+PgUp/PgDn||Quick-bias by +/- 10|
|Shift+Ctrl+PgUp/PgDn||Quick-bias by +/- 100|
Alternatives and ports
- PBRocket, a PureBasic port of the Rocket editor, client and player.
- RocketEditor, an alternative editor written in pure C using OpenGL for the GUI.
- GroundControl, an alternative editor written in C# using WPF for the GUI.
- RocketNet, a pure .NET implementation of the client and player.
- Moonlander, a Java implementation of the client and player, for integration with Processing.
- pyrocket, a Python 3 implementation of the client and player.
- Rust Rocket, a Rust implementation of the client and player. Crate available here.
Bugs and feedback
Please report bugs or other feedback to the Rocket mailing list: firstname.lastname@example.org