BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


今天是我女儿的1周岁生日,发个脚本,这个能让pc喇叭实现按键发音
首页 » 论坛 » Shell »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
gao_linfeng
骑士




UID:179555
注册:2004-8-27
最后登录: 2008-10-05
帖子:57
精华:0

可用积分:93 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-8-6 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 ;;
       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

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




女儿高爱珊.JPG (23.45 KB) 2008-8-11 11:07
 


您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
gao_linfeng
骑士




UID:179555
注册:2004-8-27
最后登录: 2008-10-05
帖子:57
精华:0

可用积分:93 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2008-8-6 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 ;;
       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
然后执行上面脚本时输入文件名即可。



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
爱知   帅哥
天使




UID:726651
注册:2008-7-7
最后登录: 2008-10-07
帖子:1126
精华:0

可用积分:2604 (小富即安)
信誉积分:0
专家积分:5 (本版:5)
空间积分:111
推广积分:0

来自:北京海淀
状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2008-8-6 10:50 
good
up



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
shaneqi
精灵王



UID:389664
注册:2006-3-20
最后登录: 2008-10-07
帖子:284
精华:0

可用积分:1200 (家境小康)
信誉积分:100
专家积分:0 (本版:0)
空间积分:802
推广积分:0

状态:...在线...

[个人空间] [短信] [博客]


4楼 发表于 2008-8-6 10:56 
不错,祝你女儿生日快乐。
顺便问一下,如何能去掉这种滴滴声啊,我是ksh,在控制台下,试了几个方法都不好。



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
寂寞烈火   帅哥
老法王


CU奥运火炬传递手2008
荣誉会员  
UID:187152
注册:2004-10-1
最后登录: 2008-10-07
帖子:24059
精华:5

可用积分:13084 (大富大贵)
信誉积分:110
专家积分:161 (本版:97)
空间积分:1425
推广积分:0

来自:北京海淀
状态:...离线...

[个人空间] [短信] [博客]


5楼 发表于 2008-8-6 11:04 
祝你女儿生日快乐



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


Window$ XP Professional service pack 2
CYGWIN_NT-5.1 + GNU bash version 3.2.39

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
gao_linfeng
骑士




UID:179555
注册:2004-8-27
最后登录: 2008-10-05
帖子:57
精华:0

可用积分:93 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2008-8-6 11:06 
你是说关闭pc喇叭吗?我的是debian,卸掉pc喇叭模块即可,rmmod pcspkr



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
爱知   帅哥
天使




UID:726651
注册:2008-7-7
最后登录: 2008-10-07
帖子:1126
精华:0

可用积分:2604 (小富即安)
信誉积分:0
专家积分:5 (本版:5)
空间积分:111
推广积分:0

来自:北京海淀
状态:...离线...

[个人空间] [短信] [博客]


7楼 发表于 2008-8-6 11:07 
Happy birthday to your daughter



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
gao_linfeng
骑士




UID:179555
注册:2004-8-27
最后登录: 2008-10-05
帖子:57
精华:0

可用积分:93 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


8楼 发表于 2008-8-6 11:24 
谢谢大家的祝福!



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
beauty2003
精灵王



UID:615347
注册:2007-9-11
最后登录: 2008-09-30
帖子:356
精华:0

可用积分:849 (稍有积蓄)
信誉积分:10
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


9楼 发表于 2008-8-6 11:40 
这个脚本不错,还能播放简谱.
另,也祝你女儿生日快乐!



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

~~~~~~~~~~~~~~~~~~~~

我欲将心照明月,
奈何明月照沟渠!~

~~~~~~~~~~~~~~~~~~~~
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
可可熊
光明使者




UID:498669
注册:2006-12-1
最后登录: 2008-09-28
帖子:814
精华:0

可用积分:4681 (小富即安)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

来自:西安
状态:...离线...

[个人空间] [短信] [博客]


10楼 发表于 2008-8-6 11:43 
回复 #6 gao_linfeng 的帖子

有没有配置文件修改一下让终端不出声;



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

Fedora 9 GNU{ bash 3.2.33  sed 4.1.5 Awk 3.1.5}

积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » 论坛 » Shell »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.062250 second(s), 5 queries , Gzip enabled