Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TouchLooper - 4-Track MIDI Looper Controller

Smartphone-based MIDI controller for live music looping with Ableton Live

License: MIT Platform MIDI

🎡 Overview

TouchLooper is a professional touchscreen MIDI controller built with Open Stage Control for controlling a 4-track looper system in Ableton Live. Designed for live keyboard performances requiring hands-free loop control.

Interface Overview

Built by Swarnadip Kar From IIT Bhilai

✨ Features

Four Independent Track Controllers

  • Complete loop control: Play, Stop, Overdub, Undo, Clear for each track
  • FX controls: Per-track Reverb and Delay with real-time knobs
  • Volume management: Individual track volumes with visual faders
  • Feedback control: Adjustable loop decay per track

Master Control Tab

  • Looper Speed: Global loop speed control (-3.00 to +3.00 semitones)
  • Master Tempo: BPM control for synchronized loops
  • Master Volume: Control all tracks simultaneously
  • Global Controls: Master Play/Stop/Metronome accessible from all tabs

Performance-Optimized Design

  • Touch-optimized UI: Large buttons (15-25% screen height) for live performance
  • Color-coded interface: Green (play), Red (stop), Orange (overdub), Purple (undo)
  • 5-tab interface: 4 track controllers + 1 master control
  • 40+ MIDI signals: Properly mapped without conflicts

🎯 Motivation

As performing musicians, we needed hands-free control of looping setups during live performances. Commercial MIDI controllers cost β‚Ή15,000-50,000 and lacked specific workflow requirements.

This solution:

  • βœ… Runs on any smartphone/tablet (β‚Ή0 cost)
  • βœ… Completely customizable layout
  • βœ… More flexible than hardware controllers
  • βœ… Professional-grade reliability for live performance

πŸ› οΈ Tech Stack

  • Open Stage Control v1.29.8 - Touch OSC/MIDI interface framework
  • MIDI Protocol - Notes (57-83) and CC messages (1-102)
  • OSC Protocol - WebSocket communication layer
  • JSON - Configuration and data structure
  • Ableton Live - DAW integration (compatible with any MIDI DAW)

πŸ“Έ Screenshots

Track Control Interface

Track Layout Individual track controls with Play, Stop, Overdub, Undo, Clear, and FX

Master Control Tab

Master Tab Global controls including looper speed, tempo, and master volume

FX Panel

FX Panel Reverb and delay controls with global metronome

Live Performance

Live Performance In action during practice session

πŸš€ Quick Start

Prerequisites

  • Open Stage Control v1.29.8+
  • Ableton Live (or any MIDI-capable DAW)
  • Virtual MIDI Port:
    • Windows: loopMIDI
    • macOS: IAC Driver (built-in)
    • Linux: ALSA (built-in)
  • Smartphone/Tablet (optional for remote control)

Installation

# Clone repository
git clone https://github.com/yourusername/touchlooper.git
cd touchlooper

# Launch Open Stage Control
open-stage-control -p 8080 -s "midi:YOUR_MIDI_PORT"

# Example for Windows with loopMIDI
open-stage-control -p 8080 -s "midi:loopMIDI Port"

# Example for macOS
open-stage-control -p 8080 -s "midi:IAC Driver Bus 1"

Access Interface

Local: http://localhost:8080
Remote: http://YOUR_COMPUTER_IP:8080 (from smartphone)

Load Multitrack-Looper.json in the browser interface.

πŸ“– Detailed setup: docs/setup-guide.md

πŸ“‹ MIDI Signal Reference

Track Controls (MIDI Notes)

Control T1 T2 T3 T4
Play 60 66 72 78
Stop 61 67 73 79
Overdub 62 68 74 80
Undo 64 70 76 82
Clear 65 71 77 83

Track Controls (MIDI CC)

Control T1 T2 T3 T4
Volume CC 7 CC 8 CC 9 CC 10
Feedback CC 11 CC 12 CC 13 CC 14
Reverb CC 91 CC 94 CC 97 CC 100
Delay CC 92 CC 95 CC 98 CC 101
Double CC 93 CC 96 CC 99 CC 102

Master Controls (All Tabs)

Control MIDI Signal Range Description
Global Play Note 58 0/127 Start all tracks
Global Stop Note 57 0/127 Stop all tracks
Global Metronome Note 59 0/127 Toggle metronome
Looper Speed CC 20 3-124 Loop speed (-3.00 to +3.00)
Master Tempo CC 1 0-127 Global BPM control

All signals on MIDI Channel 1

Full reference: docs/midi-mappings.md

🎨 Design Decisions

Five-Tab Architecture

  • T1-T4: Individual track controls with identical layouts
  • MST: Master controls for global parameters
  • Consistent UI pattern across all track tabs for muscle memory

