Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Smoothed / unsmoothed folders swapped? #1

Open
veeceeoh opened this issue Jul 8, 2019 · 2 comments
Open

Smoothed / unsmoothed folders swapped? #1

veeceeoh opened this issue Jul 8, 2019 · 2 comments

Comments

@veeceeoh
Copy link

veeceeoh commented Jul 8, 2019

Hi - I don't have a Microfreak myself (yet), but I just had to check out your work here as I plan on getting one soon.

I downloaded the entire repository to have a listen to your sample wavetables, and noticed that the ones in the folder sample_wavetables sound much noise than the ones in the sample_wavetables_unsmoothed folder.

So maybe the folders are swapped?

Also, as an aside - I'm wondering what application(s) you're using to edit / build wavetables?

@dcower
Copy link
Owner

dcower commented Jul 16, 2019

Thanks for the inaugural GitHub issue, @veeceeoh! That is expected with the "smoothing" applied to them. The smoothing settings used are in the README, but here's a quick overview of what's going on to process each 32-cycle wavetable:

  1. Each 256-sample cycle in the wavetable is rotated to minimize the fade we have to apply to each cycle. The fade target we're using in this case is a fade to zero (i.e., both ends of the cycle's waveform will be faded out to silence), so we calculate the waveform rotation that gives us starting and ending samples closest to 0.

    Waveform rotation is equivalent to changing the starting time of the cycle (since the cycles loop). Rotation is helpful because it minimizes the fade's alteration of the waveform. This is what makes it sounds really strange/incorrect if you play the entire wavetables.

  2. A 16-sample fade to zero (silence) is applied to the start and end of each cycle. This helps to remove sharp edges (which are audible as pops/clicks) when the waveforms loop. Fading to zero helps a lot in reducing artifacts when switching cycles ("Position" on MicroFreak) in the wavetable, since the start/end point of every cycle meets up.

As for the tools used to build the wavetables: I only used Audacity. For most of the wavetables, I started with a mixture of sine/triangle/square waves generated by Audacity and applied a bunch of effects (wah, flanger, phaser, echo, ...). For a few, I started with Creative Commons sounds or my own recordings and processed them a bunch. All the effects I used are built into Audacity.

@veeceeoh
Copy link
Author

Very interesting, thank you for the detailed explanation!

So if I'm understanding correctly, the rotation and fade to zero treatment results audio samples that sound noisier when listened to normally (just by playing the raw .wav file)?

My new MicroFreak is being delivered tomorrow, so I will need to study up on the technicalities. of how wavetables work. I find it interesting that the cycle needs to cross 0 at the start and end. It seems that you'd only need one sample at 0 rather than two but I suppose there's information I'm not aware of yet which explains why that's needed.

I will hopefully get to make use of your scripts and methods to change the MicroFreak's wavetables very soon - so thanks in advance and I will drop in again somewhere in the social media / forums world to let you know how it goes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants