Currently, rain is stimulated by a practice called cloud seeding, where an airplane flies over clouds and drops silver iodide or other chemicals into them. This provides nucleation sites for raindrops to form. Cloud seeding has been practised for several decades, despite its debated efficacy. Its disadvantages are that it's expensive and it requires an airplane with cloud seeding equipment and a trained crew. This project aims to provide an alternative method of stimulating rain that is less expensive and more accessible to more people in more locations.
The current idea is a ground-based loudspeaker array that uses beamformed sound to alternately compress and rarefy the droplets in a cloud and make them coalesce into raindrops. It will be powered by Teensy 3 and TI's spatial sound chips.
Such a device could possibly be combined with Jérôme Kasparian et al's "Laser-induced water condensation in air" (see linked paper) to make rain on a clear day.
doing 4- or 16-channel audio beamforming
core of Teensy 3.1
channels of output amplifier
ideally with good horns to achieve good efficiency
The LM48901 is now discontinued, not even having a page on TI's website anymore, and was at least NRND when I initially specified it. It's still available from distributors in sufficient quantities for building a prototype or a few, but I'd rather use something that can go into production without a complete redesign. Additionally, the LM48901's programming tool doesn't seem to be online anymore either, and I was never sure whether it could even converge to a point several kilometers away. So I should probably switch to using some kind of microcontroller or FPGA for each speaker group. (I still think it's best to use this architecture rather than one central processor sending signals to each speaker directly, though I'm not entirely sure. Maybe a 3-level tree where nodes at each level do 4-speaker/4-sub-node beamforming?) This means more beamforming work for me, but it should also be far more flexible and capable of things like adaptive acoustics.
Array of 64 speakers, divided into groups of four. Each group of four is driven by a TI LM48901 spatial audio beamforming & amplifier chip, which does beamforming with its four speakers, while a central Teensy 3.1 does beamforming with the 16 groups.
Audio is sent from the Teensy to the LM48901s via I2S. To achieve the phase delays for beamforming, one of the following methods could be used:
Boomers with integrated wavetables, so they can do their own phase delays (I don't think these exist; the LM48901 definitely doesn't have this feature.)
Very fast multiplexing of I2S, either with dedicated I2S multiplexers or clock-switching multiplexing
Programmable I2S delay lines (These could be made out of microcontrollers or FGPAs + memory or maybe shift registers.)
DAC + programmable analog delay lines (Suboptimal, and I don't know if those even exist.)
Free-running SDRAM(s) fed with I2S wavetable(s), feeding out I2S signals from different locations in memory for the different channels' phase delays (Do you think this would work, @esot.eric.wazhung?)
The same thing but with a multi-readout-location ROM of some kind (I don't know if that exists.)
Because the array will be emitting only a single frequency and the steering will be static or at least relatively slowly changing, the Teensy's beamforming task shouldn't be too difficult. Just a bit of trigonometry… (famous last words!)
The speakers will probably be set quite far apart on the ground to get the necessary separation for effective beamforming—tens to hundreds of meters probably. This will necessitate accurate measurement of each speaker's location, which can be done using a handheld GPS unit, and some kind of robust long-distance communication and synchronization scheme. (Maybe give each one its own GPS receiver so they can use GPS time, but that would make it very complex and expensive.)
Which of the above methods for getting sound from the Teensy to the LM48901s is best?
What size and shape would work best for the speaker array?
How much power is required?
How can I generate LM48901 beamforming coefficients on the Teensy to accommodate array reconfiguration? (TI has a web-based configuration generator, but it (as well as the LM48901) is no longer supported, and it's intended for small-scale applications. Therefore I think I will have to reverse-engineer its output (or just read the datasheet, because I think it explains the coefficients) and implement a coefficient generator on the Teensy.)