在 DOS 下使用Windows *.WAV 文件
“pkun520”通过精心收集,向本站投稿了6篇在 DOS 下使用Windows *.WAV 文件,下面是小编收集整理后的在 DOS 下使用Windows *.WAV 文件,供大家参考借鉴,希望可以帮助到有需要的朋友。
篇1:在 DOS 下使用Windows *.WAV 文件
在 DOS 下使用Windows *.WAV 文件
摘 要 该文介绍了Windows声波文件(*.WAV)的格式,然后分析了在DOS下不使用声音适配卡播放声波文件的关键问题,并给出了程序清单。
关键词 DOS应用软件开发 多媒体声波文件在DOS应用软件开发过程中,我们非常希望能在不附加任何硬件设备的条件下实现一些简单的多媒体功能。
过去许多文章中都讨论过Windows图像文件(*.BMP,*.PCX)的格式及其用于美化DOS程序界面的方法。在MS WIMDOWS3.1以后,Windows又提供了标准的声波文件(*.WAV),因此我们可以利用已有的声波文件镶嵌在自己的软件中,在DOS下实现语音或其它音响的播放,提高我们的软件质量。
一、声波文件格式分析
*.WAV文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAV文件的头四个字节便是“RIFF”。
常见的声波文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。这里,采样率是指:声波信号[模→数]转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声波模拟信号的积分值,在编程播放过程中我们认为它是扬声器在此周期单位时间段的音量。
*.WAV文件由文件头和数据体两大部分组成。其中文件头又分为RIFF/WAV文件标识段和声波数据格式说明段两部分。
WAV文件各部分内容及格式见附表。
对于单声道声波文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声波文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。
@@03A04400.GIF;*.WAV文件格式说明表@@
二、WAV文件编程
在没有声音适配卡的条件下,利用PC机内部扬声器发声需解决几个关键问题。
首先是如何产生按指定采样率要求的标准时间间隔段,以此为基础控制扬声器发声。
由于此时间段要求精确且非常短暂,因此实现起来有一定的难度。解决该问题的思路是修改8253定时器芯片的'计数器0(地址:040H)的初始值,改变系统时钟中断频率使其和采样率相一致,建立用户的时钟中断例程,最终产生标准的时间间隔段。但是在我们修改原有系统时钟中断(Int 08H)以后,最终必须恢复原有18.2Hz的系统时钟中断。
其次是如何快速地打开和关闭扬声器。解决这个问题的方法是直接向8255芯片端口(地址:061H)写操作。由于PC机机内扬声器发声只有开/闭两种状态,并不能控制音量大小。
因此还须考虑如何通过开闭扬声器来摸拟实现音量大小的控制。实现方法是:在每个时间单位内通过改变扬声器打开延时的长短代表音量的大小。例如:对于8Bit单声道声波文件,采样数据的最大值是0FFH,那么在每个标准时间单位内扬声器打开时间应为Delay=(采样值/256)*标准时间段长度。在此思想下可以将该方法简化,设扬声器延时只有0、1(时间单位)两种情况,即在每个时间单位内,如果采样值大于128则发声,如果采样值小于128就不发声。显然这样做是以抛弃大量声波信息为代价的,采用的信息量只占原有用信息的1/12
8,所以这种方法产生的音质较差。
三、程序实例
下面是一个能播放11.025KHz/8Bit/单声道声波文件的演示程序。关于使用*.WAV文件的其它细节,可通过阅读本程序得到。它采用了第二种延时方式,如果读者有兴趣提高音质可将其改成使用第一种方法,只需将newint08h中的声音开/关判断(与128比较)部分改成循环等待即可。
循环次数通过i=int(vol[counter]/256)*MAXTIMES得到。
式中MAXTIMES为延长一个标准时间单位的循环次数。
程度运行环境:486兼容机,MS DOS6.0,TC2.0编译系统。
/*/*/*
*.WAV文件播放程序 DEMO.C,石宁 1994.12
*/*/*/
#include “dos.h”
#include “stdio.h”
#include“string.h”
#define MAXSIZE 50000
struct wave-file_head /*声波*/
{ /*文件头*/
char riff_id[4];/*结构体*/
long int size0;
char wave-fmt[8];
lont int sizel;
int fmttag;
int c
[1] [2] [3]
篇2:在Windows下安装DOS
现在许多网友在使用WinNT/2K/XP等操作系统了,可是,当他们启动了WinNT/2K/XP后,发现许多DOS程序都无法在它上面运行了,而且也无法使用纯DOS了。这是怎么回事呢?
大家知道,WinNT/2K/XP中有个叫“命令提示符”的东东,表面看上去类似于Win3.x/9x中的MS-DOS窗口。然而,它们是完全不同的。 Win3.x/9x是运行于MS-DOS下的大型保护模式的GUI界面增强程序,而WinNT/2K/XP则是基于OS/2、NT构件的独立操作系统,因 此,它们之间有着本质的不同。真正的DOS是MS-DOS、PC-DOS等纯DOS,而WinNT/2K/XP中的“命令提示符”仅仅是个“WinNT系 统控制台”,其中带有一部分“DOS虚拟机”的功能。既然是虚拟的,效果自然没有真正的好。因此,当这个“虚拟的DOS”无法正常运行DOS程序时,只有 使用真正的DOS(例如MS-DOS 7.10)以运行它们。
由于WinNT/2K/XP不带有DOS,所以要想在安装了这些操作系统后又想用硬盘安装纯DOS系统的话,只能使用双启动。很多网友知道 WinNT/2K/XP启动时往往会出现一个菜单,可以从中选择要启动的操作系统。然而,有时此菜单中并没有“DOS”这个选项,甚至启动时根本没有出现 此启动菜单(如果在安装WinNT/2K/XP时选择保留原操作系统的话,WinNT/2K/XP的启动菜单中就会出现原来操作系统的选项)。那么该怎么 办呢?以下介绍一下在安装了WinNT/2K/XP后再安装DOS的方法。
DOS的启动需要DOS系统的引导扇区和启动文件。DOS安装程序在安装时会自动重建DOS的引导扇区和启动文件,这样安装后就可以启动DOS了。然而, 对于旧版本的DOS(如MS-DOS 6.x)而言,它们的安装程序会覆盖掉WinNT/2K/XP的引导信息,导致WinNT/2K/XP无法启动,
用DOS自带的SYS等命令传输也会是这 种情况。所以,为了使DOS和WinNT/2K/XP均能启动,应该用更好的方法,或者用能够自动做成DOS与WinNT/2K/XP双启动的DOS安装 程序来自动完成。
MS-DOS 7.10是目前功能最强大实用,且兼容性最好的DOS。而且由于它全面支持大硬盘、大内存、长文件名(LFN)、FAT32分区、可能直接启动Win3.x/9x等等,所以非常实用。而且它的安装程序就全面支持与WinNT/2K/XP并存。 “MS-DOS 7.10完整安装版” (可以在“DOS系统”中下载)在安装中可以让系统自动完成在WinNT/2K/XP下安装DOS完整版的操作,并自动实现DOS与WinNT/2K/XP的双启动。由于MS-DOS 7.10完整安装版非常强大实用,所以推荐大家使用。更详细信息可以在 纯MS-DOS 7.10完整安装版 一文中看到。
不过,如果硬盘的主分区(通常是C盘)是NTFS格式的,那是不能直接安装DOS的,因为DOS不直接支持NTFS格式。这时可以用一些多启动管理器来实现,例如SPFDISK等。在用多启动盘管理器设置好系统分区后,直接安装MS-DOS 7.10即可实现与WinNT/2K/XP的共存。
另外,除安装DOS或用真实DOS启动软盘启动DOS外,还可以利用虚拟软盘镜像的方法来启动DOS,也就是从WinNT/2K/XP的开机菜单中直接启动虚拟的DOS启动软盘中的DOS,相当于从DOS启动软盘启动。可以通过用VFloppy、GRUB for NTLDR等软件来实现,具体可以在 中国DOS联盟论坛 中看到。不过请注意,用虚拟软盘或真实软盘来启动到DOS都不是安装DOS,如果要真正安装DOS的话则需用DOS安装程序来自动安装。
篇3:在DOS下使用PCMCIA光驱Windows系统
很多朋友的笔记本电脑都使用的是PCMCIA光驱,但是假如遇到了系统崩溃, Windows系统 无法进入的时候,往往就无法使用PCMCIA光驱了,而很多系统安装盘和驱动程序又偏偏在光盘上,所以使安装的过程变得十分复杂和困难。不过事实上,我们在DOS下也同样可以引导
很多朋友的笔记本电脑都使用的是PCMCIA光驱,但是假如遇到了系统崩溃,Windows系统无法进入的时候,往往就无法使用PCMCIA光驱了。而很多系统安装盘和驱动程序又偏偏在光盘上,所以使安装的过程变得十分复杂和困难。不过事实上,我们在DOS下也同样可以引导和使用PCMCIA光驱,这样在遇到类似问题时便不会手忙脚乱了。
先下载一个驱动:“www.mydrivers.com/dir59/d23892.htm”。然后用Windows 98系统格式化一张启动盘,把Windows目录下的himem.sys和mscdex.exe文件Copy到软盘中。之后再把上面下载的驱动解压缩后得到PCMIDE目录Copy到软盘中。
做好后,用记事本打开并编辑软盘中的config.sys,内容如下:
[menu]
menuitem=CD, Start computer with CD-ROM support.
menuitem=PCMIDE, Start computer with PCMIDE CD-ROM support.
menudefault=CD,30
menucolor=7,0
[CD]
device=himem.sys /testmem:off
device=a:pcmidestatpcdm.sys/d:mscd001
[PCMIDE]
device=himem.sys /testmem:off
REM ****** (PCMCIA/ATAPI SERVICES) ********
DEVICE=A:PCMIDEPCMI80CL.SYS /Q9 /P0
DEVICE=A:PCMIDESTATPCDM.SYS /D:MSCD001
[COMMON]
files=10
buffers=10
dos=high,umb
stacks=9,256
lastdrive=z
然后,再用记事本打开并编辑autoexec.bat文件,在文件中加入“mscdex.exe/d:mscd001”命令行,
之后用这张软盘启动系统,出现引导选择菜单时,第一项为加载普通光驱,第二项为加载PCMCIA光驱。
编者按:在使用上述方法时,首先必须肯定PCMCIA是受笔记本电脑BIOS直接驱动的,就是说它在DOS下不必装任何驱动也能使用(比如像IBM的机器,PCMCIA和鼠标等都是由BIOS驱动,在DOS下不用加载驱动程序),否则便一定要找到PCMCIA的驱动。文章中所下载的驱动并不能完全适用所有的PCMCIA光驱,如果不能使用时便一定要找到相应品牌和型号的产品驱动。
原文转自:www.ltesting.net
篇4:在DOS下删除只读文件
在以前的DOS环境下,如果要删除某类文件,尤其是要删除带有“只读”属性的文件,系统总是要提示和询问你是否删除这类文件,看起来这样非常体贴,但实际上如果你正好不需要这种提醒,那么这种体贴的提示就变成一种烦人的打扰了。而今在Windows 的“命令提示符”窗口环境下,这样的烦恼将不复存在,
请看下面的例子:DEL C:MYDOC*.TXT /F/Q这个例子的作用是,默默地删除C盘
篇5:也谈下重放*.WAV文件
也谈下重放*.WAV文件
《计算机世界月刊》1995.3期曾刊登了《在DOS下使用Windows *.WAV文件》一文,根据《在》文中所附的源程序重放WAV文件,发现其音质确实较差;又用文中所提及的第二种延时方法,效果并无改善(大概是循环次数int(vol[counter]/256)≡0)。究其原因,可能是重放时将原WAV文件中127/128的有用信息抛弃了。
实际上,我们是可以把原来抛弃的127/128的`有用信息捡回来的。我们知道,WAV文件中所存的是采样时的电压幅值信号,只要将电压信号重现在PC的小喇叭上,就可以逼真地重放WAV文件了。
喇叭上发出的声音,其实就是驱动喇叭的电压变化。而对PC上的数字开关喇叭,只有“0”和“1”两种状态:“1”时喇叭纸盆向外运动,“0”则纸盆向内运动而回复正常位置。
但是向喇叭发送“1”信号时,喇叭向外运动有一个延迟时间,当喇叭还没到达最外位置时,立即再发送“0”信号,纸盆来不及运动到最外位置而转向向内运动。根据这一原理,我们控制喇叭向外运动的时间,就可以间接地控制纸盆运动的幅度,从而根据WAV文件的采样值来控制喇叭的声音大小。
对于PC时钟,显然来不及控制纸盆运动的幅度(即使对8253定时器重新编程,也无法使纸盆从正常位置到最外位置有若干个int08h发生),因此,对于WAV文件的延时,只能采用loop指令。实际上,Windows也正是用这种方法来延时的(以标准模式和增强模式分别启动时,Windows要重新建立延迟时间而发出测试的声音)。
程序中读WAV文件头信息和WAV数据与《在》文相同,发声子程序重新改写了。若发出的声音在频率上有失真,可以修改wave函数中cx的初值(386增强模式、386DX33微机上Windows使用0x13)。
程序运行环境:386兼容机,DOS6.2,Twrbo C 3.0编译系统。
#include
#include
#include
#include
#include
#define MAXSIZE 50000 お
unsigned int a[]=
{
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,
0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff81,0xff83,
0xff88,0xff8d,0xff92,0xff97,0xff9c,0xffa1,0xffa6,0xffab,
0xffb0,0xffb5,0xffba,0xffbf,0xffc4,0xffc9,0xffce,0xffd3,
[1] [2] [3]
篇6:在DOS窗口下如何使用U盘 制作Windows启动盘
闪存比原来的软盘有着一些无可比拟的优越性,如容量大、速度快、不易变质、不易损坏等等,加上近来价格的进一步下调,购买闪存以取代软盘的朋友也越来越多,甚至有些朋友在配电脑时已经不配置软驱了,一朋友问我,因Windwos 98系统崩溃,想在DOS启动后使用U盘,该如何使用?为了表现我这个“专业人员”的与众不同,于是带着这一问题去寻找在DOS状态下使用U盘的方法。
在一些新型的主板中,由于内置了闪存的驱动程序,可以直接在DOS下使用闪存,但一些较老的主板,如笔者的815主板就不支持在DOS下使用闪存。其实,我的光驱在DOS状态下也不能用,但在Windows启动盘支持下又能用,原因是装载了光驱驱动程序,既然这样,我们是不是也可以找一个独立的闪存驱动程序呢?于是我找了很多闪存制造厂商的网站都没有找到,后来在制作启动盘时,偶然发现了一个叫“自制超级通用MS-DOS 7.10启动盘”的小工具,网站上介绍说该工具可以支持FAT32大硬盘、大内存、中英文长文件名(LFN)、DOS开机(Logo画面)、NTFS驱动器、USB驱动器等等,下面我们就一步一步来制作一张这样的启动盘吧!
下载后得到一个Mdos71db.zip的压缩文件,解压后运行Makeboot.bat,按提示插入一空软盘,制作了一张DOS启动盘,
用这张启动盘启动计算机时发现有6个英文菜单,选择支持USB选项启动时,因加载的选项太多,速度特慢,甚至有时死机,特别是对一些不熟悉英文的朋友更是难以应用,为了简化启动选项,于是查看了说明文件,发现支持闪存的驱动程序为根目录下的Usbaspi.sys和Di1000dd.sys,总体积为28.6K,有了这个驱动程序就好办了,接下来我就介绍一下制作步骤:
1. 制作一张Windows启动盘(在控制面板中的“添加/删除程序”中,在此不再详细介绍)。
2. 将Usbaspi.sys和Di1000dd.sys这两个文件拷贝到刚才制作的启动盘上。
3. 用记事本打开启动盘下的Config.sys,将以下两行添加到“[CD]”的下面。
Device=usbaspi.sys
Device=Di1000dd.sys
保存退出,到此我们的支持U盘的Windows启动盘制作出来了。
大家不妨试试,先将U盘插入计算机USB接口,再用刚才制作的启动盘启动计算机,U盘是不是就可以用了呀,如有问题,可与我联系(yld8u8@163.net),利用此法制作的启动盘还可支持USB硬盘、光驱等USB设备。
【在 DOS 下使用Windows *.WAV 文件】相关文章:
3.linux下使用rsync实现文件目录同步linux操作系统






文档为doc格式