Efficient Velvet-Noise Convolution in Multicore Processors

Jose A. Belloch*, Jose M. Badia, German Leon, Vesa Välimäki

*Corresponding author for this work

Research output: Contribution to journalArticleScientificpeer-review

23 Downloads (Pure)

Abstract

Velvet noise, a sparse pseudo-random signal, finds valuable applications in audio engineering, such as artificial reverberation, decorrelation filtering, and sound synthesis. These applications rely on convolution operations whose computational requirements depend on the length, sparsity, and bit resolution of the velvet-noise sequence used as filter coefficients. Given the inherent sparsity of velvet noise and its occasional restriction to a few distinct values, significant computational savings can be achieved by designing convolution algorithms that exploit these unique properties. This paper shows that an algorithm called the transposed double-vector filter is the most efficient way of convolving velvet noise with an audio signal. This method optimizes access patterns to take advantage of the processor's fast caches. The sequential sparse algorithm is shown to be always faster than the dense one, and the speedup is linearly dependent on sparsity. The paper also explores the potential for further speedup on multicore platforms through parallelism and evaluate the impact of data encoding, including 16-bit and 32-bit integers and 32-bit floating-point representations. The results show that using the fastest implementation of a long velvet-noise filter, it is possible to process more than 40 channels of audio in real time using the quad-core processor of a modern system-on-chip.

Original languageEnglish
Pages (from-to)383-393
Number of pages11
JournalAES: Journal of the Audio Engineering Society
Volume72
Issue number6
DOIs
Publication statusPublished - Jun 2024
MoE publication typeA1 Journal article-refereed

Fingerprint

Dive into the research topics of 'Efficient Velvet-Noise Convolution in Multicore Processors'. Together they form a unique fingerprint.

Cite this