audacity - 如何从列表的元素中提取所有汽车?
问题描述
如果我在 Audacity 2.4.2 音轨上创建几个空标签(通过单击轨道上的各个点,并Ctrl-B
在每次单击后按下),奈奎斯特提示符会评估表达式
(cadar (aud-get-info "Labels"))
...到一个列表L,其元素又是 3 元素子列表。为了便于描述,我将这些 3 元素子列表称为“三元组”。
碰巧的是,对于这些三元组中的每一个,前两个元素都是相同的浮点数,最后一个元素是空字符串。
因此,这种列表L的典型实例可能以类似
((0.12345 0.12345 "") (6.78901 6.78901 "") (23.45678 23.45678 "") ...
如何创建一个包含此类列表L的所有第一个元素的新列表?
例如,如果我的初始列表L如上所示开始,则涉及列表L的奈奎斯特表达式将评估为如下所示的列表开头?
(0.12345 6.78901 23.45678 ...)
(我尝试过类似的东西(mapc (lambda (x) x) (cadar (aud-get-info "Labels")))
,不仅没有产生预期的结果,而且在某些情况下实际上导致在轨道上添加了几个新标签,我觉得这完全是令人困惑的。因此,尽管这听起来很奇怪,但我必须强调我正在寻找保持原始界面不变的解决方案,特别是不要在当前选择的轨道上添加任何新标签。)
解决方案
我正在使用当前的 Audacity 3.1.3 版本,但这对于 Audacity 2.4.2 应该都是一样的。
在 Nyquist Prompt 中,如果您使用 Debug 按钮运行:
(print (aud-get-info "Labels"))
您将看到类似于以下内容的输出:
((1 ((0.184322 0.184322 "") (0.654661 1.24576 "") (2.25424 2.25424 ""))))
第一个“1”是轨道号(零索引)。如果有两个标签轨道,它看起来像:
((1 ((0.184322 0.184322 "") (0.654661 1.24576 "") (2.25424 2.25424 "")))
(3 ((0.449153 0.449153 ""))))
每个标签的格式为:( 开始时间结束时间“标签文本”) (注意轨道 1 中的第二个标签是区域标签。)
因此 (aud-get-info "Labels") 返回的数据格式为:
(list (list track-num (list (first-label) (second-label) ...))
(list track-num (list (first-label) ...)))
要从每个轨道获取标签列表:
(let ((label-info (aud-get-info "Labels")))
(dolist (track label-info)
(print (second track))))
在上述情况下,它将打印到调试窗口:
((0.184322 0.184322 "") (0.654661 1.24576 "") (2.25424 2.25424 ""))
((0.449153 0.449153 ""))
要创建每个标签开始时间的列表:
(let ((output-list ())
(label-info (aud-get-info "Labels")))
(dolist (track label-info) ;step through each track in label-info
(setf labels (second track))
(dolist (label labels) ;step through each label in labels
(setf start-time (first label))
(push start-time output-list)))
;; Print the list:
(format nil "~a" output-list))
其中,在上面的例子中。印刷:
(0.449153 2.25424 0.654661 0.184322)
推荐阅读
- matplotlib - Matplotlib 散点图,来自 CSV 的数据是垂直绘制而不是散射
- testing - OKTA OAuth 登录页面的 Testcafe 问题
- javascript - 打字稿 - 索引签名交叉问题
- python - 在 python 扩展中安全地处理大量数字
- javascript - 如何在选中或未选中复选框时从数组中推送和删除项目?
- python - 使用 selenium 抓取网站的价格
- r - 由于奇点,R-3 未定义
- odoo - 类型错误:create() 在尝试创建新记录时恰好采用 2 个参数(给定 1 个)
- wordpress - 使用电话号码而不是用户名登录 WordPress
- reactjs - 如何知道我是否应该将 redux 用于我的应用程序或任何其他替代方案?