FuncBud User Manual

Table of Contents

  1. Overview
  2. Core Concept
  3. Interface Overview
  4. Primary Workflow
  5. The Sequencer View
  6. The Function Builder
  7. Key, Scale, Root, and Octave Range
  8. Patterns
  9. Library, Favorites, and Presets
  10. Loop Detector
  11. MIDI Routing
  12. Built-In Sampler and Ableton Link
  13. FuncBud AUv3 Plugin
  14. Settings Reference
  15. Tips and Starting Points
  16. Troubleshooting
  17. Links

Overview

FuncBud is a MIDI step sequencer that generates melodies from math formulas instead of a traditional piano-roll grid. Each step in a pattern is a small function you write yourself โ€” using numbers, arithmetic, squares, square roots, sums, products, conditions, or random ranges โ€” and the sequencer evaluates that function every step to pick the next note. The same pattern engine is available in two forms: a standalone iOS app with its own tempo clock, Ableton Link support, and built-in synth, and an AUv3 MIDI plugin you can load inside a host app to drive other instruments.

Core Concept

Every pattern is built from one or more functions, listed top to bottom. The sequencer keeps a running value, ๐’ณ, which starts equal to the root note, ๐›ผ. On each step it evaluates the current function to produce a new ๐’ณ, converts that number to a note in the pattern's key, scale, and octave range, and plays it. Then it moves on to the next function in the list โ€” or repeats the same one, if you've set a repeat count above 1 โ€” before wrapping back to the first function again.

Every ๐’ณ value the sequencer produces is also kept in a rolling history of up to 64 results. Two special functions, โˆ‘ (sum) and โˆ (product), read back into that history โ€” so a formula can depend on where the sequence has already been, not just where it is right now.

Interface Overview

The main screen is split into three areas, top to bottom:

Primary Workflow

  1. Tap New to open the Function Builder and write your first function (or tap Library to drop in a ready-made one).
  2. Add more functions the same way โ€” the sequencer plays them in order, top to bottom, looping back to the first one after the last.
  3. Set a repeat count on any function so it fires more than once before the sequencer advances to the next one.
  4. Adjust Key, Scale, Root, and Min/Max Octave so the generated notes land where you want them.
  5. Press Play. Tune Rate, Gate, Velocity, and Swing live while it runs.
  6. Use Mute (swipe a function right) to silence a step without deleting it, or swipe left to delete it outright.

The Sequencer View

The Function Builder

The Function Builder has three modes, switched at the top of the screen:

Function mode

A calculator-style keyboard for building an arithmetic expression:

Row Keys
1 ( ) 7 8 9 +
2 ๐’ณ ๐›ผ 4 5 6 โˆ’
3 ยฒ โˆš 1 2 3 โœ•
4 โˆ‘ โˆ CLR 0 DEL รท

Condition mode

Builds a branching function: If one function's value compares to another (greater than, greater than or equal to, less than, or less than or equal to), Then evaluate one function, Else evaluate a different one. Each of the four inputs (If / Is / Then / Else) opens its own Function-mode keyboard.

Random mode

Builds a function that returns a random value between a Minimum and a Maximum function, re-rolled every time the function runs.

Tap Done to save the function back into the pattern (or into the library, if you got here from one of those flows).

Key, Scale, Root, and Octave Range

The generated ๐’ณ values are integers, not notes โ€” FuncBud maps them onto real notes using the pattern's key, scale, and min/max octave range, wrapping around if ๐’ณ goes past either end of that range. Changing key or scale re-maps the whole pattern instantly, without touching any of the functions themselves โ€” the math stays the same, only the notes it produces change.

Patterns

A document can hold as many patterns as you like. Tap + in the patterns row to add one โ€” new patterns start as a copy of whichever one is currently selected, so you can build variations without starting from scratch. Long-press any pattern number for Copy / Paste / Delete. Switching patterns mid-playback restarts the sequencer's beat position for the new pattern.

Library, Favorites, and Presets

Tap Library to open three tabs:

Loop Detector

Because the sequence is generated by math rather than authored by hand, some formulas can settle into a short repeating cycle. Turn on Detect and avoid loops in Settings and FuncBud watches the note history for a run that repeats itself; when it finds one, it nudges the sequence forward to break out of it. The detector's window size is set automatically to match the total step count of the current pattern (every function's repeat count added together) โ€” there's nothing to configure beyond the on/off switch.

MIDI Routing

The standalone app includes an optional built-in sampler so it can make sound on its own:

The AUv3 plugin has no built-in sampler and produces no sound on its own โ€” it only generates MIDI, so it needs to be routed to an instrument in your host app.

FuncBud AUv3 Plugin

Load FuncBud as an AUv3 MIDI plugin ("Cem Olcay: FuncBud", tagged as a MIDI Processor) in a compatible host to drive any instrument track. The plugin shares the same sequencer, Function Builder, patterns, and library as the standalone app โ€” anything you save to the Library or Presets is available in every instance, in the app and in the plugin alike.

Inside the host, the plugin follows the host's tempo and transport instead of Ableton Link, and exposes these parameters for host automation:

Parameter What it controls
Pattern Which pattern is active
Rate Step speed
Key The pattern's key
Scale The pattern's scale
Root The root note, as a percentage across the pattern's note range
Min Octave / Max Octave The octave range
Gate / Gate Variety Note length and its randomization
Velocity / Velocity Variety Note velocity and its randomization
Swing Swing amount

The plugin's current document (patterns, functions, and settings) saves and restores with the host's project/preset state automatically.

Settings Reference

MIDI Settings โ€” MIDI In Channel, MIDI Out Channel, Patterns CC#.

Loop Detector โ€” Detect and avoid loops (on/off).

Functions โ€” Enable calculation on the muted functions: when on, a muted function still contributes its ๐’ณ result to later โˆ‘/โˆ calculations even though it doesn't play; when off, muted functions are skipped entirely.

Manual Trigger โ€” Manual trigger with MIDI, Hold the MIDI triggered note, Prefer MIDI trigger's velocity, MIDI In Channel.

Transposition โ€” Change the key with MIDI (+ MIDI In Channel), Change the root with MIDI (+ MIDI In Channel).

Standalone app only:

Support (bottom of the menu) โ€” Tutorial, Review, Other Apps, Feedback.

Tips and Starting Points

Troubleshooting

No sound in the standalone app โ€” make sure the built-in Sampler is on in Settings and its volume isn't at zero, or route FuncBud's MIDI/virtual output to another synth app instead.

No sound with the AUv3 plugin โ€” the plugin never produces sound by itself; confirm its MIDI output is routed to an instrument track in your host.

Plugin doesn't appear in my host โ€” rescan/rescan plugins in your host app; FuncBud is an AUv3 MIDI Processor, so it must be added on a MIDI or instrument track that accepts AU MIDI effects, not an audio-effect slot.

No MIDI in or out โ€” check that MIDI In Channel / MIDI Out Channel in Settings match the channel your controller or receiving app expects, and that the relevant physical/virtual port is switched on.

A held note won't stop โ€” use MIDI Panic in Settings (standalone app) to force every note off.

Manual trigger mode fires the wrong note or won't fire โ€” confirm the triggering device is sending on the MIDI In Channel configured under Manual Trigger, not the general MIDI In Channel.

A saved preset or function isn't showing up in the plugin โ€” Library items and Presets sync via iCloud and the shared app group; give it a moment after saving, and confirm iCloud Drive is enabled for the device.

Pattern-select CC isn't switching patterns โ€” the CC number must match Patterns CC# in Settings, and be sent on the MIDI In Channel, with a value equal to the pattern number you want (pattern 1 = value 1, and so on).