Home Music Projects Blog

Projects

Here are some projects that I work on. Source code and binaries are not available for most of them, as I am not yet ready to release them.


csmOS

Forth-based OS

This is a simple (for now) Operating System and Forth interpreter written in x86-64 asm. Currently it is capable of booting to a Forth interpreter accessible via serial, and CORE ANS Forth is partially implemented. The Forth interpreter has memory and port I/O support as well as a (basic) assembler so most of the OS is written in Forth. It has graphical support (although currently only 840x480 monochrome is supported).


ew

Forth-based Editor

This is a text editor written in Forth, for use on both Gforth and the above csmOS implementation. It is a modal editor based on Kakoune (in that selection of text is the primary metaphor, and operations apply to all currently selected text), and the full power of the Forth interpreter is available at any time for scripting/macro purposes.


Planck

Imageboard browser for Sailfish OS

Planck is an imageboard browser written entirely in QML (JavaScript) for the Sailfish OS platform, currently capable of browsing 4chan, lainchan and endchan. It is designed in a modular fashion so adding new boards isn't particularly difficult.


fswg

Forth Static Website Generator

This is a simple(-ish) program to convert a custom markdown language into HTML to be displayed on this very website! It has support for calling external programs on regions of text, e.g. invoking latex on text surrounded by $ symbols. I eventually intend to write a version of this that uses S-Exprs to represent more complicated HTML structures, so I can ditch the current method (which uses something akin to template files).


abmvsws

Arduino-Based Multi-Voice Square Wave Synthesiser

This is a very very basic synthesiser based around an Arduino and a summing amplifier to output multiple square waves. It supports an extremely limited subset of the MIDI protocol (basically just note-on and note-off). It also does not register itself as a MIDI device, only as a serial device, so you have to use something like midish to use it with a DAW. Written in Arduino C.