Fast Rounding of Floating Point Numbers on Wintel
Platform
This document proposes and explains methods to achieve fast rounding of
numbers on Windows/Intel platform. Examples in C/C++ and x86 assembler.

SplitMix
A double send-return pedal for guitar & bass, for switching between two different effect chains.
It splits the signal into two paths and brings their output together into a single output.
Return signal can be mixed or selected via a footswitch.
Uses JFET buffers, requires 9V power.
Circuit is build on a perfboard.
The archive includes KiCAD schematics and layout, pictures of the pedal, as well as drawings to locate components and tracks.

Everything in this section is free of use, unless something different is
specified in the files. I would appreciate that you quote me if you are reusing
my work in your own projects. Thank you for reporting me any error or bug you
could found.

Audio related

FFTReal
A C++ and Delphi class computing FFT on vectors of real numbers and their
inverse FFT. Fairly optimized, free. Thanks to Frederic Vanmol for the
Delphi port. The v2 is a bit more sophisticated.

Resampler
A C++ library for high-fidelity resampling. Designed for real-time software
samplers and synthesisers. CPU-friendly. Implements the technique described
in my article The Quest For The Perfect
Resampler.

HIIR
A library in C++ for: 1. Changing the sampling rate of a signal by a factor
two, in both directions (upsampling and downsampling); 2. Obtaining two
signals with a π/2 phase difference (Hilbert transform). It is made of a
two-path polyphase IIR filter, implemented with FPU, 3DNow! and SSE instruction
sets.

Comprez2000 submission
My submission for the Comprez2000 competition. Goal: to generate automatically
a complete piece of music (PCM stereo file) with less than 5000 lines of C
source code. Shamefully, i2pi, the
competition organizer, gave up without giving any news.

Synthesis of alias-free analogue waveforms
A C++ implementation of the BLIT method (Band-Limited Impulse Train) described
in the article
Alias-Free Digital
Synthesis of Classic Analog Waveforms. This is more a proof of concept
than something really usable and optimized. Anyway the ideas are here.

3DNow! biquad filter
An example of 2-pole IIR filtering with AMD 3DNow! instruction set. It
processes two signals at a time, as interleaved stereo stream. Quite fast:
7.75 cycles/sample. This is only a DF1 implementation of the 2nd order
equation in z-plane, not a full-featured filter designer. Inline assembly code
for MSVC++.

WAV file splitter
This program was intended to split .WAV files coming from sample-CD audio
tracks. Indeed these tracks often contain many sounds separated by silence.
It produces as much files, removing the silence parts. C++ source code.

Graoumf Tracker 2
This is a music program (a soundtracker) for Windows, sequel of the
popular Graoumf Tracker on Atari.
It’s an awful mix of C and C++, I was learning these languages at this
time !
The current version is working and usable, but some functions are still missing.
I still sporadically update the program, because
dDamage heavily uses it as a composing
tool.

.AY files are music files from Amstrad CPC and Sinclair ZX Spectrum computers.
Based on the Zilog Z80 CPU + Yamaha AY-3-8910/8912 (also called PSG) soundchip
combination, they contain music data as well as the executable code required
to play it back on the original computer. The following programs are tools for
playing these tunes or helping people with good Z80 assembler knowledge to
extract music from CPC programs (you’ll also need
AYMakeR and
CPCSNIP).

z80span
Displays a rough map of the memory used by the code of a program
for the Z80 CPU. Starting from a given point, it studies all the branch
possibilities and helps to localise code of an unknown program. Executable
for Windows and cross-platform C++ source code.

Dither Avisynth tools
This package for Avisynth
can manipulate video signals with up to 16 bits per component.
Note: from the versions 1.26 and above, “mod16” dfttest
and MVTools are not included in this package anymore and are ditributed
separately (see below).

DeSpot — Dust, sparkle and hair removal
A modified version of the DeSpot plug-in, allowing to dump the masks of the
detected spots in an Aegisub file for
further editing.
Originally developed by Fizick.

EEDI3 — edge-directed interpolation
A modified version of the EEDI3 plug-in, an intra-frame deinterlacer often
used as building block for anti-aliasing scripts.
This version includes masking and SSE2 optimizations.
Originally developed by Tritical.

