fbpx
Skip to main content

MIDI Forum

Possible to play pa...
 
Notifications
Clear all

Possible to play partial sounds?

10 Posts
2 Users
0 Reactions
9,851 Views
Jason
Posts: 433
Honorable Member
Topic starter
 

I'm having a very specific issue with the current set of SNES music I am converting to MIDI. SNES music is sample based. As such the programmers for this specific game did some funky things with some percussion sounds. One in particular is a crash cymbal (nope, should be electric snare). To make a reverb-ed extended crash (snare hit), they start playing the sound, but then backtrack slightly and play a little more in to the sound, and continue until it fades away.

For a visual representation, say the normal sound plays sequentially over the numbers 1 through 16. (Each number is actually a memory address in the game each slightly further in to the sound effect)
The game will play it like this for the extended effect as one continuous sound:
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
...
13 14 15 16

I assume the answer is no, but is there a way to have something like this in a MIDI file, aside from actually applying extra reverb and echo to the initial instrument sound?

Currently I have 2 through 16 muted so I just get a single cymbal snare hit, which loses the punch that it needs to sound proper. If I leave them on, I just get a machine-gun cymbal (snare) sound.

 
Posted : 16/02/2022 11:36 am
Geoff
Posts: 1041
Noble Member
 

You don't say what is actually creating your sounds, or how much control you have over that.

If you want to do something like this using midi, you need to use a whole host of tracks. Repeat the sound to each track, then for each track after the first add a slight space before the first note (getting bigger each track) so that each track shuffles the note (or notes) along a little bit more. These can all be using the same channel.

You might find you can get enough of the desired effect BEFORE you've used up ALL of your multi-timbrality??

Geoff

 
Posted : 16/02/2022 3:43 pm
Jason
Posts: 433
Honorable Member
Topic starter
 

It sounds like that would just play the same sound, only delayed/stacked. The actual sound would need to be... almost like a time stretch if you will? So a short snare with a sharp hit at the beginning would get dragged out so the hit is still only at the beginning, and the trail off of the snare would be greatly extended.

I am using a converter, spc2midi. I have just a small amount of control over what it does. I can select instrument, pitch, enable or disable attack and decay, and adjust volume, chorus, and reverb for each of the 16 "instruments" in this bit of the music. Attack and decay don't affect the percussion it generates.

But thinking about this now, perhaps I can use a non-percussion sound (reverse cymbal or seashore?) and reduce the volume of each step? I'll have to give that a shot and see what happens.

If it doesn't work very well, my last course would be to edit the resulting midi file and manually add some things with a MIDI editor. But that brings me back to the question of it being possible to play different "parts" of a midi sound. Perhaps manually modifying the attack/decay on the subsequent pieces so the sharp hit is not audible?

I'll post the file as-is in a bit after I export it, so you can at least hear what I am talking about. Until then, you can hear the original part I am trying to replicate here:

