AI, Music and more

Berliner Schule Sequencer

Berliner Schule Sequencer is an algorithmic MIDI sequencer that runs directly in the browser. It generates melodic patterns inspired by the Berliner Schule style of electronic music, balancing repetition with subtle organic evolution.

The project is open source under MIT license, and can be found at Github too: https://github.com/ReinerBforartists/berliner_schule_sequencer

Watch the 0.9.3 release video at Youtube:
https://www.youtube.com/watch?v=JwNIeU2HabA

 ⇩ Downloads

04.07.2026 – Version 1.0.0

The button will call the tool online (for now). But you can also download it. To download, right click at the link and choose save as.

 ✨ Core Functionality

The tool is designed as a sequence generator. While it includes a basic internal synth for monitoring and previewing patterns, its primary purpose is to generate MIDI data. The actual sound design and final music production are intended to take place within a Digital Audio Workstation (DAW) or with external hardware via the MIDI export function.

The tool uses a Pseudo-Random Number Generator (PRNG) to create sequences based on musical constraints. Users can either generate random patterns or use fixed seeds to recreate specific results.

 ✨ Composition Modes

Classic: A “Random Walk” within the selected scale, creating fluid and grounded melodies.
Klaus Schulze: Focuses on sparse, long-held notes and drones for a meditative atmosphere.
Offbeat Anchor: Locks specific steps (usually offbeats) to a fixed pedal point while the rest of the melody varies.
Arpeggiator: Cycles through chord tones; these can be mutated over time to evolve the rhythmic pattern.
Motivic: Generates a 4-note “DNA motif” and applies classical transformations (Inversion, Retrograde).

 ✨ Harmonic Palette (Scales)

The mood of the sequence is determined by the selected scale:
Dorian: Sophisticated, slightly melancholic but open.
Phrygian: Dark, tense, and exotic; typical for “dark cosmic” sounds.
Aeolian (Natural Minor): Classic sad or dramatic tone.
Mixolydian: Brighter, more dominant and open.
Minor/Major Pentatonic: Simplified scales that always sound harmonious and fluid.
Plus four dystopic modes. Locrian, Whole Tone, Half-Whole Diminished, Chromatic.

 ✨ Evolutionary Export (🧬)

Beyond standard MIDI loops, the sequencer features an evolutionary chain generator that creates long-form compositions by mutating a sequence across multiple blocks:

  • Iterations: Number of mutation blocks (1–64).
  • Mutation: How many notes change per block — controls speed of divergence from the original.
  • Drift: Probability of a sudden octave jump between blocks.
  • Oct Drift: Gradual octave drift that accumulates across blocks, distinct from the sudden jumps of Drift.
  • Grip: How strongly the evolution is pulled back toward the original theme.
  • Chaos: Same chromatic contamination as the main sequencer, applied independently to the evolution chain.
  • Evolution Curve: Shapes mutation intensity over time — Linear, Ramp Up, Arch, Valley, Ease In/Out.
  • Mutation Style: Palette Walk (adjacent steps), Palette Random (any tone), or Mix.
  • Root Mode: Controls whether and how the tonal centre shifts across blocks. Includes static, free/random, interval-based (Thirds, 4ths/5ths, Cycle of Fifths), Berliner Schule/Ambient (Modal, Circulating Fifths, Slow Oscillation), and Pop/Rock/Standards presets (50s, Andalusian, Jazz Standard, Pachelbel, etc.).
  • Evo Seed Mode: Fixed (reproducible) or Random (fresh chain on each refresh).

A live preview canvas shows the full evolutionary arc before export.

Installation & Usage

📥 Installation & Usage

No installation is required. It is a browser tool. Simply download or open `berliner-schule-sequencer.html` in any modern web browser.

🚀 Operation Guide

Parameter Behavior

Live Parameters (Green Labels): These affect the playback engine in real-time (e.g., BPM, Swing). Changes are audible immediately.
Generative Parameters (Amber Labels): These define the blueprint of the sequence. Changing these values triggers an automatic regeneration of the pattern upon releasing the slider or changing the selection. The “↻ Generate” button can also be used to manually trigger a new seed.

