如何再现类似 C64 的声音?
我自己做了一些研究,发现 SID 芯片只有很少的硬件支持合成功能。 包括三个音频振荡器,具有四种可能的波形(锯齿波、三角波、脉冲、噪声),以及 ADSR 包络和环形调制器。 配有振荡器同步和环形调制器。 另请阅读,还有一种方法可以播放单个 PCM 声音。
虽然一切都很小,但我仍然从电视机里听到了很多不同的声音。 它们是如何组合起来产生如此多样的音频的?
具体来说,我想知道如何组合这些组件来产生类似吉他、钢琴或鼓的音频? 另一个有趣的事情是 C64 特有的不同嗡嗡声和声音。
I did some of my own research and found out that SID-chips had only few hardware supported synthesizing features. Including three audio oscillators with four possible waveforms (sawtooth, triangle, pulse, noise), with ADSR envelopes and ring modulators. Accompanied with oscillator sync and ring modulators. Also read there was a way to play single PCM sound as well.
It is all so little, but still I heard lots of different sounds from my TV sets. How were they combined to produce all that variety of audio?
To give some specifics, I'd like to know how to combine those components to produce guitar, piano or drum -like audio? Another interesting things would be different buzzes and sounds specific to C64.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
查看一些与在 C64 上制作音乐相关的文档:
http://sid.kubarth。 com/articles.html
Take a look at some of these docs related to producing music on the C64:
http://sid.kubarth.com/articles.html
您所描述的这种类型的音乐属于“芯片音乐”类别。 我建议您查看一些现代追踪器,例如 MilkyTracker,它们用于创建这种风格的音乐。 有像 libmodplug 这样的库允许您在软件中播放跟踪器。
This type of music you are describing falls into the category of "chiptunes". I'd recommend checking out some modern trackers like MilkyTracker, which are used to create music in this style. There are libraries like libmodplug that allow you to play tracker in your software.
查看一些 C64 模拟器。 我读到其中一些声音再现 100% 准确,忠实于原声。
Check out some of the C64 emulators out there. I've read that some of them are 100% accurate in ther sound reproduction, true to the original.
作为在 C64 上实际编写了 2 个不同跟踪器的人,我想我可以很好地回答你的问题。
首先,您给出的规格是正确的。 但事实是:乐器的波形、音调、脉冲宽度和滤波器都不需要固定(截止、类型和谐振可以即时更改)。 因此,这与您可能知道的一些复古合成器 VST 乐器不同,在这些乐器中,您的参数大多是固定的。
C64 跟踪器通常有相应的表。 波形和琶音表用于在演奏音符时调整波形和音高。 还使用了脉冲和滤波器表。 根据可以花费多少处理时间,SID 寄存器被写入 @25Hz 或更高(某些轨道达到所谓的 8 速,即 400Hz),PAL 系统上的标准是 50Hz(屏幕刷新率)。
因此,通过以稍微低一点甚至(对于低音)接近音乐频率的速率改变波形、音调、脉冲和滤波器,您可以仅用一个声音发出非常漂亮的声音。 然后想象一下:3 个通道同时发出 3 种美妙的声音:)
至于钢琴和吉他:我很想得到一个听起来确实像那样的波表。 正如其他人指出的那样:SID 缺少谐波 - 尽管您可以使用 HardSync - 它同步两个声音以添加某种谐波,但到目前为止我还没有管理过真实的铜管乐器、钢琴或弦乐。 关于这一点:SID 听起来像 SID。
关于样本播放 - 您可能不相信,但几十年后,一些演示场景爱好者已经设法找到一种方法,通过 PWM 在一个声音上播放样本,并且仍然能够演奏 SID 乐器并在其他 2 个声音上使用滤波器。 这些样本的最大采样率为 12kHz,而且只有 8 位(如果我错了,请纠正我),但这听起来确实很棒。 示例:https://www.youtube.com/watch?v=8_M260qMbWA
至总结一下:SID声音是如此独特,因为参数以25-400Hz的速率调整,通常为50Hz。 事实上,该芯片在 1982 年发布时的功能就远远领先于业界。
As somebody who actually programmed 2 different Trackers on the C64 I guess I can answer your question fairly well.
First off, you are right on the specs you gave. But the thing is: neither the waveform needs to be fixed for an instrument, nor the pitch, nor pulsewidth, nor filters (cutoff, type and resonance can be changed on the fly). So that's different to some retro-synth VST instruments you may know, where you have mostly fixed parameters.
A C64 tracker normally has tables for that. A wave-and-arpeggio-table is used to adjust waveform and pitch during playing a note. Also there are pulse and filter tables used. Depending on how much processing time can be spent, the SID registers are written to @25Hz or more (some tracks go up to socalled 8-speed, which is 400Hz), standard on PAL systems is 50Hz (screen refresh rate).
So by changing waveform, pitch, pulse and filter at a rate just a little lower or even (for bass) close to the musical frequencies, you can produce really nifty sounds from just one voice. Then imagine: 3 channels makes 3 nifty sounds at the same time :)
As for Pianos and Guitars: I'd love to get a wavetable that really sounds like that. As others pointed out: SID is missing the harmonics - although you may use HardSync - which synchronizes two voices to add some kind of harmonics, but I have not managed real-sounding brass, piano or strings so far. On that point: SID sounds like SID.
Regarding sample playback - you may not believe it, but after decades some demo scene enthusiasts have managed to find a way to play back samples via PWM on one voice and still be able to play SID instruments and use the filters on the other 2 voices. Still those samples have a max of 12kHz sampling rate and afaik are only 8 bit (please correct me if I'm wrong), but this really sounds great. Example: https://www.youtube.com/watch?v=8_M260qMbWA
To sum it up: SID sounds are so unique, because the Parameters are adjusted at rates of 25-400Hz, typically 50Hz. And actually the features of that chip were way ahead of the industry in 1982 when it was released.
我曾经在 C64 上为游戏、演示甚至服务编写音乐(我什至编写了官方 QuantumLink 主题)。 至于你的问题,四种不同的波形通常与同步和振铃模式重叠(振铃频率较低,因为它在不同版本的 SID 芯片上是不可预测的),有时会干净地使用。
例如,典型的“军鼓”声音将由具有非常快的起音和延音的噪声波形组成,并且根据您是否想要鼓槌声或刷子声,可以是非常快的衰减和适度短暂的释放,或者是短暂的衰减并且释放速度较慢。
获得正确的声音通常需要反复试验,而且局限性相当大。 由于简单的波形没有可叠加的谐波波形,你真的永远无法达到钢琴或吉他声音的程度,你能得到的最好的声音就是听起来像蜂鸣声的东西,听起来像马林巴琴的东西,以及听起来像小军鼓的东西。
扩展声音最常用的技巧之一是通过快速机器代码播放例程来完成,该例程可以快速改变声音上播放的音符,从而给人一种更饱满、和谐的音调的印象。 我们只是称之为琶音,尽管每秒有 10 到 12 个音符变化,它听起来更像是一个嗡嗡作响的和弦。
至于采样波形,它们仅作为单比特和后来的4比特样本提供。 尽管我们尽了最大努力,但这些声音听起来很糟糕,因为 64 上的样本回放方法基本上是播放白噪声波形并快速改变 SID 芯片上的音量以产生上升和下降的波形。 做得足够快,听起来有点像原始声音,在静态收音机上调谐不良。
我建议你抓住一个用于 PC 的 C64 模拟器(CCS64 是一个很好的模拟器)和 64 BASIC 编程指南,然后就可以玩一玩……SID 芯片完全可以从 BASIC 进行操作。
总而言之,我们是如何在 C64 上获得所有这些钢琴和吉他声音的? 我们没有,真的。
I used to write music on the C64 for games, demos and even services (I wrote the official QuantumLink theme, even). As for your question, the four different waveforms were typically overlaid with the sync and ring mods (less often ring, because it was unpredictable on different versions of the SID chip), and sometimes used cleanly.
For example, a typical 'snare' sound would be composed of a noise waveform with a very fast attack and sustain, and depending on whether you wanted a drumstick or brush sound, either a very fast decay and moderately short release, or a short decay and slower release.
Getting the right sound was typically trial and error, and the limitations were pretty heavy. You really never got to the point of piano or guitar sound due to the simple waveforms without overlayable harmonic waveforms, about the best you could get was things that sounded beepy, things that sounded marimba-y, and things that sounded like a snare drum.
One of the tricks used most often to extend sound was done with fast machine code playback routines that could change the played notes on voices so quickly as to give the impression of a fuller, harmonic tone. We just called it arpeggiation, although at 10 to 12 note changes a second it sounded more like a buzzy chord.
As for the sampled waveforms, they were only available as single bit and later 4 bit samples. These sounded terrible despite our best attempts, because basically the method of playback for a sample on the 64 was to play a white noise waveform and rapidly alter the volume on the SID chip to produce a rising and falling wave. Do it fast enough and it sort of sounds like the original sound, poorly tuned in on a staticky radio.
I suggest you grab hold of a C64 emulator for the PC (CCS64 is a good one) and a 64 BASIC programming guide and just play around.... the SID chip is entirely manipulatable from BASIC.
To sum up, how did we get all of those piano and guitar sounds on a C64? We didn't, really.