I created a 2D AR VJ Camera app that uses audio input to animate camera filters.
To access audio data from microphone, I used AVAudioRecorder, and followed this tutorial to get the averagePower from the recorder.
I used my own map function to scale audio level to parameters of different types of filters.
I went through the entire list of Core Image Filter Reference , and found a few that are interesting for VJ purposes, and referred to this post to set the value of filter parameters.
One issue I encountered was not all the filter parameters I saw on Core Image Filter Reference has a relative Filter Parameter keys, and I wasn’t be able to set parameters dynamically using self.currentFilter!.setValue(inputCount, forKey: ???). Later I figured out I could just use the parameter string for key.
Github link
Here’s a screen capture of the app demo, with camera facing a TV screen playing a festival set.