1个不稳定版本
0.1.0 | 2023年9月10日 |
---|
#650 in 音频
51KB
1.5K SLoC
Encue
Encue(发音为"on cue")是一个基于TUI的简单应用程序,用于运行音效提示。它主要设计用于剧院环境。
Encue从应用程序工作目录中存储的“脚本”中获取音效提示。此脚本应是一个名为script.yaml
的YAML文件,并包含引用相对于工作目录的音频文件的提示。
定义提示
脚本最重要的字段是cues
字段,它包含文件中所有提示的有序列表。
提示包含以下字段
- label: ... # A unique identifier for this cue used by other cues to reference this one
description: ... # OPTIONAL: a short description of the cue to display to the user
hint: ... # OPTIONAL: the line or visual cue that signals this cue
# ACTION: see below
提示动作
除了上述字段外,每个提示还必须包含一个动作指令。动作指令通常具有简短形式,带有单个参数,以及具有更多高级参数的长形式。
可能的动作指令包括
playback: <filename> # Play the file at `filename`
# OR
playback:
file: <filename>
volume: <x> # Volume (0-100) to start at (default: 100)
duration: <x> # OPTIONAL: only play the first `x` seconds of the file
fade_in: <x> # OPTIONAL: fade in for `x` seconds
playlist: <folder> # Play all files in `folder` as a playlist
# OR
playlist:
folder: ...
files: # OPTIONAL: list of files to play
- ...
- ... # Must specify at least one of `files` and `folder`
- ...
volume: ... # Volume (0-100) to start at (default: 100)
loop: <true|false> # Loop playlist (default: false)
shuffle: <true|false> # Shuffle files in playlist (default: false)
fade: <target> # fade cue <target>
# OR
fade:
target: <target>
volume: ... # Volume (0-100) to fade to (default: 0)
duration: ... # Number of seconds to fade (default: 5)
stop: <target> # immediately stop target cue
示例脚本文件
以下是一个有效的脚本文件的示例
cues:
- label: SQ1
description: my first sound cue
playback: my_sound_cue.mp3
- label: SQ2
description: fade out my first sound cue
fade:
target: SQ1
duration: 20
计划功能
encue
正在作为一个爱好/副项目积极开发。以下是我想尽快实现的一些功能
额外的UI元素
- 音频可视化器
- 时钟
- 包含进度条的活跃播放提示列表
- 显示提示加载状态
- 通过标签跳转到提示
额外的提示参数
- 播放列表中文件之间的淡入淡出
- 在设置的时间后淡出播放提示
依赖关系
~18–50MB
~614K SLoC