Files
reterminal-dm4/chromium-setup/starwars_buzzer.sh

123 lines
2.5 KiB
Bash

#!/bin/bash
# Star Wars Theme Song - Buzzer Version
# Note: Buzzer can only be on/off, so we use timing patterns to create rhythm
# Volume is simulated at 10% by using very short pulse patterns (PWM-like effect)
BUZZER_PATH='/sys/class/leds/usr-buzzer/brightness'
DURATION=5 # Total duration in seconds
# Function to play a note with 10% volume effect
# Uses rapid on/off pulses to simulate lower volume
# $1 = note duration in hundredths of a second (e.g., 5 = 0.05s)
play_note() {
local note_duration=$1
# For 10% volume: 10ms on, 90ms off pattern
# This creates a quieter, pulsing effect
local cycles=$((note_duration * 2)) # Each cycle is ~50ms
for i in $(seq 1 $cycles); do
echo 1 | sudo tee $BUZZER_PATH > /dev/null 2>&1
sleep 0.005 # 5ms on (10% duty cycle)
echo 0 | sudo tee $BUZZER_PATH > /dev/null 2>&1
sleep 0.045 # 45ms off
done
}
# Function for silence/pause
pause() {
local duration=$1
sleep $duration
}
# Star Wars Theme Pattern
# Using timing to represent the iconic opening sequence
echo "Playing Star Wars Theme (5 seconds, 10% volume)..."
echo "=================================================="
echo ""
START_TIME=$(date +%s)
# Opening sequence (famous opening notes)
# Short-short-short-long pattern
play_note 2 # Very short
pause 0.05
play_note 2
pause 0.05
play_note 2
pause 0.1
play_note 4 # Longer
pause 0.1
play_note 6 # Even longer
pause 0.15
# Main theme rhythm - first phrase
play_note 3
pause 0.05
play_note 3
pause 0.05
play_note 3
pause 0.1
play_note 5
pause 0.1
play_note 4
pause 0.1
play_note 3
pause 0.1
play_note 5
pause 0.15
# Continue theme pattern - second phrase
play_note 4
pause 0.05
play_note 4
pause 0.05
play_note 4
pause 0.1
play_note 6
pause 0.1
play_note 5
pause 0.1
play_note 4
pause 0.1
play_note 6
pause 0.15
# Final sequence - third phrase
play_note 5
pause 0.05
play_note 5
pause 0.05
play_note 5
pause 0.1
play_note 8
pause 0.1
play_note 6
pause 0.1
play_note 5
pause 0.1
play_note 10
pause 0.2
# Fill remaining time to reach 5 seconds
CURRENT_TIME=$(date +%s)
ELAPSED=$((CURRENT_TIME - START_TIME))
REMAINING=$((DURATION - ELAPSED))
if [ $REMAINING -gt 0 ]; then
# Continue theme pattern for remaining time
while [ $(date +%s) -lt $((START_TIME + DURATION)) ]; do
play_note 4
pause 0.1
play_note 5
pause 0.1
play_note 4
pause 0.15
done
fi
# Ensure buzzer is off
echo 0 | sudo tee $BUZZER_PATH > /dev/null 2>&1
echo ""
echo "Star Wars theme complete!"