artemis

art "semaphore" everfree

serotonergic daydream

prismatic swarm

fractal multitudes

evershifting

theta delta ampersand

bi/pan/poly

this user is a furry


Do you talk to the computer as if it could hear you? Does it ever talk back?


posts from @artemis tagged #vst dev

also:

artemis
@artemis

anyways tonight i got SameBoy's audio emulation code working outside the emulator. cut out most of the emulator and left in only the state the audio engine needs. so now i can load it in my code, poke registers, and have it synthesizes audio for me :3

it is not pretty right now, and id like to make it better, but this is good enough for some projects i want to try


artemis
@artemis
SoGreatAndPowerful - beautiful heart but bitcrushed thru wav channel
beautiful heart but bitcrushed thru wav channel
SoGreatAndPowerful
00:00
(unknown artist) - instrs thru wav with wavch cycle rate distortion
instrs thru wav with wavch cycle rate distortion
(unknown artist)
00:00
(unknown artist) - vox with cycle rate distortion
vox with cycle rate distortion
(unknown artist)
00:00
(unknown artist) - haunted-sounding, input @ half speed, wavch @ normal speed
haunted-sounding, input @ half speed, wavch @ normal speed
(unknown artist)
00:00

I got it working! I'm using the same technique LSDJ uses for sample playback thru the wav channel- tho I have it a little cleaner than LSDJ because I'm doing all the register updates instantly instead of stepping out how long each instruction takes during the process. I'll get to that.

Anyways, here I can show why I'm so interested in this idea

Background: this is playing audio through the gameboy "WAV" channel. the "WAV" channel is designed for playing waves. The idea is you load in a static waveform like a triangle or saw, and then adjust the speed of it to change the pitch, like a custom oscillator. Here, instead of that, we're going to continually load more audio in timed out by a hardware timer in the gameboy, and we're going to leave the pitch as a single value (our sample rate / 32, because a wav has 32 samples). Well. At first we're going to leave the pitch alone :).

First audio: SoGreatAndPowerful - A Beautiful Heart, without much effecting. this one is just the audio, I amplified it a bit (maybe a little aggressively for the main part of the song oops), brought it down to the sample rate for this, and then pushed it through the emulated WAV channel.

BUT THEN we can start changing the pitch of the wav channel. Note, we're still loading sample data into it at the same speed as before, so what this is doing is treating each chunk of 32 samples from the audio file, and treating it as an independent wave that we then pitch around. If we speed it up, then you might hear like 1.2 cycles of those 32 samples before the next 32 are loaded in. This duplicates some samples, now you have 40 playing!. If you slow it down you have the opposite, now you're not even getting all the way through the samples.

I'm calling this "cycle rate distortion" right now. I have two things here where I am only doing a little bit of it, to some instruments, to some vocals. You can see it has this strange like digital meltyness to it that I fucking love.

And then in the last one, I'm leaving the cycle rate at the normal speed for sample playback, but I'm loading audio in at half rate. That means that I've slowed the audio down by half, which does the normal thing of making the pitch deeper. But instead of duplicating every individual sample to slow it down, we're duplicating each chunk of 32. So samples 0-31 will play back twice, then 32-63, and so on. and it sounds really creepy. I really love what it does to the kick too, turning it from a nice clean kick to a nice donk. It's like a completely different song and all I did was do this to it