LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 965|回复: 2

今天是我女儿的1周岁生日,发个脚本,这个能让pc喇叭实现按键发音

[复制链接]
发表于 2008-8-6 10:27:40 | 显示全部楼层 |阅读模式
#!/bin/bash
#本程序需要利用beep软件,debian下直接apt-get install beep即可,所对应的键位是: < qwertyu 1234567 890-=[] >.
#PS1='\[\e[33;1m\]<\t>:\w\$ \[\e[0m\]'
trap exitprocess INT

####################################################
function exitprocess()
{
  echo -en "\n\e[43;1m 确认退出吗? [y/N] \e[0m"
  read -n1 dd
  echo
  if test $dd = y 2>/dev/null || test $dd = Y 2>/dev/null ;then
     exit
  fi
}
####################################################

echo -e "\n\e[44;37;1m************************************************************************\e[0m"
echo -e "\e[44;37;1m***  本程序用来进行按键发音,对应的键位是<\e[36;1m qwertyu 1234567 890-=[] \e[37;1m>  ***\e[0m"
echo -e "\e[44;37;1m************************************************************************\e[0m\n"
read -p " 请输入单个音调的音长 (默认: 150): " beeplong
echo -e "\e[32;1m 请按键输入简谱,按\e[31;1m< Ctrl+c >\e[32;1m退出. \e[0m"
beeplong=${beeplong:=150}
while : ;do
  read -n 1 qq
  case $qq in
       q)
          beep -f 200  -l $beeplong ;;
       w)
          beep -f 220  -l $beeplong ;;
       e)
          beep -f 250  -l $beeplong ;;
       r)
          beep -f 270  -l $beeplong ;;
       t)
          beep -f 300  -l $beeplong ;;
       y)
          beep -f 340  -l $beeplong ;;
       u)
          beep -f 380  -l $beeplong ;;
       1)
          beep -f 400  -l $beeplong ;;
       2)
          beep -f 450  -l $beeplong ;;
       3)
          beep -f 500  -l $beeplong ;;
       4)
          beep -f 540  -l $beeplong ;;
       5)
          beep -f 600  -l $beeplong ;;
       6)
          beep -f 670  -l $beeplong ;;
       7)
          beep -f 750  -l $beeplong ;;
       8)
          beep -f 800  -l $beeplong ;;
       9)
          beep -f 900  -l $beeplong ;;
       0)
          beep -f 1000 -l $beeplong ;;
       -)
          beep -f 1100 -l $beeplong ;;
       =)
          beep -f 1200 -l $beeplong ;;
       [)
          beep -f 1350 -l $beeplong ;;
       ])
          beep -f 1500 -l $beeplong ;;
  esac
done

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2008-8-6 10:33:34 | 显示全部楼层
恭喜恭喜 LZ
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-8-6 10:33:47 | 显示全部楼层
再发一个,这个也是利用beep,只不过他可以对简谱文件自动生成播放脚本,请将下面保存为一个文件并附于执行权限。

#!/bin/bash
#本程序利用beep对简谱文件生成pc喇叭播放脚本.
trap 'echo;exit' INT

