#!/bin/bash
######################################################################
#Copyright (C) 2020 Kris Occhipinti
#https://filmsbykris.com
#Noise-O-tron
#makes noise from keypresses to dsp audio hardware
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program. If not, see .
######################################################################
# Inspired by code written by: Antonio Macchi
# https://www.tldp.org/LDP/abs/html/devref1.html
duration=1000
volume=$'\xc0'
mute=$'\x80'
function main(){
echo "Press Keys on Keyboard"
echo "(ASCII Characters) - Press Enter to exit."
while [ 1 ];do
read -n 1 n
n="$(ord $n)"
[[ $n == 0 ]]&& exit
n="$(note $n)"
echo -n "$n" > /dev/dsp
done
}
function note(){
for i in `seq 0 $duration`
do
[ $(( $i % $1 )) -eq 0 ] && echo -n $volume || echo -n $mute
done
}
function ord() {
LC_CTYPE=C printf '%d' "'$1"
}
main