https://www.zophar.net/music/nintendo-snes-spc/super-turrican
Track 2-2
listen to the repeated cymbal sound at 34 seconds, followed by a snare hit that lasts (I realized it's hard to hear because I was listening is a player that let me mute the other channels). You can hear short versions of the snare sound elsewhere in the track (and better in track 2-1, which also has repeated long and short versions of it), and at 34 seconds the long version. The actual sound is the short one. The longer one is the multi-stack/stretched version.

 
Posted : 16/02/2022 5:14 pm
Jason
Posts: 433
Honorable Member
Topic starter
 

So here is the MIDI file with the volume from 0 to -127 by steps of 8 for each of the 16 snare pieces. You can hear that it "snares" rather than the intended stretch.

I added an mp3 in case your MIDI device plays it back differently.

There are also some other tracks that use the same technique for long and short versions of cymbals and snares.

 
Posted : 16/02/2022 7:08 pm
Geoff
Posts: 1041
Noble Member
 

Jason,

I don't know HOW this is done, although I - sort of - understand the idea.

If you want to get the sound, then you may need to re-sample the sample. I assume you do NOT have access to the original sample, but you do have recordings of the sound made when the sample is played. You need to extract a recording of the specific sound. Than maybe manipulate it somewhat (i.e. within say Audacity) to tidy it up, make it OK for looping/extending. Then make your sample compatible with the other samples already in the (I assume) Sound Font (SF2) file you're using to PLAY the midi file you've created. Then add the new sound to the SF2 file so that the sound can be selected just like any other sound there.

Of course, this leave a problem. This may work for YOU, but it will not help anyone else that wants to play the midi file you've created.

This is why the (for example) Sierra games which used sounds/midi files for the Roland MT-32 needed t include download/SysEx files with the midi files they made , these files included a lot of data for extra sounds, incl sound effects etc, that had been created to use the sound processing facilities of the MT-32. BUT, if you're using SF2 (or something similar) then you prob cannot do this. THEN you'll need to do much more work with the samples you've made to get them EXACTLY how you need as you cannot do much subsequent processing.

What was done in 'the old days' with the MT-32 could I assume still be done today with newer boxes, i.e. create new sounds on the fly in a way that allows the data to be uploaded to the respective box. For example, the main tone modules I have (Yamaha MU90r and Korg NS5r) both I believe allow an existing patch to be copied, modified and saved as a 'User' patch. What you need to to is to basically do that, work out what data is created and where it is stored, and then allow the same result to be achieved via uploaded SysEx. This worked with the MT-32, it should still work now. The big problem would be that efforts would work ONLY using a specific device. Mind you, this was perfectly fine for a LOT of people with a LOT of games who happily bought MT-32 units (or compatible devices like the LAPC-I card I have). AND, I have some great midi files that do not sound right unless you use a specific device to play them through - such as any Yamaha MU device, or the already mentioned MT-32.

Geoff

 
Posted : 17/02/2022 9:30 am
Jason
Posts: 433
Honorable Member
Topic starter
 

[quotePost id=13746]Jason,

I don't know HOW this is done, although I - sort of - understand the idea.
[/quotePost]
In this particular game, nearest I can see it is done by playing the pieces of the sound in an overlapping fashion, where they specify how much of the file plays each time. There is a player called SPCPlay that I can slow down the playback to 1% speed and watch the memory addresses as it plays the different parts of the sound. Normally a sound would only get referenced by its starting address, but what they've done it also access it a bunch more times, each time from slightly further into the sound.
So the sound "start" is at 958D and the "end" is at 9F0B. Instead of just telling it "play 958D all the way to 9F0B" they say "Play 958D until I say so. Stop! Now play it again but start at 962F. Stop! Now Play it but start at 96D1" etc etc. So if you picture a wave form in a sound editor, it's like using copy/paste over small sections of the wave form, each time moving it over just slightly from last time.
I made a quick visualization of what it's doing, except it is overlapping the end of each piece slightly on the next piece, and they may also play with volume of each piece as it's doing so. I haven't been able to really figure that out.

I'm trying to replicate it without relying on the soundfont, as I want it to be able to be played back on any normal MIDI device without all the extra stuff that would be required otherwise. Some other games and some certain sound effects I'm out of luck on (like announcers, dialogue clips, some very bizarre sound effects), and if I can't get something like this to work I'll have to compromise by either cutting out the repeated parts, or completely replace the snare with some other instrument that is capable of having a "longer" sound, and live with the results.

 
Posted : 17/02/2022 1:59 pm
Geoff
Posts: 1041
Noble Member
 

Hmm, so you're saying that the 'trick' is not in the actual sound at all, so the sample would not be any help, whatever you did with it. The 'trick' is actually in the way it's played, by the SPCPlay prog? So to get anywhere, you need a way to replicate what SPCPlay does, but it does NOT sound as if that's possible within the bounds of normal midi.

Outside of normal midi, it would be possible to create a prog that plays a block of WAV-type data in the required stutter way.

By the way, what's the problem with recording such a playback and making a sample of this to then be activated in the normal way within midi? Does it need to be able to play back with different notes, and this breaks the solution?

Geoff

 
Posted : 17/02/2022 2:26 pm
Jason
Posts: 433
Honorable Member
Topic starter
 

[quotePost id=13748]Hmm, so you're saying that the 'trick' is not in the actual sound at all[/quotePost]

Correct, it's part of the sound engine programmed in to the game (which is not MIDI). SPCPlay (or any other SPC player) simply re-creates the playback using the sound code ripped from the game and stored within each SPC file.

but it does NOT sound as if that's possible within the bounds of normal midi.

Yes, I figured. I was just hoping maybe someone knew of some MIDI magic that could make it happen :p

By the way, what's the problem with recording such a playback and making a sample of this to then be activated in the normal way within midi? Does it need to be able to play back with different notes, and this breaks the solution?

I am trying to create plain ol' MIDI files, ie: play this file with any MIDI player and have it sound close to the original source material, including if I decide to futz around with instrument changes, or switch soundfonts or whatnot (like my Yamaha XG remap soundfont, or chiptune soundfont, or various other soundfonts I like to mess around with, each bringing its own flavor to the music). I'm going to have GM versions of all the files I make, plus some "enhanced" GS files to allow some sounds that just don't re-create well with GM (EuroHit is one of the major ones "used" by many SNES games, and is not available in GM, and usually Orchestra Hit doesn't cut the mustard). Fortunately thus far most of the audio tricks used in the various game audio engines translate fairly well in to MIDI. This is one of the first ones I've encountered that I haven't found a good method for (yet!). But I do appreciate all your suggestions!

 
Posted : 17/02/2022 6:21 pm
Jason
Posts: 433
Honorable Member
Topic starter
 

Haha, ahh well, looks like I'm going to need to find an actual "better solution" :p I am going through some of the other tracks and there is a one octave pitch shift with it in one of the other tracks, so standard snare is out.

 
Posted : 18/02/2022 8:30 am
Jason
Posts: 433
Honorable Member
Topic starter
 

Well, I've come up with an interesting solution that seems to be mostly working pretty well for this particular track.

Track 2-3 has less division of the snare sound. It plays snare, snare, snare, long snare. The long snare actually starts playing at the second memory address (at least in this track). The short snare is always the same pitch. So I made a "fake snare" by keeping the first memory address as Electric Snare (short snare), then the second address (the start of the long snare) is a pitch shifted melodic tom (need to play with it a bit to find a good pitch), with the remaining trailing snare sound memory addresses I set to pitch shifted seashore with reducing volume for each remaining part.

Once it's blended in with the rest of the music it sort of fits. There may be better sounds I can substitute when I convert it to GS later on, as well as tweak volume levels of the seashore-reverb (sometimes the extended snare sounds in the game waver back and forth through the sound pieces rather than playing straight from first to last, so the preset volumes in the converter cause a volume fluctuation rather than a smooth fade out).

I attached an mp3 of the actual snare percussion from the game (as I know they are hard to hear otherwise), and then MIDIs of just the snare channel, the combined percussion, and the entire music track.

 
Posted : 18/02/2022 9:37 am
Share: