AutoBass is an iOS algorithmic MIDI bass and melody line generator available as a standalone app and an AUv3 MIDI plugin. It generates looping MIDI sequences from a set of musical and rhythmic parameters, and lets you edit the result directly on a piano roll grid.
AutoBass outputs MIDI only. In standalone mode, an optional internal synthesizer lets you hear the result immediately. As an AUv3 plugin, it sends MIDI to any instrument track in your host, giving you full control over the sound.
AutoBass generates sequences using a bar-loop algorithm. A template bar of notes and rhythms is created first, then repeated and mutated across the full sequence length.
This matters because not all parameters work the same way. Some parameters rebuild the entire sequence when changed. Others adjust timing, velocity, or note state in real time without touching pitches. Understanding which is which helps you work faster.
The piano roll occupies the center of the screen. The horizontal axis is time measured in beats, divided into measures. The vertical axis shows pitch rows labeled with note names. Generated notes appear as horizontal rectangles spanning their duration.
The Edit button (pencil icon, right side of the piano roll) toggles the edit toolbar, which exposes accent, slide, and move mode toggles plus the transpose and nudge steppers.
Below the piano roll, eleven knobs control the main generative and expressive parameters:
Complexity — Mutation — Density — Spread — Offset — Gate — Variety (gate) — Velocity — Variety (velocity) — Swing — Slide
The bottom toolbar contains sequence-level controls:
| Control | Description |
|---|---|
| Patterns (CC#N) | Numbered pattern slots. Tap to select. Tap + to add a new pattern. Long-press to copy, paste, or delete. The CC number shown in the label (default: CC#10) reflects the current setting and is adjustable in the Settings menu. |
| Duration | Tap to cycle the sequence length: 1, 2, 4, 8, 16, 32, or 64 bars. Changing duration triggers full regeneration. |
| Walk Style | Tap to cycle melodic contour modes. Changes the ordering of existing pitches without regenerating the sequence. |
| Generate | Circular arrow icon. Manually triggers a full sequence regeneration. |
| Scale | Music note icon. Opens the scale, key, and octave range picker. |
| Settings | Gear icon. Opens app settings: MIDI channel, MIDI note assignments, knob control style, nudge amount, and MIDI file export. |
AutoBass builds each sequence in six steps.
Note durations are selected from a pool of rhythmic values ranging from double whole notes down to thirty-second notes. Each duration has a preferred complexity range. At low complexity, longer notes (whole, dotted half, half) are heavily weighted. At high complexity, shorter notes (sixteenths, thirty-seconds) dominate. The weighting uses a triangular curve so values near the center of a duration's range are most likely.
Pitches are drawn randomly within the octave range defined by Spread and Offset. A chord-tone gravity value is derived from Complexity: at low complexity the gravity is high (90% of notes snap to chord tones); at high complexity the gravity is low (10%), producing more passing tones and chromatic movement.
The generated pitches are reordered by the active Walk Style. This shapes the melodic contour without changing which pitches exist in the bar. See Section 6 for each mode.
A template bar is generated from steps 1–3. The sequence then repeats this template across all bars. Each bar rolls a random number against the Mutation value: if the roll is below Mutation, that bar gets a fresh generation instead of repeating the template. At 0% mutation every bar is identical; at 100% every bar is freshly generated.
After all bars are filled, beat positions are examined:
The very first note of the entire sequence is forced to the root note to ensure a strong tonal opening regardless of other settings.
Parameters fall into three categories: those that trigger full sequence regeneration, those that adjust the sequence in real time without changing pitches, and those that only reorder existing pitches.
Changing any of these destroys the current sequence and builds a new one.
| Parameter | Range | Default | Effect |
|---|---|---|---|
| Scale | Major, Minor, and many others | Major | Sets the scale used for pitch generation and harmonic anchoring |
| Key | C through B | C | Sets the root note; all pitches and anchor snaps follow this key |
| Octave Min | 0–8 | 0 | Lower boundary of the octave range |
| Octave Max | 0–8 | 2 | Upper boundary of the octave range |
| Duration | 1–64 bars | 4 bars | Total sequence length; shorter loops repeat more tightly |
| Complexity | 0–100% | 50% | Low values favor long notes; high values favor short, busy rhythms |
| Spread | 0–100% | 50% | Controls how wide the pitch range is within the octave boundaries; 100% uses the full span |
| Offset | 0–100% | 50% | Shifts the pitch spawn center; values above 50% bias toward higher octaves, below 50% toward lower |
| Mutation | 0–100% | 30% | At 0% every bar is identical to the template; at 100% every bar is freshly generated |
| Generate button | — | — | Manual trigger; always produces a completely new sequence |
These modify the sequence without changing any pitch values. Changing them is non-destructive and instant.
| Parameter | Range | Default | Effect |
|---|---|---|---|
| Density | 0–100% | 90% | Converts low-priority notes to rests based on metric strength; 100% keeps all notes, lower values create more space |
| Velocity | 0–127 | 90 | Global base velocity; applied with metric accent weighting so downbeats are naturally louder |
| Velocity Variety | 0–100% | 10% | Adds per-note random velocity variation around the base value |
| Gate | 0–100% | 100% | Scales all note durations proportionally; 100% is full written duration, lower values add staccato space |
| Gate Variety | 0–100% | 0% | Adds per-note random gate length variation |
| Swing | 0–100% | 0% | Delays every other eighth note by a triplet-based offset; 0% is straight, higher values push toward a shuffle feel |
| Slide | 0–100% | 0% | Probabilistically marks note-to-note transitions as slides (portamento); only applies between notes on different pitches |
| Parameter | Options | Default | Effect |
|---|---|---|---|
| Walk Style | Up, Down, Up-Down, Down-Up, Converge, Diverge, Random | Random | Reorders the pitches within each generated bar to shape melodic direction; does not regenerate or change durations |
These two knobs both affect how busy the sequence sounds, but they work differently. Complexity shapes the rhythmic structure at generation time — it determines whether notes are long or short. Density trims the result after generation, converting weak-beat notes to rests. Use Complexity to control the character of the groove and Density to thin it out without losing the rhythmic shape.
Spread sets the width of the pitch pool relative to the octave range. Offset shifts the center of that pool. A wide Spread with a high Offset concentrates notes in the upper part of the range. A narrow Spread with a centered Offset keeps everything close to the middle.
At 0% mutation, every bar is exactly the template bar. This is useful for tight, repetitive grooves. Increase mutation to introduce variation across the sequence without losing the overall character.
The Slide knob marks transitions probabilistically. It weights toward notes that have a close interval to their neighbor and that land on stronger beats. A note is only slidable if its next note has a different pitch. Slide markings are sent as legato MIDI: the previous note-off is delayed until after the next note-on, which creates portamento on monophonic synths.
Walk Style reorders the pitches generated in each bar to shape the melodic contour. It does not regenerate the sequence or change durations.
| Style | Description |
|---|---|
| Up | Pitches are sorted ascending within each bar. Creates a rising line. |
| Down | Pitches are sorted descending within each bar. Creates a falling line. |
| Up-Down | The first half of each bar ascends, the second half descends. Creates an arch shape. |
| Down-Up | The first half descends, the second half ascends. Creates a valley shape. |
| Converge | Pitches move from the outer edges of the range toward the center, alternating high-low. |
| Diverge | Pitches move from the center outward toward the edges, alternating. |
| Random | Stepwise motion with a probability of occasional leaps. Creates a naturally wandering line. |
Changing Walk Style on an existing sequence reorders the pitches immediately. Switching back to a previous style restores the same ordering, as long as the sequence has not been regenerated.
The piano roll displays the generated sequence and supports several editing operations. Open the edit toolbar by tapping the Edit (pencil) button on the right side of the piano roll.
Enable Move mode, then drag a note vertically to change its pitch to a different scale degree. The note snaps to valid rows in the current scale. Only the pitch changes — duration and position are not affected.
Enable Accent mode, then tap any note to toggle its accent state. An accented note plays at full velocity (127). Tapping again returns it to the base velocity. Accented notes are displayed in a distinct color.
Enable Slide mode, then tap a note to toggle its slide state. A slide marker is shown as a line connecting the note to its neighbor. Slide can only be applied to a note that is followed by another note on a different pitch. If the next note is on the same pitch or there is no next note, the tap has no effect.
Long-press a note to bring up a delete option. Deleting a note removes it entirely from the sequence.
Select Accent, Slide, or Move mode before interacting with notes. The active toggle determines what a tap or drag does. If no mode is active, the piano roll is in view-only state and taps or drags on notes have no effect.
These controls are available in the edit toolbar (open it with the Edit button).
The Transpose stepper shifts the sequence key up or down by one semitone per tap. Moving the key changes which root note and scale pitches are used. All generated pitches follow accordingly.
You can also transpose the sequence in real time by sending a MIDI note to AutoBass from an external app. The incoming MIDI note sets the key, making it possible to sequence key changes from a separate sequencer app such as PolyBud or MelodyBud.
The Nudge stepper shifts all notes forward or backward in time by a fixed amount. Notes that pass the end of the sequence wrap around to the beginning. Note durations are preserved. The nudge amount (step size) can be adjusted in the Settings menu.
AutoBass supports multiple independent patterns. Each pattern has its own complete set of parameters: scale, key, octave range, complexity, density, spread, offset, mutation, gate, velocity, swing, slide, walk style, duration, and the full generated sequence.
The Patterns label shows the currently assigned CC number (default: CC#10). This is adjustable in the Settings menu — pick any CC number that does not conflict with your setup. The toolbar updates to show whichever CC is active, so you always know at a glance which controller to use.
Send that CC with a value from 0 to 127 mapped across your pattern slots to switch patterns in real time during a performance.
CC9 triggers a fresh sequence generation on the currently active pattern.
You can create as many patterns as you need. MIDI CC and AU parameter automation can switch patterns at any time. See Section 10 to have AutoBass switch patterns for you automatically.
Pattern Chaining automatically advances through your pattern bank as you play, instead of waiting for a manual switch or MIDI CC message. It lives in the Settings menu (gear icon), in its own Pattern Chaining section below the Nudge settings.
Turn on Pattern Chaining to reveal a Mode picker with three options:
| Mode | Behavior |
|---|---|
| Next | Plays through patterns in order, looping back to the first pattern after the last. |
| Random | Jumps to a random pattern other than the one currently playing. |
| Custom | Plays a chain you build yourself, with its own pattern order and per-step repeat counts. |
Next and Random share one Repeat Count setting (1 to 100) — how many full loops of the current pattern play before the chain moves on. Custom replaces that setting with an Edit Chain row that opens the chain editor.
The chain editor lists one step at a time. Each step has:
Tap + in the navigation bar to add a new step. Each new step defaults to the pattern right after the last step's, so building a chain that walks through every pattern once is just a few taps of +.
A custom chain is only as valid as the patterns it points to. Deleting a pattern that a chain step refers to does not rewrite the chain — that step is simply skipped during playback, and the chain editor still shows it. Re-add the missing pattern later and the step starts working again exactly as authored. Adding, deleting, or reordering patterns never edits an existing custom chain for you.
Selecting a pattern by hand — tapping a pattern button, sending the pattern MIDI CC, or automating the Pattern AU parameter — always takes priority over the chain. After a manual switch, the chain resumes from its first step the next time it advances, rather than continuing from wherever it left off.
Stopping playback also resets the chain to its first step, so every new take starts the chain from the top.
Chain switches always happen exactly at a pattern's loop boundary, never mid-bar, so the transition stays musically clean even when patterns have different lengths.
AutoBass is available as an AUv3 MIDI plugin that runs inside any compatible iOS host.
The AUv3 plugin outputs MIDI only. It does not produce any sound by itself. You must route its MIDI output to an instrument track or synthesizer in your host application. In standalone mode, AutoBass includes an optional internal synthesizer so you can audition sequences directly.
| Port | Content |
|---|---|
| AutoBass Out | All MIDI note events for the active pattern |
AutoBass sends a single MIDI output stream. Multi-pattern routing is done by switching patterns via CC10, not by parallel outputs.
AutoBass reads beat position and tempo directly from the host. Playback starts and stops with the host transport. Sync is sample-accurate.
All 20 parameters are exposed to the host as automatable AUv3 parameters. You can draw automation lanes for any knob — including Complexity, Mutation, and Generate — to create evolving sequences that change over time within a project.
Pattern Chaining is one of those 20 parameters (0 or 1, boolean) — automating it toggles chaining on or off. The chain's Mode, Repeat Count, and any custom chain steps are saved with the plugin's full state but are not separately automatable parameters.
AutoBass responds to incoming MIDI in both standalone and AUv3 modes:
| MIDI Event | Effect |
|---|---|
| Note On | Sets the pattern key to the received note; useful for sequencing key changes from another app |
| CC# (configurable, default 10) | Selects a pattern slot |
| CC9 | Triggers a new sequence generation |
| Program Change 69 | Reserved |
When running as an AUv3 plugin, the full app state — including all patterns and their individual parameter settings — is saved and restored as part of the host's preset system. Save a plugin preset in your DAW to capture every pattern at once and recall the entire setup instantly in any project.
You can export the current sequence as a MIDI file from the Settings menu. This lets you drag the generated sequence into a DAW or notation app for further editing.
The standalone app includes a built-in sampler that receives AutoBass MIDI output and plays back audio samples, letting you hear generated sequences immediately without any external synths.
The sampler is an AVAudioUnitSampler loaded with an SF2 soundfont. Every note-on from the generated sequence triggers a pitched sample. Note-off stops the sample.
The sampler runs in the same audio session as the app, so output goes directly to the device speakers or headphones.
| Control | Range | Description |
|---|---|---|
| Enabled | On/Off | Turn the sampler on or off |
| Volume | 0.0–1.0 | Output gain of the sampler |
| Preset | 0–127 | SF2 soundfont preset index |
The preset number selects which SF2 instrument patch is loaded. General MIDI patch numbers apply: 0 is typically Acoustic Grand Piano, 32 is Acoustic Bass, 33 is Electric Bass (finger), 34 is Electric Bass (pick), and so on. Refer to the GM patch list for bass-specific patch numbers.
The sampler and external MIDI output are not mutually exclusive. AutoBass MIDI is always sent to any connected external devices whether the sampler is on or off. Turning the sampler off silences the internal audio while external MIDI continues flowing.
The sampler is only present in the standalone app. It is not available in the AUv3 plugin version, since the plugin runs inside a DAW that handles audio routing.
Density and Complexity both affect how busy the sequence sounds, but only Complexity triggers regeneration. Use Complexity to decide the rhythmic character (long notes vs. short notes), then use Density to trim the result without losing the groove. If you want fewer notes but the same rhythmic feel, reach for Density first.
Check the Settings menu and confirm the internal sampler is enabled and the volume is above zero. Make sure your device volume is up and silent mode is off.
Confirm that the AutoBass Out port is enabled and routed to an instrument track in your host's MIDI routing page. The plugin does not produce audio — if you are looking for audio output, add a synthesizer instrument on the target track.
This is by design. AutoBass outputs MIDI only. Route AutoBass Out to an instrument or synthesizer track to hear the result.
Slide only applies between two adjacent notes that have different pitches. If the next note is on the same pitch, or there is no following note, the slide flag has no effect. Check that the notes in question are on different rows in the piano roll.
Open Settings and adjust the nudge amount to a finer or coarser value.
Lower Complexity to favor longer, simpler note values. Lower Mutation so bars repeat more consistently. Use Up or Down walk style instead of Random for a more directional melodic shape. Lower Spread to keep pitches closer together.
Open Settings and check which CC number is assigned to pattern selection (default is CC10). Confirm your controller or sequencer is sending that CC number on the correct MIDI channel. CC9 triggers generation.
Confirm Pattern Chaining is switched on in Settings and that you have more than one pattern — Next and Random modes have nothing to advance to with only one pattern. If you are using Custom mode, open Edit Chain and confirm it has at least one step. Also check that you have not just tapped a pattern button, sent a pattern CC, or automated the Pattern parameter — a manual switch resets the chain to its first step rather than continuing where it was.
Custom chain steps reference a pattern by its position, not a name. If a step is skipped, check whether the pattern it pointed to was deleted — the step reappears once you re-add a pattern in that slot. If a step plays a pattern you did not expect, remember that adding, deleting, or reordering patterns never edits an existing chain, so a step's pattern number may no longer point at the pattern you meant; open Edit Chain and re-point the step.
Start simple: pick a scale and key, generate at medium complexity, and listen. Then adjust Density to find the right amount of space, add Swing if needed, and use Gate to shape articulation. Only then explore Spread, Offset, and Mutation for more character. Regenerate freely — each press of Generate is a new starting point.