BounceBud User Manual

Table of Contents

1. Overview

BounceBud is an iOS physics-based MIDI sequencer available as a standalone app and an AUv3 MIDI plugin. It turns a bouncing-ball scene into a MIDI instrument: balls move around a framed playfield, hit note keys on the four edges, and each collision sends a MIDI note.

BounceBud outputs MIDI. The standalone app includes an optional internal sampler so you can hear the result immediately, but the main purpose of BounceBud is to drive other synths, drum machines, samplers, and instrument apps.

What BounceBud does well

2. Core Concept

BounceBud is built around a simple feedback loop.

  1. A ball moves inside the playfield.
  2. The ball hits one of the four edge keyboards.
  3. The exact key at the collision point becomes the MIDI note.
  4. BounceBud sends that note from the matching edge output.
  5. Incoming MIDI notes can shoot walls from matching keys.
  6. Those walls bounce the balls and change the next pattern of hits.

The result is a sequencer that feels more like a playable physics system than a step grid. Small changes to ball speed, size, note selection, wall input, or pattern setup can produce very different musical behavior.

The four edges

Edge Output cable in AUv3 Standalone virtual output
Top BounceBud Top BounceBud Top Keyboard
Bottom BounceBud Bottom BounceBud Bottom Keyboard
Left BounceBud Left BounceBud Left Keyboard
Right BounceBud Right BounceBud Right Keyboard

Each edge can drive a different destination or synth part. For example, Bottom can play a bass synth, Top can play a lead, Left can trigger percussion, and Right can play chords or textures, depending on your note selections and MIDI routing.

3. Interface Overview

Playfield

The main area is the SpriteKit playfield. The four sides display note keys. Balls bounce inside the frame and flash keys when they collide with them.

Bottom toolbar

Control Description
Patterns Numbered pattern slots. Tap a number to select it. Tap + to add a copied pattern. Long-press a pattern to copy, paste, or delete. The label shows the pattern MIDI CC number.
Ball Count Adds or removes balls in the current pattern.
Speed Controls ball speed for the current pattern.
Size Controls ball size for the current pattern.
Key Opens the key picker for the current pattern.
Scale Opens the scale picker for the current pattern.
Play Starts or stops the sequencer. Ball collisions only send MIDI notes while it is playing.
Settings Opens MIDI, keyboard, ball, aspect ratio, knob, sampler, and support settings.

Tutorial

The in-app Tutorial is available from Settings. It walks through the same core ideas: the four keyboards, wall shooting, patterns, ball controls, scale settings, keyboard settings, ball settings, and MIDI routing.

4. Playing BounceBud

Basic setup

  1. Choose a key and scale.
  2. Press the Play button in the bottom toolbar to arm the sequencer.
  3. Route at least one BounceBud MIDI output to a synth or enable the standalone sampler.
  4. Adjust Ball Count, Speed, and Size until the pattern feels alive.
  5. Open Settings to customize each edge keyboard.

Ball collisions only create MIDI notes while the sequencer is playing. If balls are moving but no MIDI is sent, make sure the Play button is active. In AUv3 mode, BounceBud's own Play button always works; the Sync To Host Transport setting additionally lets the host transport's start/stop also drive Play state — see Settings and AUv3 MIDI Plugin Support.

Flicking balls

You can flick a ball by pressing, dragging, and releasing it. A flick throws the ball in the drag direction with a speed boost. After the next wall or edge collision, the ball decelerates back toward its configured speed.

Ball-to-key collisions

When a ball hits an edge keyboard, BounceBud finds the key under the contact point and sends that key's MIDI pitch. If the same note is already active on the same cable, BounceBud turns the old note off before retriggering it. Note-off timing follows the Note Length setting of that edge keyboard.

5. Four Edge Keyboards

Open Settings, then use the Keyboard Settings section to edit Top, Bottom, Left, or Right.

Keyboard settings

Setting Description
Note Length Duration of notes triggered from this edge.
Minimum Octave Lowest octave used by this edge keyboard.
Maximum Octave Highest octave used by this edge keyboard.
Minimum Velocity Lowest random velocity sent by this edge.
Maximum Velocity Highest random velocity sent by this edge.
MIDI Out Channel MIDI channel used for notes generated by ball collisions on this edge.
MIDI In Channel MIDI channel that can shoot walls from this edge.
Select Notes Choose exactly which scale notes appear on this edge.

