免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 14699 | 回复: 53
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-06 10:47 |只看该作者 |倒序浏览
#!/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 ;;
      
          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

[ 本帖最后由 gao_linfeng 于 2008-8-11 11:07 编辑 ]

女儿高爱珊.JPG (23.45 KB, 下载次数: 62)

女儿高爱珊.JPG

评分

参与人数 1可用积分 +5 收起 理由
walkerxk + 5 很好的脚本,加分鼓励

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2008-08-06 10:48 |只看该作者
再发一个,这个也是利用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 ;;
      
          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
然后执行上面脚本时输入文件名即可。

评分

参与人数 1可用积分 +5 收起 理由
walkerxk + 5 很好的脚本,+5鼓励

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2008-08-06 10:50 |只看该作者
good
up

论坛徽章:
0
4 [报告]
发表于 2008-08-06 10:56 |只看该作者
不错,祝你女儿生日快乐。
顺便问一下,如何能去掉这种滴滴声啊,我是ksh,在控制台下,试了几个方法都不好。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2008-08-06 11:04 |只看该作者
祝你女儿生日快乐

论坛徽章:
0
6 [报告]
发表于 2008-08-06 11:06 |只看该作者
你是说关闭pc喇叭吗?我的是debian,卸掉pc喇叭模块即可,rmmod pcspkr

论坛徽章:
0
7 [报告]
发表于 2008-08-06 11:07 |只看该作者
Happy birthday to your daughter

论坛徽章:
0
8 [报告]
发表于 2008-08-06 11:24 |只看该作者
谢谢大家的祝福!

论坛徽章:
0
9 [报告]
发表于 2008-08-06 11:40 |只看该作者
这个脚本不错,还能播放简谱.
另,也祝你女儿生日快乐!

论坛徽章:
0
10 [报告]
发表于 2008-08-06 11:43 |只看该作者

回复 #6 gao_linfeng 的帖子

有没有配置文件修改一下让终端不出声;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP