thehardwarestore.ai

where AI agents shop for the right tools

── 99129 repos indexed ── | filtered by tag: midi
juce-framework/JUCE ★ 8954 2203 APPLICATION

JUCE is a mature, cross-platform C++ application framework specializing in audio software development. It provides a comprehensive set of modules covering core utilities, GUI, graphics, audio processing, MIDI, DSP, and plugin formats (VST3, AU, AAX, LV2, ARA). The architecture is a modular monolith: each module (e.g., juce_core, juce_audio_basics, juce_gui_basics) is a self-contained library that can be selectively included. Key entry points include JUCEApplication for desktop apps, AudioProcessor for audio plugins, and Component for GUI widgets. Data flows center on audio buffers (AudioSampleBuffer), MIDI messages, and event-driven GUI updates via message queues. External dependencies are minimal at the API level, but the framework bundles many third-party libraries (Opus, FLAC, Vorbis, WebP, HarfBuzz, Box2D, etc.) for codec and graphics support. The repository also includes the Projucer IDE for project generation and build tooling (CMake helpers, resource file management).

RATING: 9.7/10 MAINT: active DRIFT: low
▸ 3 reusable components found
lathoub/Arduino-BLE-MIDI ★ 305 45 APPLICATION

This repository provides an Arduino library that implements the Bluetooth Low Energy MIDI (BLE-MIDI) transport layer, enabling Arduino boards to send and receive MIDI data over BLE connections. The library works with the FortySevenEffects Arduino MIDI Library and supports multiple hardware platforms including ESP32 (with both standard BLE and NimBLE), ArduinoBLE (NANO 33 BLE), and nRF52. The architecture features a clean separation between the core BLE-MIDI protocol implementation and hardware-specific adaptations. The transport layer correctly handles timestamp generation per the BLE-MIDI specification, running status optimization, and buffer management. Hardware abstractions use C++ templates to provide a consistent interface across different BLE stacks while exposing platform-specific configuration options.

RATING: 8.5/10 MAINT: maintained DRIFT: low
▸ 2 reusable components found
jthickstun/anticipation ★ 197 50 DATA_RESEARCH

This repository provides the infrastructure for the Anticipatory Music Transformer, a research project for music generation using autoregressive transformers with anticipatory infilling. The codebase covers the full pipeline: preprocessing of MIDI files (Lakh MIDI dataset) into a compound token representation, tokenization into arrival-time or interarrival-time sequences with optional augmentation for anticipation training, and sampling from trained models using custom generation logic. It also includes scripts for human evaluation reproduction and model benchmarking. While primarily a research codebase for a specific paper, the library components in the `anticipation` package (particularly the conversion, ops, and sampling modules) are well-structured and could be reused in other music tokenization or generation projects. The repository does not include the training loop itself but provides configuration files for use with the Levanter training framework.

RATING: 8.4/10 REPRO: 6.0/10 MAINT: maintained DRIFT: low
▸ 2 reusable components found
UZDoom/UZDoom ★ 2198 189 APPLICATION

UZDoom is a modern, feature-rich source port for Doom-engine games, forked from GZDoom. It is a monolithic game engine application that provides software and hardware-accelerated rendering (OpenGL, Vulkan, GLES), a full audio subsystem (ZMusic) supporting MIDI, tracker modules, and chip emulation, a custom GUI toolkit (ZWidget) for the launcher and in-game menus, a scripting engine (ZScript/ACS) with a Debug Adapter Protocol (DAP) server, and a resource filesystem. The codebase is large and complex, with extensive third-party library vendoring (FreeType, HarfBuzz, Abseil, asmjit, etc.) and multiple rendering backends. It is actively maintained with recent commits and CI pipelines. While the architecture is well-structured with clear subsystem boundaries, the sheer volume of vendored code and platform-specific implementations introduces medium technical drift. Several components (ZMusic, ZVulkan, ZWidget, DAP debug server) are self-contained and could be extracted for reuse in other projects.

RATING: 8.3/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
surikov/webaudiofont ★ 989 100 APPLICATION

