OBSIDIAN Neural

May 4, 2026 · View on GitHub

RepositoryDescription
obsidian-neural-centralCentral inference server
obsidian-neural-providerProvider kit — run a GPU node on the network
obsidian-neural-frontendStorefront & dashboard
obsidian-neural-controller ← you are hereMobile MIDI controller app
ai-djVST3/AU plugin (client)

Overview

A Flutter-based USB MIDI surface controller for the OBSIDIAN Neural VST3 plugin — real-time AI music generation for live performance.

Flutter Platform MIDI License

OBSIDIAN Neural mobile MIDI surface controller landscape UI for tablet and mobile, showing generative AI and mixing features

Seamless live workflow: Instantly generate unique AI loops and craft your mix with high-precision touch controls.

What is this?

This app turns your Android or iOS device into a dedicated hardware-style controller for OBSIDIAN Neural. Control all 8 slots directly from your phone or tablet, hands-free from your DAW, during live performance.

OBSIDIAN Neural is a VST3 plugin for real-time AI loop generation — type a text prompt, get an audio loop instantly, triggerable via MIDI. → Learn more


Features

  • 8 slot cards — one per OBSIDIAN track, scrollable horizontally
  • Per slot: Volume fader · Pan knob · Pitch · Fine tune · Play · Generate · Mute · Solo · Beat Repeat
  • Pages A/B/C/D — switch track variations instantly (disabled during generation)
  • 8 Sequencer patterns per slot (2-row grid, finger-friendly)
  • Master panel — Master volume, pan, prev/next track navigation
  • Bidirectional MIDI feedback — app reflects real VST state in real time (play, generate, page changes)
  • Smart UI states — buttons pulse while pending (armed/stopping/generating), lock during generation
  • Auto-connect — plug your USB MIDI cable, the app connects automatically
  • Plug & play — zero configuration, hardcoded MIDI mapping on Ch.1
  • Landscape only — optimized for tablet and phone in landscape mode

Requirements

AndroidiOS
Min versionAndroid 6.0 (API 23)iOS 11+
ConnectionUSB Host (OTG cable)USB-C or Lightning → USB adapter
MIDIandroid.media.midiCoreMIDI

Getting Started

1. Connect your device

  • Android: Use a USB OTG cable between your phone and the MIDI interface connected to your DAW machine
  • iOS: Use a USB-C → USB-A Camera Connection Kit (or Lightning → USB3 adapter) + external power if needed

The app detects and connects to the first available USB MIDI device automatically.

2. Build & install

git clone https://github.com/innermost47/ai-dj.git
cd obsidian-controller

flutter pub get
flutter build apk --release          # Android
flutter install                      # Install directly via USB debug

For iOS (requires macOS + Xcode):

flutter build ipa
# Open ios/Runner.xcworkspace in Xcode to sign and install

3. Enable Developer Mode (Windows only)

Flutter requires symlink support on Windows:

Settings → Developer Mode → On

Or run: start ms-settings:developers


MIDI Communication Protocol

1. App → VST (Control)

The App sends control signals to the VST. These must be mapped in the OBSIDIAN Neural MIDI Learn system.

CategoryChannelMIDI CC / MsgNotes
PerformanceCh. 1Note 35–42 / CC 19–118Play, Vol, Pan, Mute, Solo, Gen, Page, Seq
ShapingCh. 2CC 39–79ADSR Envelopes, Beat Repeat
CrossfadersCh. 3CC 20–28Pair 1-4, Global, Curve, Master EQ

2. VST → App (Feedback)

The VST sends real-time state updates. The App listens automatically on these channels.

Mixer Feedback (Ch. 4)

CategoryMIDI CCValues / Notes
Play/Stop21–280=Idle, 64=Pending, 127=Active
Generate31–380=Idle, 127=Active
Page Change41–480=Idle, 64=Pending, 80-83=Target (A-D)
Volume/Pan51–58 / 61–680–127
Pitch/Fine71–78 / 81–880–127
Seq/Mute/Solo91–118State values

Shaping Feedback (Ch. 5)

CategoryMIDI CCNotes
ADSR Envelopes21–58Per slot (Attack, Decay, Sustain, Release)
Pair Crossfaders59, 60, 61, 62Pair 1, 2, 3, 4
Global Crossfader64Value 0–127
Crossfader Curve65Mode 0, 1, 2
Master EQ66, 67, 68High, Mid, Low

UI Synchronization Logic

  • pending: Triggered when feedback value is 64.
  • pending page: Triggered by Channel 4, CC 41–48 with values 80–83. The value corresponds to the target page (80=A, 81=B, 82=C, 83=D).
  • active: Triggered when feedback value is 127.
  • generating: GEN button pulses; Page buttons locked.

Bitwig Studio Setup

  1. Instrument Track: Keep your OBSIDIAN-Neural VST output on Master.
  2. MIDI Routing: Create a new MIDI Track and add a Note Receiver device.
    • Set Source to your VST track.
    • Set Output to your Android device.
  3. Channel Handling: Ensure your routing configuration allows Channels 1, 2, 3, 4, and 5 to pass through. If using a MIDI bridge, verify it is not filtering these channels.

Note: Your implementation uses 0-based MIDI channels for the VST (channelPerf=0, etc.) and specific feedback channels 4 and 5. Ensure your Android MidiService is configured to listen specifically to these channels.



License

GNU Affero General Public License v3.0 — see LICENSE


Made with 🎵 in France by InnerMost47