Vibrato Creator
-
This is very cool. How are you achieving this are you altering the frequency every update() ?
-
@MikeDX said in Vibrato Creator:
This is very cool. How are you achieving this are you altering the frequency every update() ?
Yes, that's how it's done. I'm playing around with some approaches to the audio processing within the loop, where vibrato is one of those ideas.
-
That's what I do for the pacman sound effects but I want a way to use frequency and volume to implement some sort of waveform simulation. Any ideas?
-
@MikeDX How about using the FM Synthensis controller together with the carrier directly to create the waveform, perhaps with a pass filter for added effects?
It should be doable to use the controller to create a vibrato as well, but since there seems to be only one controller available to the carrier, I want to save that controller for creating actual new waveforms.
-
-
Impressive!
-
I've shared the source code for the program now, if anyone wants to take a look.
My friend ID is: SW-3948-9435-1684
-
@MikeDX Sorry, I was too tired. I meant modulator, not controller...
-
Oh my word... So awesome.
Will be keeping an eye on this project!
-
Cool! Reminds me of my old Stylophone!
-
Now create a tracker out of this, it whould be very cool, if fuze would allow to transfer files beetween projects in the future it whould be handy for making original music for games
-
Hi folks, just to let you know as I don't think this is as apparent as it should be...
You can copy and paste code between projects. When you copy code to the clipboard, the clipboard is kept when you open a new project.
This allows you to "transfer" important sections of code, for example, a whole load of music data, between projects.
If it's images or maps you want to transfer, you can do this from the image and map editor file managers. Press the X button when viewing the thumbnail for an image or map, then select "copy image" or "copy map", then choose the project file to copy to!
-
hmmh. It seems like audio updates are synced to the framerate, which is nothing particularly unfamiliar to oldschool coders, but it is rather limiting.
16 bit consoles and later typically had an independent CPU or were using some other means to update audio data at much higher rates.
But the older 8 bit systems are often stuck to updating once per frame, meaning you could at best create audio that was at best 50 or 60 samples a second (depending on whether it was a PAL or NTSC machine)Of course, if you had a LOT of time and patience on your hands you could do all kinds of coding tricks to push that update rate way up (some programs did it once per scanline which is more like 10,000 samples a second), but... Since FUZE doesn't have any kind of low level access like that (and you probably wouldn't want the headaches it causes anyway), I guess for now we're stuck with a 60 sample a second rate, which limits our options for anything much more complex than basic waveforms and notes. At least 60 samples a second equates to 3600 bpm, so it's not a disaster for music. (though if it's directly tied to updates then it might limit you to even divisors of 3600, which is a bit tedious to deal with. Still workable though.)
-
@KuraIthys said in Vibrato Creator:
hmmh. It seems like audio updates are synced to the framerate, which is nothing particularly unfamiliar to oldschool coders, but it is rather limiting.
16 bit consoles and later typically had an independent CPU or were using some other means to update audio data at much higher rates.
But the older 8 bit systems are often stuck to updating once per frame, meaning you could at best create audio that was at best 50 or 60 samples a second (depending on whether it was a PAL or NTSC machine)Of course, if you had a LOT of time and patience on your hands you could do all kinds of coding tricks to push that update rate way up (some programs did it once per scanline which is more like 10,000 samples a second), but... Since FUZE doesn't have any kind of low level access like that (and you probably wouldn't want the headaches it causes anyway), I guess for now we're stuck with a 60 sample a second rate, which limits our options for anything much more complex than basic waveforms and notes. At least 60 samples a second equates to 3600 bpm, so it's not a disaster for music. (though if it's directly tied to updates then it might limit you to even divisors of 3600, which is a bit tedious to deal with. Still workable though.)
That's not how it works.
FUZE4 has a 16-channel FM synth with 1 carrier, 1 modulator and 1 pass filter. The music wave form is created based on that. The only reason to need to use the 60 fps loop is for specific audio effects, like vibrato, glissandi, fades, etc. -
@Nisse5 I guess I'll have to look into it more carefully, but what you just said sounds kind of muddled.
Unless there's some way of specifying notes or frequencies independently (eg a sequencer) it won't matter one way or another what kind of effects the audio system can do, how it generates sound exactly, or how many audio channels it has, you're still tied to to whatever the update rate for the audio system is.
Since this is inherently kind of artificial on something like FUZE (where on an 8 or 16 bit system without a dedicated audio CPU or audio DMA system - it's generally ends up tied to a V-blank interrupt, thus the association with the framerate.)
Effects like those you're describing are generally done (if there's no dedicated logic for it) by rapidly modulating various parameters.
But in the absence of a sequencer subsystem, this is ALSO how you specify notes;If I use POKEY on an Atari to generate music, unless I create some complex code, both my ability to change various parameters that govern audio effects, AND the base audio frequency of all 4 channels is ALL tied to performing updates in the v-blank interrupt service routine.
POKEY can technically play arbitrary waveforms by directly modulating the volume registers of, but again, this is tied to when and where you write to the appropriate registers.That's dictated by hardware limitations on platforms like that, but clearly not in this case.
I'll take your word for it, but now I'm going to have to look at what the documentation says very carefully (if this is described - if not I'll have to determine it experimentally I guess), since one way or another something doesn't quite add up.
Presuming what you're saying is correct, what dictates when any given channel changes the note/frequency it plays? That has to have some kind of timing to it, and that is going to be limited by... Something, no matter what it actually is.
-
@KuraIthys The waveform is not dependent on the frame rate at all. The channel plays the note until the next note is played, or until the channel is stopped, or until the speed parameter fades the note into silence.