Skip to content

pbalduino/menio_tuner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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