The current pattern's key and scale are shared by all four edge keyboards, but each keyboard has its own octave range and selected notes. Changing key, scale, or octave range rebuilds the available note list.

Select Notes

Select Notes opens a note picker for the currently selected edge keyboard. Use it to thin out an edge, create repeating motifs, isolate percussion trigger notes, or make each edge cover a different register.

If every note is selected, the row shows All Notes. Otherwise it shows the number of selected notes.

Velocity ranges

Each edge chooses a random velocity between its minimum and maximum values for every hit. Set both values the same for fixed velocity. Use a wider range for more variation.

6. Ball Controls

Ball behavior is stored per pattern.

Control Range Description
Ball Count 0 to 100 Number of balls in the current pattern. More balls produce denser MIDI.
Speed 1 to 100 display scale Controls the configured ball speed. Faster balls create more frequent hits.
Size 1 to 100 display scale Controls ball size. Larger balls change collision timing and contact positions.
Size Variety 0 to 100 percent Randomizes ball sizes around the Size value.
Speed Variety 0 to 100 percent Randomizes ball speeds around the Speed value.
Collision with other balls On or Off Enables physical ball-to-ball collision.
Color Theme Theme list Changes ball and wall colors.

Ball collision

When Collision with other balls is off, balls pass through each other and only react to edges, bounds, and shot walls. When it is on, balls collide with each other too, which can create more chaotic movement.

Size and speed variety

Variety values are applied when balls are created or their physics is refreshed. Use low variety for predictable patterns and higher variety for more organic motion.

7. Patterns

BounceBud supports multiple independent patterns. Each pattern stores its own ball setup, key, scale, and all four keyboard configurations.

Managing patterns

Pattern MIDI CC

The Patterns label shows the assigned CC number, default CC#10. Change it in Settings under MIDI Settings.

Send that CC on the global MIDI In Channel with a value from 1 upward to select a pattern. Value 1 selects pattern 1, value 2 selects pattern 2, and so on. Value 0 is ignored.

8. MIDI Input and Wall Shooting

Incoming MIDI note-on messages can shoot walls from the edge keyboards. This is one of BounceBud's main performance features.

How wall shooting works

  1. Send a MIDI note to BounceBud.
  2. BounceBud checks each edge keyboard's MIDI In Channel.
  3. If the incoming note exists on an edge keyboard and the channel matches, that edge shoots a wall from that key.
  4. The wall travels across the playfield.
  5. Balls bounce off the wall, changing future MIDI notes.

Wall directions

Edge Wall movement
Bottom Shoots upward
Top Shoots downward
Left Shoots right
Right Shoots left

Wall count is limited so the scene does not fill indefinitely. Older walls are removed as needed.

Channel setup

Each edge has its own MIDI In Channel in Keyboard Settings. By default, the Bottom, Top, Left, and Right keyboards use different input channels, making it easy to shoot walls from one side at a time.

BrainBud sync

Program Change 69 triggers BrainBud key and scale sync from the shared Bud app group. When BrainBud universal MIDI channel is disabled, the program change must arrive on the global MIDI In Channel.

9. MIDI Output Routing

BounceBud produces MIDI notes from ball collisions. It does not require an audio instrument internally, although the standalone app includes an optional sampler for monitoring.

Standalone routing

The standalone app creates four virtual MIDI outputs:

Output Source
BounceBud Top Keyboard Top edge
BounceBud Bottom Keyboard Bottom edge
BounceBud Left Keyboard Left edge
BounceBud Right Keyboard Right edge

Open Settings to enable or disable Virtual MIDI Out, Virtual MIDI In, connected MIDI inputs, connected MIDI outputs, and MIDI Panic.

External destinations

Standalone MIDI events are sent to enabled CoreMIDI destinations and through the matching virtual output port. Route those outputs to synth apps, DAWs, hardware interfaces, or MIDI processors.

MIDI Panic

MIDI Panic sends note-off cleanup for stuck notes. Use it if a destination synth keeps sounding after transport changes or routing changes.

10. Settings

MIDI Settings

Setting Description
Patterns CC# CC number used for pattern switching.
MIDI In Channel Global input channel for pattern switching and optional BrainBud channel filtering.
Sync To Host Transport AUv3 only. When enabled (default), the host transport's start/stop transitions also update BounceBud's Play state, matching classic AUv3 behavior. When disabled, host transport changes are ignored. Either way, BounceBud's own Play button and the isPlaying AU parameter always control playback directly — enabling sync does not lock them. Has no effect in the standalone app.

