Software · atari2cubase
atari2cubase, how it was made.
Like a lot of musicians, I started on Cubase 2.0 on the Atari ST in the ’90s. I still had a collection of .ARR and .ALL files that nothing modern can open, so I wrote a converter. This is the story of how it came together: the file formats nobody documented, the detective work to decode them, and the technology that runs it in your browser.
- Reads
- Cubase 2.x, 3.x, Lite, Score and Audio; Pro-24; Notator; Atari disk images
- Writes
- DAWproject and MIDI
- Built with
- Claude Code, Python, Pyodide
- First version
- Current version
- 0.31
- Price
- Free
The ’90s
When the computer became the studio
Around 1990, sequencing on a computer was still new. The Atari ST had MIDI ports built in, so for many musicians it became the centre of the studio: one computer driving a rack of synthesisers, drum machines and samplers over MIDI cables. Cubase arrived on the ST in 1989, and its Arrange window, with tracks running left to right and parts you could move, copy and loop, is the layout most DAWs still use.
Those songs held no audio. Everything was MIDI: the notes, the controller moves, the tempo changes and the sysex dumps that set up each synth before the song started. It all went onto 3.5-inch floppies, in Cubase’s own file format.
Today’s Cubase cannot open those files. Steinberg’s own route goes through Cubase SE, SL or SX 3 from 2004 or 2005, a USB eLicenser dongle with a licence that covers it, and Windows or an old PowerPC Mac. Few of us still have all of that, so a lot of music has stayed on those floppies, mine included.
The detective work
Decoding a format nobody wrote down
Steinberg never published the Atari file format. I built atari2cubase with Claude Code, and most of the work was detective work: we put the format together from the evidence the files themselves left behind.
- A copy of memory. Cubase 2.0 saved an arrangement by writing its own memory structures straight to disk, pointers included. Those pointers are 68000 RAM addresses from an Atari long since switched off. They point nowhere now, but they gave away where each record and event list began, and later told Atari files apart from files saved on a PC, which stores its numbers the other way round.
- One song, saved five ways. We ran the original Cubase 2.01, 3.1, Lite and Score in an Atari ST emulator and saved the same song, Gershwin’s The Man I Love, from each. Laid side by side, the files showed which bytes moved between versions: 70-byte records became 96, and the resolution went from 192 to 384 ticks per beat.
- Reading Cubase’s own code. Where a byte’s meaning was unclear, we read the 68000 machine code of Cubase 2.0 itself: the routines for playback, MIDI export and settings. That confirmed the delay, velocity, transpose, mute and drum map fields. Any field we could not confirm is marked unknown in the format notes, and the converter never guesses.
- Checked against the original. Every song with a MIDI export made by Atari Cubase is compared note for note with the converter’s output. That also turned up bugs in Cubase’s own 1990 export: it moves note-offs by twice a part’s delay, and runs out of memory on a busy cymbal track.
- Pro-24 and Notator. Pro-24, Steinberg’s sequencer before Cubase, was decoded from songs saved in 1988 that a user sent in, plus the program’s own default song. For Notator, the earlier open-source readers turned out to be wrong in three places, which Notator 2.1’s own exports showed.
- Whole disks. The converter reads the Atari’s FAT12 floppy and FAT16 hard disk file systems itself, so a disk image can be dropped as it is. The original Cubase 2.0 program disk was the first test.
The same song, then and now


The technology
Small, private and free to run
The converter is one Python file that uses only the standard library. The same code runs in three places:
- In your browser. The website loads Python itself into the page with Pyodide and converts your files there. Nothing is uploaded, so your songs stay on your computer.
- As an app. GitHub builds a Mac and a Windows app with PyInstaller, for people who would rather not use a browser.
- On the command line. For whole archives at once.
The page plays the song before you download it, with simple piano, guitar, bass and drum sounds generated in the browser and picked from the track names. The arrangement is drawn the way Cubase 2.0 drew it on the ST’s monochrome screen.
The site runs on Cloudflare Workers. The only server code keeps two things: a count of the songs converted, and the star ratings visitors leave.
Getting better by itself
Fixed from the files people send
Atari songs come from many Cubase versions, from PCs as well as Ataris, and from damaged floppies. When a file does not convert, the page offers to send it to me with one click. An AI routine checks the reports every four hours: it works out what the file is, tries a fix, proposes it as a change for me to approve, and emails the sender once the fix is live.
Support for damaged songs, unusual song layouts and files saved on a PC came this way, from files people sent in. A small robot in the app’s top bar counts the files fixed this way.
If you have songs on old disks, please try it. If something does not come out right, I’d love to hear about it.
Contact
Questions, ideas or a conversation?
I’m always glad to hear from people working on AI, product strategy, transformation or software.