第一章 声音程序设计 1
1.1PC机说话与播放音乐的概念 1
1.1.1适合人视听感的程序 1
目录 1
1.2PC机有无附加硬件时发音的概念 2
1.3安装本书附带的磁盘 2
1.4TSENGINE 3
1.5本书附带的磁盘 3
1.5.1安装本书的磁盘 3
2.3Windows操作系统 5
2.3.1在程序管理器中生成新的图标组 5
2.1如何使PC机发声 5
2.2如何在程序中运用声音 5
第二章 声音编程技术和声音库 5
2.4执行应用程序 11
2.5本书内容的安排 11
2.6DOS下的声音文件 11
第三章 Generic1Windows程序 13
3.1Generic1.C和Generic2.C 13
3.2Generic1.C程序的文件 13
3.5Generic1.C中的WinMain函数 20
3.4Generic1.C的#include部分 20
3.3快速浏览Generic1 20
3.5.1WinMain函数的局部变量 21
3.5.2共用Generic1实例 21
3.5.3更新和注册Window类 21
3.5.4建立、更新和显示ProgramWindow程序窗口 22
3.5.5Generic1.C的消息循环 22
3.6Wndproc函数 23
3.6.1Wndproc函数的消息开关(Switch) 23
3.6.2处理WM_CREATE消息 24
3.6.3处理WM_PAINT消息 24
3.6.4处理WM_COMMAND消息 25
3.6.5处理WM_DESTROY消息 26
3.7源文件Generic1.rc 27
3.8模块定义文件Generic1.def 28
3.9用于Microsoft编译器的MAKE文件:Generic1.mak 28
3.9.1-C开关 29
3.9.2-G2sw开关 29
3.9.3-Ow开关 29
3.9.4-W3开关 29
3.9.5-Zp开关 30
3.10Generic1.mak的连接部分 30
3.12.1用MicrosoftC编译器编译并连接 31
3.11TegoWin.lib库 31
3.12NMAKE程序 31
3.12.2用Microsoft程序员工作平台(PWB)编译并连接 32
3.12.3Borland编译器的Make文件Generic1.mak 32
3.13执行Generic1.exe程序 32
3.13.1在Windows下执行Generic1 32
3.13.2为程序生成一个图标 32
3.13.3在DOS命令行中执行的Generic1 33
3.14编写基于Generic1.C格式的程序 33
4.3执行Hello程序 35
4.2用Borland编译器编译、连接Hello程序 35
4.1用Microsoft编译器编译、连接Hello程序 35
第四章 Hello.c程序 35
4.4Hello程序的文件 36
4.4.1Make文件Hello.mak 43
4.4.2源文件Hello.rc 43
4.4.3模块定义文件Hello.def 43
4.4.4#include文件Hello.h 43
4.4.5Hello.c文件 43
4.5DLL函数对静态sp_函数 44
4.6其它sp_函数的用法 44
4.7.3sp_OpenSession函数的第三个参数 45
4.7.2独立参数 45
4.7sp_OpenSession函数的参数 45
4.7.1声音文件Hello.ts 45
4.7.4文件类型参数 46
4.8sp_PlayF函数 46
4.9sp_START_OF_FILE和sp_END_OF_FILE标识符 47
4.10Hello.c中的其它sp_PlayF语句 48
4.11TSSoundEditor程序 48
4.11.1在退出程序时向用户说Good-Bye 49
4.11.2sp_PlayLabelF函数和sp_PlayTimeF函数 50
4.12Sections程序 51
4.12.1Sections程序的编译和连接 52
4.12.2Sections程序的运行 53
4.12.3Sections程序的声音段 53
4.12.4Sections程序的文件 53
4.12.5WM_CREATEcase 61
4.12.6播放整个声音文件 61
4.12.7播放声音文件的声音段 62
4.12.8WM_ABOUTcase 62
4.12.9WM_DESTROYcase 62
4.13Push2Say程序 63
4.13.2Push2Say程序的文件 64
4.13.1编译、连接Push2Say程序 64
4.13.3Push2Say程序的按钮 72
第五章 声音文件类型 75
5.1FileType程序 75
5.1.1编译连接FileType程序 76
5.1.2执行FileType程序 76
5.1.3FileType程序的文件 76
5.2FileType程序概述 88
5.2.1作为主窗口的对话框 88
5.1.4位图文件 88
5.2.2处理WM_COMMAND消息 89
5.2.3sp_OpenSession的其他返回值 91
5.2.4处理键盘信息 91
5.2.5About对话框 92
5.2.6SetFocus函数 92
5.2.7显示位图 92
5.2.8FileType的背景 94
第六章 动画 95
6.1Dog程序 95
6.1.1编译、连接和运行Dog程序 95
6.1.2什么是动画制作 96
6.1.4Dog程序文件 97
6.1.3建立位图 97
6.1.5SP_PlayF函数返回值的作用 110
6.1.6Dog.c的WinMain函数 110
6.1.7Dog.c的WndProc 110
6.1.7.1WM_CREATEcase 111
6.1.7.2WN_PAINTcase 111
6.1.7.3WM_DESTROYcase 112
6.1.7.4WM_CHARcase 113
6.1.7.5WM_LBUTTONDOWNcase 113
6.1.9PlayIt函数 114
6.1.8BarkingShow函数 114
6.1.10DisplayDogWithOpen和DisplayDogWithClose函数 116
6.2HearMe程序 116
6.2.1HearMe程序的文件 116
6.2.2编译、连接和运行HearMe程序 116
6.2.3播放Good-Bye和退出程序 129
6.2.4HearMe程序的面部表情 130
6.2.5放音与动画制作 130
6.2.6DisplayFaceWithOpen、DisplayFaceWithClose和DisplayFaceWithMid函数 132
6.3.1编译、连接和运行Dance程序 133
6.3.2Dance程序的文件 133
6.2.7改进HearMe程序 133
6.3Dance程序 133
6.3.3Dance程序的WndProc 149
6.3.4舞姿显示 150
6.3.5DanceShow函数 150
第七章 与语音同步移动文本 155
7.1Press程序 155
7.1.1编译连接并运行Press程序 155
7.1.2Press程序的文件 156
7.1.3Press.c的Wndproc函数 157
7.1.4PlayInstruction函数 158
7.2.1编译连接PlzWait程序 160
7.1.5与Press相似的程序 160
7.2PlzWait程序 160
7.2.2执行PlzWait程序 161
7.2.3PlzWait程序的文件 162
7.2.4PlzWait的WndProc函数 162
7.2.5SpeakShow函数 165
7.2.6DisplayPlease函数 167
7.2.7完成显示的另一个方法 169
7.2.8应用Paintbrush 169
7.2.9创建显示的建议 169
8.1.1编译、连接、运行Rotate程序 171
第八章 控制 171
8.1Rotate程序 171
8.1.2Rotate程序文件 172
8.1.3打开声音话路 186
8.1.4运行Rotate对话框 186
8.1.5初始化Rotate对话框 186
8.1.6确定Speed滚动条的最小值与最大值 187
8.1.7确定Speed滚动条的自然位置 187
8.1.8保存速度滚动条的当前位置 188
8.1.9装入Rotate对话框中用到的位图文件 188
8.1.10Rotate对话框的WM_PAINTCase 188
8.1.13ChangeSpeedwasRequested函数 189
8.1.11左移或右移滚动条 189
8.1.12拖动Speed滚动条 189
8.1.14sp_SetNewSpeed函数 190
8.1.15Rotate对话框的PLAY_PB按钮 190
8.1.16Rotate对话框的PLAY_BACKWARD_PBCase 191
8.1.17sp_PlayB函数 191
8.1.18ROTATERIGHT与ROTATELEFT函数 192
8.1.19关于sp_PlayB函数的进一步解释 192
8.1.20退出Rotate对话框 193
8.2Controls程序 193
8.2.1编译、连接和运行Controls程序 193
8.2.2Controls程序的文件 195
8.2.3Controls程序中的新sp_函数 211
8.3关于Controls程序 212
8.3.1在播放中显示声音文件的位置 212
8.3.2使用户能够停止播放 213
8.3.3使用户能在播放过程中改变播放速度 214
8.3.4选择播放组的大小 214
第九章 基于Generic2的程序——多任务 215
9.1Windows操作系统 215
9.1.1Generic1的消息循环 215
9.1.2Generic2的消息循环 216
9.2.1编译和连接Generic2程序 217
9.2Generic2程序 217
9.2.2执行Generic2程序 218
9.2.3Generic2文件 218
9.2.4Generic2的WinMain函数 226
9.2.5允许使用鼠标 227
9.2.6消息循环前的初始化 227
9.2.7在消息循环里的播放声音 228
9.2.8Generic2的WndProc函数 229
9.2.9禁止鼠标 229
9.3.2执行SayName程序 230
9.3.1编译和连接SayName程序 230
9.3SayName程序 230
9.2.10多例子 230
9.3.3SayName文件 231
9.3.4SayName的WinMain函数 240
9.3.5SayName的消息循环 240
9.3.6监视Windows对话 241
9.4Organ程序 242
9.41编译连接和执行Organ程序。 242
9.4.2Organ的文件 244
9.4.3Organ的WinMain函数 244
9.4.4Organ的消息循环 245
9.4.5初始化ScrollBar 246
9.4.6滚动条变化的结果 246
9.4.7处理键盘键 247
9.4.8演奏风琴 248
9.4.9处理按钮 248
9.4.10指令对话框 248
9.4.11Organ程序升级 249
9.5Control2程序 249
9.5.1编译、连接和执行Control2程序 249
9.5.2Control2文件 250
9.5.4打开声音话路 251
9.5.3程序主窗口对话框 251
9.5.5Control2的消息循环 252
9.5.6Control2的WM-CREATEcase 253
9.5.7Control2的WM-PAINTcase 253
9.5.8Control2的WM-CHARcase 254
9.5.9Control2的WM-HSCROLLcase 255
9.5.10处理按钮 255
9.5.11允许和禁止使用鼠标 256
第十章 独立程序 257
10.1改进Dog程序为独立程序 257
10.1.1TSlink实用程序 259
10.1.2运行独立Dog程序 260
10.2使用TSLabels 260
10.3参数__argv{} 260
10.4sp_OpenSession函数的第三个参数 261
10.5转换其它程序 261
10.6WhoAmI程序 261
10.6.1编译和连接WhoAmI程序 268
10.6.2将一个声音文件和WhoAmI程序连接起来 268
10.7LpszCmdline变量 268
11.2.1安装声卡的硬件和软件 271
11.2安装声卡 271
11.1Windows操作系统与声卡 271
第十一章 在Windows应用程序中使用声卡 271
11.2.2声卡的Windows驱动程序 272
11.3Hello2程序 274
11.3.1为Hello2程序录制.WAV文件 274
11.3.2编译、连接和运行Hello2程序 275
11.3.3Hello程序的文件 275
11.3.4Hello2的#include语句 285
11.3.5Hello2程序的Make文件 285
11.3.6Hello2程序的WinMain函数 286
11.3.7Hello2程序的WndProc函数 287
11.3.8打开Wave话路 289
11.3.9独立程序 290
11.3.10Hello2程序的WM_CHARcase 290
11.3.11Hello2程序的WM_COMMANDcase 291
11.3.12ts_PlayWaye函数 291
11.4Record程序 293
11.4.1编译,连接和运行Record程序 293
11.4.2Record程序的文件 294
11.4.3Record程序的WM_CREATEcase 295
11.4.4在WM_COMMANDcase下处理播放请求 296
11.4.5在WM_COMMANDcase下处理Record程序的请求 297
11.4.7停止录制和播放 299
11.4.6在已存在的WAV文件中插入新的录制 299
11.4.8录制的取样率和其它ts-函数 301
11.5Record2程序 301
11.5.1编译、连接和运行Record2程序 301
11.5.2Record2程序的文件 303
11.5.3Record2程序的WM_COMMANDcase 303
11.6Dog2程序 307
11.6.1编译、连接和Dog2运行程序 307
11.6.2Dog2程序的文件 307
11.7.2预置画面帧 309
11.7.1预置计时器 309
11.7建立一个异步显示的过程 309
11.6.3Dog2程序的动画制作 309
11.7.3显示时播放声音 312
11.7.4动画制作 313
11.7.5结束显示 313
11.8PressAny程序 314
11.8.1编译、连接和运行PressAny程序 314
11.8.2PressAny程序的文件 316
11.8.3PressAny程序的显示 316
11.9播放乐器数字化接口(MIDI)文件 319
11.9.1PlayMIDI程序的文件 319
11.9.3PlayMIDI程序的代码 320
11.9.2编译、连接和运行PlayMIDI程序 320
11.9.5合成WAV文件和MIDI文件 321
11.9.4其它ts_MIDI函数 321
第十二章 DOS下的声音C语言编程 323
12.1编写DOS下通过PC机内置扬声器播放声音的C语言程序 323
12.2MAKEexe.bat文件 323
12.3PlayTs.c程序 324
12.3.1生成TS声音文件 324
12.3.2编译、连接PlayTS程序 324
12.3.4声音文件命名 325
12.4PlayTS程序的C代码 325
12.3.3执行PlayTS.exe程序 325
12.4.1#include文件 328
12.4.2从DOS命令行拾取声音文件名 328
12.4.3打开一个声音话路(session) 328
12.4.4清键盘缓冲区 329
12.4.5播放声音文件 330
12.4.6循环播放 330
12.4.7中止while循环 331
12.4.8标准C函数_disable()与_enable() 331
12.4.9其它sp_play()函数 331
12.6.1编译、连接和执行PlayS程序 332
12.5内存管理与虚拟内存 332
12.6PlayS程序 332
12.6.2PlayS.C的代码 333
12.6.3使用S文件 333
12.7播放组的大小 333
12.8独立程序 334
12.8.1把PlayTS程序转换为独立的声音程序 334
12.10Tegosoft声音库的附加sp_函数 336
12.11Info4TS程序 336
12.9转换其它程序 336
12.8.2执行独立程序NiceDay 336
12.11.1编译,连接和执行Info4TS程序 337
12.12Info4TS.c程序的C代码 337
12.12.1禁止Ctrl-C 337
12.12.2从文件中提取信息 338
12.12.3显示播放的当前位置 338
12.13Info4S程序 339
12.13.1编译、连接和执行Info4S程序 339
12.13.2sp_get_函数族用于其它类型的声音文件(.WAV、.VOL、.SND) 339
12.15与声音同步移动文本 340
12.15.1编译、连接和执行SayPress程序 340
12.14改变播放速度 340
12.15.2SayPress程序的代码 341
12.15.3文字到语言 341
12.16动画、图形和播放 341
第十三章 DOS下的声卡(soundBlasterCard) 343
13.1执行PlayVOC程序 343
13.2用BorlandC编译器编译和连接PlayVOC 343
13.3用MicrosoftC编译器编译和连接PlayVOC 343
13.4PlayVOC代码 344
13.4.1装载和初始化SoundBlasterDriver程序 344
13.4.3播放声音文件 346
13.4.2将VOC文件装入内存 346
13.4.4停止播放 347
13.4.5释放.VOC缓冲区和声卡 347
13.5其它声霸卡函数 348
13.6用声霸卡在DOS下建立多媒体程序 350
附录 声音动态链接库DLL 351
F1.1使用DLL声音函数的优点 351
F1.1.1VisualBasic和其他Windows程序设计语言使用DLL声音库 351
F1.2使用DLL声音库的缺点 351
F1.2.1使用DLL声音库 351
F1.2.2使用DLL4snd.DLL动态连接库(DLL) 351