No description
  • Go 99.3%
  • Makefile 0.5%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Mike 'Fuzzy' Partin b90e234fbc
All checks were successful
CI / test (push) Successful in 1m24s
Fix bass detection: pitch-change onset detection and octave-up fret mapping
- Replaced RMS-based onset detection with pitch-change detection: notes are
  segmented when frequency jumps >60 cents, catching transitions between
  actual notes (B0↔E1↔G#1↔C1) instead of only loudness changes
- FindPosition now tries octave-up when a note is below the lowest tuning
  string (e.g., B0 on a 4-string bass maps to B1 on A string fret 2)
- This produces real varied bass tablature with notes on E, A, and D strings
2026-05-10 15:06:30 -07:00
.forgejo/workflows Create release infrastructure: CI pipeline, linting, goreleaser, install script 2026-05-10 10:45:28 -07:00
cmd/autotabber Fix bass detection: exclude subsonic frequencies, improve segmenter pitch picking 2026-05-10 14:02:49 -07:00
examples Create example programs (basic, custom-config, export-different-formats) 2026-05-10 10:14:40 -07:00
internal Fix bass detection: pitch-change onset detection and octave-up fret mapping 2026-05-10 15:06:30 -07:00
pkg/autotabber Add audio sidecar file renderer for synchronized tab playback 2026-05-10 11:01:39 -07:00
scripts Create release infrastructure: CI pipeline, linting, goreleaser, install script 2026-05-10 10:45:28 -07:00
testdata feat: add more testdata 2026-05-10 11:07:18 -07:00
.gitignore fix: add backup files to .gitignore 2026-05-10 09:42:51 -07:00
.golangci.yml Create release infrastructure: CI pipeline, linting, goreleaser, install script 2026-05-10 10:45:28 -07:00
.goreleaser.yml Create release infrastructure: CI pipeline, linting, goreleaser, install script 2026-05-10 10:45:28 -07:00
go.mod Create reusable FFT wrapper using go-dsp library 2026-05-10 07:26:44 -07:00
go.sum Create reusable FFT wrapper using go-dsp library 2026-05-10 07:26:44 -07:00
Makefile Package as standalone binary with Makefile (static compilation, install target) 2026-05-10 10:02:19 -07:00
README.md Add README with quick start guide and command examples 2026-05-10 10:01:27 -07:00
ROADMAP.md Mark all Post-MVP tasks as completed in ROADMAP 2026-05-10 11:02:23 -07:00

autotabber

Audio-to-guitar-tablature transcriber. Processes audio files or microphone input and outputs guitar tablature in Markdown format.

Quick Start

# Build from source
go build -o autotabber ./cmd/autotabber/

# Transcribe a WAV file
./autotabber -i solo.wav -o transcription.md --verbose

# Capture from microphone
./autotabber -i hw:0,0 -o riff.md

# Use alternate tuning
./autotabber -i drop_d.wav -t DADGBE -o output.md

# Quiet mode (file only, no stdout)
./autotabber -i chord.wav -o quiet.md --quiet

Usage

Usage: autotabber -i <input> [options]

Required:
  -i, --input <file|device>   audio file (.wav) or ALSA device (hw:0,0)

Options:
  -o, --output <file>         output markdown file (default: output.md)
  -t, --tuning <preset>       tuning preset: Standard, Drop D, Open G, DADGAD, etc.
  --bpm <bpm>                  manual tempo override
  --time-sig <sig>             manual time signature, e.g. 4/4
  --quiet                      suppress stdout tab output
  --verbose                    show progress and debug info
  --help                       display this help

Examples

Microphone capture:

autotabber -i hw:0,0 -o riff.md

File input with verbose output:

autotabber -i solo.wav -o transcription.md --verbose

Custom tuning:

autotabber -i drop_d.wav -t DADGBE -o output.md

Quiet mode (file only):

autotabber -i chord.wav -o quiet.md --quiet

Library Usage

package main

import (
    "fmt"
    "git.lan.thwap.org/thwap/autotabber/pkg/autotabber"
)

func main() {
    cfg := autotabber.DefaultConfig()
    src, _ := autotabber.NewFileSource("solo.wav", cfg)
    defer src.Close()

    fmt.Printf("Sample rate: %d\n", src.SampleRate())
}

Build

go build -o autotabber ./cmd/autotabber/

License

MIT