Bela
Real-time, ultra-low-latency audio and sensor processing system for BeagleBone Black
|
This sketch uses a sine wave to drive the brightness of a series of LEDs connected to the eight analog out pins. Again you can see the nested for
loop structure but this time for the analog output channels rather than the audio.
Within the first for loop in render we cycle through each frame in the analog output channels. At each frame we then cycle through the analog output channels with another for loop and set the output voltage according to the phase of a sine tone that acts as an LFO. The analog output pins can provide a voltage of ~4.092V.
The output on each pin is set with analogWriteOnce()
within the for loop that cycles through the analog output channels. This needs to be provided with arguments as follows analogWriteOnce(context, n, channel, out)
. Channel is where you give the address of the analog output pin (in this case we cycle through each pin address in the for loop), out is the variable that holds the desired output (in this case set by the sine wave) and n
is the frame number (given by the other for loop).
Notice that the phase of the brightness cycle for each led is different. This is achieved by updating a variable that stores a relative phase value. This variable is advanced by pi/4 (1/8 of a full rotation) for each channel giving each of the eight LEDs a different phase.