In Theory is an interval-based MIDI performance instrument. Its keypad walks through a chosen scale, while three interval rows turn each gesture into a chord. It responds immediately to touch or MIDI input and has no sequencer clock or tempo.
In Theory is played directly. It does not need transport playback, BPM, or Ableton Link.
The 0 button represents a movable cursor in a ladder of notes built from the current key, scale, and octave range. Pressing +1 moves one scale degree forward before sounding; −1 moves one degree backward. Larger values move by more degrees.
This movement is cumulative. If you press +2 and then +1, the second chord begins one scale degree above the position reached by the first. Use Root whenever you want to return to the pattern's root in the middle of its octave range.
The selected chord intervals are calculated from the new cursor position, so the same keypad gesture produces scale-aware voicings across the pattern.
The keypad range can be set from 1 to 16 in Settings. It creates matching negative and positive buttons around 0.
Press and hold a button to sound its chord; release it to send note-offs. You can slide across the keypad to move between buttons. A move that would fall outside the configured octave ladder produces no new chord.
Output velocity defaults to 90 and can be set from 0 to 127 in Settings. Touches use this pattern velocity, while an external MIDI note uses its incoming velocity.
Each interval row offers the scale degrees 1 through 7 with natural, flat, and sharp variants:
Tap an interval to add or remove it. Multiple selections sound together, allowing wide voicings that combine close chord tones with octave-displaced extensions. Clear restores only the natural first degree in the normal octave.
Generated notes are limited to the valid MIDI range 0 through 127.
Tap Key or Scale to change the pattern's musical material. The circle updates to show the scale's keys. Tapping a circle key moves the current cursor by the shortest available distance within the scale.
Use Min Oct and Max Oct to choose the playable range from octave −1 through 9. If the values are reversed, In Theory still builds the ladder between the lower and higher value. Changing either boundary recenters the cursor.
Tap Root to return to the pattern root in the middle octave. The AUv3 parameter list also provides separate triggers for returning to the middle-octave root or to the root in the current octave.
Patterns store the key, scale, velocity, octave limits, current cursor position, chord intervals, and keypad range.
Tap a numbered pattern to select it. Tap + to create a new pattern using the current key and scale. Long-press a pattern for Copy, Paste, and Delete. At least one pattern is always retained.
The Patterns title shows the CC number assigned to remote pattern selection.
An external keyboard maps its natural notes onto the keypad:
Incoming note velocity becomes the chord's output velocity. Pitch bend is passed through to the MIDI output.
Remote-control defaults are:
A nonzero value on Patterns CC selects pattern value using 1-based numbering. Interval CC values 0 through 62 address the 63 visible interval choices: +1-octave intervals first, normal intervals next, then −1-octave intervals. Sending the CC value toggles that interval.
Program Change 69 requests BrainBud key/scale synchronization from the shared Bud app settings.
The standalone app includes an optional SoundFont sampler for immediate auditioning. Settings provides Sampler Enabled, Volume, and Preset controls. You can use the sampler and external MIDI output together.
The standalone app offers In Theory MIDI In and In Theory MIDI Out virtual ports, selectable physical MIDI inputs and outputs, and MIDI Panic. It intentionally has no BPM or Ableton Link section because its chords respond directly rather than running on a clock.
Load Cem Olcay: In Theory as an AUv3 MIDI Processor and route its MIDI output, named In Theory, to an instrument. The plugin contains no internal sound source.
The host can automate Pattern, Scale, Key, Octave Min, Octave Max, Velocity, Return to Mid Root, and Return to Root. The single factory preset is Default. Complete pattern and settings state is saved with the host project, and separate plugin instances keep independent state.
Shared settings include:
The standalone Settings screen additionally includes sampler controls, virtual and physical MIDI ports, and MIDI Panic.
No sound: Enable the standalone sampler, or route In Theory MIDI Out/AUv3 MIDI output to an instrument. Check the MIDI Out Channel against the receiving instrument.
A keypad button does nothing: The move may exceed the current Min Oct/Max Oct ladder. Return to Root, widen the octave range, or use a smaller keypad offset.
External keys do not trigger the keypad: Use mapped natural notes from A1 through E6, centered on C4, and verify the MIDI source is enabled. C♯ and D♯ are navigation commands, not chord triggers.
Pattern CC does not work: Match Patterns CC# and MIDI In Channel, send a value of 1 or higher, and ensure that pattern exists.
Interval CC toggles the wrong row: Values 0–20 address +1 Octave, 21–41 address Chord Interval, and 42–62 address −1 Octave. Confirm the Interval MIDI In Channel and Interval CC#.
Notes remain held: Release the originating touch/key, change patterns, press Clear if the issue is voicing-related, or use MIDI Panic in standalone Settings.
AUv3 is missing: Launch the standalone app once after installation, restart the host, and rescan Audio Units. Confirm the host supports AUv3 MIDI processors and MIDI output routing.