Core Features
The Orpheus playback engine is built on native audio frameworks for optimal performance and reliability.Gapless Playback
Seamless transitions between tracks with zero gaps or clicks.Gapless playback is enabled by default and works automatically for all audio formats. The engine pre-loads the next track while the current one is playing.
- Pre-buffering of next track before current track ends
- Sample-accurate timing for crossfade points
- Maintains audio pipeline state across track boundaries
- Supports all common audio codecs (AAC, MP3, FLAC, etc.)
Loudness Normalization
Automatic volume leveling across tracks to maintain consistent perceived loudness.Playback Position Restoration
Automatically resume playback from where you left off, even after closing the app.Position Persistence
Position Persistence
- Saves current position every few seconds
- Restores position on app restart
- Works across app updates
- Remembers position per track
Auto-resume Playback
Auto-resume Playback
Enable “在应用启动时恢复上次播放进度” in Settings > Playback to automatically continue playing when you reopen the app.
Player Controls
The player interface provides comprehensive playback controls with a modern, gesture-driven design.Main Player Screen
The full-screen player (apps/mobile/src/app/player.tsx) features:
- Main Tab
- Lyrics Tab
- Album artwork with dynamic theme colors
- Progress bar with seek gesture support
- Play/Pause, Previous, Next controls
- Shuffle and Repeat mode toggles
- Queue access button
- Playback speed control
- Danmaku (bullet comments) display
Background Styles
Customize the player’s visual appearance:Gradient Mode
Gradient Mode
Extracts dominant color from album artwork and creates a gradient background that animates smoothly between tracks.
Material Design 3 (MD3)
Material Design 3 (MD3)
Uses system theme colors for a consistent appearance with the rest of the app.
Queue Management
Access the playback queue through the bottom sheet modal:- View upcoming tracks
- Reorder queue items with drag-and-drop
- Remove tracks from queue
- Jump to any track in queue
- View queue history
Playback Modes
Control how tracks progress through your playlist:Repeat Modes
- Repeat Off
- Repeat All
- Repeat One
Play through the queue once and stop.
Shuffle Mode
Shuffle creates a randomized playback order while maintaining the original queue. Toggling shuffle off restores the original order.
Advanced Playback Features
Headless Playback
Orpheus supports background playback with headless task execution:- iOS: Events bridged from Native Module to JavaScript
- Android: Uses Android Headless Task Service natively
Media Session Integration
- Lock screen controls: Play/pause, skip, artwork display
- Notification controls: Persistent playback notification with actions
- Bluetooth/car integration: Responds to external media controls
- Now Playing info: Displays current track in system media player
Audio Focus Management
Android Audio Focus
Android Audio Focus
- Automatically pauses when other apps request audio focus
- Ducks volume during navigation prompts
- Resumes playback when focus regained
iOS Audio Session
iOS Audio Session
- Configures audio session category for background playback
- Handles interruptions (calls, alarms)
- Integrates with Control Center
Playback Settings
All playback settings are accessible from Settings > Playback:Changes to most playback settings take effect immediately without requiring an app restart.
Available Settings
| Setting | Description | Default |
|---|---|---|
| 恢复播放进度 | Restore playback position on app start | Enabled |
| 响度均衡 | Loudness normalization (experimental) | Disabled |
| 启动时自动播放 | Auto-resume playback on launch | Disabled |
| 弹幕设置 | Configure bullet comment display | Separate modal |
Performance Optimization
Memory Management
- Efficient audio buffer management
- Automatic cache cleanup
- Minimal battery impact during playback
Network Optimization
- Adaptive bitrate selection based on connection quality
- Intelligent pre-buffering strategy
- Resume support for interrupted downloads
CPU Usage
The Orpheus engine uses hardware audio decoding when available, minimizing CPU usage and extending battery life.
Troubleshooting
Audio Stuttering or Skipping
- Disable loudness normalization
- Check network connection quality
- Clear app cache
- Reduce background app activity
Playback Position Not Restoring
- Verify setting is enabled in Settings > Playback
- Ensure app has storage permissions
- Check if track is still available (not deleted)
Gapless Playback Has Gaps
- Verify audio files are not corrupted
- Check if network connection is stable
- Some audio formats may have inherent limitations
Background Playback Stops
- Check battery optimization settings for BBPlayer
- Verify notification permission is granted
- Ensure “Background App Refresh” is enabled (iOS)