| |
Stinsen
Registered: Feb 2012 Posts: 71 |
SID visualization
So I did an attempt at SID visualization in some recent G*P music releases (e.g. Kobra Khan). Obviously some things could be still be improved, e.g. it is not currently aware of ADSR nor filter, but I'm curious what historically have been made (and I don't want to plow through all music collections/releases ;), does anyone have good example of other nice (real-time or not) visualizations of SID music? I had some suggestions of trying "offline frequency analysis" for better accuracy... Any thoughts on the subject? :) |
|
| |
algorithm
Registered: May 2002 Posts: 702 |
Sid visualisation from within the C64 can be done by reading which values are stored to $d400-$d418 in a given frame and then recreating an approximation which updates itself (ADSR slope, waveform type used, frequency etc)
The Envelope for channel 3 can however be read via $d41c (with $d41b being the oscillator values for channel 3) |
| |
soci
Registered: Sep 2003 Posts: 474 |
This was my attempt sometime ago on the subject:
C64 Fourier |
| |
Oswald
Registered: Apr 2002 Posts: 5022 |
here's mine:
Nostalgia
load funplayer from the d64.
you'll need a ripped music binary to load and see what it does. |
| |
TheRyk
Registered: Mar 2009 Posts: 2076 |
off topic/out of competition ;)
PlayEm64 V1.0
apart from rastertime in border I only show $D41B and $D41C as sprite bars with some stupid LSR algo making it fit into stretch sprite matrix :)
BTT: Yours and soci's really look quite impressive, no idea how to make those any better.
Edit:
Two more I always enjoyed:
Meet Linus
FieserWolF's Low Voltage Sid Collection |
| |
4mat
Registered: May 2010 Posts: 63 |
I attached $d41b/$d41c to my old "In a loop" intro a while back. You have to find a track with lots of channel 3 noise in though, like this one by Q-Man. |
| |
6R6
Registered: Feb 2002 Posts: 244 |
Ninja II Muz! has vertical d41b+d41c scope.
In a Loop has some great visual effects. |
| |
Sander
Registered: Jan 2002 Posts: 487 |
Once had the idea for a music collection, that never happened, to convert the sid to wav, and get some data tables on pc/mac. Much more possibilities :) |
| |
Mixer
Registered: Apr 2008 Posts: 422 |
Well, all sid waveforms have fourier series representation. Perhaps Soci used this idea in his fourier view.
(Wiki stuff)
Square is a sum of odd integer (n) harmonic frequencies
Triangle is a sum of odd integer (n) harmonic frequencies where 4n-1 harmonic shifted by 180 degrees.
Sawtooth has all integer (n) harmonics
(white)Noise has evenly distributed energy on all bands.
Integer harmonics attenuate in relation to n bit differently whether it is square, triangle or saw.
However, it would be possible to split the frqband into N bands and make some tables that can be used to tell how much of each harmonic to sum to each band energy for each frequency value.
Filter is bit of a problem, but one could fake it on the viewer especially if the number of bands is not too large.
So, in short -> Fake it! |
| |
Oswald
Registered: Apr 2002 Posts: 5022 |
Cubic Player
displays all channels which is pretty impressive, because it has to emulate (fake) sid a bit to do so. fourier and lots of other stuff is in there aswell.
(worth to read the note if your into details) |
| |
Steppe
Registered: Jan 2002 Posts: 1510 |
10 Years HVSC has data vis on all songs. You have to press some key while the song is playing, it was an F-key or Run Stop or maybe Restore. |
| |
Frantic
Registered: Mar 2003 Posts: 1627 |
I coded some vumeters once on the c64, that relied on 6502-simulation of the ADSR envelopes of the sid, i.e. sensitive to gate on and gate off events and such. Nothing fancy, and never released, but the code is lying around somewhere on my hard drive. The implementation wasn't perfectly accurate, but still somewhat reasonable. (It was used as part of my sid editor defmon for a little while, so it relied on the internal parameters of the player rather than intercepting sid writes by switching out the sid or so.) |
| |
Stinsen
Registered: Feb 2012 Posts: 71 |
Wow, thanks for the replies, exactly the kind of stuff I was hoping for. And I must say that the cubic player really is neat (and the notes were a great read too for that matter). :) |
| |
spider-j
Registered: Oct 2004 Posts: 446 |
I also did some funny visualisations in my collection: Godspeed - A 8580 Music Album
The sprites move up when note is higher than previous note and down when note is lower. And they show what waveform is played, but I was too lazy too draw sprites for mixed waveforms :-)
The colors and char gfx rol's also come from some registers.
As you can't rely on reading the SID registers, I took the internal registers of SID Wizard playroutine from the source code. |
| |
TheRyk
Registered: Mar 2009 Posts: 2076 |
Quoting spider-j... you can't rely on reading the SID registers ...
Yeah that was the result of a longer talk with peiseluli some year(s) ago and also some lecture plus studies on existing .SID-files. Actually reading from any but 4 registers (two of which do not really provide any interesting material) is "cheating"/guessing, so apart from those there's nothing which makes much sense if you want to use it for _any_ .SID file. That (and economy) is why I tend to restrict myself to $D41B and $D41C. Many of the more impressive visualisations do exactly what you did and use
Quote:registers of $whatever playroutine
so mostly zeropage addresses which might be used differently depending on the player, which strictly speaking forbid their use ;) if(!) a next-to universal use is intended |
| |
Linus
Registered: Jun 2004 Posts: 638 |
Peiselulli's rather funky and original visualization in Meet Linus is worth mentioning aswell. |
| |
TheRyk
Registered: Mar 2009 Posts: 2076 |
which I did in #5! but peiselulli can't be praised too often ;) |