求:音量自动调节程序

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
qingjinshi
帖子: 62
注册时间: 2009-05-29 10:59
来自: 上海·青浦·重固

求:音量自动调节程序

#1

帖子 qingjinshi » 2015-10-04 12:35

昨晚睡前突然冒出一个想法,关于如何智能控制音乐播放的音量。

###设计出发点
平时播放音乐时,总是要不时控制音量,然而到了夜深人静的时候,音量要不时手动控制很麻烦。这样一来,常常忘记把声音调低,以致于影响其他人的生活。所以准备用shell脚本写个程序,然而咱没那能力。首先awk不会用,循环之类的虽然知道,但是不会写。。。

###程序大致功能
1.用awk或类似工具获取当前音量a;
2.如果a>60,那么执行音量调低1%;
3.sleep 1s;
4.连续执行上述5个循环;
5.每晚21点到23点,没半小时执行一次;
6.23点停止mpd播放;
7.每天7天重启播放,音量重置至85%。
***原本还想添加时间的判断步骤,比如9点在75-90音量之间,10点65-80之间。不过那样更难写了。

###疑问
1.我是写个daemon好呢,还是添加crontab呢?
2.若是只用crontab控制音量的话,倒也能类似实现,不过那样从程序设计的角度看起来,极其丑陋吧。
3.既然现在都讲情怀,大家说说好点的方案吧。
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: 求:音量自动调节程序

#2

帖子 YeLee » 2015-10-04 15:52

amixer提供一大堆的alsa访问接口,若没有特殊需求的话,其实直接用shell写就可以了,反正当前音量也只是一个数字而已,处理起来你想怎么弄都行,这个一点都不麻烦,高级点的话,可以利用事件触发机制,再编写对应的配置文件规则,后者开发时间可能长一点,但用配置文件去的维护,比直接改代码要简单得多,说不定代码写完后,你都不知道这东西是谁写的了。
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
qingjinshi
帖子: 62
注册时间: 2009-05-29 10:59
来自: 上海·青浦·重固

Re: 求:音量自动调节程序

#3

帖子 qingjinshi » 2015-10-04 23:15

其实自己完全不会写啊!
然后参照着http://wiki.ubuntu.com.cn/Shell%E7%BC%9 ... A.E7.8E.AF丑陋得写了,然而无法运行。

#!/bin/bash
vol="amixer get PCM | grep Mono:|awk -F '[' '{print $2}'|awk -F '%' '{print $1}'"
i=5
while (i>0); do
if vol>60; then
vol--
amixer set PCM "vol"%
sleep 1
fi
i--
done
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: 求:音量自动调节程序

#4

帖子 YeLee » 2015-10-05 10:54

代码: 全选

#!/bin/bash
nvol=$(amixer get Master |sed -n '0,/Front \w\+:/ s/^[^\[]\+\[\(\w*\).*/\1/g'p)
nhour=$(date +%H)

if [ ${nvol} -gt 60 -a ${nhour} -lt 21 ];then
  nvol=$(amixer set Master 1%-)
  sleep 1
elif [ ${nhour} -lt 23 ];then
  mpd stop
fi
大概就这意思吧 :em01
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
qingjinshi
帖子: 62
注册时间: 2009-05-29 10:59
来自: 上海·青浦·重固

Re: 求:音量自动调节程序

#5

帖子 qingjinshi » 2015-10-07 15:08

哇,多谢啊,这几天也稍微看了些shell编程,多少知道了些,然而自己还是搞不定。
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: 求:音量自动调节程序

#6

帖子 YeLee » 2015-10-08 13:43

其实shell不难的,判断和循环也就那几条规则,其它大部分都只是命令而已。 :Adore
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
回复