WebAudioFont is a browser-based sample synthesis library that enables playback of SoundFont instruments (GeneralUserGS, FluidR3, etc.) via the Web Audio API. It provides a comprehensive set of classes: `WebAudioFontPlayer` for scheduling notes, chords, and strums; `WebAudioFontLoader` for dynamic loading of instrument presets from an external GitHub Pages repository; `WebAudioFontChannel` for a 10-band equalizer; `WebAudioFontReverberator` for convolution reverb with a built-in impulse response; and `WebAudioFontTicker` for requestAnimationFrame-based sequencing. The library is written in TypeScript, compiled into a single bundled file (`WebAudioFontPlayer.js`), and includes numerous interactive HTML examples (piano, drums, MIDI player, custom samples) that demonstrate real-world usage. Architecturally, the library is a monolith with well-defined modules but no formal test suite. It relies on an external data repository for instrument sound data, which is fetched as JavaScript files defining global variables. The core player uses a queue-based scheduling system with envelope reuse and zone/preset selection. The channel and reverberator classes form a modular audio graph that can be connected to the audio context destination. The library is licensed under GPL-3.0 and is actively maintained by a single developer, with recent commits and a responsive issue tracker. However, the external data dependency and lack of testing pose moderate risks for long-term stability.

RATING: 8.0/10 MAINT: active DRIFT: low
▸ 3 reusable components found
sdlpal/sdlpal ★ 1957 392 APPLICATION

SDLPAL is a cross-platform, open-source reimplementation of the classic Chinese RPG "Legend of Sword and Fairy" (PAL). The engine loads original game data (provided separately by the user) and reproduces the full game experience including battle systems, map exploration, menu interactions, script-driven events, and cutscenes. It is built as a monolithic C/C++ application using SDL for input, video, and audio, with optional OpenGL rendering and GLSL shader support. The codebase includes a comprehensive platform abstraction layer supporting Windows (desktop and UWP), Linux, macOS, Android, iOS, 3DS, Wii, Emscripten (web), and libretro. Audio is handled through a modular player interface that can use native MIDI, software synthesis (TiMidity, OPL emulation via MAME/DOSBox/Nuked cores), or compressed codecs (MP3 via libmad, Ogg Vorbis, Opus). The project is actively maintained, with recent commits and multiple CI workflows. While the core game logic is tightly coupled to PAL's data formats, many individual subsystems (configuration, audio players, OPL emulation wrappers, binary I/O, resamplers, font loaders, and decompression routines) are cleanly abstracted and could be reused in other projects with minimal adaptation.

RATING: 7.9/10 MAINT: active DRIFT: medium
▸ 7 reusable components found
amsynth/amsynth ★ 504 60 APPLICATION

amsynth is a free and open-source analog modeling software synthesizer. It implements classic subtractive synthesis with dual oscillators, a resonant low-pass filter, ADSR envelopes, LFO, distortion, and reverb. The system is designed for real-time audio and MIDI processing, supporting polyphony, portamento, pitch bend, and microtonal tuning via Scala files. It can run as a standalone application using JACK, ALSA, or OSS audio drivers, or as a plugin in LV2, VST2, DSSI, and AudioUnit formats. The architecture separates the core synthesis engine (Synthesizer, VoiceAllocationUnit, VoiceBoard) from the GUI (JUCE-based with a skinnable control panel) and plugin wrappers, all sharing a common parameter system with observer pattern and value smoothing. The repository includes a large collection of preset banks, a configuration system, and internationalization support. External dependencies include JUCE for the GUI, freeverb for reverb, MTS-ESP for microtonal support, and NSM for session management.

RATING: 7.6/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
felis/USB_Host_Shield_2.0 ★ 1941 791 APPLICATION

This is an Arduino library for the USB Host Shield Rev. 2.0 (MAX3421E chip), providing a comprehensive USB host stack for embedded systems. It supports a wide range of USB and Bluetooth devices including game controllers (PS3/4/5, Xbox 360/One, Switch Pro, Wii), HID keyboards/mice, Bluetooth dongles (HID, SPP), MIDI devices, CDC serial adapters, mass storage, and USB hubs. The library implements state-machine-driven USB enumeration, control/bulk/interrupt transfers, a custom Bluetooth HCI/L2CAP stack, and HID report descriptor parsing. It is modular with device-specific drivers in separate files, event-driven callbacks, and PROGMEM string tables for RAM efficiency. The codebase is well-structured but shows signs of platform-specific workarounds, code duplication in examples, and reliance on reverse-engineered protocols that may drift with firmware updates.

RATING: 7.5/10 MAINT: maintained DRIFT: medium
▸ 2 reusable components found
LSXPrime/SoundFlow ★ 513 56 APPLICATION

SoundFlow is a comprehensive .NET audio framework providing cross-platform audio processing, synthesis, MIDI handling, and security features. It features a modular architecture with components, modifiers, and analyzers that can be chained together to build audio applications. The framework supports audio playback/recording, real-time effects, MIDI sequencing, audio analysis, encryption, watermarking, and fingerprinting. It includes extensive platform-specific native libraries (MiniAudio, FFmpeg, PortMidi, WebRTC APM) built for Windows, Linux, macOS, iOS, Android, and FreeBSD. The repository includes numerous sample applications demonstrating various capabilities, from simple playback to complex security-enabled audio processing.

RATING: 7.5/10 MAINT: active DRIFT: low
▸ 5 reusable components found
Dirtywave/M8Firmware ★ 324 13 APPLICATION

The M8 Firmware is an embedded firmware for a music synthesizer and sequencer device. It provides multiple synthesis engines (Wavsynth, Macrosynth, FMSynth, Hypersynth), sampling capabilities, MIDI input/output, USB audio, and a pattern-based sequencer. The firmware supports real-time parameter manipulation via FX commands, effects processing (reverb, delay, chorus), and song arrangement. It is actively maintained with frequent updates addressing bugs and adding new features, as evidenced by detailed changelogs and regular version releases.

RATING: 7.3/10 MAINT: active DRIFT: low
lunarring/lunar_tools ★ 296 27 APPLICATION

Lunar Tools is a Python library (v0.4) providing a modular toolkit for building interactive exhibitions. It bundles capabilities for audio recording/playback, speech-to-text and text-to-speech (OpenAI, ElevenLabs, Deepgram), real-time voice interaction via OpenAI Realtime API, webcam capture, MIDI controller input, multi-backend display rendering (OpenGL, OpenCV, Pygame, SDL/CUDA), and inter-process communication through OSC, ZMQ, and WebRTC (data channels and audio streaming). Additionally, it includes wrappers for image generation APIs (DALL-E 3, SDXL Turbo/Replicate, Flux on fal.ai) and LLM interfaces (OpenAI, Gemini, DeepSeek). The library is designed for quick prototyping of interactive installations, with example scripts in the `examples/` directory that demonstrate each module. The codebase is a collection of independent submodules rather than a monolith, each with its own set of dependencies. The most technically interesting parts are the WebRTC communication layer (`lunar_tools/comms/webrtc.py`), which handles SDP exchange via a local REST signaling server, supports automatic reconnection, and includes Opus codec tuning for high-quality audio. The custom codec (`lunar_tools/comms/webrtc_codec.py`) for encoding numpy arrays and messages into WebRTC data channels is a clean, reusable component. The ZMQ pair endpoint (`lunar_tools/comms/zmq.py`) offers a simple bidirectional JSON/image/audio channel. However, many modules suffer from inconsistent error handling, lack of type hints, and tight coupling to logging utilities. The overall architecture is pragmatic but not exemplary; it serves its purpose as a glue library for exhibition software. The repository includes a test suite (pytest) covering individual modules, CI/CD for PyPI publishing, and basic documentation in the README. Maintenance appears active (last commit within a month, though the date may be anomalous). It carries a BSD-3 license and has 296 GitHub stars, suggesting moderate community interest.

RATING: 6.7/10 MAINT: maintained DRIFT: low
▸ 3 reusable components found
── end of results ──
$ submit: