编程论坛's Archiver

RockCarry 发表于 2007-9-11 00:16

发一个 DOS 下利用 SoundBlaster 声卡播放 WAV 音频的程序吧

<P>*/ --------------------------------------------------------------------------------------<BR>*/ 出自: 编程中国  <a href="http://www.bc-cn.net/" target="_blank" >http://www.bc-cn.net</A><BR>*/ 作者: RockCarry    E-mail:<a href="mailto:rockcarry@163.com" target="_blank" >rockcarry@163.com</A>    <BR>*/ 时间: 2007-9-10  编程论坛首发<BR>*/ 声明: 尊重作者劳动,转载请保留本段文字<BR>*/ --------------------------------------------------------------------------------------</P>
<P>可能很多人都需要这个。<BR>最近有空搞了下这个,其实很早以前就实现过 DOS 下的声卡程序,只是代码写得很烂,而且一直都有bug,所以没有发布。<BR>现在重新看了下 SoundBlaster 的资料,还有就是 PC 的 DMAC 8237 和 PIC 8259,重新整理了下思路,把代码重写了,并且调试到现在,已经去除了很多bug,应该可以在 WinXP 平台下稳定的工作。<BR>目前这个还是按照 SB2.01 来写的,因此只能支持 8bit 单声道的 wave 音频播放,采用的是 DMA + 中断的方式,可以播放任意长度的音频文件。WinXP 只能支持到 SB2.01 的标准,而且播放的时候对 CPU 的占用很大,这我也没有办法,这不是我的程序的问题,而是 XP 下 DOS BOX对 SoundBlaster 支持的不好。建议安装下 VMSound 这个软件,可以在 WinXP 平台上获得更高的 SoundBlaster 声卡支持,并且能减少 CPU 资源的占用。<BR>以后可能会加入对更高版本的 SoundBlaster 声卡的支持。还有就是 MIDI,不过 MIDI 的实现还是比较麻烦的。<BR>当然目前这个只是一个 demo 程序,在后面我会定义好接口,以函数库的形式发布,也会加入更多的新特性。 </P>[attach]27354[/attach]<BR><BR><BR>

wangxy200696 发表于 2007-9-11 01:44

我以前也弄过声卡播放wav文件,如果不用中断技术是好弄的,但要播放背景音乐就难了,我反汇编过一个德国人(团体)写的一个多媒体软件,它是用保护模式写的,我到现在还在一直反汇编,想看看它到底是怎么播放背景音乐和显示高分辨率图片的,不过我纯dos反汇编到lidt就死机,v86下反汇编到一个int31h中断也死机了,到现在也没有弄好,一直郁闷中...

RockCarry 发表于 2007-9-11 18:05

wangxy200696 你解决问题的思路似乎不对。一般情况下,我都是不会考虑去反汇编别人的代码的。比较好的做法是,最大限度的占有相关的资料和代码,然后进行分析,搞懂原理,然后理清思路,从头实现。反汇编实在不可取,只能作为找不到资料和代码时的无奈选择。

wangxy200696 发表于 2007-9-11 19:51

<P>你说的有道理,不过我确实没有资料,没办法,只有反汇编了,我很喜欢反汇编,喜欢玩单机游戏,想改造游戏和软件的功能</P>

RockCarry 发表于 2007-10-16 16:43

SoundBlaster 的资料我有的,Creative 的完整原始版本。

ba_wang_mao 发表于 2007-10-20 09:07

在XP下我运行不了呀!

青格儿 发表于 2007-11-24 11:43

XP下可以运行啊!

夜礼服假面 发表于 2007-11-26 17:45

*** 作者被禁止或删除 内容自动屏蔽 ***

夜礼服假面 发表于 2007-11-27 13:37

*** 作者被禁止或删除 内容自动屏蔽 ***

RockCarry 发表于 2007-11-27 14:21

This code is only written for Turbo C compiler, please use Turbo C to compile and run this demo.

[[italic] 本帖最后由 RockCarry 于 2007-11-27 14:22 编辑 [/italic]]

夜礼服假面 发表于 2007-11-27 16:02

*** 作者被禁止或删除 内容自动屏蔽 ***

短笛 发表于 2008-4-11 11:44

先下去看看

kk4868 发表于 2008-4-11 12:11

回复 2# 的帖子

一般播放背景音乐需要使用中断的吧,不用中断我真的无法想象。。。
单纯播放背景音乐其实没有什么太困难的,设置好了硬件就OK了,让机器自己忙活去吧;稍微改动一下,循环播放也不难实现。
如果做前后台音乐切换,并且前台播放完之后后台续播,这个还是稍微复杂一点的。

kankan9670 发表于 2008-4-29 09:42

dad

dsd

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.