!7 cmodule VADFromFFT > DynImageSurface { switchable int w = 5; switchable int h = 10; transient double[] parameters; afterVisualize { imageSurface_pixelated(imageSurface); setZoom(20); } start { dm_requireLiveAudioFFT(); dm_vmBus_onMessage_q newAudioFrequencyImage(voidfunc(virtual BWImage _img) { BWImage img = cast quickImport(_img); BWIntegralImage ii = new(img); BWImage bw = scaleDownUsingIntegralImageBW(ii, w, h); setImage(bw); parameters = concatDoubleArrays( bwImage_averageBrightnessPerRow(bw), bwImage_standardDeviationPerRow(bw)); }); } }