Isn't that pretty much what pitchmod does? Though achieving that exact effect seems like it would require the modulating waveform to be modulated as well, meaning this scheme would burn three channels unless you got a wavetable going, or maybe KungFuFurby's variable-loop-point scheme, or something like that...tomaitheous wrote:I also had the idea of non linear playback of a waveform pointer (like with 80's Casio keyboards). But that would require an interrupt. The idea is that you deform a waveform that has two parts, by stretching or compression the first and second halfs. The timbre changes are you change the mid point between these two points in the waveform.
SNES audio hardware info
Moderator: Moderators
Forum rules
- For making cartridges of your Super NES games, see Reproduction.
Re: SNES audio hardware info
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SNES audio hardware info
SNESGSS has exactly that kind of hidden feature. You'd have to rig the sample IDs without keying off and on, but I just pulled that off. Here... https://app.box.com/s/5sgjwijni14ef0bacm3sstejf29gwfgj93143 wrote:Isn't that pretty much what pitchmod does? Though achieving that exact effect seems like it would require the modulating waveform to be modulated as well, meaning this scheme would burn three channels unless you got a wavetable going, or maybe KungFuFurby's variable-loop-point scheme, or something like that...tomaitheous wrote:I also had the idea of non linear playback of a waveform pointer (like with 80's Casio keyboards). But that would require an interrupt. The idea is that you deform a waveform that has two parts, by stretching or compression the first and second halfs. The timbre changes are you change the mid point between these two points in the waveform.
I didn't even use the tracker!
Re: SNES audio hardware info
KFF, what exactly is happening here?
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SNES audio hardware info
I simply messed around with the sample IDs while the note is playing. The SPC700 will simply fetch different loop points as it plays the samples when the sample ID is changed without keying on the sample again.
SNESGSS's change instrument feature directly messes with the sample ID and ADSR envelope, but doesn't key off the note automatically.
SNESGSS's change instrument feature directly messes with the sample ID and ADSR envelope, but doesn't key off the note automatically.
Re: SNES audio hardware info
Be prepared for a barrage of questions!!!
So all the sample IDs refer to the same sample, but at different loop points?? Yee, but what effect have you exactly achieved here?? Is there a name for this, and does it require a certain type of sample waveforms to produce the effect? I have no idea what's going on, please keep filling in light on my dark places.
Are you setting the loop point to somewhere inside the initial sample, or B) into a new sample altogether??
In the case of B, how did you precalculate a variety of samples that would provide the desired effect when the loop points were changed? What effect is this??
Afterthoughts:
It could be possible to have one sample ID, and just change its loop address.. Is it because it was easier for you to use many sample IDs that you didn't do what I'm suggesting?? Well, in my case, you could have up to 8 sample ID's (one for each voice, this provides potential for each voice to simultaneously play this new kind of instrument), each one individually having its loop points updated, and the effect could be reset at a voice's KON/KOFF. My method would consolidate on sample IDs.
So all the sample IDs refer to the same sample, but at different loop points?? Yee, but what effect have you exactly achieved here?? Is there a name for this, and does it require a certain type of sample waveforms to produce the effect? I have no idea what's going on, please keep filling in light on my dark places.
Are you setting the loop point to somewhere inside the initial sample, or B) into a new sample altogether??
In the case of B, how did you precalculate a variety of samples that would provide the desired effect when the loop points were changed? What effect is this??
Afterthoughts:
It could be possible to have one sample ID, and just change its loop address.. Is it because it was easier for you to use many sample IDs that you didn't do what I'm suggesting?? Well, in my case, you could have up to 8 sample ID's (one for each voice, this provides potential for each voice to simultaneously play this new kind of instrument), each one individually having its loop points updated, and the effect could be reset at a voice's KON/KOFF. My method would consolidate on sample IDs.
Last edited by bazz on Sat Feb 21, 2015 11:22 am, edited 3 times in total.
Re: SNES audio hardware info
FYI I updated my previous post like 20 times.. please take another look at it
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SNES audio hardware info
Technically yes, as I needed to initialize the BRR sample altogether. Using the same block allows the sample to start without incident, as my BRR converter (when using SNESMod) magically produced the same initialization blocks, so I simply removed duplicate blocks and matched the starting pointers (I also had to activate the loop flag in my starting BRR block: otherwise bad things could happen). The waveforms have to be relatively small in order for the effect to properly work. Otherwise, if you're rapidly swapping loop points, you'll skip "steps" of the waveform.bazz wrote: So all the sample IDs refer to the same sample, but at different loop points?? Yee, but what effect have you exactly achieved here?? Is there a name for this, and does it require a certain type of sample waveforms to produce the effect? I have no idea what's going on, please keep filling in light on my dark places.
It's B for my SNESGSS demonstration. For me, the "pre-calculation" was really just me creating the samples in a hex editor (which is how I optimized them so that they would play properly in the first place).bazz wrote: Are you setting the loop point to somewhere inside the initial sample, or B) into a new sample altogether??
In the case of B, how did you precalculate a variety of samples that would provide the desired effect when the loop points were changed? What effect is this??
This is a SNESGSS limitation. I can't just go in there and overwrite loop points like that. Had I coded my own sound driver, I would have indeed updated the loop points in the sample ID as they were playing. However, you have to put the sample directory in direct page (starting at direct page 100 or direct page 100). The reason is that you need to be able to move two bytes at one time using Y and A. Otherwise, you risk a cycle-exact glitch that results in the loop point being a pointer consisting one byte that's written and one byte that hasn't been written yet (which can result in a glitch if both have to be modified). KON/KOFF definitely resets this effect.bazz wrote: Afterthoughts:
It could be possible to have one sample ID, and just change its loop address.. Is it because it was easier for you to use many sample IDs that you didn't do what I'm suggesting?? Well, in my case, you could have up to 8 sample ID's (one for each voice, this provides potential for each voice to simultaneously play this new kind of instrument), each one individually having its loop points updated, and the effect could be reset at a voice's KON/KOFF. My method would consolidate on sample IDs.
Re: SNES audio hardware info
Somebody throw me a bone here, seriously!!!
What exactly has KFF achieved?? All I know in a rough sense is that he has sucessfully performed some effect on SPC, "emulated" by the use of rapidly altering loop points during a sample playback.. But from a general perspective, what did he produce. I'm looking for someone to say something like "KFF implemented chorus on SPC" -- I'm looking for that kind of explanation lol.
Why did you have to hand code waveforms? Do these waves have to be "simple" like square, saw, sin?? or does the effect you made work with "complex" waves, like a flute or piano sample??
Now, KFF, hopefully you're still reading, I have question based on your last post
What exactly has KFF achieved?? All I know in a rough sense is that he has sucessfully performed some effect on SPC, "emulated" by the use of rapidly altering loop points during a sample playback.. But from a general perspective, what did he produce. I'm looking for someone to say something like "KFF implemented chorus on SPC" -- I'm looking for that kind of explanation lol.
Why did you have to hand code waveforms? Do these waves have to be "simple" like square, saw, sin?? or does the effect you made work with "complex" waves, like a flute or piano sample??
Now, KFF, hopefully you're still reading, I have question based on your last post
You're being so vague.. init the BRR sample altogether?? "Using the same block" -- What block are you talking about? Initialization blocks?? What are those?? Why did you need the loop point set in the BRR start block, as I recall only the loop bit is checked in a BRR end block....KungFuFurby wrote: ...as I needed to initialize the BRR sample altogether. Using the same block allows the sample to start without incident, as my BRR converter (when using SNESMod) magically produced the same initialization blocks, so I simply removed duplicate blocks and matched the starting pointers (I also had to activate the loop flag in my starting BRR block: otherwise bad things could happen). The waveforms have to be relatively small in order for the effect to properly work. Otherwise, if you're rapidly swapping loop points, you'll skip "steps" of the waveform.
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SNES audio hardware info
I hand-coded them on the grounds that I wanted fine control over the sample I was creating. I could have just simply snatched any old pulse wave sample and resampled it, but in this case, I decided to specially craft one and import it raw.bazz wrote:Why did you have to hand code waveforms?
This effect works with more "complex" waves, where technically you can use this like a sustained loop point... although depending on the length of the sample, they may not respond to rapid modifications of loop points as well. You can in theory chop those "complex" waveforms into itty bitty pieces and play them that way.bazz wrote:Do these waves have to be "simple" like square, saw, sin?? or does the effect you made work with "complex" waves, like a flute or piano sample??
This was actually only necessary in this scenario because of how I set up the samples (which meant I set the flag at the BRR start block). If you were dealing with one-block BRR samples, then that block would act as both a start and end block.bazz wrote:"Using the same block" -- What block are you talking about? Initialization blocks?? What are those?? Why did you need the loop point set in the BRR start block, as I recall only the loop bit is checked in a BRR end block....
Setting the loop flag on the start block means at the end of the BRR block, the SPC700 will jump the sample pointer to the next BRR block as specified by the loop pointer.
My apologies if I'm still confusing you...
Re: SNES audio hardware info
KFF, can you please tell me what effect this is?
If you tell me that, I don't even have to try to learn this from you, I can just learn it somewhere else.
I did respond to your last post and here were my thoughts:
and you said "if you were dealing with one-block BRR samples" -- but that's not an IF, that's a MUST.. one doesn't set a loop bit in a BRR block that isn't the last block because it has no effect.. which doesn't tell me anything except that you are probably using BRR samples that are only 1 block long... but that doesn't help me understand what you're doing, and why say IF in that regards..?
Yeah you're pretty confusing dude!
I implore you to explain in full what you are doing. Or at least just tell me the effect so that I can be on my merry way
If you tell me that, I don't even have to try to learn this from you, I can just learn it somewhere else.
I did respond to your last post and here were my thoughts:
but you still haven't acknowledged what is an initialization block -- is it synonymous in your lingo with BRR start block..This was actually only necessary in this scenario because of how I set up the samples (which meant I set the flag at the BRR start block). If you were dealing with one-block BRR samples, then that block would act as both a start and end block.bazz wrote:"Using the same block" -- What block are you talking about? Initialization blocks?? What are those?? Why did you need the loop point set in the BRR start block, as I recall only the loop bit is checked in a BRR end block....
and you said "if you were dealing with one-block BRR samples" -- but that's not an IF, that's a MUST.. one doesn't set a loop bit in a BRR block that isn't the last block because it has no effect.. which doesn't tell me anything except that you are probably using BRR samples that are only 1 block long... but that doesn't help me understand what you're doing, and why say IF in that regards..?
Yeah you're pretty confusing dude!
I implore you to explain in full what you are doing. Or at least just tell me the effect so that I can be on my merry way
Re: SNES audio hardware info
I think the effect is called granular synthesis.
Re: SNES audio hardware info
ありがとうございますtepples wrote:I think the effect is called granular synthesis.
KungFuFurby is this correct? or is this wavetable synthesis - in which case I recall the term thrown around earlier in this thread, but its fundamentals are above my knowledge levels
-
KungFuFurby
- Posts: 264
- Joined: Wed Jul 09, 2008 8:46 pm
Re: SNES audio hardware info
To me, granular synthesis sounds correct.
Re: SNES audio hardware info
I really love what you're doing here KFF, I just don't have the time to invest in learning about this stuff right now
Re: SNES audio hardware info
Ok, so I had some spare time to learn about granular synthesis, but I'm having a hard time tying it to get her to what KFF has done here..
In granular synthesis, from what I've read, you have a sample that is chopped into small pieces 10-50ms each for example, and then you control the envelopes and timings of playback of these grains, no???
KFF, if you wouldn't mind, could you tell me are you using one sample in this way, or several..
I read somewhere that granular synthesis is just like wavetable synthesis except with the use of samples instead of mere oscillator waveforms... If that's the case, you would simply be scrolling thru different samples right??? Maybe i will try assigning arbitrary brr end blocks along the way in this scrolling process.. But I'm still interested in what you did KFF. please consider including your snesgss file for analysis
In granular synthesis, from what I've read, you have a sample that is chopped into small pieces 10-50ms each for example, and then you control the envelopes and timings of playback of these grains, no???
KFF, if you wouldn't mind, could you tell me are you using one sample in this way, or several..
I read somewhere that granular synthesis is just like wavetable synthesis except with the use of samples instead of mere oscillator waveforms... If that's the case, you would simply be scrolling thru different samples right??? Maybe i will try assigning arbitrary brr end blocks along the way in this scrolling process.. But I'm still interested in what you did KFF. please consider including your snesgss file for analysis