Skip to content
View rec's full-sized avatar
🥝
coding
🥝
coding

Organizations

@pi3d

Block or report rec

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
rec/README.md

Tom Ritchford

Everything should be made as simple as possible, but no simpler.

Resumé: .pdf .md

My GitHub stats

I am newly AI enhanced.

We moved to Normandy. My job suddenly vanished. I learned LLM coding.

I'm spending my time on digital audio programming, MIDI, music, lighting control or other things close to my heart, trying to establish a tiny empire.

My Python open source projects

This is a dashboard of my active Python open-source projects on Github, mostly small- to medium-sized libraries that try to do one useful thing as clearly and thoroughly as possible.

🌟 means "Stars"
👁 means "Subscribers"

🟢 means "Release version"
🕰 means "Most recent non-version commit"

(Last update 2026/10/15, 15:22:04 by https://github.com/rec/multi)

Vibe

                    🧬 arpeg 🧬
           An expressive arpeggiator
26/10/15🟢Release v0.2.0
26/10/15🕰Update pyproject.toml and uv.lock for audited enveLFO
                      baccy
Permanent backup daemon for media and other assets
26/10/15🟢Release v0.2.0
26/10/15🕰Update classifiers in pyproject.toml
                      dvice
        Manage unreliable audio devices
26/10/10🟢Release v0.2.0
26/10/11🕰Change inconsistent .python-version
                     🚂 enge 🚂
 an audio synthesizer engine in Python and Rust
26/10/10🟢Release v0.2.0
26/10/15🕰Finish enveLFO extraction in enge
                    envelfo
Reusable envelopes, LFOs, and event-driven control signals
26/10/15🕰fixup! Add optional snapshot dependencies to envelfo-core
                     🧚 lyte 🧚
     Python lighting player for all lights
26/10/10🟢Release v0.2.0
26/10/11🕰Update classifiers in pyproject.toml
                     meedee
Python bindings for the meedee Rust MIDI toolkit
26/10/10🟢Release v0.2.0
26/10/15🕰Add typed live I/O, bounded recording and clock-aware playback
               🎙 recs 🎙     (🌟 5  👁 2)
             The Universal Recorder
26/10/15🟢Release v0.13.1
26/10/15🕰Make test paths portable on Windows
                      reccy
Shared local app utilities for recs, showco, tuney, and lyte
26/10/12🟢Release v0.2.0
26/10/14🕰Add randomizer.py with repeat gaps and exhaustive cycles
                      safaz
   SFZ import and export for uFor instruments
26/10/15🟢Release v0.2.0
26/10/15🕰Update safaz envelope renderer dependencies
                   🎪 showco 🎪
    Local show control for recs and streamo
26/10/15🟢Release v0.3.0
26/10/15🕰Update classifiers in pyproject.toml
                  🚰 streamo 🚰
          Stream audio to all services
26/10/10🟢Release v0.2.0
26/10/15🕰Make scripts/render.py fade movies to black
              🎶 tuney 🎶     (🌟 4  👁 2)
              Turn text into music
26/07/26🟢Release v0.3.55
26/10/14🕰Update tuney envelope renderer dependencies
                     🛸 ufor 🛸
universal Format: portable definitions for time-based data
26/10/10🟢Release v0.2.0
26/10/15🕰fixup! Consolidate LFO definitions and remove ufor/lfo.py execution

Production-ready

             🧿 safer 🧿     (🌟 195  👁 2)
      A safer writer for files and streams
26/10/10🟢Release v6.1.0
26/10/11🕰Update classifiers in pyproject.toml
              🖋 editor 🖋     (🌟 11)
          Open the default text editor
26/09/19🟢Release v2.0.1
26/10/11🕰Update classifiers in pyproject.toml
                  ✂️ psplit ✂️
             Split git patch files
26/10/11🕰Update classifiers in pyproject.toml
              🗜 gitz 🗜     (🌟 36  👁 2)
    Tiny useful git commands, some dangerous
26/10/11🕰Update classifiers in pyproject.toml
                  ➰ rubband ➰
Python bindings for Rubber Band audio pitch shifting and time stretching
26/07/16🟢Release v0.3.1
26/10/11🕰Update classifiers in pyproject.toml
                 🗃 tdir 🗃     (🌟 6)
     Create and fill a temporary directory
26/09/19🟢Release v2.0.1
26/10/11🕰Update classifiers in pyproject.toml
                   🎨 nc 🎨     (🌟 4)
             Named colors in Python
26/10/11🕰Update classifiers in pyproject.toml
            🗝 dtyper 🗝     (🌟 21  👁 3)
            Fix and improve `typer`
26/10/11🕰Update classifiers in pyproject.toml
              🏫 clsprop 🏫     (🌟 2)
      Just like @property but for classes
26/10/11🕰Update classifiers in pyproject.toml
                🧵 threa 🧵     (🌟 2)
                 Better threads
26/05/09🕰Update version to v1.11.0
               ⛏ sproc ⛏     (🌟 12)
         Subprocesseses for subhumanses
26/09/19🟢Release v3.0.4
26/10/11🕰Update classifiers in pyproject.toml
            🍱 zoialib 🍱     (🌟 4  👁 2)
     A patch librarian for the Empress ZOIA
25/09/28🟢Release v0.3.0
26/05/09🕰Update version to v0.8.0
                 🌱 xmod 🌱     (🌟 5)
         Turn any object into a module
26/05/09🕰Update version to v1.10.0
               🛎 impall 🛎     (🌟 8)
            Test-import all modules
26/09/19🟢Release v3.0.1
26/10/11🕰Update classifiers in pyproject.toml
               🐜 abbrev 🐜     (🌟 5)
              Expand abbreviations
26/10/11🕰Update classifiers in pyproject.toml
                  🎴 dek 🎴     (🌟 4)
            The decorator-decorator
26/10/11🕰Update classifiers in pyproject.toml

Experimental

                🖐️ fing 🖐️     (🌟 6)
A universal representation of fingering systems for winds, reeds, and brass
26/10/11🕰Update classifiers in pyproject.toml
                    🌐 nmr 🌐
           Name all canonical things
26/10/15🕰Add everyday and composite nmr codecs
                 🗣 def_main 🗣
              A decorator for main
26/10/11🕰Update classifiers in pyproject.toml
                 📓 hardback 📓
        Hardcopy backups of digital data
26/10/11🕰Update classifiers in pyproject.toml
                   📦 backer 📦
           Continuously back up files
26/10/11🕰Update classifiers in pyproject.toml

Beta

                  🏺 fil 🏺     (🌟 3)
         Read/write JSON/TOML/Yaml/txt
26/10/11🕰Update classifiers in pyproject.toml
                   🔢 plur 🔢
        Simple universal word pluralizer
26/10/11🕰Update classifiers in pyproject.toml
                 🍇 cfgs 🍇     (🌟 3)
           XDG standard config files
26/10/11🕰Update classifiers in pyproject.toml

Mothballed

             🌊 wavemap 🌊     (🌟 10  👁 2)
       Memory map WAVE or raw audio files
26/05/09🕰Update version to v2.2.0
         🛍 loady 🛍     (🌟 6  👁 2)
       Load Python code and data from git
26/10/11🕰Update classifiers in pyproject.toml
               🏃 runs 🏃     (🌟 3  👁 2)
      Run a block of text as a subprocess
26/10/11🕰Update classifiers in pyproject.toml

Personal

                  🐘 fortune 🐘
     A Mastodon bot for /usr/games/fortune
26/10/11🕰Update classifiers in pyproject.toml
                    📚 multi 📚
          Manage all my other projects
26/10/15🕰Recognize new versions
    ⬜🟩🟦🟥 blocks 🟥🟦🟩⬜
              Solve a block puzzle
26/10/11🕰Update classifiers in pyproject.toml
                     ❓ test ❓
         Tiny bits of experimental code
26/10/13🕰Modify pyproject.toml, uv.lock
                 ⚫ dotfiles ⚫
                  My dotfiles
26/10/15🕰Modify bash/_functions.sh, bash/aliases.sh, bash/environment-variables.sh, elisp/define-functions.el, elisp/keyboard-shortcuts.el, git-commit-ids/git-commit-ids.txt

Pinned Loading

  1. tfile tfile Public

    📁 tiny C++11 file utilities 📁

    C++ 24 4

  2. swirly swirly Public

    Tom Swirly's Javascript libraries for Max.

    Max 48 5

  3. echomesh echomesh Public

    An array of noisy, reactive little computers.

    C++ 37 21