惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
博客园 - 【当耐特】
博客园_首页
The GitHub Blog
The GitHub Blog
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
D
Docker
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
小众软件
小众软件
I
InfoQ
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
chord-commander
joexo · 2026-05-23 · via Hacker News: Show HN

Chord Commander

A guitar chord voicing tool that loads faster than you can tune your guitar.


Chord Commander is a browser-based SPA for guitarists who want to visualise chord voicings across the fretboard, organise their grip library, and build custom chord type collections — all without installing anything, signing up for anything, or waiting for anything to load.

Double-click index.html. That's it. You're in.
Or try it here: joexo.codeberg.page/chord-commander

What it does

Chord Viewer — Pick a chord type from the drawer, see every voicing across the full 24-fret neck, colour-coded by interval (root, M3, P5, m7...). Rootless voicings work too — implied roots shown as dashed rings.

Chord Viewer

Grips Editor — Your personal library of fingerings, organised by chord type. Each grip shows its colour-coded interval diagram. Flip between enharmonic interpretations (is that a b5 or a #11?) with a dropdown. Add grips by clicking on a mini fretboard in a modal.

Grips Editor

Chord Editor — Build and edit chord types from scratch. Toggle intervals on/off, switch enharmonic spellings (m3 vs #9, b5 vs #11), name your chord whatever you like, mark it rootless. Duplicate detection warns you if your new chord is already in there under a different name.

Chord Editor

Save / Load — Your collection lives in a JSON file. Save it, load it, name it, version it. The drawer shows the collection version number and timestamp so you always know what you loaded.

Drawer

No dependencies. Zero.

Not a single npm install. Not a framework. Not a bundler. Not a build step. Not a CDN. Not a cookie banner. The entire app is:

app.js            ~285 lines — wires everything together
musicTheory.js    ~400 lines — pitch class matching, chord identification, voicing layout
data/             chord types + grip shapes
components/       25 component files

Total payload: ~97 KB unminified. Scripting time on first load: 3 ms.

Open index.html. Works offline. Works on a plane.

Architecture

The app is built on triad.js — a 112-line hand-rolled view library. No virtual DOM. No diffing. No retained object graph. Every component is a factory function that returns a { render } object:

(function ({ e, makeView, dispatch }, app) {
  app.myComponent = function (args) {
    var view = makeView(function () {
      return e('div', 'Hello', { className: 'thing' });
    });
    return {
      render: function () { return view.render(['dep.js', 'dep.css']); }
    };
  };
})(triad, app);

Dependencies load lazily and sequentially on first render. The grips editor and chord editor pages don't load until you visit them. State lives in factory closures. Cross-component communication goes through a tiny event bus (dispatch / addEventListener). Named stable sub-views in app.main mean chord selection only re-renders the two views that actually changed — not the whole page.

Music theory engine

The musicTheory.js module handles:

  • Chord identification — give it a set of pitch classes, get back the chord name and all enharmonic interpretations
  • Voicing layout — takes a grip shape and a chord type, returns a matrix for fretboard rendering, packed into rows by fret range compatibility
  • Bitmask matchingallInterpretations uses integer bitmask comparison instead of sorted-array equality, running across all 34 chord types × candidate start frets in ~5 ms for the full 73-grip library
  • Enharmonic resolutionb5 vs #11, m3 vs #9, b6 vs #5 — each chord type carries its own enharmonic preferences

Default collection

Ships with 34 chord types and 73 grip shapes covering most of what a jazz guitarist needs:

Major, minor, Dom7, Maj7, minor7, min7(b5), Dom7(b9), Dom7(#9), Dom7(b5), Dom7(#5), Dom9, Dom13, Augmented, Diminished, various rootless voicings, sus4... plus the extended and altered stuff.

Everything is user-editable. Delete what you don't need, add what you do.

Compatibility

No framework means no framework's minimum browser requirements. The app targets:

  • Chrome 57+, Firefox 52+, Safari 10+ (CSS Grid support)
  • No const/let — all var
  • No arrow functions — all function
  • No template literals — string concatenation
  • No CSS nesting — flat selectors throughout

Not tested on IE11 and we have no plans to start.

Running the tests

Open test.html in a browser. 150 tests across 18 suites covering the music theory engine. No test runner, no build step — just open the file.

Contributing

Read docs/architecture.md before adding anything — it covers the component rules, encouraged patterns, and a catalogue of approaches that were tried and turned out wrong. If you're using an AI coding assistant, point it at that file.

PRs welcome. Issues welcome. Opinions about jazz harmony welcome.

Engineering

Chord Commander was designed and engineered by Joel Sebastian Andersson, developed through an iterative AI-assisted software engineering process using Claude (Anthropic) as the implementation engine.

License

Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)

This project exists solely to support education, teaching, and research. You are free to use, share, adapt, and extend it — including in academic courses, research projects, and non-commercial tools — as long as you give appropriate credit, indicate any changes made, and distribute any derivative works under the same licence.

Commercial use is not permitted. You may not sell this software, include it in a paid product or service, use it to generate revenue, or sublicense it for commercial purposes.

The ShareAlike condition ensures that any extensions or adaptations of this work remain equally open and non-commercial — so improvements made in an academic context stay in the academic commons.

Full licence text: https://creativecommons.org/licenses/by-nc-sa/4.0/