Progress so far

• Chris Liscio


I'm going to try keeping a bit of a development log to look back on one day for this software. Perhaps it will help me realize where I spent too much time, or what concepts I'm having the most trouble with.</p><p>Also, I find that by putting my thoughts down helps me to keep on track. My New Year's resolution this year was to finish the projects that I start, since so many in my past have just fizzled due to a lack of commitment or self-discipline. I think there are some other problems I've had in the past that I've automatically overcome as a result of keeping to this simple resolution.</p><p>This sub-thread of the "boo-urns log" may help me realize some of my weaknesses, and perhaps help other people who are trying to get motivated to get started on their side-projects that they've been putting off for so long. Who knows?</p><p>Anyway, read on to see how I'm doing so far…</p><p>The project has been worked on for approximately 24 hours so far – some in my in-laws' basement, and some in my new office. As of today, I will try to keep a fairly accurate log of how much time I'm spending on this.</p><p>Up to this point, I've written some MLS (Maximum Length Sequence) calculation routines , CoreAudio HAL (Hardware Abstraction Layer) code to do measurements with the MLS data I generated, and vDSP (Apple's Vectorized DSP Library) code to analyze the impulse response derived from the MLS excitation.</p><p>The MLS calculations are based on various sources (papers, code, articles, etc) found all over the Internet (no specific links on-hand to add right now, sorry! try googling it for now). Since this is a Mac OS X application from the start, this is all being developed in Cocoa for simplicity (and to hopefully force me to design a bit more OO than I'm used to).</p><p>The CoreAudio HAL code started off using the Obj-C wrapper (MTCoreAudio.framework) that is fairly well-known. Unfortunately, I had some crashes and other strange issues when using that for my calculations, so I switched to using the more common C-like approach to play with the HAL. It works out to be far simpler for what I'm doing, anyway.</p><p>The vDSP code is quite simple, as it's just an FFT to run on the derived impulse response of the Device Under Test (DUT). I was able to figure that out after a quick read of the vDSP PDF on Apple's site.</p><p>The first working concept of my code just dumped the impulse response, which I threw into Excel for the FFT and graphing. It appeared to give me exactly the "graph" that I wanted to see. From there, I still have to determine the mappings between the data I'm seeing and the physical values (in Ohms for this case, dB for when I do microphone-based measurements) that are being returned. Also, I will put in a calibration routine to eliminate any bias introduced by the sound card.</p><p>I jumped the gun a bit on the "tedious math bits" for a little while to try and get my graphing interface moving forward, since the Excel part was driving me nuts. So far it looks like it's working (NSViews are cool!), but there are some small snags with the display that I'm seeing. It shouldn't be too much longer before I clear those up, though.</p><p>Soon I will reach a point where I have the full MLS measurement subsystem working accurately. From there, I plan to clean up the UI, add some user options (I have to get an iMic to test (a) if the device works for potential laptop users and (b) that I can select between multiple devices in my UI), and wrap that up as a very early alpha component. I may pass that around a little bit to get some initial reactions.</p><p>I guess you can call this Phase One of my suite. I started with this chunk of functionality since I find it the hardest part to figure out. There is a lot of mathematics theory (thank you, BMath!) and DSP jargon (thank you, Mr. Steiglitz!) to weed through, as well as some Cocoa-isms to overcome. I think that all this work will pay off in the end, as I am finding this research and development to be very enjoyable.</p><p>My current plans are to make phase 2 revolve around the core application suite that will host the loudspeaker designs, as well as my measurement components. I need to start thinking about how to maintain a database of different loudspeaker drivers, as well as sort out just how much functionality I can offer in my first publicly available version.</p><p>Watch this space!
</p>