Key Settings

Timing & Rhythm: Adjust BPM, Swing, and Steps per Beat (resolution).
Phrase & Notes:
– `Scale & Root`: Defines the harmonic palette.
– `Steps`: Length of one musical idea before it repeats.
– `Density`: Probability of a note occurring on any given step.
– `Interval`: Limits the “jump” between consecutive notes to control melodic smoothness.
Variation: Controls how much each repeat of a phrase differs from the original, preventing robotic repetition.

Visual Legend

Blue cell: Standard generated note.
Pink cell: Anchor note (fixed pitch).
Dark/empty cell: A rest.
Semi-transparent blue: A tie (held note).
Blue height bar: Relative pitch indicator.

📜 License & Credits

Berliner Schule Seqencer is free and open source.
MIT License © 2026 Reiner Prokein

Made with ❤️ by Reiner Prokein


✨ Motivation

I’m a child of the eighties and was socialized with post punk music. That doesn’t stop me from listening to music from many different genres. I’m also a big fan of early electronic music. The seemingly arbitrary melodies in the music of Klaus Schulze have always fascinated me. However, I was never able to create anything like that by hand. I always ended up making my usual kind of music instead.

So I started to investigate whether I could automate this step nowadays. It turned out that, with AI assisted development, I can. Now let’s see if I can find my way into this genre and release a few tracks in that style.

✨ History

04.07.2026 – Version 1.0.0

This is version 1.0.0. Finally the final version

One more bug was found and fixed. The evolution drift had no effect. Now the evolution drift drifts in the range of the chosen scale. And the octave drift drifts by octaves again as it should.

29.06.2026 – Version 0.9.4

Most importantly, the seeds for the sequencer and evolution are now independent. You now have to click the refresh button to generate a new seed, meaning that toggling buttons no longer automatically regenerates one. This allows you to return to previous settings and get the same result every time. Additionally, the Arp now respects sorting, and you will see a warning if JavaScript is disabled.

Under the hood, i’ve consolidated some code and comments and removed dead variables. I also fixed a few minor bugs, such as the swing button not displaying “off” when set to 0%. I experimented with a snapshot system, but since the seeds are now independent and must be changed explicitly, a snapshot system is no longer necessary.

26.06.2026 – Version 0.9.2 + 0.9.3

The 0.9.2 release is mainly about UI UX refinements. The sliders are gone, we have now buttons instead. There is now a similar and improved piano roll view for both the sequence and the evolution, which is much easier to visualize. The order has changed. Now it follows your workflow. First you generate your sequence. Then you add evolution to it. And finally, you export. There were also some algorithm changes again. There’s always something to tweak. The redesign also introduced some inconsistencies under the hood, which required some code cleanup. Especially css made lots of fun.

And while preparing the release of version 0.9.2 i had the ideat to add back some chaotic dirt. The implementation turned out to be faster as thought. And so we have yet another release quickly after the 0.9.2 release. The chaos buttons breaks the defined rules. For examply by playing notes outside of the defined palette or range.

18.06.2026 – Version 0.9.1.1
A quick little update because of a showstopper bug.

Evolution did just calculate the first repeat instead of all repeats, and already changed the initial phrase. Now the initial phrase remains unchanged. And the whole lenght of the sequence gets calculated.

17.06.2026 – Version 0.9.1

The new version 0.9.1 comes with quite a few changes. The previous version was a tad bit too random and contained quite a few bugs and glitches.

The algorithm has received quite a few changes. And differs in big parts from the old version. It now not longer creates arbitrary variations that ends in chaos. It keeps the rhythm. You can now generate evolutions that keeps the intial block intact. Octave drift now uses directional validation. We have now a fixed palette and a range. An evolution curve. The step sequencer has turned into a piano roll preview. There is a graphical piano roll preview in the evolution export too. You can move the sliders with the mouse wheel now. And much more.

03.06.2026 – Version 0.9.0

First public realease. After quite a few iterations of battling with the fine details the tool is stable enough. Which took me a while, since AI always introduced two new issues by fixing one. But in the end i could convince it to do what i want. 

– Reiner