somebodyelse
Major Contributor
- Joined
- Dec 5, 2018
- Messages
- 3,765
- Likes
- 3,074
How do you intend to home it?
You are right. I totally missed the problem. I was solving x, y, z given a, b, c. You already know x, y, z and need to find a, b, c, which is much simpler. My apology.Thanks, I knew my reference to feedback would cause confusion and I regretted including it as soon as I posted. I do realize it is all just geometry-based.
Another try: If I define a coordinate system and locate the motor assemblies within it, and then define a target mic location, I can calculate the 3 mic-motor distances (cable lengths). Why is that not the end of it?
Thank you very much for blazing the trail I haven't experimented with any actual hardware implementation, so you are way ahead of me. Please treat what I'm saying in this post just ideas — they may be OK ideas or may be bad ideas. Other please chime in if you see any glaring errors.Writing LabVIEW-based software to measure the transfer function of speakers has involved more fiddling than I hoped, but some of the time has been consumed by missing subtleties that led me off on unproductive trajectories. If I subtract off the “stupid time” I guess it’s not so bad.
A few questions regarding the nature of the data required for fitting:
I’m assuming that there should be no adjustment (for example normalization) of levels—the measured responses should be stored in “raw” form. Is that right?
Do the data need an accurate t=0 reference point? In other words, do I need a loopback function in the set-up to be sure the acoustic measurements are based on an accurate stimulus start time? I think I can now do that, in case usb etc. builds in some potentially variable latency.
Does it matter if the measurements are stored as impulse responses, or magnitudes and phases? They can be interconverted, of course, but I’d like to maximize efficiency by storing things conveniently
On the robotic front, I decided not to permanently mount the three stepper-driven spools to the ceiling. Doing so would keep them out of the way, and minimize set-up time, but it would make changes—or using the system in another space—much less convenient. So my not-yet-tested approach is to use telescoping poles to press the spool systems to the ceiling, with the other ends of the poles wedged against the floor. I bought three poles along with “matching” nuts for the poles’ threaded ends, but discovered the nuts and threads on the telescoping poles didn’t match (5 vs. 6 threads per inch, I think). So I molded three nuts around the poles’ threads and will mount those (somehow) to the spool assemblies.
My plan is to screw one stepper/spool system onto each telescoping pole, and then use the pole to wedge the system against the ceiling. Once in place, I’ll use plumb bobs hanging from the line guides to make measuring the locations of the line guides less cumbersome—easier at floor level than at the ceiling. Those positions are necessary to calculate the appropriate stepper movements.
Few
...
Have you tried "matricizing" the fitting process? I'd likely rely on Matlab if I can make it work, and of course their core religious belief is "linear algebra good, loops bad." If every frequency is fit separately, and one or two thousand measurements are made, I can see why some computer cranking time is sometimes required for the fit!
...
Certainly. Will be more than happy to helpIf I beat the odds, and end up with a collection of measurements to test things, could I share them with you (NTK) to see if things are on track?
I think exporting the measurements as a series of 2-channel WAV files (one file each for the measurements at each location) is probably the simplest. You can use the LabVIEW VI "Sound File Write Simple VI" to export the WAV files. WAV files are a lot smaller than exporting as numbers in text files (e.g. exporting the complex transfer function values). Converting them to FLAC's will save some room but will be an extra step outside of LabVIEW. Of course we will need the info to decipher which file is for which measurement location, and the scaling factors to convert the waveform amplitudes to volts (for the reference input) and sound pressures (for the mic measurements).If so, what format should I save files in? I’d like to have that in hand before worrying about converting the processing to Matlab.
I think concentric spheres (and in this case approx. half spheres) is probably the best, but am not sure. I'd like to run some simulations to compare. I should be able to get some results by this coming weekend.By the by, do the measurements need to be taken between two concentric spherical shells, or might cylinders or planes work?
I was editing my previous response when you were posting. I think we can export the impulse response.Thanks for your willingness to assist.
Can you clarify the 2-channel aspect of the WAV file? Is one the mic's response and the other loopback signal (reference)? I was imagining using LabVIEW to calculate the response function and just saving that as a file, but I can certainly record the reference and mic signals instead. I already have the "Sound file write simple vi" in the code so it will be easy to change how it's used. I'm mostly curious why you suggest the two WAV file channels rather than a pre-computed frequency response, either magnitude and phase or complex-valued.
Also, to streamline the debugging process, I was thinking it would be a smaller bite to chew if just a series of horizontally displaced points were used rather than a full surface. Would this lower dimensional example be harder to deal with on your end? I think Earl Geddes uses horizontal position scans and fits them with associated Legendre polynomials for his horizontal directivity measurements, so the basic approach seems sound.