echo -e "\e[44;37;1m\n***********************************************************************\e[0m"
echo -e "\e[44;37;1m***  本程序用来对简谱文件生成pc喇叭播放脚本.                        ***\e[0m"
echo -e "\e[44;37;1m***  简谱文件只能是一行,并且由(\e[36;1m qwertyu 1234567 890-=[] \e[37;1m)字符组成.  ***\e[0m"
echo -e "\e[44;37;1m***  新生成的播放脚本文件存放在用户主目录下的 \e[36;1mgao-bF.sh \e[37;1m文件中.     ***\e[0m"
echo -e "\e[44;37;1m***********************************************************************\e[0m\n"
while : ;do
{
  while : ;do
    read -p " 请输入简谱文件名: " beepfile
    if test -n "$beepfile" ;then
       if test -a $beepfile ;then
          break
       else
          echo -e "\e[44;1m 文件不存在,请重新输入简谱文件名! \e[0m\n"
       fi
    fi
  done
  read -p " 请输入单个音调的音长 (默认: 200): " beeplong
  echo '#!/bin/sh' > $HOME/gao-bF.sh
  echo 'trap exitprocess INT' >> $HOME/gao-bF.sh
  echo '####################################################' >> $HOME/gao-bF.sh
  echo 'function exitprocess()' >> $HOME/gao-bF.sh
  echo '{' >> $HOME/gao-bF.sh
  echo '  echo -en "\n\e[43;1m 停止播放吗? [y/N] \e[0m"' >> $HOME/gao-bF.sh
  echo '  read -n1 dd' >> $HOME/gao-bF.sh
  echo '  echo' >> $HOME/gao-bF.sh
  echo '  if test $dd = y 2>/dev/null || test $dd = Y 2>/dev/null ;then' >> $HOME/gao-bF.sh
  echo '     exit' >> $HOME/gao-bF.sh
  echo '  fi' >> $HOME/gao-bF.sh
  echo '}' >> $HOME/gao-bF.sh
  echo '####################################################' >> $HOME/gao-bF.sh
  chmod +x $HOME/gao-bF.sh
  beeplong=${beeplong:=200}
  a=$(wc -c $beepfile|awk '{print $1}')
  for ((i=1;i<=$a;i++)) ;do
  qq=$(cut -c $i $beepfile)
  case $qq in
       q)
          echo "beep -f 200  -l $beeplong" >> $HOME/gao-bF.sh ;;
       w)
          echo "beep -f 220  -l $beeplong" >> $HOME/gao-bF.sh ;;
       e)
          echo "beep -f 250  -l $beeplong" >> $HOME/gao-bF.sh ;;
       r)
          echo "beep -f 270  -l $beeplong" >> $HOME/gao-bF.sh ;;
       t)
          echo "beep -f 300  -l $beeplong" >> $HOME/gao-bF.sh ;;
       y)
          echo "beep -f 340  -l $beeplong" >> $HOME/gao-bF.sh ;;
       u)
          echo "beep -f 380  -l $beeplong" >> $HOME/gao-bF.sh ;;
       1)
          echo "beep -f 400  -l $beeplong" >> $HOME/gao-bF.sh ;;
       2)
          echo "beep -f 450  -l $beeplong" >> $HOME/gao-bF.sh ;;
       3)
          echo "beep -f 500  -l $beeplong" >> $HOME/gao-bF.sh ;;
       4)
          echo "beep -f 540  -l $beeplong" >> $HOME/gao-bF.sh ;;
       5)
          echo "beep -f 600  -l $beeplong" >> $HOME/gao-bF.sh ;;
       6)
          echo "beep -f 670  -l $beeplong" >> $HOME/gao-bF.sh ;;
       7)
          echo "beep -f 750  -l $beeplong" >> $HOME/gao-bF.sh ;;
       8)
          echo "beep -f 800  -l $beeplong" >> $HOME/gao-bF.sh ;;
       9)
          echo "beep -f 900  -l $beeplong" >> $HOME/gao-bF.sh ;;
       0)
          echo "beep -f 1000 -l $beeplong" >> $HOME/gao-bF.sh ;;
       -)
          echo "beep -f 1100 -l $beeplong" >> $HOME/gao-bF.sh ;;
       =)
          echo "beep -f 1200 -l $beeplong" >> $HOME/gao-bF.sh ;;
       [)
          echo "beep -f 1350 -l $beeplong" >> $HOME/gao-bF.sh ;;
       ])
          echo "beep -f 1500 -l $beeplong" >> $HOME/gao-bF.sh ;;
       *)
          echo "beep -f 1    -l $beeplong" >> $HOME/gao-bF.sh ;;
  esac
  done
  echo -en "\n\e[43;1m 生成脚本文件完毕,是否播放该脚本? [Y/n] \e[0m"
  read -n1 gaoif
  echo
  if test $gaoif = n 2>/dev/null || test $gaoif = N 2>/dev/null ;then
     exit
  else
     sh $HOME/gao-bF.sh
     echo -en "\e[43;1m 是否播放下一首? [Y/n] \e[0m"
     read -n1 gaoifif
     echo
     if test $gaoifif = n 2>/dev/null || test $gaoifif = N 2>/dev/null ;then
        exit
     fi
  fi
}
done

请将下面这段数字(注意空格)保存为一个文件,比如file-beep
t321t ttt321y yy432u u55423 1tt321t tt321y yy432555565421  333 333 35123 4444433 33212 5 333 333 35123 4444433 55421
然后执行上面脚本时输入文件名即可。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表