首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Stata | 发出提示音的几种方式

Stata | 发出提示音的几种方式

作者头像
PyStaData
发布2020-07-21 10:58:24
发布2020-07-21 10:58:24
2.4K0
举报
文章被收录于专栏:PyStaDataPyStaData

提出问题

在做一些耗时较长的工作或调试程序时,有没有想过让程序运行完发出提示?今天这篇文章就可以实现这个需求,来聊聊如何让 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 加以使用。

代码语言:javascript
复制
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 就可以使用:

代码语言:javascript
复制
shell Beep
!Beep
winexec Beep

Beep 还有一些参数可以使用,功能如下:

代码语言:javascript
复制
 -- 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 声音,主要函数和常量如下:

代码语言:javascript
复制
frequency指定声音的频率(赫兹),duration 指定持续毫秒数`

此外,还有一些播放次数和选择声音来源的设置,更详细的用法可以去看官方文档。接下来我们看几个用法:

代码语言:javascript
复制
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'..\Music\ding.wav',winsound.SND_FILENAME)

end

小结

以上就是我知道让 Stata 发出提示音的几种方法?你还有其他更好的方法吗?可以后台交流。综合来看,如开头说的,调用 Python 标准库 winsound 值得探索,可以弄出一些好玩的东西。

附录:配置环境变量

在设置中搜索环境变量,之后在编辑账户环境变量中找到 path 点击编辑-新建,然后粘贴进 Beep 所在的文件夹,点击确定。随后可以使用 win+R 输入 cmd 在命令行窗口输入 Beep 检查是否安装成功。动图演示如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyStaData 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 提出问题
  • 实现过程
    • 内置 beep 命令
    • 调用 Beep 程序
  • 调用 Python 的 winsound 库
  • 小结
  • 附录:配置环境变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档