spatialaudio / python-sounddevice

:sound: Play and Record Sound with Python :snake:
https://python-sounddevice.readthedocs.io/
MIT License
982 stars 145 forks source link

Input/Output with Continuous FFT #387

Open joem5636 opened 2 years ago

joem5636 commented 2 years ago

wire.py only does input/output and adapting it for FFT filtering is non-trivial. After much research I figured out how to do continuous FFT and have modified wire.py to wireFFT.py which I contribute to "the cause."

wireFFT.zip

HaHeho commented 2 years ago

Hey @joem5636 thanks for your efforts and the interest on experimenting with the toolbox.

Posting ZIP files for downloading is not good practice. One should not download such from unknown sources. ;) Directly posting your code would be helpful. Otherwise, you seem to have also have published your code here, right? https://github.com/joem5636/WireFFT/blob/master/wireFFT.py

HaHeho commented 2 years ago

As you have figured out, doing real-time processing in the frequency domain is not trivial in practice. I am also not aware of any popular packages which implement Overlapp-Add-Convolution entirely in Python.

I have implemented Overlapp-Save for example here as part of my processing pipeline for spherical microphone arrays. There is a lot of other stuff around it, but you could find all the essential building blocks there. I hope the documentation around it somewhat helps to understand what is going on.

A general comment. The way of data organization i.e., the order in which the time blocks / audio channels / audio samples are stacked in numpy arrays, matters quite a bit in terms of processing performance. Obviously, careful planning of the exact way data is gathered, shifted, multiplied and distributed is crucial for a correct processing without artifacts.

joem5636 commented 2 years ago

Correct. Posting .py was not allowed and cut-paste lost formatting, hence the .zip.

On Sat, Jan 1, 2022, 8:09 PM Hannes Helmholz @.***> wrote:

Hey @joem5636 https://github.com/joem5636 thanks for your efforts and the interest on experimenting with the toolbox.

Posting ZIP files for downloading is not good practice. One should not download such from unknown sources. ;) Directly posting your code would be helpful. Otherwise, you seem to have also have published your code here, right? https://github.com/joem5636/WireFFT/blob/master/wireFFT.py

— Reply to this email directly, view it on GitHub https://github.com/spatialaudio/python-sounddevice/issues/387#issuecomment-1003645434, or unsubscribe https://github.com/notifications/unsubscribe-auth/AASZUVUDRZTIYCMVVIACOUTUT6QWPANCNFSM5LBRTMDA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

HaHeho commented 2 years ago

Correct. Posting .py was not allowed and cut-paste lost formatting, hence the .zip.

True. But you can use Markdown in the comments as well, and therefore use code blocks, see https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#code-and-syntax-highlighting

joem5636 commented 2 years ago

I suspected I could use or the equivalent but knew .zip would work and i already had the files zipped.

Best,

Joee

On Sun, Jan 2, 2022, 2:05 PM Hannes Helmholz @.***> wrote:

Correct. Posting .py was not allowed and cut-paste lost formatting, hence the .zip.

True. But you can use Markdown in the comments as well, and therefore use code blocks, see https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#code-and-syntax-highlighting

— Reply to this email directly, view it on GitHub https://github.com/spatialaudio/python-sounddevice/issues/387#issuecomment-1003760680, or unsubscribe https://github.com/notifications/unsubscribe-auth/AASZUVUVRN4WSEVXCCIZMF3UUCOYNANCNFSM5LBRTMDA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>