• Please review our updated Terms and Rules here

Decoding TI-99/4A Cassettes with CS1er - Going from Horrible to Excellent Results

bburley

Experienced Member
Joined
Nov 24, 2023
Messages
158
Location
Northeastern Alberta
I have been playing with every setting imaginable trying to decode TI-99/4A cassette tapes with CS1er with dismal results until I finally learned a few things and started to get excellent results.
I thought I would share some of those tips here.

For the initial recording, playback from a Mono cassette into a Stereo PC Soundcard - do not feed audio into both left and right channels - choose only one otherwise it seems to introduce extra distortion.
For the initial recording level, I have Audacity set to Mono 44100Hz 32-bit float and do not allow the peaks to exceed -6 dB.

Levels.jpg

After the recording is complete I apply an EQ filter to boost the level and reduce frequencies that are too low or too high.

EQ.jpg

The author of CS1er had a slightly different EQ that he was applying but it didn't seem to work a good as my modified version.
I started thinking about all of the comments about setting the tape recorder tone control to maximum treble and wondered if the upper cutoff frequency was set too low.
The two frequencies used are 689 Hz and 1379 Hz but a lower upper cutoff frequency may have been distorting some of the fast rise-times of the waveforms.
For whatever reason, I had much better results with my EQ version. The authors version is found in this thread.

Author EQ.jpg

After EQ is applied, the waveform looks like this.

After EQ.jpg

Then I export the audio to WAV (Microsoft) as Unsigned 8-bit PCM.

Export.jpg

For most files the default tuning settings work well. I have been using the "Natural" Recognition Method, but it seems that "Sine" and "Triangle 2" Recognition Methods also work well for TI encoded tapes.

Tuning.jpg

One variation that I ran into was from a recording obviously made with a different tape recorder. It had higher levels causing me to reduce the upper gain of the EQ bandpass from 12 dB to 6 dB and then found that the waveform showed significant DC offset.

DC Offset.jpg

I had to use a DC offset correction from +11 to +17 to get a perfect read on a single pass.
Overall, these settings have been working so well that I was even able to decode in a single pass several files that the original TI-99/4A computer could not read without errors.

If you ever do have to use the Debug Record function, this nicely explains how to recognize a "0" or a "1" in the waveform.


Encoding.jpg

That info and more is from https://www.unige.ch/medecine/nouspikel/ti99/cassette.htm

I have 36 tapes to go through, so perhaps I will see some additional variations yet.
 
Last edited:
One more tip that I can add.
Once the recording level and EQ settings are worked out, the single most important Tuning adjustment is the DC Offset.
Using the "Debug" function should be avoided. Instead start a fresh run with each Tuning or DC Offset setting and check the end of the log for the total number of errors.
You will soon see which setting produced the lowest number of errors, and zero errors appears to be very obtainable.
Using the debug function before Tuning is complete will often get you records with corrupt data despite the checksum appearing correct.
What can look like timing errors is often caused by trying to detect bit boundaries at an improper level in the waveform caused by DC Offset.
 
I may look at that later. I will stick to decoding more tapes for now. As soon as it warms up a bit more my computer activity will reduce a lot until fall.
 
Back
Top