Category Archives: programming
Swig is broken in Ubuntu 16.04 (xenial)
If you’re building a swig Python module and encounter errors like:
1 |
AttributeError: 'Foobar' object has no attribute 'this' |
where Foobar is some class that is being wrapped, then you are encountering a swig-3.08 bug. Unfortunately this is still the official package in Ubuntu 16.04. You can … Continue reading
P5js player widget in pure javascript
Okay, so I got really excited about p5js, checkout their examples page. But I struggled a little bit to include a sketch on my wordpress blog, the canvas was showing up at the bottom of the website as I discussed … Continue reading
Nsound rewrite 2016
The Nsound code base is old, (10 years! I can hardly believe that). Obviously I’m a much better developer today (:P), and there’s lots of things that need cleaning. Maintenance is becoming a burden, the build process is complex, it’s … Continue reading
Nsound broken on Ubuntu 16
I’m sad to report that nsound is broken by default on Ubuntu 16 until I get time to fix it. The main issue is that the default swig package is swig3.0, for some reason this breaks most things in the … Continue reading
Python pith
I just wrote a little tool to help with your Python development called pith.
1 |
pip install --user pith |
Checkout the release.
Ranking Photos With Python
Photo Ranking With Python What is this? This is a tool that uses the Elo Ranking System written in Python using: Matplotlib Numpy exifread Features: Auto image rotation that the camera recored in the EXIF meta data Persistent state from … Continue reading
Listening to Gravity Waves with Nsound!
Gravity Wave Signal Processing With all the excitement about LIGO and gravity waves, I’ve downloaded the raw GW150914 detection data for from here. The file I downloaded was 32 seconds sampled at 4096 samples per second. Next I reviewed some of … Continue reading
Nsound::biquad::FilterBank Work In Progress
I’ve made some good progress on a biquad filter bank on this branch. I’ve been able to replicate Figure 10 from this reference: That’s a filter bank with 4 individual biquad filters, here’s the C++ code that produced the plot:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#include <Nsound/NsoundAll.h> #include <Nsound/biquad/FilterBank.hpp> #include <iostream> using std::cout; using namespace Nsound; using namespace Nsound::biquad; int main(void) { float64 sr = 48000; // sample rate auto khz = 1000.0; Biquad bq0(sr, 0*khz, 1*khz, 9, 6, 0, 4); Biquad bq1(sr, 4*khz, 2*khz, 12, 9, 0, 4); Biquad bq2(sr, 9*khz, 2*khz, -6, -3, 0, 4); Biquad bq3(sr, sr/2, 8*khz, 6, 3, 0, 4); FilterBank fb(sr); fb.add(bq0); fb.add(bq1); fb.add(bq2); fb.add(bq3); cout << "-----------------------------------------------------------\n" << "FilterBank: fb.to_json()\n" << "-----------------------------------------------------------\n" << fb.to_json() << "\n"; fb.plot(); Plotter pylab; pylab.ylim(-7, 13); pylab.title("N=4, Butterworth"); Plotter::show(); return 0; } |
The … Continue reading
Nsound + Biquad + JSON
I’ve stared using github to host the nsound source code here. I’m currently working on porting some of the code in this paper: High-Order Digital Parametric Equalizer Design I’ve ported most of the MATLAB code to Python and have made … Continue reading
SWIG C++ & Python: C++ & Python Object Lifetime
I’m currently struggling with a bug in my open source project and it has to do with temporary object lifetimes. I believe the core issue is that I have a Python object that holds a pointer to an underlying C++ … Continue reading