AudioKit / AudioKitUI

Controls and Visualization for AudioKit apps
MIT License
187 stars 52 forks source link

Get waveform mid/low/high by its self #44

Open tegab opened 2 years ago

tegab commented 2 years ago

How to get high, mid, low waveform by its self?

eljeff commented 2 years ago

One option is to run your source through a filter first, and then tap the visualizer to that.

If by default you do this:

Source -> Output
    |_Visualiser tap on source

You can modify it like this:

Source ->  Mixer -> Output
    |_> Lowpass filter -> Gain (set to 0) -> Mixer -> Output
                 |_Visualiser tap on filter

The gain 0 is so you can mute the lowpass filter and not have an extra lowpassed signal going into your mix.

tegab commented 2 years ago

Won't this be for while playing. I just need to get the data.

eljeff commented 2 years ago

Same idea... filter the data first, then visualize that.

tegab commented 2 years ago

I hate to ask. Is there a sample code or a rough draft I can use as reference.

eljeff commented 2 years ago

It's ok to ask! I don't know of any offline-processing examples, but somebody else might.

Matt54 commented 2 years ago

This might be overkill but you could check out Apple's Biquadratic filters example: https://developer.apple.com/documentation/accelerate/applying_biquadratic_filters_to_a_music_loop

Matt54 commented 2 years ago

I would also recommend the filter approach - I think that is standard for multi band processing, in general. Doing an FFT, manipulating bins, and then inversing the FFT causes artifacts, from I remember reading about it. Haven't tried it myself though. I'm almost certain it would be more complicated too.

A simplistic outlook to the filter approach: Lows = Low pass Mids = bandpass Highs = High pass

tegab commented 2 years ago

Looks interesting. I am researching it right now. so, I can accomplish this using vDSP

Matt54 commented 2 years ago

Yes, there should be accelerate functions for everything you need to do I imagine.

Matt54 commented 2 years ago

Going to share this here too: https://www.mathworks.com/help/audio/ug/multiband-dynamic-range-compression.html I had found this resource recently about crossover filters and never saved the bookmark, but luckily it was in my history :)

eljeff commented 2 years ago

I agree and thanks Matt for the clear direction. If you just need basic filtering, and are comfortable w vDSP, do your offline processing there.

tegab commented 2 years ago

Thank you very mush for pointing me to the right direction. Researching vdsp now, since I have never used it before.

Matt54 commented 2 years ago

No problem! Good luck