Banner
Views: 327,728,803
Time: 2014-12-19 09:07:00 AM
14 users online: CAN'T MAKE A GOOD HOLIDAY NAME, dggonzalz, Glaceon, o Yuyuko Saigyouji, o A$AP FUGG, Flonne, Happy Christmas Reindeer, Jolly Old Potato, NGB, o HALLOWEEN 2014 HYPE, S.R.H., Christmas Happy Happy Fun Time, o santa.exe, St. Omatol - Guests: 42 - Bots: 49Users: 26,012 (1,135 active)
Latest: Cansledsagkshow
Tip: This thread contains data you might find helpful when coding.
Accurate SNES Instrument Emulation!
Forum Index - Donut Plains - Computers & Technology - Accurate SNES Instrument Emulation!
Pages: « 1 »
MP3 Sample of C700 in action:

http://bin.smwcentral.net/u/994/3Dworld%2BYI.mp3

(Courtesy of Jimmy52905. Thanks for sharing, dude!)

Hey guys, just thought I'd make this post to share my knowledge with you all! Here's a tutorial on how to make a convincing SNES instrument sound in your favorite (VST-supported) music editor! While this tutorial centers around FL Studio, this method should work for any VST-supported music program. This will not let you insert custom music into Super Mario World (unless you're looking at MSU-1 stuff), but it helps with making an MP3/OGG/WAV sound like a legit SNES chiptune.

No matter your DAW of choice, you can near-perfectly emulate BRR/SPC samples to create some convincing pseudo-SNES-chip music with a single VST, though if you're interested in emulating SNES perfectly, this is quite a lengthy read.

The first thing you want to do is download C700 from the page: http://picopicose.com/software.html

No worries—the page is in Japanese, but the program itself is in English. Extract the C700.dll (not the one in the x64 folder. I've heard some people get many unexpected errors from the 64-bit edition) and put it in your VST folder (typically at C:\Program Files (x86)\Image-Line\FL Studio 11\Plugins\VST)

Open FL Studio and insert/replace a channel with C700:


^If you can't find "C700" on the list, make sure that you re-scan for any VSTs, and double-check that C700.dll is in the correct folder.

If you managed to get C700 to open, you should see this window:



Find an SPC with the instrument that you want. http://www.snesmusic.org/v2/ is a great resource for finding SPCs from particular games. (.rsn files act like .zip files, just extract the SPCs as if it were a .zip)

---
EDIT: Or, if you want to use your own custom instrument, drag/drop a .wav over the waveform in the C700 Interface. I recommend importing a .wav which is 32kHz 16-bits Mono (C700 can do stereo though!), and has a start and end loop point, both loop points being a multiple of 16 in decimal. OpenMPT is a great tool designed around doing that kind of stuff, though you could also use something like Audacity, then skip to the echo part of this tutorial.
---

Open the SPC in SPC700 Player, and look at the sample number of the instrument (you might want to mute the other channels to find it).



Open up windows calculator (or any hex>decimal calc you prefer) and press ALT+3 (or View>Programmer Calculator). Convert the value from hex to decimal. (My value was 1F, so the calculator gave me back 31.)

Extract split700's /bin/ folder and move the SPC into it. Run the .bat and find the instrument BRR you need (The folder will get very messy!), then drag the BRR over the waveform in the C700 window:



Alternatively, if you dropped an SPC into the program, scroll up/down to find your instrument (my case was 1f, or 31 in decimal):



At this point you can already place notes, but we need to make the instrument's volume envelope (ADSR) sound even more accurate. Open the SPC up in SPC700 Player again and double-click on the window (or press left/right) to navigate to the ADSR menu. Find your instrument's ADSR:



So in my ADSR:
A = F
D = 7
S = 7
R = 00

If I convert each of those to decimal via calculator:
A = 15
D = 7
S = 7
R = 00

Which is how I would configure my ADSR here:



^While this is accurately converting, C700 treats Release differently in contrast to the standard N-SPC music engine. Un-check Sustain mode for best compatibility results.

Also, I wouldn't recommend controlling C700 directly in the VST, so use 8 MIDI Out ports (or if you use FL, check this out. It's useful for instrument patch/prog changing!)
I recommend making all your instruments "mono"phonic by checking the tickbox to the right of the waveform.

Now we have an accurate instrument, there's one last step, which is defining echo and ADSR.



Just find and convert each of these values to decimal, then put the data into C700. Don't forget to enable the echo box for the channels you want to have echo!



EDIT: Forgot to mention, if the value is over $7F, you'd be using negative numbers. $FF would be -1, $FE would be -2, and so on.
If I had $FB, I would use the following formula:

Hex -> Dec
$FB -> 251 = x

(255 - x) * -1
(255 - 251) * -1
4 * -1
-4

Another note: I highly recommend hooking all of your MIDI channels to the VST, rather than having several C700 VSTs open at the same time.

EDIT: Need to change instruments mid-song in FL? Use this to control MIDI Program Changes with note colors: http://blake.so/articulate/

Also, "Drum" channels are just samples, and should be treated no differently than actual melodic ones. The same rules still apply.

One last note: SNES has a max of 8 monophonic (one note at a time) channels, and echo values are global, and can only be enabled/disabled. You can change the global echo value in the middle of the song, though it is not recommended.

Hope this helps everyone interested in non-MML SNES music! (If you're interested in creating MML SPCs, however, I would recommend checking out AddMusicK and PetiteMM, as they are very well-made tools.)
Last edited on 2014-11-01 02:31:00 PM by CrispyYoshi.
crispyoshi,
Thanks for sharing this tool! I have been using it a lot in the past couple of days and I was hoping you'd be able to answer a question about it since there is not a whole lot of info on this tool floating around the web. I have been using this VST to play samples from existing game soundtracks but would like to import my own samples (wav) as well.
When I export a sample in .WAV format from an SPC in SPC TOOL, the format is able to import into the VST. When I use any other .WAV sample that was not generated from SPC tool, the VST does not load the sample. I have tried converting the bitrate in Adobe Audition but I have had no success getting my samples to load.

What .WAV specifications will allow the sample to import?
Is there any tool out there for converting an existing .WAV into a .BRR?

Thanks again for sharing C700, I love it!
EDIT: This post is now obsolete, and the tutorial has already been updated with new information.



Originally posted by josephedward
crispyoshi,
Thanks for sharing this tool! I have been using it a lot in the past couple of days and I was hoping you'd be able to answer a question about it since there is not a whole lot of info on this tool floating around the web. I have been using this VST to play samples from existing game soundtracks but would like to import my own samples (wav) as well.
When I export a sample in .WAV format from an SPC in SPC TOOL, the format is able to import into the VST. When I use any other .WAV sample that was not generated from SPC tool, the VST does not load the sample. I have tried converting the bitrate in Adobe Audition but I have had no success getting my samples to load.

What .WAV specifications will allow the sample to import?
Is there any tool out there for converting an existing .WAV into a .BRR?

Thanks again for sharing C700, I love it!

Hey josephedward! I'm glad to see the SNES love spreading! I actually use SampleTool and a clean Super Mario World rom to import the WAV sample I have.

First, I open the rom in SampleTool. I import this blank bank by clicking "Import from file". After that, I click "Insert" and select my WAV (I recommend you use a lower bitrate like 44100, Uncompressed PCM, and make it mono. You can do whatever, but the sample will be significantly larger.)

Hopefully if the sample wasn't too big (if it was, shrink it!), I click "Play", then I steal the temp.brr file it generates. I open the .brr in a hex editor like XVI32 and add a "00 00" loop point header to the file. After that, I just drag/drop the .brr over C700 and it imports! Loop points can be defined within C700 itself.

Your .wav start and end loop points should both be multiples of 16 (in decimal). This can be a huge pain, though, because the compression from .wav to .brr can potentially screw up the loop point, if only slightly, and the slightest offset can cause a pop, which could become more (or less) drastic if echo is applied. (That, or I'm just not very good at .wav editing hah)

Hope this helps!
Last edited on 2014-10-27 12:41:24 PM by CrispyYoshi.
This tool is AMAZING!!! but I have a question... well... for some reason, this tool won't show me the Kick, Snare, and Hi-Hat samples from Lufia and the Fortress of doom.

I've used SSOR95 to extract samples from roms... and I got those samples from using SSOR95... but I can't get them from C700.

Any idea why?

EDIT: Also... do you know if it's possible to convert a .xi / .brr / .smpl into a .wav? I wanna make a soundfont with the samples but it only takes .wav
Last edited on 2014-03-25 12:25:59 AM by Felix Flywheel.
I'm not really sure why it would be doing that, but it's definitely unfortunate.

As for dumping BRRs and converting them to .wav, there's a tool called Split700 which dumps all the .brrs from an existing .spc. In the /bin/ folder of split700 is the .bat you'd use to dump all the .brrs. After you find the BRR you need (by referring to SPC700 Player and the instrument number, explained in the first post) then you drag/drop the BRR file over brr2wav and it's instantly converted. (Credits to gocha for making the tools)
Really loved the VST, but i have a problem, using C700 now I can't use the MIDI OUT channel's pan and volume controllers, do you now how can I use those? I need to use the volume controller in order to make fade in and fade out effects.
Originally posted by alexjavier93
Really loved the VST, but i have a problem, using C700 now I can't use the MIDI OUT channel's pan and volume controllers, do you now how can I use those? I need to use the volume controller in order to make fade in and fade out effects.

I'm really sorry about the late reply, but C700 was recently updated on the download page with monophonic support, and using MIDI Out channels works well with channel pan and note velocity. There's also a Sustain Mode which emulates the standard SNES Release, and I've updated the tutorial to account for it.

Also, if you use FL, this is a great alternative to MIDI Out: http://blake.so/articulate/

It's basically MIDI Out, except you can use piano roll note colors to do things like instrument patching (By changing the Prog) on a single channel.
Last edited on 2014-09-23 05:08:34 PM by CrispyYoshi.
Originally posted by Felix Flywheel
EDIT: Also... do you know if it's possible to convert a .xi / .brr / .smpl into a .wav? I wanna make a soundfont with the samples but it only takes .wav

Whoops, I missed this. split700 includes a program called "brr2wav.exe", which is a simple drag/drop tool and also includes the loop start/end points in the .wav.
Last edited on 2014-09-26 01:11:11 PM by CrispyYoshi.
Thanks for making this tutorial! I have a question and sorry if you already explained it. I have the instruments from Megaman X loaded up and they sound good except there's no "wobble" effect, they sound flat. I want to replicate the effect used in the main synth of the intro stage for example.

What data do I need from the SPC for this or do I need to do something in my DAW?
(sorry for my bad english)

Can somebody please help me? :C

I REALLY want to emulate this instrument:
http://www.youtube.com/watch?v=AoZIOnDXcIM

But result sucks, can somebody help?
Originally posted by MrRomanze
(sorry for my bad english)

Can somebody please help me? :C

I REALLY want to emulate this instrument:
http://www.youtube.com/watch?v=AoZIOnDXcIM

But result sucks, can somebody help?

What you need is likely a slow vibrato, which I explain later in this post.

Originally posted by OrangeFox
Thanks for making this tutorial! I have a question and sorry if you already explained it. I have the instruments from Megaman X loaded up and they sound good except there's no "wobble" effect, they sound flat. I want to replicate the effect used in the main synth of the intro stage for example.

What data do I need from the SPC for this or do I need to do something in my DAW?

You're probably referring to vibrato, which can be controlled using MIDI CC #1

If you're using BRSO in FL, this is how I would recommend controlling MIDI CC #1. Right-click and un-assign all of the knobs, or at least the conflicting ones (vibrato/dynamics):



Then, assign MIDI CC #1 (vibrato) to a vacant knob, and rename it if you prefer:





Now you can right-click the knob and control vibrato with a MIDI controller by selecting "Link to Controller" and physically moving the mod wheel on your keyboard.

However, if you don't use a MIDI controller, maybe consider using automation clips.

Also an unrelated note, the new C700 can import looped .wav samples by dragging/dropping it over the waveform in the C700 Interface. I recommend importing a .wav which is 32kHz 16-bits Mono (C700 can do stereo though!), and has a start and end loop point, both loop points being a multiple of 16 in decimal. OpenMPT is a great tool designed around doing that kind of stuff, though you could also use something like Audacity. I've updated the first post with this info, too.
Last edited on 2014-10-27 12:58:59 PM by CrispyYoshi.
This is extremely great and useful, except the fact...

...there is a chance in 1 to 10 that loading that plug-in in my FL Studio will cause my whole computer to crash.
This happened twice today, the only escape was to force-shut down my computer.

I wonder why...
Originally posted by CrispyYoshi
What you need is likely a slow vibrato, which I explain later in this post.


Well, thanks! But I don't know how to make it sound the same. I can't find any information about Vibrato in SPC700. #w{:<}
Originally posted by lu9
This is extremely great and useful, except the fact...

...there is a chance in 1 to 10 that loading that plug-in in my FL Studio will cause my whole computer to crash.
This happened twice today, the only escape was to force-shut down my computer.

I wonder why...

Hm, perhaps you might've ran out of memory on your computer? I'd suggest cleaning up computer space, closing out programs taking up memory (like Skype or a web browser) or trying the 64-bit version of the program (I haven't used the 64-bit version recently though)

I'd also advise only using one C700 and controlling it with several MIDI Outs.

Originally posted by MrRomanze
Originally posted by CrispyYoshi
What you need is likely a slow vibrato, which I explain later in this post.


Well, thanks! But I don't know how to make it sound the same. I can't find any information about Vibrato in SPC700. #w{:<}

You can see it in SPC700 Player, though I don't think you can get the exact values, but only estimate it.

(Look at Pitch)
(Look at the yellow bars)

You could also try changing the values in the top-right corner of C700:



If you really wanted to, you could open the SPC in a hex editor and read the values, but not only do I have no knowledge in accomplishing that but I also don't think you can easily convert that to MIDI data. For a slow vibrato like the video you shared, try using a low vibrato speed/rate and medium-level depth.
Originally posted by CrispyYoshi

You could also try changing the values in the top-right corner of C700...


Weird, instrument always sounds flat, with any vibrato values. #w{x(}

Also, ADSR and Echo just doesn't sound right too! #w{:s}

Here, I recorded the instrument (all values from SPC, except Echo settings and Vibrato (which doesn't work) ) :

http://www.filedropper.com/-2_1

- Sound is... Eh... Too "long" ?
- Sound is flat :C
Last edited on 2014-11-08 05:55:55 AM by MrRomanze.
Originally posted by MrRomanze
Originally posted by CrispyYoshi

You could also try changing the values in the top-right corner of C700...


Weird, instrument always sounds flat, with any vibrato values. #w{x(}

Also, ADSR and Echo just doesn't sound right too! #w{:s}

Here, I recorded the instrument (all values from SPC, except Echo settings and Vibrato (which doesn't work) ) :

http://www.filedropper.com/-2_1

- Sound is... Eh... Too "long" ?
- Sound is flat :C

Did you try changing the C700 VST port to the same port your MIDI controller (MIDI Out or BRSO) is using? That might be why C700 isn't listening to your vibrato knob. In FL, you'd do that by clicking on the "2" gear icon shown in this pic, in the C700 window: https://www.image-line.com/support/FLHelp/html/img_plug/plugin_wrapper.jpg Then you'd go to the Settings tab and change the MIDI Input Port to 0.

Regarding ADSR, make sure that you have "Sustain Mode" unchecked if you're using the values directly given in SPC700 Player. For echo, turn the main volume level (very bottom-left of C700) to 127 for both left/right speakers. This will make the entire VST much louder, but it will also affect the echo to use the volume levels which most SNES games use (which is also displayed as "MasterLv" in hex within SPC700 Player, on the same page where all the echo information is)
Pages: « 1 »
Forum Index - Donut Plains - Computers & Technology - Accurate SNES Instrument Emulation!

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2014 - SMW Central
Legal Information - Privacy Policy - Link To Us


Total queries: 27

C3 STARTING IN
1 HOUR AND 53 MINUTES
C3 STARTING IN
1 HOUR AND 53 MINUTES
Menu

Affiliates

  • Talkhaus
  • SMBX Community
  • GTx0
  • Super Luigi Bros
  • ROMhacking.net
  • MFGG
  • RVLution