Gabriel Kaszewski bd39641c21 feat: update app name and icons for K-Tuner
- Changed app title from "AeroTuner" to "K-Tuner" in index.html and vite.config.ts
- Updated icon paths in index.html and vite.config.ts to use new icon files
- Added new icon files in various sizes (128x128, 144x144, 152x152, 192x192, 256x256, 384x384, 512x512, 48x48, 72x72, 96x96)
- Removed old PWA icons (pwa-192x192.png, pwa-512x512.png)
- Updated package.json to use a newer version of @types/bun
- Excluded test files from TypeScript compilation in tsconfig.app.json
- Refactored Header component to display "K-Tuner"
2025-12-30 00:14:41 +01:00

AeroTuner

An instrument tuner featuring a nostalgic Frutiger Aero aesthetic, built with modern web technologies and Clean Architecture.

Status PWA Tests Design

Features

Precision Tuning

  • FFT-based Pitch Detection: High-precision frequency analysis using the Web Audio API.
  • Harmonic Product Spectrum (HPS): Robust fundamental frequency detection, even for bass instruments.
  • Accurate to ±1 cent: Professional-grade tuning accuracy (don't quote me on that).
  • Multi-Instrument Support: Guitar, Ukulele, Bass, and Piano.
  • Alternate Tunings: Drop D, Open G, DADGAD, and more (Pro Mode).

Frutiger Aero UI

  • Glossy Aesthetics: Glassmorphism, vibrant gradients, and detailed reflections.
  • Interactive Gauge: Smooth, physics-based needle animation.
  • Basic vs. Pro Modes:
    • Basic: Clean interface for quick tuning.
    • Pro: Advanced tools including Waveform Display and String Guide.
  • Real-time Waveform: Visualizes the audio signal in real-time.
  • String Guide: Visual indicator of the target string.

Progressive Web App (PWA)

  • Installable: Add to home screen on iOS, Android, and Desktop.
  • Offline Capable: Works without an internet connection.
  • App-like Experience: Fullscreen mode with custom icons.

Technology Stack

Architecture

This project strictly follows Clean Architecture principles to ensure maintainability and testability:

  • Domain Layer (src/domain): Pure business logic (Note conversion, Tuning calculations, Harmonic analysis). Zero dependencies.
  • Infrastructure Layer (src/infrastructure): Implementation details (Web Audio API, FFT algorithms).
  • Presentation Layer (src/presentation): UI components and React hooks.

Quick Start

# Install dependencies
bun install

# Start development server
bun dev

# Run tests
bun test

# Build for production
bun run build

Testing

The project includes a comprehensive suite of unit tests for the Domain layer.

bun test

Tests cover:

  • Frequency ↔ Note conversion
  • Cents calculation & Tuning status
  • Harmonic analysis & Fundamental frequency detection

Usage

  1. Grant Permission: Allow microphone access when prompted.
  2. Select Instrument: Choose Guitar, Bass, Ukulele, or Piano.
  3. Choose Mode: Toggle between Basic (simple) and Pro (advanced) views.
  4. Tune: Play a string. The gauge shows if you are sharp (right) or flat (left).
    • Green: In tune!
    • Blue/Red: Adjust your tuning pegs.

License

MIT

Description
An instrument tuner featuring a nostalgic Frutiger Aero aesthetic, built with modern web technologies and Clean Architecture.
https://tuner.gabrielkaszewski.dev/
Readme 1.5 MiB
Languages
TypeScript 96.7%
CSS 2%
JavaScript 0.7%
HTML 0.6%