overdub

patternaut

JarlLyng/patternaut · ★ 3

macOS companion for the Polyend Tracker+ and Tracker Mini. Generate and vary patterns, then read and write the device's own .mtp, .mt and .pti files on the SD card. SwiftUI, no accounts, no subscription. Open source, paid on the Mac App Store.

README from GitHub, MIT

Patternaut

A native Mac companion for the Polyend Tracker+ and Tracker Mini.

Download on the Mac App Store
$7.99 once · macOS 14 or later · patternaut.iamjarl.com

Patternaut with a generated 32-step beat in C minor on a Tracker+: kick, snare, hat, percussion and bass tracks, and five instruments in slot order.

Press Generate and a beat appears: kick, snare, hat, usually percussion carrying the device's own Chance effect, often a bass line in the key you chose. Every press is different, and every result is reproducible from its seed. Mutate takes what is there and nudges it, from subtle to chaotic. Export writes your patterns and samples to the SD card as the files the Tracker already reads.

What it does

The editor is a tracker grid and works like one: notes on the keyboard rows, sixteen tracks, both effect lanes per step with the device's own symbols and value ranges, undo on everything.

It reads projects back off the card as well, with their patterns, names, tempo and instruments, so you can take something you made on the hardware, change it, and write it back without disturbing the instrument assignments, mixer or effects the machine keeps for itself.

There is no audio engine, so it does not play patterns back. It is a companion to the hardware, not a replacement for it.

Feedback

Write to support@iamjarl.com, or use Help > Send Feedback in the app, which fills in the app and macOS versions. The app took shape in a thread on Polyend Backstage, which is still the best place for ideas other Tracker owners can weigh in on. Issues here are welcome too.

For developers

Co-created with AI

The file formats

The interesting part of this repo is PatternautCore, which reads and writes Polyend's formats in plain Swift with no Apple-only dependencies:

FormatWhat it isReadWrite
.mtpA pattern: 16 tracks of 128 stepsyesyes
.mtThe project: tempo, track names, song playlistyesyes
.ptiAn instrument: parameters and raw audioyesyes
patternsMetadataThe pattern slot namesyesyes

Every writer is verified byte-for-byte against Polyend's own tracker-lib, and then against projects written by the hardware itself, which is where the interesting differences turned up. Three of them are worth knowing if you write tools for this device:

  • The per-track length byte is the last step index, not the step count. Real files use 7, 31, 63 or 127. Writing the count makes the device read one step too many.
  • The device writes KS as the .mtp signature, type 2, and the real file size in the header. tracker-lib's own defaults differ (PM, type 0, size 0).
  • patternsMetadata holds all 256 slots, whatever the project uses, and the device will not load a project without the file.

ProjectBundleReader and ProjectBundleWriter handle a whole project folder, including stripping the ._ companion files macOS leaves on a FAT card, which the Tracker otherwise reads as patterns.

Building

cd PatternautCore && swift test     # the engine and its tests
cd App && xcodegen generate         # regenerate the Xcode project
open App/Patternaut.xcodeproj

The app needs xcodegen; the project file is generated from App/project.yml. PatternautCore builds and tests on its own with no Xcode involved.

Layout

  • PatternautCore/: the engine, pattern model, device profiles, generators, mutation, editor logic, MIDI sequencing and the file formats. Its own README goes into detail.
  • App/: the macOS SwiftUI app.
  • docs/: the marketing site, served by GitHub Pages.
  • appstore/: the App Store posters, and how they are made.

AGENTS.md is the quick-start for developers and coding agents, and carries a precise list of what the app does and, just as usefully, what it does not.

Contributing

Issues and pull requests are welcome; see CONTRIBUTING.md.

License

MIT. Co-created with AI, how that works.

Patternaut is an independent app and is not affiliated with or endorsed by Polyend. Polyend, Tracker, Tracker+ and Tracker Mini are trademarks of their respective owners.