New tape cleaner tool
Posted: 16 Nov 2018 01:48
UPDATE: Bill's TapeView is far superior to my own tool, and I highly recommend it over mine! So just updating this thread to direct anyone new to read through the pages of this thread to find the latest version of it. Thanks Bill for creating it!
----------------
ORIGINAL POST:
Hi guys,
I've been working on a new wav tape cleaner software. So far I've tested it with most of the wav's from Claus' download page and it works well. It fails with Toado and Knuckles though so I'll look into that in coming versions.
Features include:
- Automatic baud rate detection based on pulses from the waiting tone.
- Segmented zero adjusting before analysis to ensure optimal pulse length detection.
- Built as a state machine, being somewhat aware of what it should be expecting next in the sample stream.
- Detection of short, medium and long pulses (not really sure what the long ones are for, but they exist).
- Separate vector output data meaning that I "build" the output from optimal pulses instead of just squaring the input directly.
- Should work for 22050 Hz files and up (But only tested thoroughly with Claus' 22050 Hz wav's). Currently requires mono files.
Future features would probably include:
- Game name detection output to terminal as a nice touch. In other words, I plan to read the bytes if I can. Any help with the tape format would be appreciated!!! I've been digging around for days looking for useful data on the byte layout in the Memotech tape format, but so far haven't really found anything that seems to fit what I see in Audacity. Paul ('thewiz') talked about bit shifting 7 times in a different thread, which tells me that it's probably fixed 8 bit based. My question then is: What does it use for start, stop and parity bits (if any)?
- If I get the byte reading to work properly, I also plan to make it possible to convert files back to binary. But that might be a bit above my skill level. We'll see.
The tool is called "tapeworm" as an ode to one of my favorite Memotech games back in the day. It was one of the games I could somehow "break" and be able to LIST the code for (I can't recall how I did that). I seem to recall a lot of basic being used in it (which I could somewhat understand at the grand old age of 6-9). So it's one of the reasons I got into programming in the first place. Not that I could program much at that age, but I found the BASIC code scrolling down the screen deeply fascinating.
Lastly, the tool is very unoptimized at the moment and some things needs fixing. But in its current state it will convert a lot of games perfectly simply by running it with "./tapeworm file.wav".
Check it out here if you like: https://github.com/muldjord/tapeworm
All it requires is libsndfile-dev package, so be sure to apt-get or yum it before make. It was written on Linux, but should work just fine on other platforms aswell, as long as you find a way to get libsndfile on there.
The files I've cleaned with the current version can be downloaded here: https://drive.google.com/drive/folders/ ... sp=sharing . Just be aware that I often delete and recreate them when I've made changes to the tool. So sometimes that folder might be empty.


----------------
ORIGINAL POST:
Hi guys,
I've been working on a new wav tape cleaner software. So far I've tested it with most of the wav's from Claus' download page and it works well. It fails with Toado and Knuckles though so I'll look into that in coming versions.
Features include:
- Automatic baud rate detection based on pulses from the waiting tone.
- Segmented zero adjusting before analysis to ensure optimal pulse length detection.
- Built as a state machine, being somewhat aware of what it should be expecting next in the sample stream.
- Detection of short, medium and long pulses (not really sure what the long ones are for, but they exist).
- Separate vector output data meaning that I "build" the output from optimal pulses instead of just squaring the input directly.
- Should work for 22050 Hz files and up (But only tested thoroughly with Claus' 22050 Hz wav's). Currently requires mono files.
Future features would probably include:
- Game name detection output to terminal as a nice touch. In other words, I plan to read the bytes if I can. Any help with the tape format would be appreciated!!! I've been digging around for days looking for useful data on the byte layout in the Memotech tape format, but so far haven't really found anything that seems to fit what I see in Audacity. Paul ('thewiz') talked about bit shifting 7 times in a different thread, which tells me that it's probably fixed 8 bit based. My question then is: What does it use for start, stop and parity bits (if any)?
- If I get the byte reading to work properly, I also plan to make it possible to convert files back to binary. But that might be a bit above my skill level. We'll see.
The tool is called "tapeworm" as an ode to one of my favorite Memotech games back in the day. It was one of the games I could somehow "break" and be able to LIST the code for (I can't recall how I did that). I seem to recall a lot of basic being used in it (which I could somewhat understand at the grand old age of 6-9). So it's one of the reasons I got into programming in the first place. Not that I could program much at that age, but I found the BASIC code scrolling down the screen deeply fascinating.
Lastly, the tool is very unoptimized at the moment and some things needs fixing. But in its current state it will convert a lot of games perfectly simply by running it with "./tapeworm file.wav".
Check it out here if you like: https://github.com/muldjord/tapeworm
All it requires is libsndfile-dev package, so be sure to apt-get or yum it before make. It was written on Linux, but should work just fine on other platforms aswell, as long as you find a way to get libsndfile on there.
The files I've cleaned with the current version can be downloaded here: https://drive.google.com/drive/folders/ ... sp=sharing . Just be aware that I often delete and recreate them when I've made changes to the tool. So sometimes that folder might be empty.