Wrote my own renderer, replacing the Cairo graphics library with 87 lines of JavaScript
codeberg.org/bobbicodes/s...
@bobbicodes
Programmer βΎοΈ chiptune composer π³οΈββ§οΈ she/her Lisp, Clojure, 6502 assembly, Web dev Author of LispyTunes: https://codeberg.org/bobbicodes/LispyTunes Main channei: https://www.youtube.com/@bobbiCodes Music channel: https://www.youtube.com/@bobbiChips
Wrote my own renderer, replacing the Cairo graphics library with 87 lines of JavaScript
codeberg.org/bobbicodes/s...
Adding a 1ms delay after encoding each frame solves the problem. Not sure if there's a better way.
Uh so it seems I'm doing something wrong because it crashes my computer when rendering more than like 50 seconds, lol.
I'm not sure what could be jamming it up, because all I'm doing is piping frames to the ffmpeg process in a loop. I'm thinking maybe it's running faster than it can be encoded.
Updated the SID oscview tool to stream the video to ffmpeg instead of writing all the images to disk.
it sort of smells like a job for suffix trees, which are an efficient way to solve the "longest repeating substring" problem. I use them in my importer for extracting patterns.
I wrote a CLI tool to render this. It still has a few issues but it's available at codeberg.org/bobbicodes/s...
youtu.be/o-nxVCMLiGU
Scarlatti Harpsichord Sonata k.420 (SID)
Released my Sabbath cover as a proper #SID tune
deepsid.chordian.net?file=/SID%20...
There is an already stripped down version of NotSoFatso which is used for Famistudio's nsf import, might be worth a look
A/B test of identity phase locking in phase vocoder based time stretching algorithm.
This eliminates the artifacts typically introduced due to vertical phase discontinuities.
See the paper "Phase Vocoder Done Right" by Zdenek PruΕ‘a and Nicki Holighaus: arxiv.org/pdf/2202.07382
"i have a theory: pasta companies assume you're going to walk away from the stove. they're building in a buffer for idiots..."
But wouldn't that mean they would have to reduce the time listed on the box, not increase it
A web page with a button to load an audio file, set of input fields for wave size, wave count and resample period and text area for the wave output data. Below it is a graph showing the resampled PCM data as a white line and purple shading for the N163 wavetable values ranging from 0 to 15
Making an N163 resampler webapp
codeberg.org/bobbicodes/n...
Made it so you can add/remove code blocks for driver customization
codeberg.org/bobbicodes/n...
Made another big improvement to the live SID scopes.
The emulator now manages all the resampling and triggering in order to minimize the amount of data being sent between threads, and make the rendering as smooth as possible, at least for a webapp running in real time.
Finally finished adding Namco 163 support and hooking it up to the viewers
codeberg.org/bobbicodes/n...
messing with the Super Mario Bros. music engine to put it in a minor key
Oh yeah and it means you can export songs right from Famistudio and play with them in here
Got the Famistudio driver working in the nerdy6502 editor. This opens up a lot of possibilities because it supports every expansion and is way more efficient, both in CPU and rom space
Did a bunch of work on this, now has conditionals, and added a proper expression evaluator which supports all common operators.
codeberg.org/bobbicodes/e...
interesting that he chose to use an analogy of something that is socially accepted yet morally questionable at best
If something is tedious, that's a signal that either:
1. There could be a better way to do it
2. Some tool* could be built to make it less shitty
This is how things improve over time
Having the task completed by magic means they won't
* One that operates using explainable logic and rules
the Ben Eater video where he builds a SID player on a fucking breadboard and then generates Python slop to read the bytes in
the fact that he did it isn't even as bad as his need to announce that he did
it should be fixed now. thanks for spotting that!
Oh I see! I found the bug, it's actually a stupid syntax thing
A 6502 assembly instruction using the zero page y addressing mode.
Isn't that what I'm doing here in the fetch routine?
I've got the assembler code open now, so if there's a bug I'll try to fix it.
this was an easy fix! updating the live app now codeberg.org/bobbicodes/n...
yeah for some reason once you step with the debugger the song gets out of sync, and I can't figure out why
hmm it could very well be a bug in (or rather, unimplemented part of) the assembler, which is just barely past the toy-stage if I'm being honest
but I designed it to be easy to extend so it shouldn't be difficult
oh I bet it's the scope buffers, because it's in a loop that stops rendering if the tab is not active, but the emulator keeps filling them up