I finally wrote a guitar tuner in bash. This is the initial commit.
This commit is contained in:
		| @@ -1,2 +1,5 @@ | ||||
| # bashtuner | ||||
| A guitar tuner written in bash | ||||
| A guitar tuner written in bash. | ||||
| To extend, add new tunings to the array. More are coming soon. I may also add other instruments such as the mandolin | ||||
|  | ||||
| Want to support my work? Check out my  [Liberapay page](https://liberapay.com/stormdragon2976), or my membership options on [Patreon](https://patreon.com/stormdragon2976). | ||||
|   | ||||
							
								
								
									
										34
									
								
								bashtuner.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								bashtuner.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Written by Storm Dragon https://social.stormdragon.tk/storm | ||||
| # Released under the terms of the WTFPL License http://wtfpl.net | ||||
|  | ||||
| declare -A tuning=( | ||||
|   # Dropped 1 step. | ||||
|   [6d]="D2 G2 C3 F3 A3 D4" | ||||
|   # Standard tuning | ||||
|   [6e]="E2 A2 D3 G3 B3 E4" | ||||
| ) | ||||
|  | ||||
| show_help() { | ||||
|   echo "Usage: $0 tune_id" | ||||
|   echo "Where tune_id is one of" | ||||
|   echo "${!tuning[@]}" | ||||
| exit 0 | ||||
| } | ||||
|  | ||||
| [ $# -ne 1  ] && show_help | ||||
| [ -z "${tuning[$1]}" ] && show_help | ||||
| # Continuously play the notes until a key is press. | ||||
| # Note key can not be enter or space. | ||||
| # This will adjust how long each note plays. | ||||
| timeout=2 | ||||
| for i in ${tuning[$1]} ; do | ||||
|   unset continue | ||||
|   while [[ -z "$continue" ]]; do | ||||
|     ps $notePID &> /dev/null && kill $notePID &> /dev/null | ||||
|     play -qnV0 synth $timeout pl $i & | ||||
|     notePID="$!" | ||||
|     read -sn1 -t $timeout continue | ||||
|   done | ||||
| done | ||||
		Reference in New Issue
	
	Block a user