Skip to content

CupoMeridio/Launchpad-Online

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

88 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Launchpad Online

PWA Web MIDI Web Audio 7606f975-ccbb-4f80-a0a7-71dee76af1a9 clean

Launchpad Online is a Progressive Web App (PWA) designed for performing with Novation Launchpad controllers. It provides both a virtual emulator and hardware integration, supported by a built-in project library.

The project serves as a specialized alternative to Ableton Live, focusing exclusively on Launchpad performance and project playback. Unlike a full Digital Audio Workstation (DAW), this application is dedicated to the core functionalities required for playing and managing Launchpad-specific projects.

Demo & Media

Video Presentation

Coming Soon

Screenshots

Coming Soon


Key Features

  • Modular Animation Engine: Lighting system with over 30 animation types.
  • Hardware Integration: Support for Novation Launchpad and compatible controllers via Web MIDI API.
  • Audio Core & Visualizer:
    • Audio engine based on Web Audio API for sample playback.
    • Real-time audio visualizer with customizable rendering options.
  • Customization & Aesthetics:
    • Launchpad Skins: Change the appearance of the digital controller, including support for button stickers/decals.
    • Dynamic Backgrounds: Decorative background images and video loops to enhance performance videos.
    • Layout Control: Rotation and scalability settings for optimal visuals.
  • PWA Ready: Installable as a native app on desktop and mobile, with offline support.
  • Project Management: Project loading via JSON files with support for up to 8 pages (512 total sounds).
  • Built-in Project Library: Access a growing collection of pre-configured projects ready to be played immediately.

Roadmap & Future Ideas

Planned features for future development:

  • Multisampling Support: Ability to assign multiple audio samples to a single button (e.g., for velocity layering or round-robin).
  • In-App Project Creator: Integrated tool to build and configure projects directly within the application without manual JSON editing.
  • In-App Animation Designer: Visual interface to create and customize lighting patterns and animations.
  • Project Library Expansion: Continuous addition of ready-to-play projects to the built-in library.
  • Performance Optimization: Continuous research into app optimization to ensure lightweight and fast execution across browsers and the widest possible range of devices.
  • Asset Compression & Memory Management: Implementation of methods to reduce or compress the size of video and audio assets (currently .mp4 and .wav) to make the app lighter and less memory-intensive.
  • Localization & Multi-language Support: Implement translations for as many languages as possible to make the application accessible to a global audience.

Getting Started

Online Access

The easiest way to use the application is via the live demo: https://cupomeridio.github.io/Launchpad-Online/

The online version is updated automatically and supports PWA installation directly from the browser.

Local Installation (Alternative)

If you wish to run the project locally or contribute to development:

  1. Prerequisites: A modern browser with Web MIDI and Web Audio support (Chrome, Edge, Opera).
  2. Clone the repository:
    git clone https://github.com/your-username/Launchpad-Online.git
    cd Launchpad-Online
  3. Start a local server: A static server is required for MIDI and PWA features.
    • VS Code: Use the Live Server extension.
    • Terminal: Run npx http-server.

Project Structure

Launchpad-Online/
β”œβ”€β”€ assets/                 # Media resources
β”‚   β”œβ”€β”€ icons/              # App icons and favicons
β”‚   β”œβ”€β”€ images/             # UI images and launchpad covers
β”‚   └── videos/             # Background video loops
β”œβ”€β”€ css/                    # Application styling
β”‚   β”œβ”€β”€ launchpad.css       # Launchpad-specific styles
β”‚   └── style.css           # General application styles
β”œβ”€β”€ js/                     # Application logic
β”‚   β”œβ”€β”€ vendor/             # Third-party libraries
β”‚   β”‚   └── launchpad-webmidi.js
β”‚   β”œβ”€β”€ animationClasses.js # Animation class definitions
β”‚   β”œβ”€β”€ animationData.js    # Animation data and structures
β”‚   β”œβ”€β”€ animationEngine.js  # Core animation rendering engine
β”‚   β”œβ”€β”€ animationLibrary.js # Registry of available animations
β”‚   β”œβ”€β”€ app.js              # Main application entry point
β”‚   β”œβ”€β”€ audio.js            # Web Audio API engine
β”‚   β”œβ”€β”€ interaction.js      # User interaction handling
β”‚   β”œβ”€β”€ lights.js           # Legacy light management (refactored)
β”‚   β”œβ”€β”€ midi.js             # MIDI hardware integration
β”‚   β”œβ”€β”€ physicalInterface.js # Physical Launchpad mapping
β”‚   β”œβ”€β”€ project.js          # Project and page management
β”‚   β”œβ”€β”€ static-data.json    # Static configuration data
β”‚   β”œβ”€β”€ ui.js               # UI components and DOM management
β”‚   β”œβ”€β”€ video.js            # Video background controller
β”‚   β”œβ”€β”€ visualizer-controls.js # Visualizer UI controls
β”‚   β”œβ”€β”€ visualizer.js       # Audio visualizer logic
β”‚   └── webInterface.js     # Virtual Launchpad interface
β”œβ”€β”€ locales/                # Internationalization (i18n)
β”‚   β”œβ”€β”€ de.json
β”‚   β”œβ”€β”€ en.json
β”‚   β”œβ”€β”€ es.json
β”‚   β”œβ”€β”€ fr.json
β”‚   └── it.json
β”œβ”€β”€ projects/               # Performance projects (JSON + Samples)
β”‚   └── [Project Name]/
β”œβ”€β”€ index.html              # Main HTML entry point
β”œβ”€β”€ manifest.json           # PWA manifest
β”œβ”€β”€ package.json            # NPM configuration
└── README.md               # Project documentation

Contributing

Contributions are welcome. If you have proposals for new animations, interface improvements, or compatibility profiles for new MIDI controllers:

  1. Fork the project.
  2. Create a branch for your change (git checkout -b feature/NewFeature).
  3. Commit your changes (git commit -m 'Add NewFeature').
  4. Push to the branch (git push origin feature/NewFeature).
  5. Open a Pull Request.

License

Distributed under the MIT License. See LICENSE for more information.


Acknowledgments


Developed for the Launchpad community.

Releases

No releases published

Packages

 
 
 

Contributors