182535
I'm trying to make music on SNES/SPC700 with the following process:
- creating a song with any software and render it to wav
- loading the whole wav file in the SPC700 RAM
- rendering it to a format that can be played on SNES/emulator (such as .spc)
I actually found a way to do this but for now I can't make songs that are longer than something like 1:00~1:10. I'm posting here because there is possibly an easy way to make quite longer songs but I'm not very knowledgeable with .it trackers.
TEST SONG
I made a test song called 32bits, I just took the mp3 from the entry I made for the last day of the Advent Calendar battle and rendered it to a .spc file using OpenMPT and SNESMOD.
It doesn't sound nice as it is now because I just used some random song that was already made, but I think it's possible to make some cool stuff if you make a song especially for the purpose of converting it to spc.
Here are the links to
- the entry: https://battleofthebits.com/arena/Entry/Flurry/64373/
- the .it module as well as .spc and .mp3 renders: https://drive.google.com/drive/folders/1CJEqRBf3d6GIDKhqawUx9fshxcuGmsGd?usp=sharing
Note: the song is only 50 seconds long but it didn't use the whole RAM, I think it's fairly possible to go above 1 minute if you repeat the process with another song instead
METHOD
As the SPC700 chip only has 64KB of audio RAM, you can only load a few seconds of audio. I don't know the exact number but I did some tests in furnace and it seems you can import a sample of 2 seconds without problem (it even leaves some unused RAM, which is good because I'm using SNESMOD).
So the first step will be to shrink your song into a sample of 2 seconds or lower. To do this I imported my song in Audacity and multiplied the speed by 32 (Effects -> Pitch and Tempo -> Change Speed). If the song has an initial length of 64 seconds, the result will be exactly 2 seconds long, so you will be able to use it as a SNES sample. In my case the result was shorter than two seconds because my base song was only 50 seconds long.
Once the speed up song is imported as a sample in OpenMPT, the last thing to do is to revert it to it's original length!
Playing the note C5 will play the sample at it's base pitch, so C4 will lower it by one octave and C0 by 5 octaves. But lowering a sample by one octave is actually the same as dividing its speed by two. Hence C4 will halve the sample's speed and, as 32 is 2 at the power of 5, C0 will divide it by 32. So, to revert the song to its original speed, you just have to play the related sample with the note C0.
IMPROVEMENTS
To make longer songs, I'd like to repeat the same process with greater speed values. Imagine you multiply the speed of your long by 64 with Audacity, then you would have to lower it by 6 octaves in OpenMPT to go back to the original speed....... but it would require either:
- to play octaves below C0
- or to have the base pitch of the sample on C6 instead of C5, so that playing C0 would lower it by 6 octaves
Do you now how to do this with OpenMPT? If you have a solution that doesn't use OpenMPT or SNESMOD, I'm also curious to know about it!
Thanks for your answers and sorry for the long reading!!
- creating a song with any software and render it to wav
- loading the whole wav file in the SPC700 RAM
- rendering it to a format that can be played on SNES/emulator (such as .spc)
I actually found a way to do this but for now I can't make songs that are longer than something like 1:00~1:10. I'm posting here because there is possibly an easy way to make quite longer songs but I'm not very knowledgeable with .it trackers.
TEST SONG
I made a test song called 32bits, I just took the mp3 from the entry I made for the last day of the Advent Calendar battle and rendered it to a .spc file using OpenMPT and SNESMOD.
It doesn't sound nice as it is now because I just used some random song that was already made, but I think it's possible to make some cool stuff if you make a song especially for the purpose of converting it to spc.
Here are the links to
- the entry: https://battleofthebits.com/arena/Entry/Flurry/64373/
- the .it module as well as .spc and .mp3 renders: https://drive.google.com/drive/folders/1CJEqRBf3d6GIDKhqawUx9fshxcuGmsGd?usp=sharing
Note: the song is only 50 seconds long but it didn't use the whole RAM, I think it's fairly possible to go above 1 minute if you repeat the process with another song instead
METHOD
As the SPC700 chip only has 64KB of audio RAM, you can only load a few seconds of audio. I don't know the exact number but I did some tests in furnace and it seems you can import a sample of 2 seconds without problem (it even leaves some unused RAM, which is good because I'm using SNESMOD).
So the first step will be to shrink your song into a sample of 2 seconds or lower. To do this I imported my song in Audacity and multiplied the speed by 32 (Effects -> Pitch and Tempo -> Change Speed). If the song has an initial length of 64 seconds, the result will be exactly 2 seconds long, so you will be able to use it as a SNES sample. In my case the result was shorter than two seconds because my base song was only 50 seconds long.
Once the speed up song is imported as a sample in OpenMPT, the last thing to do is to revert it to it's original length!
Playing the note C5 will play the sample at it's base pitch, so C4 will lower it by one octave and C0 by 5 octaves. But lowering a sample by one octave is actually the same as dividing its speed by two. Hence C4 will halve the sample's speed and, as 32 is 2 at the power of 5, C0 will divide it by 32. So, to revert the song to its original speed, you just have to play the related sample with the note C0.
IMPROVEMENTS
To make longer songs, I'd like to repeat the same process with greater speed values. Imagine you multiply the speed of your long by 64 with Audacity, then you would have to lower it by 6 octaves in OpenMPT to go back to the original speed....... but it would require either:
- to play octaves below C0
- or to have the base pitch of the sample on C6 instead of C5, so that playing C0 would lower it by 6 octaves
Do you now how to do this with OpenMPT? If you have a solution that doesn't use OpenMPT or SNESMOD, I'm also curious to know about it!
Thanks for your answers and sorry for the long reading!!