The "Drifting Pulses" series builds on the frequency drift phenomenon to create ever-changing loops of audiovisual pulses. In this incarnation of "Wind", this comes from physical variations in a group of pendulums: tiny differences in each ball's swing naturally create a desynchronising ensemble. The participant can move the balls around on the rack to change the tones in play.
— See also: "Fire" (https://hackaday.io/project/203751-drifting-pulses-fire)
— ** Ongoing project. Will not finish on time for the challenge ^ ^ **
No, it is not worth the effort trying to assemble these by hand (>_<) At least not without a stencil and a heating plate or oven.
That aside, having replaced the soldering iron tip, the toolset now works like a charm. A rusty tip should retire! Pushing it to the limits by a hot core might strain the rest of the parts.
In the last run, the speaker was just loud enough with a full-range signal; it needed a higher gain. The speakers sounded well after the audio filter was revised to bear a gain of 1 (rather than the previous 0.22).
Getting the onset detection right with only acceleration readings does not appear to be a simple task. Further analysis is needed; do we need to turn to Kalman filters again?
The correct boards for the unit and the rack have arrived. The rack units fit in the case nicely.
Completed assembly by hand-picking components and a hot-air gun, and the first bring-up went rather smoothly. The IMU was placing readings into its FIFO; the PWM audio was correctly playing through the speaker.
Ball units and rack units (some LEDs to-be-mounted).
A ball unit connects to a rack unit through a 3.5-mm TRS cable, which carries a power pair and an analogue voltage output serving as an identifier. Here a problem arises: it is usual for the TRS connector to momentarily short the pins during hot-plugging, thus shorting the power lines. The power comes from a Li-Po battery, so the battery management system (BMS) detects the short and cuts off the supply, causing a momentary brown-out. Furthermore, the BMS I'm working with is strict in its recovery in that it restores the supply only when it is completely removed and reconnected, not when the shorting condition is lifted. Presumably, the BMS has a current threshold lower than the mA range. This keeps the entire installation powered off and renders the interaction infeasible.
The above assumption was confirmed by replacing the supply with USB power out of the debug probe, which correctly recovers. Note that safety should not be a concern here, as almost all USB power ports have protection mechanisms.
A simple fix is to add a polyfuse at the rack unit, cutting power to the ball (and maintaining the main power) during shorts. A better solution is to use a circuit to probe the shorting condition, but it appears overcomplicated for this simple installation.
This will add another week of turnaround. Meanwhile, there is still work to do on the balls.
While we wait for the correct boards en route, here is the batch that has already arrived. There has been a serious mistake: I connected the data line to the IMU's SDO pin, instead of SDx. As with most IMU sensors, this model SC7A20 (which closely follows the widely-deployed LIS3DH) works with either I2C, 4-wire SPI, or 3-wire (half duplex) SPI mode. In 3-wire SPI, the controller (main/master) and the sensor (subsidiary/slave) take alternate turns to write/read the data line, which for the controller means the MOSI pin, and for the sensor — SDI (SDx)! T-T Why would anyone fly through this without double-checking the datasheet...
In the revision, I also took the chance to add a bypass capacitor for the sensor's VDDIO, although that is much less likely to cause problems.
Yet, while working on Fire's board, the audio amplifier's shutdown pin once again caught my attention: it's active-high, meaning that a high signal puts the chip to sleep. And I hard-wired it to the power line, which means the chip enjoys a nice, warm rest in the circuit (>_<)
At this time, the revised board is already in the fabrication house. Fortunately, the amplifier chip is in a big, clear SOP-8 package; and by prior experience (Canta-Cart), leaving the shutdown pin floating works by default — so the mistake apparently can be patched by bending the shutdown pin into the air.
Indeed, at the end of the day, it is faster to go slow.
Complete revised schematic (ball's unit and rack's unit), for reference.
Created a 3D model for the rack and sent a 3-unit version to the printer. The print came out smoothly!
Full model and a version with the front cover split for easier printing.
However, at a length of 29 cm, it only barely fit inside the printer (which works with a 256-mm cubic space). A 10-unit rack will be around a metre in length. I probably need to reconsider how this will be printed and assembled.
Following Drifting Pulses: Fire, there was another insight: why restrict ourselves to electronics? In the tangible world, inaccurate periods exist everywhere. Just look at the swaying trees. The chirping cicadas. Look at the sun, the moon, the planets and stars. Look at our own bodies.
This second interpretation, Drifting Pulses: Wind, tries to embody such physical variations. It consists of sound- and light-emitting balls hanging down from a rack. As a ball swings past the lowest point, it gives a sounding tone and a blink of light. The whole installation is similar to a wind chime; the tiny differences in each ball's swing naturally create a desynchronising ensemble. To invite participants' interaction, the rack carries a line of plugs, each denoting a tone in the common major scale, and the participant can move the balls around different plugs to change the chord in play.
I cannot deny its resemblance to my previous NIME project Malletwand, where a handheld pendulum becomes the music's metronome, or to some extent, the conductor. However, in this project (this Drifting Pulses series in general), I'd like to focus more on the musical phrase morphing on its own, during times without human intervention.
The electronic implementation will consist of two parts, the rack unit and the ball unit, connected through a 1-metre TRS cable (so that the period is 2 seconds — note that the pulses happen every half period). The cable will deliver power as well as identify the plug's index. The circuit boards will arrive very soon; the wind's voice awaits.