OTape

Hacker News Top Tools

Summary

oTAPE is an open, self-contained file format for digital cassettes, packaging two fixed-length sides of continuous audio plus labels and artwork into a single .otape file, complete with a browser-based Web Deck player and tape-sound emulation.

No content available
Original Article
View Cached Full Text

Cached at: 11/01/26, 06:24 AM

# oTAPE · The open digital cassette format Source: [https://www.otape.org/](https://www.otape.org/) oTAPE 1\.0 · open specification · release candidate ## Press record\. *Mean it\.* oTAPE is an open file format for digital cassettes\. One`\.otape`file holds a whole tape: two sides of fixed length, each one continuous recording, plus the label, the J\-card and the record tabs\. It's self\-contained and works offline\. Extension\.otapeContainerZIP \+ JSONLicense[CC BY 4\.0](https://creativecommons.org/licenses/by/4.0/) Drawn in your browser from a few lines of`appearance`JSON\. The reels follow the spec's tape\-pack model\. 01The idea ## The slow way, *on purpose\.* Making a mixtape used to take an evening\. You picked every song, sat through the recording and wrote the titles by hand\. oTAPE is a file format that keeps those constraints\. It isn't a new codec or a music player: it describes a whole cassette\. 1. 01### A cassette, not a playlist\. Each side is one continuous take\. The silence between songs, a spoken intro, the clunk of the pause button: it's all part of the recording\. Track markers can name the songs without splitting the side\. 2. 02### It behaves like tape\. A fixed length, two sides on one tape, and a position you reach by winding, not jumping\. Play side A to the end, flip the cassette, and you're at the start of side B\. 3. 03### The file is the object\. Audio, label, J\-card, booklet and history all live inside one`\.otape`\. It never links back to the MP3s it was recorded from, or to anything online\. 4. 04### Listening is read\-only\. Playing a tape never changes the file\. The player remembers your place separately, the way a real tape stays wound where you left it\. 5. 05### Open and simple\. A ZIP archive, one JSON manifest, AAC audio, PNG or JPEG artwork\. Every part is a standard format you can open with existing tools\. 6. 06### Each tape has its own look\. Supply artwork at exact physical proportions, or describe the shell and label in a few lines of JSON that any player can draw\. 02Try it ## Put a tape in the*deck\.* This is the oTAPE Web Deck: about 1,200 lines of plain JavaScript, no libraries\. It comes loaded with*Gitsem*, a C10 single that Mirat Can Bayrak wrote at 24 and recorded again at 42, and plays any`\.otape`you drop here\. Files stay in your browser and are never uploaded\. *Gitsem*by Mirat Can Bayrak, licensed under[CC BY 4\.0](https://creativecommons.org/licenses/by/4.0/)\.[Source](https://github.com/otape-studio/otape-spec/blob/main/examples/files/gitsem.otape)\. *o*TAPEWeb cassette deck OT\-WRECTAPE RUN **Insert cassette** [Download](https://www.otape.org/spec/examples/files/gitsem.otape)Open \.otape… or drop a file anywhere on the deck Time**\-:\-\-** Remain**\-:\-\-** Tape**\-\-\-** NO CASSETTE Now— Tape mapclick to wind 0:00 Output Spaceplay / stop←→rewind / fast forwardFflipEeject 03Tape sound ## Same tape\. *Another machine\.* A cassette never sounded the same in two players\. oTAPE players can now play a tape the way a machine of the era would have: a studio deck, a car stereo, a portable stereo that has seen better days\. The sound changes on its way to your speakers\. The file stays exactly as it was recorded\. *o*TAPETape sound selector TS\-6 Pitch over the last five seconds ### How it's done 1. **Wobble**No motor turns perfectly evenly\. A slow drift in speed bends the pitch \(wow\), a fast shiver roughens it \(flutter\)\. The player reads the music a hair early or late, moment by moment, so the pitch wanders just as much as it did on that machine\. 2. **Hiss**Every tape has its own bed of noise\. It runs while the tape runs, between songs and over blank tape too, and stops the moment you press stop\. 3. **Warmth**Record a tape hot and it rounds off the peaks, the treble first\. That gentle squeeze is a big part of why cassettes sound warm\. 4. **Wear**Old tape loses its top end, drops out for a split second where the coating has worn thin, and a head knocked out of line smears the stereo picture\. **Nothing is baked in\.**The machine is applied while you listen\. Your`\.otape`file isn't touched, recordings stay clean, and you can switch machines in the middle of a song\. **Machines are files\.**Each one is a small open preset, an`\.otsound`file, written in real\-world units: percent of speed, decibels, hertz\. So a portable stereo sounds the same in every oTAPE player\. Six come built in; make your own and share it\. 04Inside the file ## Unzip a *cassette\.* An`\.otape`file is an ordinary ZIP archive with a fixed layout: a`mimetype`entry first, so tools can identify the file without unzipping it, then the manifest, one audio file per recorded side, and optional artwork and documents\. night\-drive\.otapeZIP ``` mimetype application/vnd.otape.cassette manifest.json the cassette, sides A and B, the look audio/ side-a.m4a AAC-LC, one continuous take side-b.m4a omitted while the side is blank artwork/ optional, fixed physical sizes cassette-face-a.png label-a.png jcard-front.jpg jcard-spine.png booklet-01.png … docs/ booklet.html, notes.md ``` manifest\.json · a blank C60 ``` { "format": "oTAPE", "format_version": "1.0", "cassette": { "id": "550e8400-e29b-41d4-a716-446655440000", "title": "Night Drive", "type": "C60", "side_length_seconds": 1800, "created_at": "2026-10-28T22:00:00Z" }, "sides": { "A": { "write_protect": "intact", "audio": null }, "B": { "write_protect": "intact", "audio": null } } } ``` Media type`application/vnd\.otape\.cassette`Apple UTI`org\.otape\.cassette`AudioAAC\-LC in M4A, which every player must support\. ALAC, FLAC and PCM are optional\.TimelineInteger frames at 44\.1 or 48 kHz, exact to the sampleMagic`PK\\x03\\x04`at offset 0, the media type at byte 38Versions`MAJOR\.MINOR`\. Minor versions only add optional fields, and unknown data is preserved\. 05The medium ## Fixed length\. *Breakable tabs\.* A cassette's limits shape what goes on it, so oTAPE keeps them\. You choose a length before you record, and each side has a record tab you can break off\. ### Pick a length - **C46**23 min / side · 65\.7 m · 18 µm - **C60**30 min / side · 85\.7 m · 18 µm - **C90**45 min / side · 128\.5 m · 12 µm - **C120**60 min / side · 171\.4 m · 9 µm - **C74** Custom: minutes per side A custom tape is named like a real one: C plus its total length in minutes\. Tape length and thickness follow the reel model in Appendix B\.3 of the spec\. ### Snap the tab AB``Recording allowed: This isn't DRM\. Like the tab on a real cassette, it protects a finished tape from being recorded over by accident, and anyone can tape over the hole\. 06The paper ## Artwork, to the*millimeter\.* Shell and label artwork, the J\-card's front, spine and back flap, a fold\-out booklet, liner notes and a dedication\. Every image slot has a fixed size in millimeters, so artwork made in one app fits correctly in any other\. flap 25\.4spine 12\.7front 63\.5 mmSlotmmRecommended pxCassette face A / B100\.4 × 63\.82410 × 1531Label A / B89\.0 × 42\.02136 × 1008J\-card front63\.5 × 101\.61524 × 2438J\-card spine12\.7 × 101\.6305 × 2438J\-card back flap25\.4 × 101\.6610 × 2438Booklet panel63\.5 × 101\.61524 × 2438Thumbnailsquare1024 × 102424 px/mm recommended, 12 px/mm minimum, aspect ratio within ±1%\. Shell and label images must be transparent over the window and hub holes, so the player's reels show through\. 07The reference app ## oTAPE*Studio\.* A three\-piece hi\-fi for your Mac: the SP\-2 CD/MP3 source player and the TU\-01 internet radio tuner, both wired into the OT\-1 cassette deck\. Load your music or tune in a station, press REC, and the tape records in real time\. Pause the player and the deck records silence\. Save, and you have an`\.otape`file\. New in 1\.2:[tape sound](https://www.otape.org/#sound), so any tape can play through a machine of the era\. ![oTAPE Studio: the SP-2 source player next to the OT-1 cassette deck, which is recording a C46 from the TU-01 internet radio tuner below it. The tuner's display shows the station on preset 2 and the current song.](https://www.otape.org/assets/img/studio-full.jpg)- **Records in real time**The head overwrites the tape in place at 44\.1 kHz\. Blank tape stays blank, and nothing is recorded faster than it plays\. - **Radio on the dial**The TU\-01 tunes about 50,000 stations from the Radio Browser directory\. Song titles become track markers on the tape and lines on the J\-card\. - **Blanks and a designer**C46 to C120 blanks with working tape counters and reels\. The designer covers the shell, label, lettering, J\-card, artwork and record tabs, starting from eight presets\. - **Careful with your files**Saves AAC at 256 kb/s and re\-encodes only the sides you changed\. Data written by other oTAPE apps is left intact\. 08In your browser ## Studio, *on the web\.* oTAPE Studio Web is a cassette deck that runs in your browser, on any computer\. Open a tape or start a blank one, then record onto it in real time from a playlist of your own songs, an internet radio station or any audio input\. Save, and you have an`\.otape`file\. Nothing to install, no account, and your cassettes and songs never leave your device\. - **Three sources**A player for your MP3, AAC, WAV and FLAC files, the Radio Browser directory of internet stations, and line in from any audio input of the computer\. - **A real transport**Play, wind at speed, flip and stop at the ends\. Reels and counter follow the tape\-pack model, and the record tab protects finished sides\. - **Checks every tape**Opens any oTAPE 1\.0 cassette, validates it fully and names every problem with its section of the spec\. Blanks from C46 to C120, or any custom length\. - **Installable**Add it as an app and it opens`\.otape`files from your system\. Deck keys and media keys work, and it saves AAC at 256 kb/s\. 09For developers ## Write a player in an*afternoon\.* The spec is open: anyone can implement it in free or commercial software, with no royalties and no permission needed\. A basic player comes down to the five steps below\. 1. **Open the ZIP**and read`manifest\.json`\. Check`format == "oTAPE"`and that the major version is 1\. 2. **For each side,**decode`audio\.file`and treat it as exactly`recorded\_frames`long\. The rest of the side is blank tape\. 3. **Play from the head position\.**Use FF and REW to wind instead of jumping\. Flipping maps position*p*to*L − p*\. 4. **Draw the cassette**from`appearance`, or from the`artwork`images if there are any\. 5. **Remember the head position**locally, per`cassette\.id`\. Playing never modifies the file\. Validate a cassette ``` # optional: enables the JSON Schema check pip install -r tools/requirements.txt python3 tools/otape_validate.py my-mixtape.otape ``` ``` VALID my-mixtape.otape ``` ### Implementations NamePlatformRoleoTAPE StudiomacOS 14\+Reference recorder and player, by Jan Osio\.[Download \.dmg](https://www.otape.org/assets/download/oTape%20Studio.dmg)[oTAPE Studio Web](https://studio.otape.org/)Chrome, Edge, SafariRecorder and player in the browser, by Jan Osio[oTAPE Web Deck](https://www.otape.org/#deck)Any modern browserPlayer, on this pageBuilt something that reads or writes oTAPE?[Open a pull request](https://github.com/otape-studio/otape-spec/blob/main/CONTRIBUTING.md)to add it to the list\. ## Own the tape\. *Not the platform\.* No feed decides what plays next\. No account, server or subscription sits between you and a tape someone made for you\. oTAPE is open so your cassettes can outlive any app that plays them, including ours\. No cloud · no accounts · just tapes

Similar Articles

Simulate cassette tape audio profiles using FFmpeg

Hacker News Top

A GitHub project that uses FFmpeg to simulate cassette tape audio profiles including tape noise, wow/flutter, bandwidth limits, and equalizer adjustments. Provides scripts for different cassette types.

Tide

Product Hunt

Tide is a product that creates layered voice notes which paint themselves, offering a unique way to combine audio and visual creativity.

Flipcorder

Product Hunt

Flipcorder is a new iPhone app that mimics a 1991 camcorder experience, limited to one tape a day, launched via Product Hunt.

iVox

Product Hunt

iVox is the first app dedicated to recreating 1980s tape-edit effects for audio editing.

Ota

Product Hunt

Ota is a new product launch on Product Hunt offering contract-first repository readiness infrastructure.