-
Notifications
You must be signed in to change notification settings - Fork 2
19 September 2026
I had taken sine-test-mvp.bin and had inserted the entirety of rfm.a18 as Region 1 with a blank light table. The rest of the Regions were 00s, so just noise.
When played, I heard the audio flicker, like it was garbled, but could be somehow coherent, as if some setting was offset by a small amount. Here is the recorded video.
Since discovering that each frame must be 40 bytes long, I wonder if previous tests may go well if I checked if they adhered to this rule. Looking at rfm-r1-whole.bin, I see that the audio payload for rfm.a18 is 164960 bytes long (this is excluding the header and light table). To ensure that there is no frame mismatch, we divide the total length by 40 and make sure the quotient is a whole number.
$$
164960/40=4124
$$
So we can assume that there are 4124 frames of audio, and each of them are the right size (40 bytes).
In order to verify encoding, I have used John-K's a1800_codec (as a python script in /scripts/a1800_codec_tool.py) to round-trip the .WAV to .a18 back to .WAV. It does play like normal, so the encoding is not what is making the distorted audio. We even know that a previous attempt had played the royalty-free music for ~10 seconds before it crashed on the bass drop. I must have introduced a data error when manually patching rfm-r1-whole.bin together.
I also noticed that rfm-r1-whole.bin eventually produces a light flicker at the end, suggesting there is an error calculating lengths and colliding into light tables.
Another test I could do (to expedite testing) is to reroute Regions 2-12 to Region 1, and then blank the rest out.
r1-only-noise.bin contains the following features:
- blank magic numbers
- rerouted Segment 2 -> Region 1 (starting where Segment 2.1 would start)
- rerouted Regions 2-12 -> Region 1
This should produce behaviour that plays the same snippet and lights for 12 frames...
IT WORKS!
It plays a 2ms noise snippet that sounds like a "spit", then turns the carousel to the next frame. The next frame (all the way until Region 12) then plays the exact same thing. This will make it much easier to debug custom audio!
It is now saved in data/models/confirmed-mvps/ as compact-testing-base.bin.
I have actually found success in playing the entire 2 minute royalty-free music audio on the compact template. I think all the errors I've encountered was due to my human error when manually patching multiple Regions together. Once simplified to Region 1 recursively, it seems to play without any errors.
HERE is a video of the successful royalty-free music test
I must try this with the ratadon story I made with Qwen-TTS... IT ALSO WORKS!!! I have run the world's first custom audio story on the LTSDM!
HERE is a video of the successful custom story one of my kids told me once at the playground
Presenting: Ratadon Goes to the Shops
My kid told me this story at a playground one day. I typed up the script from what I could remember, then used Qwen-TTS to make an audio file of the reading of the script. I then used Audacity to standardize that audio into a mono 16khz 16-bit-signed .WAV file. I then used John-K's a1800_codec to encode that standardized .WAV file into an .a18 file. I inserted the .a18 into Region 1 of the compact template we just made here, and it runs without errors!
The compact template restricts the uploading of audio to one Region, thus there is less dynamics between slides. However, I would note that this success directly suggests that multi-slide audio will be just fine as the redirects for all other slides also work for the single-region audio. I am confident that the manual construction of multi-slide data has consistently introduced random human error. I think I can code a small compiler that will take several encoded pieces and arrange them properly in a functional data payload.
| ⟵ Older | Table of Contents | Newer ⟶ |
|---|