Bumbershoot Software

RSS: https://bumbershootsoft.wordpress.com/feed/
Michael Martin 软件实验的伞形站点

在 ZX Spectrum 的 1 位蜂鸣器上实现数字音频

作者 Michael C. Martin 在 ZX Spectrum 系列收官篇中,详细记录如何用 Z80 汇编让 Spectrum 的 1 位蜂鸣器发出高质量数字音频。 核心原理:电路有电容、扬声器有质量,1 位信号从 0 跳 1 需要时间,中断信号即可产生更细腻波形。作者经历两次失败:先做固定 8kHz 采样率+可变 NOP 延迟,结果只得到尖锐的 8kHz 纯音;后引入 6502 风格的动态 NOP 跳转,仍只是勉强听出声音。 关键突破是研究模拟器 Fuse 的 Blip Buffer 音频库,测出蜂鸣器实际过渡时间为 97-170 微秒(比 8kHz 采样周期还长),从而把脉冲宽度调到 0-15 个 NOP(18-78 周期)。 最终方案:用 EXX 指令组换入影子寄存器腾出 B 寄存器做精确延迟,采样率提升到 16kHz;因 40KB 样本超出 Spectrum 32KB 可用 RAM,改为每条脉冲发两次回到 8kHz 等效;通过在跳转表中做减 5 乘 3 截断来"放大"音量;还要保存影子寄存器避免退出时系统崩溃。 文中给出完整 Z80 汇编(含 pcmstep 宏、跳转表、周期对齐 219/438 等),并附硬件验证:48K Spectrum 和 Omni 128 克隆机均运行成功,Fuse、EightyOne、Zesarux、Spectaculator、Clock Signal 等模拟器也都能复现。 文末对比 Dmitry Milk 的 Spectrum 声音引擎和 Michael J. Mahon 在 Apple IIe 上的 RTSynth 系统。对 retrocomputing 和芯片级音频工程读者有完整的一手调试路径与可复用代码,普通读者门槛较高但技术密度极高。
评论点赞收藏3 天前

ZX Spectrum:1位蜂鸣器的多声道和弦实验

在ZX Spectrum的1-bit蜂鸣器上实现了多声道和弦播放,软件混音方案效果远超琶音方案。作者用Z80精确周期计数,将三个频率计数器求和后取最高位驱动扬声器,338周期/循环,声音质感接近多声道系统。 PCM播放可行但失真严重,PWM方案未成功。
评论点赞收藏22 天前

ZX Spectrum 声音系统详解:蜂鸣器与 AY-3-8910 芯片编程

ZX Spectrum 声音编程详解:1位蜂鸣器通过BIOS和直接编程两种方式,以及AY-3-8910合成芯片的驱动方法。作者实测发现直接控制蜂鸣器时,视频电路会从RAM取像素数据导致CPU等待,产生杂音——16K机型RAM全在这个范围所以无解,48K需把代码移到$9000以上,且BASIC的CLEAR命令会把栈指针压到$7Fxx区域,还得额外处理。
评论点赞收藏58 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。