fcb_looper/project_spec.md
2025-05-25 23:53:46 +02:00

99 lines
4.2 KiB
Markdown

# FCB1010 Looper Pedal - Complete Project Specification
## System Overview
A looper pedal system using a Behringer FCB1010 MIDI foot controller, Behringer UMC404HD audio interface, Raspberry Pi with TFT display (215x135mm).
The system provides a 5x5 matrix of loop tracks organized in columns and rows, with real-time visual feedback.
## Hardware Components
- **Behringer FCB1010**: MIDI foot controller with 10 footswitches (1-10), UP/DOWN buttons, and 2 expression pedals
- **Behringer UMC404HD**: Audio interface for input/output
- **Raspberry Pi**: Running Linux
- **TFT Display**: 215x135mm color display, no touchscreen
- **Audio**: JACK audio connect kit
## System Architecture
### Two-State Operation
1. **Menu State**: Configuration and management functions
2. **Performance State**: Recording and playback matrix
### Matrix Organization
- **5 Columns**: Synchronized recording and playback for each column
- **5 Rows**: Individual tracks within each column
- **25 Total Cells**: Each cell can contain one audio loop
- **Column-based Timing**: First recording in a column sets the bar count for all tracks in that column
## Interface Design
- **Metronome**: Moving indicator that pulses when in center
- **Progress Bars**: Show current position in each column with bar divisions
- **Active Row**: Increased border with
- **Selected Cell**: Switched border and background color
- **Track States**:
- `---`: Empty cell (dark background)
- `READY`: Recorded, ready to play (green)
- `PLAY`: Currently playing (blue)
- `REC`: Currently recording (red)
- `SOLO`: Solo mode active (orange/amber)
- **Volume Bars**: Small bars under each cell showing track volume
## Button Mappings
### Menu State
- **Button 1**: Tap Tempo
- **Button 2**: Enable/Disable Click Track
- **Button 3**: Clear selected Column
- **Button 4**: Quantization Settings (Off, 1/4, 1/8, 1/16 note)
- **Button 5**: Save/Load Project (use buttons 6-10 for slot selection)
- **Buttons 6-10**: Column selection (for clear/save/load operations)
- **UP/DOWN**: Switch to Performance Mode
- **Expression Pedal A**: Click track volume
- **Expression Pedal B**: Master volume
### Performance State
- **Button 1**: Record/Arm
- **Button 2**: Play/Mute current track
- **Button 3**: Solo current track
- **Button 4**: Overdub on current track
- **Button 5**: Clear current track
- **Buttons 6-10**: Column selection (1-5)
- **UP/DOWN**: Navigate rows (switch between track rows), return to Menu when at top or bottom
- **Expression Pedal A**: Current track volume
- **Expression Pedal B**: Master volume
## Operational Behavior
### Recording Workflow
- **First Recording in Column**: Sets bar count for entire column, records until stopped
- **Subsequent Recordings**: Auto-sync to established column length
- **Record Button Stop**: Recording stops, cell starts playing
- **Stop Button Stop**: Recording cancelled, previous state restored
- **Overdub Button Stop**: Recording continues for next loop, overdubs on previous content
### Timing and Synchronization
- **All actions sync to the beat**: Start/stop occurs at metronome center position
- **Column Switching**: Only when not recording, immediate switching to selected column
- **Tempo Changes**: Only allowed when all tracks are cleared
- **Recording Start**: Synced to column start if column playing, otherwise next bar
### Solo Functionality
- **Solo Activation**: Press Solo button on any track
- **Solo Indication**: Cell shows `SOLO` state in orange/amber color
- **Multiple Solo**: Additional tracks can be added to solo group
- **Solo Play**: Activates solo tracks + any tracks showing `PLAY` state
- **Solo Stop**: Stops entire column
- **All Solo Actions**: Synced to next beat
### MIDI Implementation
- **Startup**: Send SysEx configuration to FCB1010 for proper button/pedal mapping
- **Expression Pedals**: Set volume on change
- **MIDI Feedback**: Send click track to sync with other systems
### State Management
- **Save in Numbered Slots**: 5 project slots accessible via buttons 6-10 in save/load mode
- **Startup Behavior**: Load last used project and configure FCB1010
- **Column Consistency**: Recordings automatically match column bar count
- **State Validation**: Prevent invalid operations (e.g., switching columns while recording)