Skip to content

Development

Thiago Fernando Rech edited this page Jun 30, 2025 · 2 revisions

Development

Prerequisites

  • Android Studio Hedgehog or newer
  • Android SDK API 27+
  • NDK (Native Development Kit)
  • Android device with microphone

Build

# Clone the repository
git clone <repository-url>
cd ToneForge

# Open in Android Studio or build via command line
./gradlew assembleDebug

Project Structure

The project uses:

  • Gradle: Build system
  • CMake: Native code build
  • JNI: Java-C++ interface
  • AudioRecord/AudioTrack: Android audio API
  • Fragments: Multi-screen navigation
  • RecyclerView: Drag-and-drop interface
  • SharedPreferences: Data persistence

Compatibility

  • Minimum Android: 8.1 (API 27)
  • Architectures: ARM64, ARM32, x86, x86_64
  • Sample rate: 48kHz
  • Format: PCM Float 32-bit
  • Channels: Mono (input and output)

Troubleshooting

Common Issues

  1. Audio not working: Check microphone permissions
  2. High latency: Use device with low audio latency
  3. Crash on startup: Verify NDK is installed
  4. Effects not applying: Restart audio
  5. Presets not saving: Check disk space
  6. Order not persisting: Restart app

Logs

Use adb logcat to see detailed logs:

adb logcat | grep ToneForge

Roadmap

βœ… Completed

  • Real-time audio pipeline
  • Basic effects (Gain, Distortion, Delay, Reverb)
  • Real-time tuner
  • Preset system
  • Customizable effect order
  • Modulation effects (Chorus, Flanger, Phaser)
  • Advanced controls (dry/wet mix, distortion types)
  • Multi-screen interface with navigation
  • 3-band Equalizer (EQ)
  • Compressor with advanced controls
  • Informative tooltips system
  • Quick parameter reset
  • Export/import presets
  • Favorites system
  • Visual effect chain representation
  • Oversampling for better quality
  • Background processing with ForegroundService
  • Persistent notification with quick controls
  • Robust permission management
  • Automatic state recovery
  • Pipeline system with automatic recovery
  • Latency adjustment: Choose between lower latency or greater stability
  • MIDI Learn for external control
  • Automation system: Record and playback parameter changes

🚧 Partially Implemented

  • Metronome (UI + basic C++ integration)
  • Looper (UI + basic C++ integration)
  • Recorder (UI ready, basic functionality)

πŸ”„ In Development

  • Metronome improvements (animations, visualization)
  • Looper improvements (timer, duration visualization)
  • Complete recorder functionality

πŸ“‹ Upcoming Features

  • Complete automation persistence (save/load)
  • Automation editing interface
  • Automation synchronization with metronome
  • Customizable response curves
  • Interface improvements (animations, transitions)
  • Support for different sample rates
  • Integration with external DAWs

Contributing

This project is open source. Feel free to contribute!

Development Guidelines

  1. Code style: Follow Android and C++ best practices
  2. Testing: Test on multiple devices and Android versions
  3. Documentation: Update documentation for new features
  4. Performance: Consider audio latency and CPU usage
  5. Compatibility: Ensure backward compatibility

See Architecture for technical details.

ToneForge Wiki

πŸš€ Getting Started

πŸŽ›οΈ Effects & Features

🧠 Advanced Features πŸ†•

🎡 Learning & Practice

πŸ”§ Technical


Quick Links:

Clone this wiki locally