Stata | 发出提示音的几种方式
提出问题
在做一些耗时较长的工作或调试程序时,有没有想过让程序运行完发出提示?今天这篇文章就可以实现这个需求,来聊聊如何让 Stata 发出提示音。声明一下,我是在 Windows 10 (64-bit) + Stata/MP 16.0 + Python 3.7 环境下运行的代码,在不同系统和版本的程序下运行可能不太顺畅,如果你用自己的环境玩得不太顺畅,就放弃吧,当成 tip 了解下就好。如果实在有兴趣,可以自行搜索或者和我交流。
三种方法分别为内置命令 beep
、调用 Beep.exe
程序和调用 Python 的 winsound
模块。最后一种方式值得探索,winsound
中的 PlaySound
函数可以播放音乐,想着可以结合爬虫,爬取排行榜和下载音乐,最终用 Stata 封装一个播放最新排行榜音乐的命令。
我已经将过程中需要的资料打包备索,公众号后台回复【Beep】即可获取本文涉及的安装包、代码和其他文件。
实现过程
内置 beep
命令
在 Stata 命令窗口输入 beep
即可,可以很方便的放在程序里面起到提示作用。比如下面的用法,程序运行到 50% 的时候发出提示音。当然,还有更多的用途,可以根据你的 workflow 加以使用。
forvalues i = 0(5)100{
dis "程序已运行 `i' %"
if `i' == 50{
beep
dis in y "提醒一下"
}
sleep 300
}
调用 Beep 程序
Beep.exe is a tiny Windows command line utility that uses the internal PC speaker to make a sound. This can be useful in situations when you do not have a sound card or speakers are not connected or turned on.
使用前需要简单配置:前往 RL Vision 下载Beep.exe
程序(40KB),之后是程序路径管理,有两个选择:
- 将
Beep.exe
放在当前路径,这样Beep.exe
随路径走才能生效; - 将
Beep.exe
加入环境环境变量(环境变量的配置见附录),这样一次配置后面就可以直接调用了,加入环境变量后重启 Stata 才能生效。
在把程序路径配置好之后,使用 {shell|!}
或者 winexec
就可以使用:
shell Beep
!Beep
winexec Beep
Beep
还有一些参数可以使用,功能如下:
-- Usage --
Beep.exe {tone duration [/s sleep]} {...} [/r repeat] [/d]
tone Tone to play in Hz
duration Time in Ms to play tone
sleep Time in Ms to sleep after previous tone (optional)
* These 3 arguments can be repeated to play multiple tones.
* Time is measured in milliseconds (Ms). 1000 Ms = 1 second.
repeat Number of times to play entire sequence. (optional)
* Default is to play only once.
* Enter 0 for unlimited repeats (Break with Ctrl+C)
/d Print on screen what is playing (optional)
Note: If you don't enter any arguments, a "notification"
sound is played.
-- Examples --
Notification (the default sound):
beep.exe 240 10 /s 50 280 10 /s 50 340 10
Alarm:
beep.exe 300 15 310 15 320 15 330 15 340 15 350 15 360 15 370 15 380 15 390 15 400 15 390 15 380 15 370 15 360 15 350 15 340 15 330 15 320 15 310 15 300 15
调用 Python 的 winsound
库
Python 的标准库 winsound
可以播放 Windows 声音,主要函数和常量如下:
frequency指定声音的频率(赫兹),duration 指定持续毫秒数`
此外,还有一些播放次数和选择声音来源的设置,更详细的用法可以去看官方文档。接下来我们看几个用法:
Python:
import winsound
# 播放 Windows 退出提示音
winsound.PlaySound("SystemExit", winsound.SND_ALIAS)
# 循环、升调
freq = 100
dur = 50
for i in range(0, 10):
winsound.Beep(freq, dur)
freq += 100
dur += 80
# 播放自定义音乐
# 注意要是 `wav` 格式
winsound.PlaySound(r'..Musicding.wav',winsound.SND_FILENAME)
end
小结
以上就是我知道让 Stata 发出提示音的几种方法?你还有其他更好的方法吗?可以后台交流。综合来看,如开头说的,调用 Python 标准库 winsound
值得探索,可以弄出一些好玩的东西。
附录:配置环境变量
在设置中搜索环境变量,之后在编辑账户环境变量中找到 path 点击编辑-新建,然后粘贴进 Beep 所在的文件夹,点击确定。随后可以使用 win+R 输入 cmd
在命令行窗口输入 Beep
检查是否安装成功。动图演示如下:
- 【设计模式】——工厂方法FactoryMethod
- 前端翻译:Activating Browser Modes with Doctype
- JS魔法堂:doctype我们应该了解的基础知识
- CentOS6.5菜鸟之旅:安装Realtek无线网卡驱动
- CentOS6.5菜鸟之旅:U盘安装CentOS64位
- 人工智能创造新型态工作 制造业受冲击
- ASP.NET Core File Providers
- JS魔法堂之实战:纯前端的图片预览
- 域名publica.com近50万交易 买家身份浮出水面
- Vim杂记:Sublime的配色方案
- Vim杂记:markdown插件
- 【手把手教你全文检索】Apache Lucene初探
- 微信小程序的“小游戏” 是什么?
- CentOS6.5菜鸟之旅:中文编辑器忍痛放弃Sublime
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法