Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

pbalduino/menio_tuner

Repository files navigation

MenioTuner Logo

🎸 MenioTuner

Flutter License Issues

A beautiful, ad-free guitar tuner built with Flutter.

No ads, no subscriptions, just pure tuning perfection for musicians.

✨ Features

🎯 Accurate Tuning

  • βœ… Real-time frequency detection using FFT + autocorrelation
  • βœ… Visual gauge with needle responsiveness and smooth animations
  • βœ… Color-coded feedback: Flat (β™­) = Red/Left, Sharp (β™―) = Yellow/Right, In Tune = Green
  • βœ… Precision within Β±1.5 cents for perfect tuning
  • βœ… Automatic string detection with manual override option
  • βœ… Amplitude-based signal validation for clean readings
  • βœ… Subtle gradient tint shifts (red β†’ orange β†’ green) reinforce tuning status

🎡 Multiple Instruments & Tunings

  • Guitar: Standard, Drop D, Drop C, Open G, DADGAD
  • Bass Guitar: 4-string standard tuning
  • Ukulele: Standard tuning (G C E A)
  • Violin: Standard tuning (G D A E)
  • Mandolin: Standard tuning (G D A E)
  • Custom tuning creation and management

🎨 Beautiful Interface

  • Modern gradient design with smooth animations
  • Dark/Light theme support for stage performance
  • Intuitive string selection with visual feedback
  • Responsive design for all screen sizes

β™Ώ Accessibility First

  • Haptic feedback when perfectly in tune
  • Color-blind safe visual indicators
  • High contrast ratios for visibility
  • Voice-over support

βš™οΈ Customizable Settings

  • Reference frequency adjustment (A4 = 430-450 Hz in 0.5 Hz increments)
  • Microphone sensitivity levels
  • Theme selection (Light/Dark)
  • Language selection (English/Portuguese)
  • Haptic feedback toggle
  • Keep screen on during tuning

πŸ“± Screenshots

Main Tuner Settings Tunings
Main Screen Settings Tunings

πŸš€ Getting Started

Prerequisites

  • Flutter 3.9.0 or higher
  • Dart SDK 3.0.0 or higher
  • Android Studio / VS Code with Flutter extension
  • Physical device or emulator with microphone access

Installation

  1. Clone the repository

    git clone https://github.com/pbalduino/menio_tuner.git
    cd menio_tuner
  2. Install dependencies

    flutter pub get
  3. Run the app

    flutter run

Development Setup

# Check Flutter installation
flutter doctor
# Run tests
flutter test
# Build for Android
flutter build apk
# Build for iOS
flutter build ios

πŸ—οΈ Architecture

Project Structure

lib/
β”œβ”€β”€ main.dart # App entry point
β”œβ”€β”€ app.dart # App configuration
β”œβ”€β”€ screens/ # UI screens
β”‚ β”œβ”€β”€ tuner_screen.dart # Main tuning interface
β”‚ β”œβ”€β”€ settings_screen.dart # Settings and preferences
β”‚ └── tunings_screen.dart # Tuning selection
β”œβ”€β”€ widgets/ # Reusable UI components
β”‚ └── tuner_gauge.dart # Custom gauge widget
β”œβ”€β”€ services/ # Core business logic
β”‚ β”œβ”€β”€ audio_processor.dart # Audio input processing
β”‚ └── signal_processing.dart # FFT and frequency analysis
└── data/ # Data models and storage
 └── tunings.dart # Tuning definitions

Key Technologies

  • State Management: StatefulWidget (upgrading to Riverpod)
  • Audio Processing: βœ… FFT + Autocorrelation via flutter_audio_capture
  • UI Framework: Flutter Material Design
  • Platform Integration: βœ… Native audio permissions via permission_handler

πŸ”§ Technical Details

Audio Processing

  • Buffer Size: 4096 samples @ 44.1 kHz (~93ms latency)
  • Frequency Range: 80-2000 Hz (covers guitar fundamentals)
  • Noise Filtering: Low-pass filter at 2 kHz
  • Smoothing: Exponential moving average for stable readings

Performance Optimizations

  • βœ… Audio processing pauses when app is backgrounded
  • βœ… Efficient memory management with proper disposal
  • βœ… Smooth 60fps animations with minimal jank
  • βœ… Battery-optimized microphone usage
  • βœ… Lifecycle-aware audio stream management
  • βœ… Permission-based audio access control
  • βœ… Optional debug mode with logging & diagnostics overlay

πŸ“‹ Roadmap

πŸ”΄ High Priority

  • (ε‰Šι™€) UI Design & Navigation (ε‰Šι™€γ“γ“γΎγ§) βœ…
  • (ε‰Šι™€) Real-time Audio Input Processing (ε‰Šι™€γ“γ“γΎγ§) βœ… (#1)
  • (ε‰Šι™€) Tuning Selection Navigation (ε‰Šι™€γ“γ“γΎγ§) βœ… (#2)

🟑 Medium Priority

  • (ε‰Šι™€) Frequency Smoothing (ε‰Šι™€γ“γ“γΎγ§) βœ… (#3)
  • (ε‰Šι™€) Fix Default String Selection (ε‰Šι™€γ“γ“γΎγ§) βœ… (#17)
  • (ε‰Šι™€) Debug Logging (ε‰Šι™€γ“γ“γΎγ§) βœ… (#18)
  • Internationalization (i18n) (#19)
  • Haptic Feedback (#4)
  • Color-blind Accessibility (#5)
  • Dark/Light Theme Support (#7)
  • State Management (Riverpod) (#9)

🟒 Low Priority

  • Custom Tuning Creation (#13)
  • Multi-instrument Support (#16)
  • Advanced Settings (#12, #15)

View all issues β†’

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests if applicable
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Code Style

  • Follow Dart Style Guide
  • Use flutter analyze to check for issues
  • Format code with dart format .
  • Write tests for new features

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Flutter team for the amazing framework
  • Open source audio processing libraries
  • Musicians who provided feedback and testing
  • Contributors who help make this project better

πŸ“ž Support


MenioTuner

Made with ❀️ for musicians by musicians

About

A guitar tuner

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /