此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.2)

1.9.13 声音

在大多数计算机系统上,Mathematica 不仅能产生图形,也能产生声音. Mathematica 处理图形和声音的方法是非常相似的. 例如,正如能使用 Plot[f,  x, xmin, xmax ] 画函数的图形一样,也能使用 Play[f,  t, 0, tmax ] 来 "演奏"一个函数. Play 采用函数来定义 声音的波形.函数值给出作为时间函数的声音的振幅.

演奏函数的声音

在适当的计算机系统上,其频率为 440Hz

Play 生成的声音可以有任何波形.例如,它们不必由谐波的集合组成. 一般,用户要演奏的振幅函数指定了相应于声音的瞬时信号.这个信号被转换 成电压,最后转换成位移. 注意振幅有时被定义成声音的峰值信号. 在 Mathematica 中,它总是作为时间函数的瞬时信号.

这里演奏一个更复杂的声音

Play 被设置成使得其中的时间变量总是用绝对时间秒来度量. 当声音被演奏时,振幅按每秒钟确定的次数被采样. 用户可以通过 设置选项 SampleRate 指定采样率.

指定声音的采样率

一般采样率越高,声音中的高频成份被演奏的越好.采样率  .人的声音系统一般能分辨的音频范围是 20~22 000Hz (这依赖于年龄和性别). 钢琴上 88 个音符的基本频率的范围是 27.5~4096Hz.
压缩音碟播放器的标准采样率是 44 100. 在一般电话系统中的有效采样率 在 8 000 左右.大部分计算机系统中,Mathematica 所用的采样率也在 8 000 左右.
可以用 Play[  ,   , ... ] 产生立体声. Mathematica 一般支持任意多的声道.

演奏采样的声音

函数 ListPlay 可以简单地给出一个值列表, 它可以作为按一定速率采样的声音大小.
Mathematica 实际演奏声音时,仅允许一定振幅范围的声音.在 PlayListPlay 中的选项 PlayRange 指定怎样对所给振幅进行处理以适应 给定的范围.该选项的设置与前面所讨论的图形选项 PlayRange 的设置类似.

指定声音振幅的调整

用缺省设置 PlayRange->Automatic 通常是方便的,应该看到明确指定了 PlayRangePlay 运行得会相当快,因为它不需要推导PlayRange.

重播声音

PlayListPlay 都返回 Sound 对象,它包含合成声音的过程.可以用函数 Show 去重新演奏一个 Sound 对象 ( Show 也用来重新显示图形).
Sound 对象的内部结构在 2.9.18 节中讨论.