PC Speaker具备的功能

PC Speaker现在被称为“系统扬声器”或简称为“高音扬声器”,它诞生于1981年,是第一台IBM个人计算机。 作为几代大型计算机的继承人,他从一开始就只打算传递最简单的系统信号,而未能充分证明自己在主导家庭市场的娱乐节目上得分的能力。 它远不及专用游戏系统的声音芯片,在即将出现的高级声卡的阴影下逐渐消失,它得到了许多开发人员基于残差原理的支持-作为一种在没有更好的替代方案的情况下至少产生某种声音的选择。 除了极少数例外,通过扬声器播放了原本是为功能更强大的设备所组成的,经过简化的,完全单声的旋律版本。

System Beeps音乐专辑是使用旧游戏中的相同基本技术为PC Speaker编写的,并且根据复古计算机近次世代创造力的典型公式,旨在揭示多年来这种最简单的声音设备的未开发潜力。 实际上,您可以在Bandcamp或下面的视频中聆听结果并发表意见,以了解这次活动的成功,而进一步的文字将深入讲者的设备,项目历史以及为那些想了解更多的人获得类似结果的方法。


电脑音箱


从技术上讲,扬声器是小型扬声器或压电发射器,由系统计时器8253的一个通道直接控制,将1.19 MHz的输入时钟频率除以程序设置的16位值。 为了获得声音,使用了计数模式,在该模式下,计时器会产生曲折,即方波。 与诸如Apple IIZX Spectrum之类的较早或经济型计算机的声音相比,这是很小的但仍向前迈进了一步,后者的扬声器仅连接到单个I / O端口,并且处理器必须处理声音的产生。 使用计时器通道可使处理器简单地选择所需的音高并继续执行其他操作。 但是,处理器可以以编程方式合成各种性质和真实多音的声音。 PC扬声器的声音不能更大声或更安静,更柔和或更亮。 在没有恒定处理器干预的情况下,他所能做的就是以相同的不变音色以给定的音调吱吱声或不吱吱声。

播放声音效果或音乐时,处理器会以一定的间隔更新扬声器的状态-打开和关闭声音并更改其音高。 通常,这些更改发生在来自同一系统计时器的零通道的中断中。 这是标准的18.2 Hz,但游戏通常会根据游戏的不同,在30至200 Hz的范围内向上更改此值。

扬声器可用的有效频率范围约为100..2000赫兹。 尽管可以设置其他频率,但是在指定范围之外还会出现各种问题。 首先,使用过的扬声器本身不能很好地再现这些频率。 其次,高于2000 Hz时,可能的频率与音符的频率开始出现明显的偏差,并且当声音频率降到更新扬声器状态的频率以下时,更新开始进行得很晚-计时器不会更新分频器,直到前一个分频器的计数周期结束为止。

一声多音


由于扬声器只能再现一个声音通道或“声音”,即一次只能再现一个频率,并且对于音乐目的来说很小,因此程序员和音乐作者已经找到了获取虚构或真实复音的方法。 可以区分三种主要方法。

在第一种方法中,扬声器像往常一样产生声音,音乐播放器通过计时器以某个频率更新声音的频率,并且几乎不加载处理器。 但是同时,同时播放具有不同部分的两个或三个虚拟通道,并且在每次更新中,频率和声音开/关的值从它们交替输出到真实扬声器。 例如,在第一次更新中有两个声道时,声音从第一个虚拟声道输出,而在下一个-第二个声道输出。 在Lotus IIIXenon 2的游戏中类似地实现了复音。 由于通常一个虚拟通道会演奏低音部分,而另一个会演奏旋律,并且这些部分都有停顿,因此结果会交替出现相距遥远的音符,或交替出现音符和静音,这会导致持续的crack啪声,使人不舒服。 您可以通过拒绝某些部分的停顿来减少这种情况,例如在Golden Axe中 ,这会严重恶化表达方式(音乐中的停顿与音符一样重要),或者在其中一个停顿时禁用通道旋转,就像Stunts一样,可以使单音更加清晰。

第二种方法可以在卢卡斯艺术游戏中观察到,传统上人们会更加关注说话者版本音乐伴奏的质量。 通常,它们的声音主要是单声旋律,很少有插入的低音和节奏元素在时间上间隔开,并被第二个辅助通道(例如琶音或鼓声)的部分非常短而刺耳的声音打断。 换句话说,通道不会持续交替,而是仅在第二个语音淹没第一个语音的短时间内发生。 在猴子岛织机印第安纳琼斯的游戏中可以听到例子,也许在扎克麦克拉肯和外星人Mindbenders中安排最先进。 尽管它很有限,但它使复调的听觉错觉更加令人信服和令人愉悦。

