Added sing.sh so I can use notes instead of frequencies for beep(1)
This commit is contained in:
		
							parent
							
								
									1b7b61f8ac
								
							
						
					
					
						commit
						3b8d9edfd6
					
				
							
								
								
									
										166
									
								
								.bashrc.d/sing.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								.bashrc.d/sing.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,166 @@
 | 
			
		||||
note2freq(){
 | 
			
		||||
	local freq
 | 
			
		||||
	case $1 in 
 | 
			
		||||
		A[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=55;;
 | 
			
		||||
				*2) freq=110;;
 | 
			
		||||
				*3) freq=220;;
 | 
			
		||||
				*4) freq=440;;
 | 
			
		||||
				*5) freq=880;;
 | 
			
		||||
				*6) freq=1760;;
 | 
			
		||||
				*7) freq=3520;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		Bb[1-7]|As[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=58;;
 | 
			
		||||
				*2) freq=117;;
 | 
			
		||||
				*3) freq=233;;
 | 
			
		||||
				*4) freq=466;;
 | 
			
		||||
				*5) freq=932;;
 | 
			
		||||
				*6) freq=1865;;
 | 
			
		||||
				*7) freq=3729;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		B[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=62;;
 | 
			
		||||
				*2) freq=124;;
 | 
			
		||||
				*3) freq=247;;
 | 
			
		||||
				*4) freq=494;;
 | 
			
		||||
				*5) freq=988;;
 | 
			
		||||
				*6) freq=1976;;
 | 
			
		||||
				*7) freq=3951;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		C[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=33;;
 | 
			
		||||
				*2) freq=65;;
 | 
			
		||||
				*3) freq=131;;
 | 
			
		||||
				*4) freq=262;;
 | 
			
		||||
				*5) freq=523;;
 | 
			
		||||
				*6) freq=1047;;
 | 
			
		||||
				*7) freq=2093;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		Cs[1-7]|Db[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=35;;
 | 
			
		||||
				*2) freq=69;;
 | 
			
		||||
				*3) freq=139;;
 | 
			
		||||
				*4) freq=277;;
 | 
			
		||||
				*5) freq=554;;
 | 
			
		||||
				*6) freq=1109;;
 | 
			
		||||
				*7) freq=2217;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		D[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=37;;
 | 
			
		||||
				*2) freq=73;;
 | 
			
		||||
				*3) freq=147;;
 | 
			
		||||
				*4) freq=294;;
 | 
			
		||||
				*5) freq=587;;
 | 
			
		||||
				*6) freq=1175;;
 | 
			
		||||
				*7) freq=2349;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		Ds[1-7]|Eb[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=39;;
 | 
			
		||||
				*2) freq=73;;
 | 
			
		||||
				*3) freq=147;;
 | 
			
		||||
				*4) freq=294;;
 | 
			
		||||
				*5) freq=587;;
 | 
			
		||||
				*6) freq=1175;;
 | 
			
		||||
				*7) freq=2349;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		E[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=41;;
 | 
			
		||||
				*2) freq=82;;
 | 
			
		||||
				*3) freq=165;;
 | 
			
		||||
				*4) freq=330;;
 | 
			
		||||
				*5) freq=659;;
 | 
			
		||||
				*6) freq=1319;;
 | 
			
		||||
				*7) freq=2637;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		F[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=44;;
 | 
			
		||||
				*2) freq=87;;
 | 
			
		||||
				*3) freq=175;;
 | 
			
		||||
				*4) freq=349;;
 | 
			
		||||
				*5) freq=699;;
 | 
			
		||||
				*6) freq=1397;;
 | 
			
		||||
				*7) freq=2794;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		Fs[1-7]|Gb[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=46;;
 | 
			
		||||
				*2) freq=93;;
 | 
			
		||||
				*3) freq=185;;
 | 
			
		||||
				*4) freq=370;;
 | 
			
		||||
				*5) freq=740;;
 | 
			
		||||
				*6) freq=1480;;
 | 
			
		||||
				*7) freq=2960;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		G[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=49;;
 | 
			
		||||
				*2) freq=98;;
 | 
			
		||||
				*3) freq=196;;
 | 
			
		||||
				*4) freq=392;;
 | 
			
		||||
				*5) freq=784;;
 | 
			
		||||
				*6) freq=1568;;
 | 
			
		||||
				*7) freq=3136;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		Gs[1-7]|Ab[1-7])
 | 
			
		||||
			case $1 in 
 | 
			
		||||
				*1) freq=52;;
 | 
			
		||||
				*2) freq=104;;
 | 
			
		||||
				*3) freq=208;;
 | 
			
		||||
				*4) freq=415;;
 | 
			
		||||
				*5) freq=831;;
 | 
			
		||||
				*6) freq=1661;;
 | 
			
		||||
				*7) freq=3322;;
 | 
			
		||||
			esac
 | 
			
		||||
			;;
 | 
			
		||||
		*)
 | 
			
		||||
			printf "ERROR: Unknown note: \"%s\"
 | 
			
		||||
Valid note syntax: <letter>[accidental]<octave>
 | 
			
		||||
 | 
			
		||||
Valid values:
 | 
			
		||||
	<letter>	\"A\" through \"G\"
 | 
			
		||||
	[accidental]	\"b\" (flat), or \"s\" (sharp)
 | 
			
		||||
			Exceptions: \"Bs\", \"Cb\", \"Es\", and \"Fb\" are not valid.
 | 
			
		||||
	<octave>	\"1\" through \"7\"
 | 
			
		||||
" "$1"
 | 
			
		||||
			return
 | 
			
		||||
	esac
 | 
			
		||||
	printf "%s" "$freq"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sing() {
 | 
			
		||||
	local beepstring
 | 
			
		||||
	while [ "${3+defined}" ]; do
 | 
			
		||||
		if [ "$3" = "-n" ]; then
 | 
			
		||||
			beepstring="$beepstring -f $(note2freq $1) -l $2 -n"
 | 
			
		||||
			shift 3
 | 
			
		||||
		else
 | 
			
		||||
			echo "Error"
 | 
			
		||||
			return
 | 
			
		||||
		fi
 | 
			
		||||
	done
 | 
			
		||||
	if [ -z "$3" ]; then
 | 
			
		||||
		beepstring="$beepstring -f $(note2freq $1) -l $2"
 | 
			
		||||
		beep $beepstring
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user