AVSTP — Multi-threading for Avisynth plug-ins
This is a library and a set of helper classes making easy the
development of efficient multi-threaded Avisynth plug-ins.
A limited number of threads are shared by the running plug-ins (threadpool concept).

trimx264opt
A command-line tool for x264.
It adapts frame-based parameters (qpfile, zones and timecodes) to encode a
specific segment of a file.
Several segments can be joined together to form the final file, as if it
was encoded in one go.
Contains encode-part.bat, a helper script to make segmented
encoding easier.

rendezvous
A program to synchronise several simultaneously running batch files.
It waits for N calls to rendezvous with the same given identifier
before continuing.
Not strictly related to video processing but damn useful in this area.

DiffEvol — Differential Evolution
C++ and Delphi class implementing
Differential
Evolution, a very good genetic algorithm. Its purpose is to find a set of
parameters minimizing a continuous « cost » function. I
used it a lot to find filter coefficients or other things hard to guess or
compute.

Stopwatch
A C++ library for measuring time at the CPU clock level. It can profile
functions very accurately, and could help to optimise them. Very easy to use.
Currently for Windows, Linux x86 and MacOS.

SharedPtr — Smart pointer
C++ class of smart pointer. It behaves like a classic pointer, but counts the
references on the object and automatically destructs it when the last SharedPtr
has been destructed. No more delete needed. This class may drastically improve
your code reliability.

MS Visual C++ macros
I developed these VBScript macros for Ohm Force. They provide automatic header
generation for .h, .cpp and .hpp files, as well as intelligent function
comment templates - just fill the blanks. There is also a macro to turn
member function prototypes into well pre-filled functions with assert()ed
parameters, etc. They are adapted to the Ohm Force’s code writing rules.

School schedule generator
This my 1st year project in C language at the French engineering shool
ISEP. It consists in generating automatically
a school schedule given realistic constraints, such as teacher disponibilities,
facilities, classroom/lab capacities, holidays, etc. C source, includes
documentation. Almost everything is in French language. Done with my friend
and classmate Eric Lalitte.

The files below are plug-ins (called machines) for the
Buzz music program by Oskari
Tammelin. I used Buzz a lot to experiment audio programming, because of its
modularity and ease of use. Some of them were proof of concept or early
prototypes for Ohm Force plug-ins. I
have publicly released only the most finished machines under the
FireSledge pseudonym.

Audio effects

ParamEQ
Parametric equalizer with adjustable number of channels. Constant-Q settings
for intuitive control. Each channel can be either a Low-Shelf, High-Shelf or a
Peak/Notch filter. Includes source code
(LGPL).

Rectal Anarchy
Very simple Lo-Fi synthesiser. Features a formant filter, making it able to
emulate human voice. 5 vowels are synthesisable with 5 kinds of voice (bass,
soprano, etc). C++ source code included
(WTFPL).

Soundtrackers were the first tools of the computer-only music era. They were
characterised by their austerity, making them look like hexadecimal hacking
programs, and their total lack of liveness. Conversely, they allowed ultra-fast
composing and great ease of use once mastered.

Well, below are quite old songs, and they are not very glorious... They are
listed in alphabetical order. Numbering of the Dreamxx songs is roughly
chronological. Some modules contain two complete songs, some contain a few
draft patterns at the end. Hopefully I have not published my earlier experiment
in musical field (musical, really ?), made with Quartet on Atari ST.

Radical Race
6 modules I produced for the game
Radical
Race by the Pentagon team, published by Logitron. They are GT2 but are
restricted to MOD specifications because they were converted into this format
to be played by the game engine.

Clipboard decoder for Captive video game
Captive was an addicting video game (author Anthony Crowther, published by
Mindscape) in the 90’s, based on an automatically generated mazes. Some doors
were locked by codes written on clipboards which could be found on the ground
or on monster-scientists. Unfortunatly there was a bug in the first software
release - a clipboard was behind the door it opened. So I
rev-engineered the system and came up with a program able to generate any
code for this game. The original program was in GfA Basic, this is the C
translation. I also added the Perl and JavaScript versions by Chris Pile.

Captive God
Another tool for Captive. This one works in conjunction with
STEem, the Atari ST emulator for Windows,
on which you can run this game. It shows the complete map of the maze, finds
paths for your droids, shows puzzle solutions, and much more... C++ source
code included.