| |
AKA :
Flex' hands on !Cube
Credits :
SIDs used in this release :
Download :
Look for downloads on external sites:
Pokefinder.org
User Comment Submitted by Saphir on 20 December 2020
Everything less than a 10 would be unfair ;) | User Comment Submitted by Scorpion on 21 March 2020
Stinsen, I think I already briefly commented this for "Cakewalk".
Since I have been asked about this already a few times, I think it is better to try and describe here how it works (it is not really too complicated, although has several bits and pieces required to make the whole things jive).
First of all, the visualiser works live and supports 1x and 2x tunes. Currently it works with GoatTracker, as well as CheeseCutter and DMC(v4). In principle, it should work with pretty much any player.
The only pre-processing required is a bit of code that goes through the player code and 'hooks' (i.e. instead of STA $d4xx, STA $d4xx,x or STA $d4xx,y, a JSR to specified memory address is performed) the commands writing to the SID registers, so basically it should work with any player. Some player-specific settings are needed (mainly start and end address of the music player code location), as well as information on whether the tune is a 1x or 2x tune, but once those have been set in the source code (as simple configuration "flags"), the process is automatic and is performed upon the start of the program (meaning no offline processing is required).
What each "hook" does is simply as follows
- the given value is written to memory instead of the SID chip
- also a "boolean" true is written to the memory for the SID register in question (this is needed because not all SID registers are written each time the player is called, and therefore one needs to keep proper bookkeeping of actual SID register writes in addition to the
- returns back to the music player.
Now, since the SID registers are not written by the music player, one can define when to actually play the music. In case of this visualiser, what I do is that upon start (after the hooks are setup) I start reading the SID writes and immediately draw the visualiser based on those values (see the note stuff below) to the right edge of the screen, which then is scrolled to the left.
The actual music is played from memory properly delayed so that the visualiser data that has scrolled to the middle of the screen is the exact time where the music plays. At this point, I also clear the "boolean" values in the memory for each SID register that was written to, so that the next time we visit the same memory addresses, the "boolean" information is correct.
The visualiser data is just multicolor character GFX (3 differnent charset each 6*40 = 240 chars on top of each other) that is created on the fly. The "highlights" in the middle of the screen showing the current notes played are done with sprites. The height of each "highlight" depends on SID voice gate changes as well as whether the note frequeqncy has changed or not. And when a highlight has the largest value (i.e. the highlight "bar" is the largest", it starts to go smaller each frame or so until it reaches the minimum value (same height as the note visualiser gfx), until gate is switched on or the note frequency changes.
The notes are "matched" from the actual SID voice frequency values with a simple search algorithm.
The indices to memory addresses where the SID data (and the "booleans") are written are increased every time the music player is called. These (or in actuality it is a single variable) indices are a single byte variables, resulting in a ring buffer (as the index values go from $00 to $FF and then back to $00).
For an 1x tune, this means up to 5.12 seconds worth of music (or, more specifically, list of whether to write and if so, which values to be written to the SID) is stored at any given time, whereas for an 2x tune it is up to 2.56 seconds. The speed of the visualiser GFX scroll is selected so that the time it takes to scroll the visualiser data from the right edge to the middle of the screen is a bit less than 2.56 seconds, which makes it work for both 1x and 2x tunes. However, this "limitation" is just a practical one, I could make it longer (at the expense of memory consumption, of course), but there was no need for that for this visualiser.
I hope this clarifies the principle to anyone interested. | User Comment Submitted by Stinsen on 21 March 2020
Really lovely conversion, interesting to hear as a SID! <3
@Scorpion: I'm really impressed by the visualizer. Is there any pre-processing involved or all live? If possible a technical write-up would be much appreciated. :) | User Comment Submitted by Steel on 14 March 2020 User Comment Submitted by Yogibear on 7 February 2020 User Comment Submitted by Hawk on 6 February 2020
Yeah thats a really fucking cool convertion.... maybe someond should start a Atari STe maxYMiser conversion combo?? There a much more nice maxYMiser tracks in youtube.....
I am really pissed off that i dont can compose..... | User Comment Submitted by Slator on 2 February 2020
love the original song, thanks for the c64 version of it, soo nice | User Comment Submitted by SMC on 2 February 2020
Very well done! Love the sounds! | User Comment Submitted by ChristopherJam on 1 February 2020 User Comment Submitted by uctumi on 1 February 2020
Great track! Demoscene feeling all along! And great visuals! | User Comment Submitted by Carrion on 1 February 2020
Oh wow! This is really fantastic one! | User Comment Submitted by TheRyk on 1 February 2020 User Comment Submitted by Dymo on 31 January 2020
Nice moving melody... cheers! :) | User Comment Submitted by Richard on 31 January 2020 User Comment Submitted by Jammer on 31 January 2020 User Comment Submitted by chatGPZ on 31 January 2020 User Comment Submitted by hedning on 31 January 2020
YEAH! wife is not home, so I can pump it!
| User Comment Submitted by Joe on 31 January 2020
Nice! I like the visuals also. | User Comment Submitted by Mibri on 31 January 2020
Really nice cover! In your style it sounds a lot like the tune you did for Triad's Neon demo! | User Comment Submitted by Compyx on 31 January 2020
|
|
|
| Search CSDb |
| Navigate | |
|
| Detailed Info | |
|
| Fun Stuff | |
· Goofs · Hidden Parts · Trivia
|
|
| Forum | |
|
| Support CSDb | |
|
| |
|