{"id":26992,"library":"firconv","title":"FIRconv","description":"Python library for real-time convolution, primarily for auralization. Current version 0.0.3, early development with infrequent releases.","status":"active","version":"0.0.3","language":"python","source_language":"en","source_url":"https://github.com/davircarvalho/FIRconv","tags":["audio","convolution","auralization","dsp","real-time"],"install":[{"cmd":"pip install firconv","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Convolution operations rely on numpy arrays","package":"numpy","optional":false},{"reason":"Real-time audio playback/capture","package":"sounddevice","optional":false}],"imports":[{"note":"FIRconv is a class, not a module; direct import of the class is correct.","wrong":"import FIRconv","symbol":"FIRconv","correct":"from firconv import FIRconv"},{"note":"PartitionedConvolution is exposed at package level.","wrong":"from firconv.core import PartitionedConvolution","symbol":"PartitionedConvolution","correct":"from firconv import PartitionedConvolution"}],"quickstart":{"code":"from firconv import FIRconv\nimport numpy as np\n\n# Create a simple impulse response (e.g., 1024 samples)\nir = np.random.randn(1024).astype(np.float32)\n\n# Initialize FIRconv with the IR\nconv = FIRconv(ir)\n\n# Process a block of audio\ninput_signal = np.random.randn(4096).astype(np.float32)\noutput = conv.process(input_signal)\n\n# For real-time streaming, use process() repeatedly","lang":"python","description":"Basic usage: create FIRconv instance with an impulse response and process audio blocks."},"warnings":[{"fix":"Pin version and review release notes before upgrading.","message":"The API may change drastically before 1.0. No backward compatibility guarantees.","severity":"breaking","affected_versions":"0.x"},{"fix":"Ensure input arrays are dtype=np.float32.","message":"Audio data must be float32 numpy arrays. Other types (int16, float64) cause silent errors or crashes.","severity":"gotcha","affected_versions":"all"},{"fix":"Pad IR to a power of two if necessary.","message":"Impulse response length must be a power of two or at least aligned with block size. Non-power-of-two IRs may produce artifacts.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Run: pip install firconv","cause":"Library is not installed or you are using the wrong package name (e.g., 'pyfir', 'fir').","error":"ModuleNotFoundError: No module named 'firconv'"},{"fix":"Use: from firconv import FIRconv","cause":"You used 'import firconv' and tried firconv.FIRconv, but FIRconv is a class directly importable.","error":"AttributeError: module 'firconv' has no attribute 'FIRconv'"},{"fix":"Convert input: input_signal = input_signal.astype(np.float32)","cause":"Passing int16 or float64 arrays to FIRconv.process().","error":"ValueError: Input must be float32"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}