In the previous post, I introduced my current project, which is comparing multiple additive synthesis implementations, and to find out which one of them is the fastest. I hope to use the results of this project to design a new software synthesizer with unique features. In this post, I will talk more about how I evaluate each of the additive synthesis implementations for speed and accuracy. I will also present other evaluation details.
1 Comment
Additive synthesis is a technique that gives synthesizers precise control over each individual partial of a sound. Currently, I am working on an software synthesizer that will use additive synthesis to implement certain acoustic features. However, performing additive synthesis by simply adding multiple sine waves together can become computationally expensive, especially when multiple musical notes are being played together simultaneously. This blog post is the first of a series of blog posts that will investigate different implementations of additive synthesis, and help me determine a computationally efficient implementation of additive synthesis for the software synthesizer that I am currently making. The github respository for this entire project can be found here.
Cython is a great language/tool for optimizing and speeding up Python code. But managing Cython projects can be a bit tedious as Cython code needs to be compiled ahead-of-time. It is possible to set up a workflow for Cython projects with Pyximport so that each Cython module can be automatically compiled before being imported. But Pyximport can be finicky. I have created a quick script that patches Cython's Pyximport for more robust auto-compilation of Cython modules (see github repository).
The (doubly) linked-list container allows for constant-time insertion and removal. However, the list implementation in the C++ standard library must dynamically allocate each new list node upon insertion; and dynamic memory allocation incurs additional runtime costs. A linked-list implementation where users can preallocate and supply the list nodes themselves can speed up insertion and removal time by avoiding the cost of dynamic memory allocations. To that purpose, I have implemented an alternate version of linked-list called NodeList (see github repository).
|
This section will not be visible in live published website. Below are your current settings: Current Number Of Columns are = 1 Expand Posts Area = Gap/Space Between Posts = 10px Blog Post Style = card Use of custom card colors instead of default colors = Blog Post Card Background Color = current color Blog Post Card Shadow Color = current color Blog Post Card Border Color = current color Publish the website and visit your blog page to see the results Author
I am Golden Rockefeller, a Ph.D Robotics student at Oregon State University. I will post updates on personal projects that I am working on. My interests include music synthesis, cooking, game design, and intelligent autonomous system. Categories
All
Archives |