| | Mr SQL
Registered: Feb 2023 Posts: 137 |
Experiments on the Sound
I've been working on an algorithm to dynamically recompile the byte code for the SID chip, creating interesting and pleasing tunes provide the original tune is melodic.
Basically GIGO (garbage in garbage out) ensues with this algorithm if the tune used as the input has no Melody.
I've received a lot of feedback with earlier versions of the algorithm with some C64 fans really enjoying the sound and some not as pleased, either way share your thoughts here and any ideas to improve the algorithm.
Cross platform algorithmic arrangements:
This algorithm runs cross platform and works on the Atari 2600 TIA as well as the SID.
Here is the WIP for STARBLITZ Neon Sound on the C64 and Atari respectively:
https://youtu.be/ixuHdHvqMK8
https://youtu.be/FfAga57yJFs
The original musical composition can be heard at 4:30 in the Atari version, a Blues piece. Various soft piano and Jazz and electronic sound implementations are heard in the C64 version. I find it interesting that different music genres appear to emerge as the musical score is recursively processed by the algorithm.
Another algorithm is used to interpret the TIA on the C64 SID which sounds completely different. Even trying to get the 6581 and 8050 SID models to sound uniform is very difficult. I am not trying to get the same exact Sound like the gameplay and graphics (besides the motion pixel art). |
|
... 30 posts hidden. Click here to view all posts.... |
| | Frantic
Registered: Mar 2003 Posts: 1648 |
Controlled randomness will be a central built in feature of deathMON, to be released in 2052. |
| | chatGPZ
Registered: Dec 2001 Posts: 11386 |
Quote:Almost as if it would be wonderful to have a randomizer in a music editor one day. :D
The Atari Cubase i used in my last life had this :) |
| | ws
Registered: Apr 2012 Posts: 251 |
a buddy and i created the now free "tongerät1" vst plugin, which has a button "störstrahlung" in the settings. if you enable that button, randomly, over time each parameter will once in a while be altered slightly in a random fashion http://sys.efope.de/tonge.html so if you create some notes on a certain patch, and then activate that button and render 2h of audio, the sound will be transformed into a mutation of the original sound - but not according to any aeshtetics, so the sound can become pretty "fucked up". |
| | Mr SQL
Registered: Feb 2023 Posts: 137 |
Quoting FranticQuoting Mr SQLThe 256 byte tune is fantastic!
Excellent example with the interactive slider for Druid II.
Can the engine work on any SID tune?
Thanks. The Druid II hack is tailored to the specific song/player in this case. I had to figure out some reasonably simple tweaks that would suit this particular composition and still sound at least fairly "musical". For example, it may be okay to randomly change the waveform of some "piano" instrument between sine/triangle/square or to enable/disable ring modulation on that sound, but perhaps not to change a drum sound by changing noise wave to another waveform as that would only sound crappy. (Not that there are any drums in this particular tune, but you get the point).
On a more abstract level, I guess one could say that it would be possible to do "the same thing" on other tunes as well. That is, to use the same general approach.
Very cool. btw Hat Trick is fantastic! The wild graphics go really well with the sounds.
Quoting F7sus4Almost as if it would be wonderful to have a randomizer in a music editor one day. :D
Quoting chatGPZ
The Atari Cubase i used in my last life had this :)
This is a great idea, there could be music editors with these kind of algorithms.
I'm working on a music editor that has something like this now. The tracker includes a Tiny BASIC language that can programmatically resequence on the fly or apply algorithms.
Here is a recent example where I added the code for the algorithm to the tracker in another game. You can hear the original SID in the first round. There is a second algorithm in this game that changes the SID temporarily as it is playing interacting with the algorithm that permanently revises the music:
https://youtu.be/zEJTEzrszcw
I wonder if music editors have ever included a scripting language before? The Cubase feature is a close application. |
| | Hate Bush
Registered: Jul 2002 Posts: 465 |
as much as i absolutely CRAVE for such editor (standard tracker + simple scripts for randomizing things) since i had started writing shit on C64... i somehow doubt if it's going to happen here and now.
hope that motivates you to prove me wrong ;) |
| | spider-j
Registered: Oct 2004 Posts: 498 |
Quoting Hate Bushas much as i absolutely CRAVE for such editor (standard tracker + simple scripts for randomizing things) since i had started writing shit on C64... i somehow doubt if it's going to happen here and now.
I did something like this for a game for Endurion (don't remember the name right now). Used 2 voices for music and 3rd voice for random SFX instruments to create some kind of "spooky" atmosphere. Unfortunately it did confuse people to think some things were happening in game when they weren't.
Of course you're limited to (ab)use wavetables even for little melody parts with the SFX approach. But I feel this idea could be taken much further than I took it.
Also I think if you prepare a bunch of patterns in the first subtune and just loop one voice over an empty pattern it should be possible to randomly insert patterns on the fly.
But I guess by "scripting" you mean not programming the randomizer / ruleset parts in assembly (?) ... |
| | Mr SQL
Registered: Feb 2023 Posts: 137 |
Quoting spider-jQuoting Hate Bushas much as i absolutely CRAVE for such editor (standard tracker + simple scripts for randomizing things) since i had started writing shit on C64... i somehow doubt if it's going to happen here and now.
I did something like this for a game for Endurion (don't remember the name right now). Used 2 voices for music and 3rd voice for random SFX instruments to create some kind of "spooky" atmosphere. Unfortunately it did confuse people to think some things were happening in game when they weren't.
Of course you're limited to (ab)use wavetables even for little melody parts with the SFX approach. But I feel this idea could be taken much further than I took it.
Also I think if you prepare a bunch of patterns in the first subtune and just loop one voice over an empty pattern it should be possible to randomly insert patterns on the fly.
But I guess by "scripting" you mean not programming the randomizer / ruleset parts in assembly (?) ...
^This is interesting I would like to check it out if you remember the name. The Tracker I am working on has some of these aspects.
It lets you define patterns for the melody and subtunes for two voices only and uses a logical and of the waveform to create a harmonic for the third voice.
If you don't add any code the melody will play in the player but must have script to play one of the subtunes or modify the Sound. You can use Assembly too.
Wavetables are heavily utilized because the editor abstracts the voice frequencies to fit 32 note and 32 instrument defs.
The note frequency slides around a bit depending on the instrument definition.
Quoting Hate Bushas much as i absolutely CRAVE for such editor (standard tracker + simple scripts for randomizing things) since i had started writing shit on C64... i somehow doubt if it's going to happen here and now.
hope that motivates you to prove me wrong ;)
Very cool! I would love your feedback on this experimental Tracker.
Here is a simple example creating a chiptune and then adding an algorithm with the scripting.
Output:
I like the SID tunes created at 6:04 and 9:40 by the algorithm after multiple iterations:
https://youtu.be/ElOiambwmWw
Input:
Here is the initial SID in the format described above,
Only two voices are programmed in this Tracker:
Def, frequency, Def, frequency, number of frames
chiptunes
4,19,4,19,8
4,17,4,17,8
4,15,4,15,8
4,14,4,14,16
4,19,4,19,8
4,14,4,14,16
4,19,4,19,8
4,14,4,14,16
4,19,4,19,8
4,14,4,14,8
4,14,4,14,8
4,15,4,15,8
4,17,4,17,8
4,19,4,19,16
4,26,4,26,8
4,19,4,19,16
4,26,4,26,8
4,19,4,19,16
4,26,4,26,8
4,19,4,19,8
4,19,4,19,8
4,17,4,17,8
4,15,4,15,8
4,14,4,9,32
0,0,0,0,48
6,30,6,30,8
6,27,6,27,8
6,24,6,24,8
6,22,6,22,8
6,30,6,30,16
6,22,6,22,8
6,30,6,30,16
6,22,6,22,8
6,30,6,30,16
6,22,6,22,8
6,22,6,22,8
6,24,6,24,8
6,27,6,27,8
6,30,6,30,8
1,5,1,5,16
6,30,6,30,8
1,5,1,5,16
6,30,6,30,8
1,5,1,5,16
6,30,6,30,8
1,5,1,5,16
0,0,0,0,64
0,0,0,0,0
7,30,7,30,24
7,24,7,24,24
0,0,0,0,0
The SID plays unchanged on the first level and then this BASIC script rebuilds it:
rebuildmusic rem algorithm to rebuild chiptune
for i=0 to 255
MusicData(i)=MusicData(i)&%00011111+3
next i
return
The entire chiptune is exposed to the scripting language as a variable array. This makes it easy to apply algorithms.
Scripts can also run every frame allowing the parameters and tempo to be changed with temporary Fx.
The graphics in the game are written in BASIC scripting too but they are not necessary to use the Tracker nor is the SID scripting. This example would compile into a prg with the player. All scripts compile into Assembly in the prg as part of the player. |
| | Mr SQL
Registered: Feb 2023 Posts: 137 |
Here is a Tracker Script demo that uses scripting to allow listeners to interact with the SID by sequencing subtunes, chords and measures in the composition with the controller and to generate new SIDs algorithmically when the button is held.
Scripts and prg combined with the player:
https://relationalframework.com/TrackerScriptDemo.txt
https://relationalframework.com/trackerscript.prg
Video of me playing SID 53 with the scripts:
https://www.youtube.com/watch?v=DvIcbLeCYXc |
| | Mr SQL
Registered: Feb 2023 Posts: 137 |
New Star Raiders Cover uses Tracker Script to let you conduct when playing the game:
https://youtu.be/ZH13eKZ583Q
Leaving the stick in neutral plays a 10-15 second space tune which repeats.
Holding the stick in any direction plays four different sound effects.
Releasing the stick plays a different subtune that lasts 20-30 seconds and returns to the main tune.
Holding the button down for 20 seconds advances to the next SID with different musical selections and Fx.
Interestingly the experimental player does not always initialize properly on real hardware, it was barely audible here by comparison:
https://youtu.be/qKa9McjqU_E
The volume register is maxed, this player controls volume through the ADSR envelope. I am not sure what is causing the initialization issue with my 6581. The Sound inits under emulation. |
Previous - 1 | 2 | 3 | 4 - Next | |