Skip to content

bear3283/TokTokgom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TokTokgom (톡톡곰)

TokTokgom Icon

Visual Metronome with Multi-Device Wireless Synchronization

Platform Swift SwiftUI License

FeaturesScreenshotsInstallationUsageArchitectureContributing


🎵 Overview

TokTokgom is a revolutionary visual metronome app for iOS that enables musicians to practice together in perfect sync through multi-device wireless synchronization. Unlike traditional audio metronomes, TokTokgom's visual-first design works perfectly in noisy environments and provides an accessible rhythm tool for all musicians, including the hearing-impaired community.

톡톡곰은 iOS를 위한 혁신적인 시각적 메트로놈 앱으로, 다중 기기 무선 동기화를 통해 음악가들이 완벽한 동기화 상태로 함께 연습할 수 있게 합니다.


✨ Features

🔄 Multi-Device Synchronization (World's First!)

  • Wireless sync across unlimited iOS devices via WiFi or Bluetooth
  • ±10-50ms accuracy for professional ensemble practice
  • Host & Join sessions with automatic peer discovery
  • Real-time sync of tempo, time signature, and beat changes

👁️ Visual-First Design

  • Bold pulsing animations designed for maximum visibility
  • Downbeat emphasis with distinct visual and haptic feedback
  • Customizable themes to match your preference
  • Works without audio - perfect for noisy practice spaces

⚡ Powerful Practice Tools

  • Tap Tempo: Set BPM naturally by tapping the screen
  • BPM Range: 30-300 BPM for all musical styles
  • Time Signatures: 2/4, 3/4, 4/4, 5/4, 6/8, 7/8, 9/8 and more
  • BPM Presets: Quick access to common tempo markings
  • Haptic Feedback: Feel the beat with customizable vibration

♿ Accessibility Champion

  • Fully visual metronome requiring no audio
  • VoiceOver support for blind and low-vision users
  • High-contrast visual indicators
  • Inclusive design for hearing-impaired musicians

📱 Screenshots

Coming soon - screenshots will be added before App Store submission


🔧 Installation

Requirements

  • iOS 17.0+
  • Xcode 15.0+
  • Swift 5.9+
  • Physical iOS device (required for MultipeerConnectivity testing)

Setup

  1. Clone the repository
git clone https://github.com/bear3283/TokTokgom.git
cd TokTokgom
  1. Open in Xcode
open TokTokgom.xcodeproj
  1. Configure Permissions

The app requires local network access for multi-device sync. Permissions are already configured in Info.plist:

  • Local Network Usage: For wireless device discovery
  • Bonjour Services: _toktokgom-sync._tcp
  1. Build and Run
  • Select a physical iOS device (Simulator doesn't support MultipeerConnectivity)
  • Build (⌘+B) and Run (⌘+R)

🎯 Usage

Solo Practice

  1. Open TokTokgom
  2. Tap the tap area to set your desired tempo
  3. Press Start to begin the visual metronome
  4. Adjust BPM, time signature, or theme as needed

Ensemble Practice (Multi-Device Sync)

Host Session

  1. Tap the 👥 icon in the top toolbar
  2. Select "Host Session"
  3. Enter a session name (e.g., "Band Rehearsal")
  4. Wait for participants to join
  5. Approve incoming connection requests
  6. Start the metronome - all connected devices sync automatically

Join Session

  1. Tap the 👥 icon in the top toolbar
  2. Select "Join Session"
  3. Choose from nearby available sessions
  4. Wait for host approval
  5. Once connected, your device will sync with the host's metronome

Note: All devices must be within ~30 feet and have WiFi or Bluetooth enabled.


🏗️ Architecture

TokTokgom follows MVVM (Model-View-ViewModel) architecture with clean separation of concerns:

TokTokgom/
├── Models/
│   ├── TimeSignature.swift       # Time signature data model
│   ├── MetronomeState.swift      # Metronome state enum
│   ├── SessionRole.swift         # Solo/Host/Participant roles
│   ├── SessionState.swift        # Session connection state
│   ├── SyncMessage.swift         # Sync protocol messages
│   └── Peer.swift                # Peer device info
│
├── ViewModels/
│   ├── MetronomeViewModel.swift  # Main metronome logic
│   └── SessionViewModel.swift    # Session management
│
├── Views/
│   ├── MetronomeView.swift       # Main screen
│   └── Components/
│       ├── BeatVisualizer.swift  # Pulsing beat animation
│       ├── TapArea.swift         # Tap tempo interface
│       ├── BPMDisplay.swift      # BPM numeric display
│       ├── SessionDiscoveryView  # Host/Join interface
│       └── ...
│
└── Services/
    ├── MetronomeEngine.swift     # High-precision timer
    ├── TapTempoDetector.swift    # BPM calculation
    ├── MultipeerService.swift    # P2P networking
    └── SyncManager.swift         # Clock sync algorithm

Key Technologies

  • SwiftUI: Modern declarative UI framework
  • Combine: Reactive programming for state management
  • MultipeerConnectivity: P2P device discovery and communication
  • AVFoundation: Audio session management
  • UIKit Haptics: Tactile feedback generation

For detailed architecture documentation, see ARCHITECTURE_DESIGN.md.


🎓 Use Cases

Perfect For:

  • 🎸 Ensemble Musicians: Band, orchestra, chamber groups
  • 👨‍🏫 Music Teachers: Lead synchronized group lessons
  • 🎓 Music Students: Practice with precision and consistency
  • 💃 Dance Instructors: Choreography timing for multiple students
  • 🎹 Solo Musicians: Practice in noisy environments
  • ♿ Hearing-Impaired Musicians: Accessible rhythm training

Real-World Scenarios:

  • Band Rehearsals: Every member sees the same synchronized beat
  • Orchestra Practice: Section leaders coordinate tempo across ensemble
  • Music Education: Teachers demonstrate tempo to entire class simultaneously
  • Dance Classes: Multiple students follow the same rhythm wirelessly
  • Recording Sessions: Visual click track for quiet recording environments
  • Noisy Venues: Visual metronome works where audio metronomes fail

🚀 Roadmap

✅ Version 1.0 (Current)

  • Visual metronome with tap tempo
  • Multi-device wireless synchronization
  • Time signature support (2/4 through 9/8)
  • Haptic feedback
  • Customizable themes
  • BPM presets

🔮 Future Enhancements

  • NTP-style clock sync for sub-10ms accuracy
  • Background mode support with audio session
  • Connection quality indicator (signal strength, latency)
  • Session passwords for private sessions
  • Subdivision indicators (eighth notes, triplets)
  • Practice mode with gradual tempo changes
  • Session recording and playback
  • Cloud sessions for remote synchronization

📖 Documentation


🧪 Testing

Unit Testing

Run unit tests for core services:

⌘+U in Xcode

Multi-Device Testing

Requirements:

  • 2+ physical iOS devices (Simulator doesn't support MultipeerConnectivity)
  • WiFi or Bluetooth enabled
  • Devices within ~30 feet

Test Scenarios:

  1. Basic Sync: Host session → Join from second device → Start metronome → Verify sync
  2. BPM Change: Change BPM on host → Verify participant updates
  3. Time Signature: Change time signature → Verify sync
  4. Disconnect: Host leaves → Verify participant transitions to solo mode

🤝 Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes with descriptive messages
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Code Style


📄 License

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


👨‍💻 Author

bear3283


🙏 Acknowledgments

  • Built with SwiftUI
  • Follows Apple Human Interface Guidelines
  • Inspired by the needs of musicians practicing in real-world conditions
  • Special thanks to the hearing-impaired music community for accessibility insights

📞 Support


Made with ❤️ for musicians everywhere

⭐ If you find this project helpful, please give it a star!

About

TokTokgom (톡톡곰) - Visual metronome with multi-device wireless synchronization for iOS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages