You are browsing as a guest. Sign up (or log in) to start making projects!

aikyaam

@aikyaam

Joined July 7th, 2026

  • 5Devlogs
  • 2Projects
  • 1Ships
  • 0Votes
Open comments for this post

13h 19m 41s logged

1. The Core Problem

Legacy codecs (FLAC, WAV, ALAC) compress multitrack audio stems in isolation, creating three major inefficiencies:

  • Multitrack Redundancy: Compressing 20+ stems individually duplicates shared timing, transients, and microphone leakage across files.
  • Destructive Edits: Simple DAW edits (fades, mutes) force slow, destructive re-rendering of entire audio files to disk.
  • Version Bloat: Saving project revisions (Mix_v1, Mix_v2) duplicates identical, unmodified audio tracks.

2. What We Built

  • loom-core (Rust Engine): Single-track FLAC-compatible encoder (Fixed 0-4, Burg MEM LPC, Levinson-Durbin, NLMS adaptive filtering, 5/3 CDF Wavelets, IntMDCT, Golomb-Rice, rANS, tANS) + session-aware multitrack container with inter-stem residual prediction coupling, KLT covariance matrices, and DAG topologies.
  • Non-Destructive Edit Overlays: On-the-fly rendering of linear, sigmoidal, exponential, and cosine fades, gain automation, and mute regions during decoding ($O(1)$ header updates).
  • Frame Version Diffing: PCM frame MD5 fingerprinting and delta compression (encode_diff / apply_diff).
  • loom-cli & loom-bench: 17 CLI subcommands, 28 passing test suites (cargo test), and Criterion empirical benchmark runner.
  • research/ Platform: 24 publication-grade academic research manuscripts covering DSP math and information theory.

3. Key Issues Fixed During Development

Problem / Bug Technical Root Cause Fix Implemented LaTeX '_' allowed only in math mode Raw underscores inside \text{...} blocks exited math mode in KaTeX/MathJax. Replaced text underscores with hyphens (e.g., \text{track-meta-m}). Broken GitHub Math Formatting GitHub Markdown required empty lines surrounding $$...$$ blocks. Automated spacing script to insert blank lines around display math blocks. Broken Table of Contents Anchors Inline LaTeX math inside Markdown headers broke link anchors. Converted header math titles to clean text (e.g., (O(log K))). Mid-Side Reconstruction Rounding Signed right shift (>> 1) caused off-by-one errors on negative odd integers. Applied bit-exact math: left = mid + ((side + 1) >> 1) and right = mid - (side >> 1). SIMD Hardware Acceleration Serial dot-product loops constrained predictor throughput. Integrated 256-bit AVX2/SSE2 and AArch64 ARM NEON (autocorr_neon) vector intrinsics.

4. Empirical Benchmark Highlights

  • Multitrack Session Savings: 8-stem DAW session compresses to 488,503 bytes (13.85% ratio) in Loom vs 647,112 bytes (18.34% ratio) for 8 separate FLAC files (24.51% higher storage savings).
  • Decoding Throughput: 176.83 MB/s for drum transients; 141.29 MB/s for silence backfill.
  • Seek Latency: 4.42 ms range extraction latency for a 1-second slice.
0
0
2
Open comments for this post

8h 28m 7s logged

Spent today improving Lavende’s core playback reliability. Fixed several issues with the YouTube source after recent extraction changes, preventing playback failures. Resolved a bug where the player was being recreated on every request, allowing playback state and queues to persist correctly. Tracked down 404 search errors to empty search results (length: 0) and added proper handling for cases where no tracks are returned. Also improved the voice connection lifecycle, making joins, reconnects, and playback significantly more stable.

0
0
2
Open comments for this post

7h 21m 3s logged

[v1.0.6] - 2026-07-14

Changed

  • Complete refactoring of all legacy monolithic audio source files into clean, modular subdirectories (api, extractor, track, token, reader, etc.) to improve maintainability and decouple codebase components.
  • Rewrote let-chain patterns to standard nested conditional patterns to enhance stability and ensure compatibility with standard Rust compilation profiles.
0
0
2
Open comments for this post

41m 13s logged

Today I completed the configPath feature across all Lavende language bindings (Rust, Node.js, Python, and Go). I updated the documentation and examples to support custom configuration file paths, making configuration management consistent across every SDK. I also expanded and standardized the source.json configuration files, adding comprehensive support for 28+ music sources and ensuring all examples use the same configuration structure. With these changes, the configuration system is now fully documented, consistent, and much easier for developers to use.

0
0
3
Ship Pending review

We built Lavende, a high-performance Discord voice engine written in Rust with official SDKs for Rust, JavaScript/TypeScript, Go, and Python. Instead of relying on an external Lavalink server, Lavende runs in-process and provides a consistent API across multiple programming languages for building Discord music bots and voice applications.

One of the biggest challenges was designing a shared Rust core while exposing safe, idiomatic bindings for each language. We also reorganized the repository into a workspace, simplified the build and release pipeline, and implemented cross-platform native binaries to make installation easier for developers.

We're most proud of creating a single, high-performance voice engine that can be used across multiple ecosystems without sacrificing performance or developer experience.

To test the project, open the _examples folder and choose the language you want to use (Rust, JavaScript/TypeScript, Go, or Python). For example, if you choose the Node.js example, navigate to that folder, install the dependencies, add your Discord bot token to the .env file, and run the bot. The setup process is essentially the same for all the supported languages, with language-specific instructions included in each example.

  • 1 devlog
  • 14h
Open comments for this post

13h 41m 46s logged

Today we wrapped up the final release of Lavende. Most of our time was spent polishing the library, fixing the remaining bugs we found during testing, and making sure everything was stable before shipping.
We also cleaned up the project structure, improved the developer experience, and updated the examples and documentation so the library is easier to understand and use. After running through the final round of testing, we were happy with the results and prepared the project for release.
It’s exciting to finally reach this milestone after all the work that’s gone into the project. From here, we’ll focus on maintenance, performance improvements, and new features based on feedback from users.

0
0
39

Followers

Loading…