.:  Home  :.
.:  Productions  :.
.:  Misc  :.

  1. Articles
  2. DIY electronics
  3. Source code
    1. Audio related
    2. Daisy Seed software
    3. AY3 chiptune hacking
    4. Avisynth plug-ins and scripts
    5. Vapoursynth plug-ins
    6. Misc. video-related tools
    7. Other
  4. Buzz machines
  5. Music and sound
  6. Add-ons for video games


Introduction aux filtres numériques à topologie préservée
Article présentant des méthodes de modélisations numériques de filtres analogiques. Ces filtres sont beaucoup plus fidèles que ceux conçus classiquement à partir de transformée bilinéaire (BLT) et réagissent mieux aux changements de paramétrage.
PDF [Français]
434 ko

The Quest For The Perfect Resampler
This paper proposes a high quality, cheap and efficient solution for resampling audio signals at variable rates. Primary target applications are software synthesisers running on personal computers. Check my Resampler C++ library for example source code.
PDF [English]
771 kB
À La Recherche Du Rééchantillonneur Parfait
Cet article propose une solution de haute qualité, peu coûteuse et efficace pour le rééchantillonnage des signaux audio à des taux variables. Les principales applications concernées sont les synthétiseurs logiciels tournant sur des ordinateurs personnels. La bibliothèque C++ Resampler en est un exemple d’implémentation.
PDF [Français]
798 ko

Denormal Numbers In Floating Point Signal Processing Applications
Analysis of the calculation slowness caused by denormal floating point numbers, proposal of simple solutions to avoid them. A must-read for any programmer willing to implement signal processing algorithms on personal computer CPUs.
PDF [English]
137 kB
Les Nombres Dénormalisés Dans Les Applications De Traitement Du Signal En Virgule Flottante
Analyse des ralentissement causés par les nombres dénormalisés en virgule flottante, proposition de solutions simples pour les éviter. Indispensable pour les développeureuses désirant implémenter des algorithmes de traitement du signal sur micro-ordinateur.
PDF [Français]
152 ko

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.
PDF [English]
166 kB
Arrondis Rapides de Nombres en Virgule Flottante en C/C++ sur la plate-forme Wintel
Cet article propose et explique plusieurs méthodes d’arrondis rapides sur la plate-forme Windows/Intel. Exemples en C/C++ et en assembleur x86.
PDF [Français]
174 ko

Description of the I2S registers in the Raspberry RP1 (featured in the Pi 5). This is an addition to the official documentation, laking these information. TXT [English]
5 kB

François Partant : Que la crise s’aggrave !
Fiche de lecture du livre Que la crise s’aggrave ! de François Partant.
HTML [Français]

 DIY electronics

Pédale Vite
A multi-FX pedalboard for guitar and bass, with building instructions.
HTML [English]

Un pédalier numérique multi-effet DIY pour guitare électrique, en cours de réalisation. Plans et instructions de montage inclus.
HTML [Français]

A distortion pedal for guitar and bass with building instructions. The circuit is loosely based on the Boss DS-1 circuit but has moved quite far away from it during design. However, the idea remains broadly the same.
HTML [English]

Une pédale distorsion à construire soi-même avec instructions de montage. Le circuit est vaguement basé sur celui de la Boss DS-1 mais s’en est pas mal éloigné au cours de la conception. Toutefois l’esprit reste globalement le même.
HTML [Français]

An effect pedal for the voice with building instructions (in French at the moment). Based on a Spin FV-1 DSP.
HTML [English]

Une pédale d’effet pour la voix (réverb et autres) avec instructions de montage, à base de Spin FV-1.
HTML [Français]

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.
Download 500 kB

A simple test signal generator built around an Arduino Nano.
– Digitally generated, 200 kHz sampling rate
– Frequency knob: 10 Hz–40 kHz
– Waveform selector: sine, saw, triangle, square, rectangle (25 %)
– Anti-aliasing deactivation switch for sharp, full-range edges
– Output amplitude control
Circuit is build on a perfboard and requires 9 V power. The archive includes KiCAD schematics and layout as well as drawings to locate components and tracks.
Download 501 kB

A simple test signal generator built around a Raspberry RP2040. It’s an evolution of NanoGen1.
– Digitally generated, 1 MHz sampling rate
– Frequency knob: 10 Hz–100 kHz
– Waveform selector: sine, saw, triangle, pulse (50 %, 25 %, 75 %), gaussian white noise
– Output amplitude control
HTML [English]

Ampli pour subwoofer
Un ampli de 300 W à 500 W pour caisson de basse. Pas de page spécifique pour l’instant, juste un lien sur le forum d’Audiofanzine sur lequel j’ai publié ce que j’avais fait.
Lien Audiofanzine

CS4272 breakout
A breakout board for the Cirrus Logic CS4272 and CS4271 audio codecs. KiCAD schematics and PCB files, Gerber and pdf included.
Download 466 kB

Daisy Seed KiCAD library
KiCAD 5 symbol and footprint for the Electro-Smith Daisy Seed. Note: it has been included in the official KiCAD repository, so you’ll probably better get it from there.
Download 3 kB

 Source code

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

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.
59 kB
75 kB
14 kB

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.
Download v1.02 66 kB

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!, SSE, SSE2, AVX, AVX-512 and NEON instruction sets.
Download v1.40 295 kB

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.

Ogg Vorbis file
23 kB

4524 kB

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.
Download 4 kB

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++.
Download 2 kB

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.
Download 9 kB

AVR to WAV file converter
Converts Atari .AVR sound files into .WAV files. C code.
Download 3 kB

Graoumf Tracker 2
This is a music program (a soundtracker) for Windows, sequel of the popular Graoumf Tracker on Atari Falcon 030. 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. The source code is an awful mix of C and C++ bad practices, I was learning these languages at this time !
r27 + src 2356 kB

Daisy Seed software

The Daisy Seed is an embedded platform for audio processing, based on a STM32 Cortex M7 and a 24/96 stereo codec. It is a great building block for advanced FX pedals, synthesizers or Eurorack modules. You’ll find below some stuff I wrote or adapted specifically for the Seed.

CPU load
A C++ class to measure the CPU load and output the result just by blinking a LED. This is convenient when there is no other debugging tool around. More details.
Download 6 kB

Noise Bleach
A muli-band noise gate in a C++ class. More details. Note: this is an outdated version, the band spiltter is good but far from optimal. I’ll release the updated code later, or you can adapt the one from Pédale Vite in the meantime.
Download r1 15 kB

Endless potentiometer decoding
A C++ class for endless potentiometer decoding. These parts are a kind of crossing between a regular potentiometer and a rotary encoder. They can rotate 360° without stop and have two outputs in phase quadrature. More details. The class is actually 100 % portable and can be used anywhere, not only with the Daisy Seed.
Download 7 kB

AY3 chiptune hacking

.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).

ay2wav — AY to WAV file converter
Converts .AY files into .WAV file. Executable for Windows and cross- platform C++ source code. Parts are independant from each others and could be reused separately: AY-3-8910 chip emulation, Z80 (written by Marat Fayzullin) or the whole emulator.
Download v1.10 245 kB

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.
Download v1.00 45 kB

ay2sna — AY to SNA file converter
Converts .AY files into .SNA memory snapshot files for Amstrad CPC emulators (CPCEmu, WinApe, etc.), in order to be executed and debugged within these programs. Executable for Windows and cross-platform C++ source code.
Download v1.00 56 kB

Avisynth plug-ins and scripts

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).
Download v1.28.1 1474 kB

Dfttest mod16
A 16-bit version of the dfttest denoiser.
Download v1.9.4 679 kB

MVTools 2 mod16
A 16-bit version of the MVTools 2, containing modified MDegrain functions to output 16 bits per component.
Download v2.6.1.0 1106 kB

AddGrainC — Film grain generator
A grain generator (simple gaussian noise). Originally developed by Tom Barry et al.
Download v1.7.1 113 kB

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.
Download v3.6.3.0 319 kB

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.
Download v0.9.2 122 kB

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).
Download v1.0.4 406 kB

CRT display emulator
A function to emulate the display of a CRT monitor, with phosphors and scanlines.
Download v1.0 24 kB

Screenshot Machine
A tool to capture color-accurate screenshots from a video file. Supports anamorphic and high-bitdepth videos. A bit out-of-date now, but still working.
Download r5 9201 kB

An updated version of the Stickboy’s plug-in. Adds the remf(), remfs(), rfs(), rfs_merge() and rfs_transform() functions.
Download v0.4.1 113 kB

An modified version of aWarpSharp2 supporting 4:2:0, 4:2:2, 4:4:4 and Y8 colorspaces, with MPEG-1 and MPEG-2 chroma placements.
Download v2015-12-30 39 kB

Vapoursynth plug-ins

A realistic film grain generator. This is also an Avisynth+ plug-in.
Download r2 829 kB

A collection of functions to convert between formats (resolution, colorspace, bitdepth). This is also an Avisynth+ plug-in.
Download r30 7283 kB

Misc. video-related tools

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.
Download r3 61 kB

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.
Download r1 37 kB

A program computing readability statistics on an SSA or ASS subtitle file. Just drag & drop your file on the executable.
Download 62 kB


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.
Download v1.10 19 kB

A small C++ library for drawing figures into EPS vector files. Useful for ploting nice-looking data and statistics directly from a program when experimenting with algorithms.
Download v1.01 32 kB

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.
Note: it uses straight RDTSC so it may not be reliable in multi-treaded environments.
Download v1.02 26 kB

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. This class is deprecated; nowadays you should better use std::shared_ptr introduced in C++11.
Download 2 kB

MS Visual C++ 2022 macros
This is a VSIX extension. It adds entries to the Tools menu and provides 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.
Download r5 45 kB
MS Visual C++ 2019 macros
Old version, not maintained anymore.
Download r3 420 kB

Degas Elite picture file converter
C++ code to convert a .PI1, .PI2 or .PI3 Degas Elite picture file (format widely used on Atari ST) to a 256-color raw file format.
Download 4 kB

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.
Download 88 kB

 Buzz machines

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.

Audio effects

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).
Download v1.1 75 kB

Distortion. 10 algorithms, automatic volume compensation and post-processing low-pass filter. Perfect to give extra punch to a riff. Includes source code (LGPL).
Download v1.1 277 kB

Weird frequency shifter. Modulation can be driven by a side-chain signal using Auxbus machine. Result of early experiments on FFTs and frequency domain operations.
Download v1.0 14 kB


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).
Download v1.11 104 kB

 Music and sound

Soundtracker modules

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.

Unless specified explicitely, the files in this section are under the Creative Commons Public Domain Dedication (CC0) License.

MOD = Classic ProTracker module,
GT2 = Graoumf Tracker 2 module,
BMX = Buzz module,
OGG = Ogg Vorbis sound files

This module was done originally for the diskzine HTC 4. It finally ended as a demo song for Graoumf Tracker 2.
GT2 73 kB

Probably my first MOD, composed with Noisetracker on my Atari STE. Includes 2 songs (pos 2D).
MOD 64 kB

MOD 92 kB

MOD 170 kB

Draft patterns at the end (pos 40), but I never used them.
MOD 89 kB

My first attempt at "metal" song imitations. Yes I have been young and rebel... Sounds parodic now. Not very bright IMHO... I think it was the time I switched to ProTracker.
MOD 51 kB

A song featuring my voice with three monosyllabic vocal samples.
MOD 69 kB

Another metal song, still pretty bad.
MOD 121 kB

A very funny tune, mainly composed with laughters and screams.
MOD 165 kB

I finally got decent samples for this metal song, sampling my own guitar. Even the bass is a reworked guitar sample. 2 songs (pos 2C).
MOD 138 kB

MOD 100 kB

Draft patterns at position 2B, one was used later in a tune for Radical Race (radrace5.gt2).
MOD 136 kB

MOD 97 kB

Song including the voice of the weather report TV speaker.
MOD 138 kB

2 songs (pos 3C), the second one is a draft of dream14b.mod (but a bit different).
MOD 253 kB

Draft patterns at pos 29, the last serie was used in dream20.mod.
MOD 184 kB

Very short song with a simple set of instrument, probably unfinished.
MOD 34 kB

Very long song. Draft patterns at position 51, never used.
MOD 240 kB

Two metal songs again (pos 16), becoming a bit darker, but still funny, while looking back into the past...
MOD 148 kB

MOD 111 kB

MOD 112 kB

Three songs in this module (pos 1A, 2F), the third one is just a draft for dream22.gt2.
MOD 238 kB

Two songs (pos 31), the second part is an attempt to recreate Nirvana’s "Milk It".
GT2 493 kB

I remember this song was composed in a hurry.
GT2 65 kB

GT2 494 kB

Tune submitted to the module contest at the Place To Be IV coding party in Mont de Marsan, France, 1996.
GT2 3274 kB

Les Maîtres du Monde
Dream22 revisited, this version is better I think.
GT2 839 kB

Le Millionnaire
Module adapted from a song I played with my band BiG NoZ : "Le Millionnaire".
GT2 1805 kB

This song is more recent.
1522 kB
5182 kB

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.
GT2 698 kB

Rhaaaaa !
Tune composed during the Faucon’Tact coding party in Alès, France, 1995, winner of the module competition.
GT2 540 kB


Un petit texte sur l’AGCS déclamé par quelques militant-e-s anti-pub et mixé par votre serviteur. Musiques de fond:
1. Makunouchi Bento — Peen (Himette EP, Eerik Inpuj Sound),
2. Tao — Heliotrope (Subtle EP part 2, Ogredung),
3. Benfay — Carbon (Carbon EP, Thinner),
4. Antimateria vs Paolo Veneziani — Ice Geometry (Ice Geometry EP, Ogredung)
OGG 4505 kB

 Add-ons for (now obsolete) video games

Unless specified explicitely, the files in this section are under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License. Check the contained readme file for more information.

Maps for Quake Rally

I designed some tracks for Quake Rally, an add-on for Id Software’s Quake. Sources for Worldcraft are included, but there are probably some missing textures.

Big Air
A track with a big big jump. It has been included in the official Quake Rally: Leftovers distribution under the name: qrally05.bsp.
Download 659 kB

Roll 47B
This map is just a try to see how can the car take banked corners. No health, no jump, no weapon, no ammo, no brain. Just speed.
Download 468 kB

Turbinium Mines
Another track, quite long but not finished. Still playable in single player mode.
Download 1369 kB

Maps for Doom 2

There files are for Id Software’s Doom 2.

Deep Down in the Mouise
A large maze full of vicious traps build around a huge arena with a lot of bunkers. Find all the keys in the right order without letting the army of darkness escape.
Download 72 kB

Une modélisation de mon ancienne école, l’ISEP. Cette version faite pour le deathmatch a été présentée lors d’une campagne pour l’élection du boureau des élèves.
Download 557 kB

BiG NoZ’ Sounds
Not a map, but a crazy replacement for monster and player sounds.
Download 418 kB


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.
Download 30 kB

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.
v1.01 302 kB

Sounds for Warcraft 2
Hilarious sound replacement for the Blizzard’s Warcraft 2 game. I’m not sure it works with the new on-line edition.
Download 4511 kB

[Home] [Productions] [Misc] Website by Laurent de Soras, 2003-2023