Minimal techno
On this page
This guide takes a blank Bitwig project to a first playable version of a minimal raw-techno track. It deliberately stops at a first version: a recognizable 64-bar arrangement with a kick, bass, sparse percussion, one texture, and a safe mix. Further character belongs in focused refinement passes.
The example brief is:
142 BPM minimal raw techno: a rigid four-on-the-floor kick, a mono bass phrase that leaves the kick transient clear, sparse syncopated percussion, one dark metallic texture, and restrained change every eight bars.
The key and notes below are teaching material. Replace them with the user's chosen key, scale, and existing musical material when those are already known.
What you will build
The first version uses four roles, not four layers of decoration:
| Track | Job | First-version constraint |
|---|---|---|
| Kick | establish time and low-end impact | four-on-the-floor, consistent level |
| Bass / Poly Grid | supply tonal weight and syncopation | centered low end, short envelope |
| Percussion | create motion around the kick | sparse hats and one accent |
| Texture | make the loop memorable | rare, filtered, phrase-bound event |
0. Prepare the blank project
Install and enable the bridge
If the extension is not installed yet, follow the installation guide. The short version:
- install
BitwigGridBridge.bwextensioninto Bitwig's Extensions directory; - restart Bitwig;
- open Settings → Controllers;
- add and enable Bitwig Grid Bridge;
- start the optional MCP adapter if an agent will operate the bridge:
uv sync --frozen
BITWIG_MCP_GRID_BRIDGE_ENABLED=true uv run bitwig-mcp
The bridge is loopback-only. The host remains the authority for the project, transport, clips, and audible result.
Create the project
- Create a new empty Bitwig project.
- Set the transport to 142 BPM.
- Use 4/4 time.
- Create an eight-bar loop or arranger region.
- Create four instrument/audio tracks named
KICK,BASS,PERC, andTEXTURE. - Keep the master level conservative while designing.
This walkthrough deliberately authors its short clips in Bitwig's UI. For a
deterministic full-length arrangement, use the song composition and reviewed
delivery workflow instead.
grid_song_transport can explicitly set tempo/meter with a fresh project token;
native import removes tempo/meter metadata and does not set them implicitly.
This is not a general raw-MIDI sanitizer or arbitrary in-place clip-note editor.
Inspect each imported role with grid_inspect_arranger; for linear scores use
guarded grid_set_clip_loop to disable loops, then re-inspect flags, source
counts/spans and geometry. Source summaries do not expand loops or prove audio.
Inspect role devices and replace unintended import-created Organ instruments
with a fresh expected_selection_token and authorization rather than stacking
voices. Arranger/device verification and listening remain separate.
1. Establish the rhythm spine
Create an eight-bar kick clip. On a 16-step bar, place the kick on steps 1, 5, 9, and 13:
steps: 1 2 3 4 | 5 6 7 8 | 9 10 11 12 | 13 14 15 16
kick : X . . . | X . . . | X . . . | X . . .
Duplicate it for eight bars without adding fills yet. The first version needs a stable reference before variation is introduced.
Add one closed-hat voice on offbeats. A common starting map is steps 3, 7, 11, and 15, with slightly varied velocity. Remove a hit if the top end becomes a continuous wall.
Listen now: the kick and hat should already suggest forward motion without a bass line. If they do not, fix timing, velocity, or sound choice before adding more tracks.
2. Create the bass phrase
Add Poly Grid or another intended Grid instrument to BASS. Create a
separate eight-bar MIDI clip. Start with a root such as D and a D-minor pitch
vocabulary:
D natural minor: D E F G A Bb C
Use a two-bar phrase and repeat it four times. A sparse teaching pattern:
| Bar | Step 1 | Step 7 | Step 11 | Step 15 |
|---|---|---|---|---|
| A | D (hold 2) | D | F | C |
| B | D (hold 2) | D | A | C |
Repeat the A/B pair four times to fill the eight bars. On the last pass, omit the final C so the loop asks for the kick to come back around.
Adjust the octave to the actual kick and playback system. The exact note names are less important than these relationships:
- the bass does not fill every kick gap;
- note lengths end before the next important transient;
- the final bar contains a small expectation change;
- the phrase remains recognizable after the variation.
Shape the bass through the bridge
Observe before choosing a path:
get_grid_capabilities
→ get_selected_device_state
→ get_grid_graph only if the selected state says graph_available=true
If graph access is available, ask the non-mutating planner for a role-based recipe:
{
"brief": "142 BPM minimal raw techno bass: mono low-end weight, saw-led bite, short envelope, dark grit, sparse eight-bar movement, preserve kick transient",
"style": "industrial",
"density": 0.20,
"motion": 0.36,
"contrast": 0.80,
"temperature": 0.12
}
The planner may suggest a source/control/safety structure such as:
Resolve each suggested module with search_grid_modules, then use fresh graph
state for every insertion, parameter change, and connection. Never copy ports,
coordinates, or native values from this diagram.
If graph access is unavailable, use exposed controls only. A preview-first shaping call has this form:
{
"brief": "Dark gritty techno bass: mono weight, saw-led bite, restrained pulse layer, narrow eight-bar movement",
"style": "night-motion",
"intensity": 0.45,
"controls": {
"Saw %": 0.62,
"Pulse %": 0.18,
"PW": 0.28,
"Tri %": 0.06
}
}
Pass that object to grid_shape_start through the connected MCP client. Review
its returned before → after preview. It uses normalized 0..1 controls.
Do not apply until the preview expresses the right role. When it is accepted,
apply only the exact returned session_id and revision, then read state again:
{
"session_id": "<returned-session-id>",
"revision": "<latest-returned-revision>",
"confirm": true
}
Direct exposed parameter writes use the bridge's 0..128 range instead; these
domains are not interchangeable. A live graph's native range or discrete option
always wins over a remembered value.
Listen now: with only kick and bass active, decide whether the bass is too long, too bright, too wide, too loud, or simply in the wrong register. Make one focused correction rather than adding another oscillator.
3. Add sparse percussion
Create a one- or two-bar percussion clip and repeat it. Start with one extra voice, not a full drum kit:
percussion: . . . X | . . . . | . X . . | . . . .
Use a short envelope and a higher spectral center than the bass. If building the voice in Grid, the planner's generative-percussion vocabulary is:
Noise,Pulse,Pluck,ADfor contrasting short voices;Triggers,Chance,Steps,Sample / Holdfor variation;High-pass,Blend,All-pass Delay,Mixerfor glue.
For the first version, keep probability and diffusion modest. A sparse accent should make the repeated phrase more interesting, not make every pass different.
4. Add one texture
On TEXTURE, add one of:
- a short noise/pluck hit;
- a filtered metallic sample;
- a quiet resonant pulse;
- a brief delay reply to an existing percussion hit.
Place it once or twice per eight-bar phrase, preferably near a transition or at the end of a two-bar answer. High-pass it so it does not compete with the kick or bass.
The texture is finished when muting it makes the track less memorable but does not make the groove collapse. If muting it destroys the groove, it is a structural voice and belongs in the composition plan, not the ear-candy layer.
5. Make the first 64-bar arrangement
Duplicate the eight-bar materials and arrange six simple blocks:
| Bars | Active roles | One change |
|---|---|---|
| 1–8 | kick + filtered hat | establish the pulse |
| 9–16 | kick + bass + hat | introduce the tonal anchor |
| 17–24 | add sparse percussion | first contrast |
| 25–32 | add texture once per phrase | establish the material world |
| 33–40 | remove bass for part of the block | create tension through absence |
| 41–56 | restore bass + one new accent | highest density, still minimal |
| 57–64 | remove texture, then bass | leave the groove clean |
A compact view:
bars: 01────08 09────16 17────24 25────32 33────40 41────────56 57────64
kick: █████ ███████ ███████ ███████ ███████ ███████████ █████
bass: ····· ███████ ███████ ███████ ░░░░░░░ ███████████ ░░···
hat: ░░░░░ ░░░░░░░ ░░░░░░░ ░░░░░░░ ░░░░░░░ ░░░░░░░░░░░ ░░░░
texture: ····· ······· ··░···· ░░░░░░░ ······· ░░░░░░░░░░░ ····
█ means established, ░ means selective or reduced, and · means absent.
The map is intentionally simple. The track can acquire more detail after its
central relationship works.
6. First-version mix pass
Do this in context, not with every track soloed:
- keep kick and bass centered or mono-compatible;
- lower the bass until the kick transient remains clear;
- high-pass percussion and texture as needed;
- keep effect returns quieter than the dry anchors;
- use short space before long tails;
- check the loudest return and any resonance at low monitoring level;
- listen in mono once;
- compare the first block, fullest block, and outro at matched loudness.
Do not master the first version while the arrangement is still undecided.
7. First listening review
Run a focused review rather than asking whether the track is “good”:
- Does the kick remain the clock after the bass enters?
- Does the bass phrase have a memorable contour after four repetitions?
- Is the texture dark because of spectral choice, rather than simply quiet?
- Is the grit audible without removing the fundamental?
- Does the 33–40 subtraction create anticipation?
- Does the 41–56 return feel larger without becoming crowded?
- Does the outro leave a deliberate landing?
Use the skill commands according to the actual finding:
| Finding | Next command |
|---|---|
| no clear musical thesis | shape |
| bass timbre is generic | sound or bolder |
| groove is weak | rhythm |
| loop works but track does not develop | arrange |
| too many layers compete | distill or quieter |
| modulation is static | modulate |
| sound is compelling but unsafe | audit or harden |
| balance and transitions need final work | polish |
Definition of first version
Stop the quickstart when all of these are true:
- the project is at the intended tempo and meter;
- the kick, bass, percussion, and texture have distinct roles;
- an eight-bar phrase repeats with one controlled variation;
- the 64-bar arrangement contains entry, development, subtraction, return, and exit;
- the low end survives a mono check;
- no feedback, resonance, or return level is obviously unsafe;
- you have one focused listening note for the next pass;
- the current state has a snapshot or the appropriate undo path.
This is a usable first version, not a claim that the track is finished. Continue with one command and one audible question at a time.
If something fails
- No selected Grid: select the intended device in Bitwig, then re-read state.
graph_available: false: use exposed controls only; do not infer topology.- Unknown module or port: search the live catalog and re-read the graph; do not substitute a similarly named module.
- Stale revision: discard the old apply request, observe, and compose a new revision.
- Ambiguous timeout: do not retry; inspect whether the operation landed.
- Bad audible result: use
grid_shape_undo, a parameter snapshot, or host undo according to the operation, then re-read state.
For the general bridge installation path, see the project quickstart. For full mutation ordering, see producer workflows and the agent workflow playbook.