在第三种方法中,扬声器自身不产生声音,而是用作数模编码器,通过该数模编码器再现由处理器编程的声音或数字化。 此过程需要大量的计算资源,几乎完全加载了常规的8086,因此该方法随着80386的发行而广受欢迎。以这种方式播放的声音质量较低,客观上也比少数电阻器制作的最简单的自制Covox差 ,但那是一个令人印象深刻的成就,其中, RealSound甚至申请了专利,技术也获得了再许可。

将扬声器变成DAC可以通过简单地使用禁用的帐户打开/关闭声音来实现,该帐户提供最简单的1位DAC,或者通过使用计时器的音频通道以系统计时器(PWM)设置的频率生成不同长度的短脉冲,从而将其变成更好的声音6位DAC。 第一个选项可以在Fantasy World DizzyHard Drivin的游戏中的多通道音乐中听到,第二个选项通常用于基于样本播放音乐,例如在Pinball Dreams中 。 它还用于过去的娱乐项目中,例如TEMUVSB-三通道声音芯片Tandy的软件仿真器和Sound Blaster的数字部分,允许在没有这些设备的情况下通过扬声器输出所需的声音(需要386SX及更高版本)。

专辑和创作故事


最初,我没有制作音乐专辑的计划。 创造性地搜索了XT时代的伪图形游戏样式的游戏项目的视听图像,为了获得最大的真实图像,这个想法不仅是编写样式,还包括在PC Speaker上真正可能的音乐,这是下一个经典的8位游戏音乐公式-循环的轨迹持续存在分钟。 我不想使用数字声音或软件合成,因为结果几乎不符合时代精神,并且没有特殊特征。 自从ZX Spectrum时代起,我便开始关注单声旋律的旋律,并且结识了《 乒乓》 ,《 星尘》得分3020等游戏。 既然有这种情况,我只想写单声音乐,但是由于这种安排,我得到了一些不同寻常的结果,这对作曲家来说是一个有吸引力的挑战。

音乐方面的工作远比游戏方面的工作多。 在构想的过程中,开发并发布了VSTi PCSPE插件,制作了几首旋律草图和旧曲目的试用封面版本,以开发一种使用单声安排并找到声音通用解决方案的技术。 后来很清楚,结果仍然与游戏项目的愿景不符,并且项目本身逐渐走向了桌面。 但是音乐材料仍然存在,潜在的声音表明,最好将它作为MS-DOS的一小部分单独的音乐集进行整理,至少可以证明该插件的功能。

它并没有很快解决,事情拖延了,几首歌发展成了几十首歌,一系列随机旋律演变成一张主题专辑,计划改变了,截止日期改变了。 结果,从2017年7月到2019年1月,这个想法的完成花费了一年半的时间。 在这段时间里,我设法制作了AONDEMO为其编写了一个音轨(AON音铁几乎重复了PC Speaker ),并参与了Planet X3游戏的声音代码和实用程序的开发,其中还包括为该系列编写的首个音轨作为标题音轨。

该项目的完成不断地被推迟,越来越多的轨道被添加到它,直到所有最初的想法和草图被完全用尽。 最终,专辑包括23首曲目,分为三组。

A面包含16条主要音轨,或多或少地通过共同的主题和声音连接。 在大多数情况下,它们是专为专辑制作的,是从零开始或基于能很好地进行单声安排的旧材料。 在我看来,这一组的选择原则是独创的,并且与其他途径相比,在选定的限制中的安排更为成功。

B面包含6条音轨,大概不太成功,这些音轨是我在其他平台上的旧作品的翻版,或者是基于或多或少精心制作的旧素材,这些素材最初采用的格式完全不同-从XM模块到流行朋克歌曲。 轨道,已经在Planet X3中点亮,也包括在此处。

Side X包含了来自AONDEMO的曲目, 进行了最少的修改。 这种分离是幽默的笑话。

专辑本身以MS-DOS 3.3及更高版本的播放器程序的形式制成,可在具有至少256KB RAM和CGA视频适配器的 IBM PC XT上运行。 由于原始CGA卡会受到所谓的“雪”(即在光束沿光栅移动时尝试更新屏幕时出现的视觉伪像)的影响,因此该程序以两种版本提供-sbx.com,没有频谱分析仪的作用,但也没有积雪,以及sb.com效果。 为了使分析器更流畅地渲染,希望有一个功能更强大的处理器。 当然,更多现代计算机也可以使用,例如,可以从USB下载FreeDOS并模拟DosBox

音乐成分


专辑没有使用任何软件技巧,例如由处理器合成声音并将扬声器用作DAC。 该技术是最传统的技术-由系统计时器生成的严格为单声道的方波,具有相对较大的音调更新频率,但并非超出120 Hz的普通频率,这是经典XT的强大功能,并留有足够的处理器时间来执行除播放音乐之外的其他任务。

