← Blog
InkTracker: ProTracker op een e-ink-scherm

Blog

#retro#amiga#muziek#boox

InkTracker: ProTracker op een e-ink-scherm

Wie eind jaren tachtig een Amiga had, kent ProTracker. Het was een grijs scherm met vier kolommen hexadecimale cijfers die van onder naar boven voorbij rolden, en daarboven vier oscilloscopen die mee dansten met de muziek. Een groot deel van de demoscene en de gamemuziek van die tijd is ermee gemaakt. Het bestandsformaat, de .mod, wordt vandaag nog altijd gebruikt.

Ik heb nu een Onyx Boox Note Air4C: een tablet van 10,3 duim met een kleuren-e-ink-scherm (Kaleido 3), Android 13 en een pen. Het leest heerlijk, maar een e-ink-scherm is in bijna alles het omgekeerde van de CRT-monitor uit mijn jeugd. Toch wilde ik weten of ProTracker erop kan werken. Het resultaat heet InkTracker.

Wat het doet

InkTracker is een tracker voor muziekmodules met vier kanalen. Hij opent en bewaart .mod-bestanden, ook de oude Soundtracker-modules met 15 samples en modules die met PowerPacker ingepakt zijn. Je kan er samples in laden (WAV, AIFF, IFF), noten en effecten invoeren, blokken kopiëren en transponeren, alles ongedaan maken en je song exporteren als WAV. Je werk wordt automatisch bewaard. Heb je een Bluetooth-toetsenbord, dan werkt de klassieke ProTracker-indeling, ook op AZERTY.

De klank is precies die van ProTracker. Ik heb de afspeelcode van pt2-clone gebruikt, de nauwkeurige ProTracker 2.3D-kloon van Olav Sørensen (8bitbubsy), en die regel voor regel naar JavaScript omgezet. Dat omvat de replayer, de Paula-geluidschip met zijn filters en de timing van de CIA-chip. Om zeker te zijn heb ik de uitvoer sample per sample vergeleken met het origineel: er is geen enkel verschil. Een module klinkt op de Boox dus exact zoals in ProTracker op een Amiga 500, eigenaardigheden inbegrepen.

Waarom hij er zo anders uitziet

Het origineel is gebouwd voor een beeldbuis die vijftig keer per seconde ververst, en voor toetsenbord en muis. Een e-ink-scherm ververst traag, laat bij snelle beweging een spookbeeld achter (ghosting) en toont kleur alleen gedempt. En de invoer gebeurt met een pen of een vinger. Bijna elke ontwerpkeuze van ProTracker moest daarom anders.

Geen scrollend patroon. In ProTracker blijft de huidige rij in het midden staan en schuift het patroon er onderdoor. Op e-ink zou dat een wazige vlek geven. In InkTracker staat het patroon als een stilstaande pagina op het scherm. Een dunne zwarte cursorlijn loopt mee met de muziek, en aan het einde van de pagina slaat de pagina om, zoals bij een partituur. Omdat alleen die lijn beweegt, verandert er per rij maar een paar duizend pixels, en dat kan het scherm snel genoeg bijhouden.

Geen oscilloscopen of VU-meters. Die zijn het hart van de Amiga-look, maar op e-ink zou alleen hun beweging al het scherm laten flikkeren. Ze zijn weg. Zet je Bewerken uit, dan krijgt het patroon het hele scherm en is het rustig om naar te kijken.

Een toetsenblok dat meedenkt. In ProTracker tik je hexadecimale cijfers op het toetsenbord en moet je uit het hoofd weten wat C30 of E93 betekent. Met een pen is dat foutgevoelig. De werkbalk heeft daarom een piano over drie octaven, zodat je nooit van octaaf hoeft te wisselen, en een blok van 4×4 toetsen dat zich aanpast aan het veld waarin je staat. Op de effectkolom tonen de toetsen de namen van de effecten. Op de samplekolom kies je een sample op naam. Op de waarde toont elke toets wat ze betekent: bij volume staat er "48" op toets 3. C, 3, 0 is dan drie tikken, en daarna springt de cursor naar de volgende rij. Wie het liever klassiek heeft, kan de oude manier aanzetten.

Kleur als vlak, nooit als tekst. Kaleido 3 toont kleur alleen gedempt en met een lagere resolutie dan zwart-wit. Tekst blijft daarom altijd zwart op wit. Kleur zit alleen in kleine vlakjes die aangeven wat voor effect er in een cel staat: blauw voor toonhoogte, groen voor volume, oranje voor tempo. Alles wat beweegt is puur zwart, want in de snelle verversmodus valt kleur weg.

Het scherm meesturen. De Android-app zet het scherm tijdens het afspelen in een snelle zwart-witmodus. Bij een nieuwe pagina ververst het die pagina volledig, zodat kleur en grijs terugkomen, en af en toe volgt een volledige verversing tegen ghosting. De cursor loopt ook een fractie vóór op de muziek, zodat hij op tijd verschijnt ondanks de trage verversing.

Zo wordt een van de meest schermgerichte programma's uit de Amiga-tijd een tracker die aanvoelt als een partituur op papier: stil, scherp en zuinig. Het doel was dat het klinkt als 1990 en leest als een boek.

InkTracker in luistermodus: een stilstaande patroonpagina met een zwarte cursorlijn
Luistermodus: één stilstaande pagina, alleen de cursorlijn beweegt.
InkTracker in bewerkmodus met piano en een hex-toetsenblok dat de betekenis van elke waarde toont
Bewerkmodus: het toetsenblok toont wat elke waarde betekent.

Met dank aan

InkTracker bouwt voort op het werk van twee anderen. Van pt2-clone van Olav Sørensen komt de klank, bit voor bit. Van BassoonTracker van Steffest, een tracker die in de browser draait, heb ik de sampleverwerking, het ontwerp van ongedaan maken, de toetsenbordindeling en de effectnamen overgenomen en aangepast, en er onderweg enkele fouten uit gehaald. Beide projecten zijn open source, en InkTracker is dat ook: de code staat op GitHub.

Zelf proberen

Download de APK hieronder op je Boox, of op een ander Android-toestel. Zet bij Instellingen → Apps "Onbekende apps installeren" aan voor je bestandsbeheerder en open daarmee het bestand. Er zit een demo-song in, waarvan alle klanken in de app zelf zijn opgebouwd, zodat je meteen iets hoort.

Intussen heb ik InkTracker op mijn eigen Note Air4C getest, en hij werkt. Werkt de snelle verversing op jouw toestel niet goed, zet dan in het E-ink Center van je Boox de verversing voor InkTracker op "Snel". Onder Menu → Instellingen → E-ink zie je wat de app op jouw toestel vindt. Opmerkingen hoor ik graag.

Update: versie 0.1.1

Bij het testen op de Boox bleek één fout: na het einde van een sample zonder lus klonk er een hoge pieptoon. Dat is een oude bekende uit de Amiga-tijd. Als een sample gedaan is, blijft de Paula-chip de eerste twee bytes ervan herhalen. ProTracker zet die bytes daarom op nul bij het laden, zodat die herhaling stil is. Mijn laadcode deed dat ook, maar samples die je in de app zelf maakt, importeert of tekent, werden niet zo behandeld. Versie 0.1.1 laat zo'n sample na zijn einde een stil stukje herhalen, zonder aan je sample te komen. Modules klinken nog altijd bit voor bit zoals in pt2-clone. De nieuwe versie installeer je gewoon over de vorige heen.

↓ Download InkTracker 0.1.1 voor Android (.apk — 1,4 MB)

Versie 0.1.1, voor Android 8 en hoger, gemaakt voor de Onyx Boox Note Air4C. De app vraagt geen internettoegang of andere rechten.