Keyboard Settings

Use the Top, Bottom, Left, Right selector to edit each edge keyboard. See Section 5 for details.

Ball Settings

Ball settings include ball-to-ball collision, size variety, speed variety, and color theme.

Aspect Ratio

Apply Aspect Ratio constrains the playfield to a selected ratio. Available ratios are 1:1, 4:3, 16:9, 16:10, and 14:9. This can make BounceBud behave more consistently across devices and hosts.

Knob Settings

Knob Control Style changes how the app's knobs respond to touch gestures.

Support

The Support section includes Tutorial, Review, Other Apps, and Feedback.

11. AUv3 MIDI Plugin Support

BounceBud is available as an AUv3 MIDI Processor plugin.

Important: BounceBud outputs MIDI

The AUv3 plugin sends MIDI only. It does not produce audio by itself. Route one or more BounceBud MIDI outputs to instrument tracks in your host.

AUv3 output ports

AUv3 MIDI output Source
BounceBud Top Top edge
BounceBud Bottom Bottom edge
BounceBud Left Left edge
BounceBud Right Right edge

Transport and tempo

In AUv3 mode, BounceBud always follows the host's tempo and beat position when the host provides them. Whether the host transport's start/stop also drives Play state depends on the Sync To Host Transport setting in Settings — either way, BounceBud's own Play button and the isPlaying AU parameter always work:

Parameter automation

BounceBud exposes these AU parameters:

Parameter Effect
Pattern Selects the active pattern.
Ball Count Changes the current pattern's ball count.
Ball Speed Changes the current pattern's ball speed.
Speed Variety Changes speed randomization.
Ball Size Changes the current pattern's ball size.
Size Variety Changes size randomization.
Ball Collision Enabled Toggles ball-to-ball collision.
Play Starts or stops the sequencer, same as the Play button.
Sync To Host Transport Toggles whether host transport start/stop also updates the Play state, same as the Settings switch.

State and presets

The AUv3 plugin saves and restores the full BounceBud state, including patterns, settings, keyboard data, and the current Play state, through the host's plugin state and user preset system. Restoring a preset that was saved while playing resumes playback immediately. The included factory preset restores the default state (not playing).

12. Built-In Sampler

The standalone app includes an optional sampler so you can hear BounceBud without setting up another instrument.

Sampler controls

Control Description
Sampler Enabled Turns the internal sampler on or off.
Volume Sets sampler output level.
Preset Selects a soundfont preset.

The sampler receives BounceBud MIDI output internally. It is useful for quick auditioning, but external MIDI output continues to work independently.

The sampler is only available in the standalone app. In AUv3 mode, use an instrument track in the host.

13. Tips and Starting Points

For a steady melodic pattern

For dense generative motion

For four-part routing

For interactive performance

For controlled randomness

14. Troubleshooting

No sound in standalone mode

BounceBud is primarily a MIDI app. Enable the built-in sampler in Settings or route a BounceBud MIDI output to another synth app. Also check device volume and sampler volume.

No MIDI output

Press Play first. Ball collisions only send MIDI while BounceBud is playing. In AUv3 mode, if pressing the host's play button does not start BounceBud, check that Sync To Host Transport is enabled in Settings — when it is disabled, only BounceBud's own Play button or the isPlaying AU parameter controls playback. Then check that the destination app or host is listening to the correct BounceBud output and MIDI channel.

AUv3 plugin is silent

This is expected if no instrument is connected. Route BounceBud Top, Bottom, Left, or Right to an instrument track in the host.

Wall shooting does not work

Confirm the incoming note exists on the target edge keyboard and the incoming channel matches that edge's MIDI In Channel. Also verify Virtual MIDI In or the relevant host MIDI input route is enabled.

Pattern switching does not respond

Check the Patterns CC# value in Settings and send that CC on the global MIDI In Channel. Values start at 1: value 1 selects pattern 1.

Balls move but notes are not triggering

Make sure the sequencer is playing. If an edge has no selected notes, it cannot render keys for collisions. Reopen Select Notes or change the octave range to rebuild the notes.

Notes get stuck

Use MIDI Panic from the standalone settings, or stop and restart host transport in AUv3 mode. Also check that the destination synth is listening on the same MIDI channel that generated the note-on.

Final advice

Begin with one or two balls, one edge routed to a synth, and a small note selection. Once the timing feels musical, add the other edges, raise ball count, and use MIDI wall shots to perform variations.