整个秘密在于一种特殊的旋律和编曲方式。 在这里,以前在各个相关领域的经验很有帮助-为过去的声音芯片编写经典的Chiptune的经验,在这种情况下,您通常必须通过交替和重叠的方法将一个通道中的多个部分组合在一起; 具有开发用于旧计算机上游戏的声音引擎的经验,其中声音效果从音乐中借用了渠道,使音乐被淹没; 以及为驱动器创作原创音乐的经验。 后来发现,实际上,我开发了Lucas Art使用的扬声器音乐的方法,尽管在我刚开始的时候,我只听到了Monkey Island的主题。

几乎在工作开始时就需要解决的有趣问题之一是鼓和打击乐器。 在Chiptune中,它们通常是使用噪声通道制造的,但是不可能以几十到几百赫兹的刷新率在扬声器上损失噪声。

低音和底鼓在没有噪音的情况下工作良好,表现为以不同的速度和持续时间简单滑下的形式-从低音开始,底鼓更快,更短,从高音开始,底鼓变得更慢,更真实。 但是,主要的打击乐器,小型(工作)鼓,以简单的滑梯形式听起来并不令人信服,并且无法切透装载有其他元素的混合物。 在这里,技巧就起作用了,通常是在SIDAY-3-8910上模拟小军鼓时发现的-幻灯片开始时的短期静音,产生了分数的效果。 这使声音与其他打击乐器完全不同,并且还提高了鼓在混音中的可见度。 结合真实扬声器的共鸣特性尤其可以证明这一点。

由于缺乏噪音,我不得不放弃任何仇恨。 为了获得更加多样化和有趣的声音,鼓乐器在音轨之间有所不同。 在更长的某个地方,突然的某个地方,它们听起来更高或更低,有时还会出现其他元素。

在处理音乐的过程中,已经开发了适用于为任何没有音量控制的单声道设备编写单声道安排的通用技术,无论该单声道设备是音乐卡,CNC机器还是Tesla线圈。 其中包括:

  • 当据称较大的声音掩盖了较安静的声音时,人类的听觉特征。 例如,敲鼓声或中央旋律音符-它们分散了注意力,并使其他部分的短期消失不明显。
  • 音符之间有足够的停顿的安排。 在介绍部分中尤其如此。 在这些时刻,这些组件分别清晰可见,并有机会被记住,因此在音轨的发展过程中,当排列变得更密集时,即使混合物中几乎听不到这些元素,大脑也会继续识别这些元素的存在。
  • 旋律的组成,其中很大一部分音符属于弱的份额,以及这些音符的开头相对于电表网格的偏移。 这允许旋律音符在伴奏中暂停,从而减少声部的重叠。 特别是,这可以使您为低音部分的音符留出一点空间,这对于获得强劲的分享很重要。 这使旋律具有很强的复制力,创造出一种时髦的感觉,这对他们的兴趣是有益的。
  • 普通的Chiptune琶音有不同的速度,包括120 Hz时非常快的两音琶音。 速度的变化使您可以创建具有不同声音的编曲元素,这在没有音色表现手法的情况下很有帮助-毕竟,所有音符都具有相同的方波声音。
  • 在扩展声音中反复停顿,例如在独奏乐器中,可以听到其他虚拟通道。 通常,此类乐器从连续的声音开始,然后出现停顿,其频率和长度逐渐增加,这是对音量下降的一种模仿。
  • 音符持续时间的变化,包括很短的音符,以模拟音量的差异。 它用于强调低音部分中的波纹,在这种情况下,落在强拍上的音符会持续较长的时间,并且当具有相同音符的声部回声但持续时间明显较短时,也会产生回声效果。



技术组成


专辑工作的另一个关键点是使用现代工具,使其更加舒适和有效。 这是我所熟悉的现代数字工作室Reaper (类似于FL StudioCubase等程序)和一组自行开发的VST插件。



这种方法是实验性的,对于创建真正的芯片调谐器(即打算在真实设备上播放的音乐)而言,完全是非常规的-通常为此目的,需要使用特殊的跟踪程序或手动填充音乐数据。 当然,可以通过更经典的方法(针对Planet X3 )获得相同的结果,但是这需要更多的精力和从创意过程到纯技术要点的定期转移。


VSTi插件PCSPE专门用于创建扬声器音乐。 它模拟PC Speaker硬件,使您可以立即听到接近真实的结果,并且还实现了类似于在各种声音芯片的跟踪器中使用的Chiptune乐器系统。 (), , MML ( PLAY BASIC ). , , , .

MIDI - . . ( ) . , 2, — 6, 8 — , , . .

. : , , . . .

PCSPE , , . . DAW .

VSTiChipArp , . MIDI - MIDI -, — MIDI - . , , - . , . , , .

PCSPE DosBox , . , , . , , .. «». NadIR — , .

用料


CC-BY , , Reaper. , , , . :

-
Reaper
PCSPE
ChipArp

Source: https://habr.com/ru/post/zh-CN438448/


All Articles