Looper Speed Range (3-124)

The speed knob uses range 3-124 instead of 0-127 because:

  • Values 0-2 produce asymmetric -3.20, -3.15, -3.10 (non-standard)
  • Values 125-127 exceed +3.00 limit
  • Range 3-124 provides symmetric -3.00 to +3.00 semitone control

MIDI Mapping Strategy

  • Notes for buttons: Toggle/momentary actions (Play, Stop, Overdub)
  • CC for continuous: Knobs and faders (Volume, Reverb, Speed)
  • Sequential numbering: Track 1 (60-65), Track 2 (66-71), etc.

Root OnTouch Code

The root contains commented-out tab-switching code:

// Disabled during MIDI mapping to prevent ghost signals
// Enable after mapping complete for automatic track focusing

🎭 Use Cases

Live Performance

Build layered loop compositions in real-time while playing keyboard, with complete hands-free control of all 4 tracks.

Practice & Jamming

Quick loop recording over chord progressions, instant overdubbing, and easy undo for experimentation.

Music Production

Sketch ideas rapidly, control loop speed for creative effects, manage multiple simultaneous loops.

Teaching & Demonstration

Visual interface for teaching looping concepts, demonstrating live performance techniques.

πŸ”§ Customization

Edit Multitrack-Looper.json to customize:

Change Button Colors

"colorWidget": "rgba(64, 255, 64, 0.8)"  // Green play button

Adjust Layout Positions

"top": "0%",
"left": "0",
"width": "50%",
"height": "15%"

Remap MIDI Signals

"preArgs": [1, 60]  // Channel 1, Note 60

πŸ“‚ Project Structure

touchlooper/
β”œβ”€β”€ README.md
β”œβ”€β”€ LICENSE
β”œβ”€β”€ .gitignore
β”œβ”€β”€ Ableton Projects/
β”‚   └── Multi Audio Track Looping Setup.als
β”œβ”€β”€ archive/
β”‚   └── ... (old backups and variations)
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ CHANGELOG.md
β”‚   β”œβ”€β”€ CONTRIBUTING.md
β”‚   β”œβ”€β”€ midi-mappings.md
β”‚   β”œβ”€β”€ setup-guide.md
β”‚   β”œβ”€β”€ TODO.md
β”‚   └── VERSION_MANAGEMENT.md
β”œβ”€β”€ images/
β”‚   β”œβ”€β”€ ... (interface screenshots)
β”œβ”€β”€ profiles/
β”‚   β”œβ”€β”€ Multitrack Looper.json
β”‚   β”œβ”€β”€ Multitrack Looper (latest).json
β”‚   β”œβ”€β”€ Notes For Multitrack Looper Mapping.txt
β”‚   └── Single Track Looper.json
└── versions/
    └── ... (versioned session files)

πŸ“ˆ Technical Achievements

  • 40+ MIDI signals properly routed without conflicts
  • Responsive touch interface optimized for 7-10 inch screens
  • Real-time control with <5ms latency
  • Cross-platform support (Windows, macOS, Linux, iOS, Android)
  • Zero-cost solution using free open-source software

πŸ› Known Issues & Solutions

Issue: Ghost signals during MIDI mapping
Solution: Root onTouch code is commented out by default

Issue: Speed knob edge values
Solution: Range limited to 3-124 for symmetric control

See CHANGELOG.md for version history and fixes.

🀝 Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

Suggestions for improvements:

  • Visual feedback for loop recording status
  • Preset save/recall system
  • Support for 8+ tracks
  • Gesture controls (long-press, swipe)

πŸ“„ License

MIT License - see LICENSE file for details.

πŸ™ Acknowledgments

  • Open Stage Control by Jean-Emmanuel Doucet
  • IIT Bhilai Music Club (Swara) for performance testing opportunities
  • Ableton for excellent MIDI implementation

πŸ“Š Project Stats

  • Lines of JSON: ~5,000
  • Total Widgets: 50+
  • MIDI Signals: 40+
  • Tabs: 5 (4 tracks + 1 master)
  • Development Time: 3 weeks
  • Platform Compatibility: 6 (Windows, macOS, Linux, iOS, Android, Web)

βš™οΈ Configuration File Path

For manual configuration, such as updating the Open Stage Control launcher, you can find the configuration file at the following location:

  • Path: /Users/swarnadipkar/Library/Preferences/open-stage-control
  • Config File: /Users/swarnadipkar/Library/Preferences/open-stage-control/config.json

This is useful for applying advanced customizations or troubleshooting.


⭐ If this project helped you, please star it!

Built with ❀️ for the live looping community

Developed by Swarnadip Kar | IIT Bhilai

About

Smartphone-based MIDI controller for live music looping with Ableton Live

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors