30/11/2013 § Leave a comment
Its 3.30 am and I don’t feel like doing anything (guess that’s why I am writing this…)
I have a rooted Android phone with BusyBox, et al but I miss nmap particularly when it comes to Ssh-ing into by BeagleBone Black.
So here is a quick way to get nmap on your Android phone:
1. Download latest version from: https://secwiki.org/w/Nmap/Android
2. Un-tar the file on your computer system
3. Copy “nmap” from ./nmap-5.61TEST4/bin to sdcard on your phone
4. Use the Fx file browser to reload the Android fs in read/write mode and then copy the nmap file from step 3 to /system/bin/nmap
Voila! That’s it.. open your emulator, type nmap it should work like a charm.
27/05/2013 § Leave a comment
A quick status update – I am still alive
A 3rd rewrite for Mixxx Effects – from scratch – is underway… I have not yet committed the code for you to see… But you’ll have most of the functionality in next 2 weeks.
02/04/2013 § Leave a comment
A few months ago I shockingly realized that my C++ Kung-Fu is not at as good as I thought it was (and hence the long pause of training myself). Things which were missing were:
- Language idioms.
- Design patterns.
- Lack of knowledge of STL
This came as a shock because I thought I knew what needs to be known. Anyhow, this post is not about what I didn’t knew or why I didn’t knew. This post is collection of C++ materials for particularly me and may be for those who are in search of knowing what they don’t know about C++
And you can find most of them in my Github repo:
This will get you more than started. Particularly the books.
Enjoy your reading.
02/01/2013 § Leave a comment
Following my hunch of visualizing a 2nd order IIR digital filter has led me to discover something new.
I am not sure if this the first time a filter is being designed this way but anyway.. I am enjoying it.
Herein, zeros are used interchangeably with complex conjugate zeros and poles are used interchangeably with complex conjugate poles.
In figures below, ‘blue dots’ are zeros and ‘red diamonds’ are poles
In a z plane, zeros/poles attenuate/boost the closest frequencies which are mapped on upper half of unit circle, everyone knows that. But there is more to it than just that.
A few observations:
For a filter we are generally concerned about 3 things:
1. Center frequency
3. Attenuation or Boost
For Center Frequency:
As you expected, its just 2*pi*(center freq. in Hz) / (sampling freq in Hz)
1. If the angle between complex conjugate pairs of zeros (or poles) is not 180 degrees. The range of frequencies which will mapped on shorter arc will be attenuated (or boosted) more in comparison to range if frequencies mapped on bigger arc. See fig, 1 (for zeros, attenuation) and 2 (for poles, boost)
2. To balance the attenuation (or boost) use a pair of complex conjugate poles (or zeros) as shown in fig 3. We will call these poles (or zeros), ‘balancing poles (or zeros)’
3. Suppose you want to have constant bandwidth and constant attenuation (or boost). The radius of zeros (or poles) and the radius of balancing poles (or zeros) will not change. But as the center freq. changes the angle between zeros (or poles) and the radius of balancing poles (or zeros) will change. And will be inversely proportional to abs (pi/2 – center frequency in radians). That means when center freq. will be 1/4th of sampling freq.(ie, pi/2) the angle between zeros (or poles) and the balancing poles (or zeros) will be 0.
For Attenuation and Boost:
Zeros attenuate, everyone knows it. But I noticed a ‘strange’ behavior in attenuation (apart from the unbalance attenuation I talked about above). For a given center freq. attenuation is max when zeros are exactly on unit circle at an angle of 2*pi*(center freq. in Hz) / (sampling freq in Hz). BUT, as the center freq. sweeps from min. to max (or from 0 to pi radians) attenuation is max at 0 radians decreases till pi/2 and then increases to max as it approaches pi. This might not matter much because the ‘minimum’ of this attenuation (at pi/2) is still around 40dB, good enough for audio processing (?).
Same is the behavior with poles, of course, you don’t want put poles on unit circle or beyond it for obvious reasons.
Like I said my aim *was* to visualize :P
And now that I can ‘see’ things happening, I don’t have a mathematical model.
I am working at it. I am trying to juggle between my day job, DSP and my favorite open source project Mixxx.
So everything has its time share and often gets preempted by day job
Its very difficult (at-least without guidance of a DSP veteran) to observe this behavior using standard tools like Matlab/Octave.
So I made my own tool, called Reallization. Following is a seak peek insight to architecture of reallization. The idea was to follow something like a SuperCollider architecture and I also borrowed some other ideas from Ross’s blog post.
1. 3 independent threads
- For user interface
- A real time priority thread for Portaudio callback.
- A thread to buffer audio data from disk for Portaudio to playback using libsndfile.
2. The communication between threads is via a non blocking FIFO. Every time realtime audio thread wants data, it reads a frame from audio buffer and updates the filter coefficients from a FIFO which is updated by GUI.
3. If I have not yet mentioned, coding is in C++/Qt and here is the source code.
02/01/2013 § Leave a comment
YAY! finally we have fully functional GUI for effects framework.
WARNING: I’ll not suggest you to use it in your next gig
So here is what you can do:
1. Add/remove/switch chains on the fly
2. Add/remove effects from chain
4. Apply chain to channel 1, 2, master or headphone
5. Map any knob of a effect to another knob on Chain widget on GUI
… and lot more.
We will definetly have Effects in Mixxx 1.12.
Whats up next ?
1. More flexible design for EffectsChainEditor and EffectChain so that skin designers can make it look more attactive.
2. More native effects
3. Once done with this I’ll start to work on LADSPA integration which will open Mixxx to a swarm of Audio Effects.
15/12/2012 § Leave a comment
Ever since I have known DSP, I wanted wanted to visualize filter designing. Because I had a feeling that filter desging has more to do with ‘nature’ and not some creepy looking algo/formula.
Reallization is the tool which will help me further understand this ‘course of nature’.
Reallization can now play a sound file and apply the filters that you make by placing poles/zeros on z plane, plus it will show you magnitude and phase response as well. All this on the run.
One thing that I still miss is to give Reallization locus of poles/zeros and user can choose where on that locus the poles/zeros will be.
This is important because the reasearch papers I am going through are placing poles/zeros in a certain fashion and I
believe that if I could literally dictate the location of poles/zeros by metioning the locus they are allowed
to move on, then I’ll have better understanding of behavior of audio filters.
This locus feature is targeted to Christmas.
Till then enjoy visualizing and hearing the effects of your filters on the fly!
For more details see the realliZation page.