⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4537.html

📁 VB技巧问答10000例 VB技巧问答10000例
💻 HTML
字号:
<html>
  <head>
    <title>东西多了点..</title>
  </head>
  <body bgcolor="#FFFFFF" vlink="#808080">
    <center>
      <h1>东西多了点..</h1>
    </center>
<hr size=7 width=75%>

<hr size=7 width=75%><p>
Posted by <a href="mailto:honey0@tcts1.seed.net.tw">Honey</a> on August 09, 1998 at 16:46:41:<p>
In Reply to: <a href="4487.html">教教我吧!要如何绘出声音的波形?</a> posted by Bomber on August 07, 1998 at 17:27:58:<p>
我是没听过有那种能绘出波形的函式 不过可以自己写喔<br>嗯~废话少说 首先提供你一些声音档(Wav档)的一些必要资料<p>$每个声音档都有 44 bytes 的档头 <br> 1~20  bytes 的部分储存的是 声档格式<br>21~22  bytes 的部分储存的是 压缩格式<br>23~24  bytes 的部分储存的是 声道数 <br>25~28  bytes 的部分储存的是 每秒取样量<br>29~32  bytes 的部分储存的是 每秒资料量<br>33~34  bytes 的部分储存的是  ~我忘了 但是并不重要<br>35~36  bytes 的部分储存的是 位元数<br>37~40  bytes 的部分储存的是 data 字串<br>41~44  bytes 的部分储存的是 实际声档大小<br>45 bytes 以后是储存的才是实际声档内容<p>$ Wav 档是以二进位(随机档)模式储存<br>8位元的音档每笔资料长度是 8 Bit(1 Bytes)<br>储存数值有 2^8个 范围在0~255<br>16位元的音档每笔资料长度是 16 Bit(2 Bytes)<br>储存数值有 2^16个 范围在-32768~32767<p><br>$绘制波形前 得先取得音档 位元数 才能判断每笔资<br>料长度 通常是用以下程式码取得<p>Dim StrFileName As String '储存档名<br>Dim IntCost As Integer '储存 位元数<br>StrFileName="C:\windows\media\ding.wav"<br>'设定要读取的档案<br>open StrfileName For Random As #1 _<br>Len = 2 '设定每笔资料长度为 2 bytes<br>get #1,18,IntCost '取得第18笔资料 _<br>即档头35~36 bytes位置的"位元数"<p>'注:如果每笔资料长度为 2 bytes _ <br>储存变数需为Integer型态<br>如果每笔资料长度为 1 bytes _ <br>储存变数需为byte型态 _<br>如果每笔资料长度为 N bytes _ <br>储存变数可宣告为String*N<br>close #1<p>$如果IntCost=16 通常是用以下程式码读取 <br>并绘制图形<br>dim StrFileName as String '储存档名<br>dim DblSize as double '储存实际声档大小<br>dim Int16BitPoint() as integer<br>dim LngVariable_K as long<br>dim LngVariable_I as long <br>StrFileName="C:\windows\media\hoversel.wav" _<br> '设定要读取的档案<p>'#以下部分是将实际声档资料读入阵列#<br>open StrfileName for random as #2 _<br>len = 2'每笔资料位元组数  <br>    <br> DblSize = lof(2)-44<br> '实际档案大小(Bytes) _<br> 前44Bytes是档头*/<p> LngVariable_K = DblSize/2'总资料笔数<br> redim Int16BitPoint(LngVariable_K)<br> '/*定义阵列大小*/<br> <br>        <br> LngVariable_I = 1<br> for LngVariable_I = 1 to LngVariable_K<br>  get #2, LngVariable_I + 22, Int16BitPoint( _<br>  LngVariable_I)'/*从45bytte开始取样*/<br>  doevents            <br> next <br>    <br>close #2 <p>'#以下是绘图的部分#<p>picture1.scale(0,-32768)-(DblSize,32767)<br>'先定义画布座标 通常用物件Picture<p>picture1.Line (0,0)-(LngVariable_K,0), _<br>rgb(0, 0, 0) '画中线<br>for LngVariable_I = 1 to LngVariable_K - 1<br> picture1.line (LngVariable_I, -(Int16BitPoint( _<br> LngVariable_I) + 1))-(LngVariable_I + 1, -(Int16BitPoint( _<br> LngVariable_I + 1) + 1)), RGB(0, 0, 0)<br>next<br> <br>$如果IntCost=8 通常是用以下程式码读取 <br>并绘制图形<br>dim StrFileName as string '储存档名<br>dim DblSize as double '储存实际声档大小<br>dim Byt8BitPoint() as byte<br>dim LngVariable_K as long<br>dim LngVariable_I as long <br>StrFileName="C:\windows\media\ding.wav" _<br>'设定要读取的档案<p>'#以下部分是将实际声档资料读入阵列#<br>open StrfileName for random as #2 _<br>len = 1'每笔资料位元组数  <br>    <br> DblSize = lof(2) - 44<br> '实际档案大小(Bytes) _<br> 前44Bytes是档头*/<p> LngVariable_K = DblSize'总资料笔数<br> redim Byt8BitPoint(LngVariable_K)<br> '/*定义阵列大小*/<br> <br>        <br> LngVariable_I = 1<br> for LngVariable_I = 1 to LngVariable_K<br>  get #2, LngVariable_I + 44, Byt8BitPoint( _<br>  LngVariable_I)'/*从45bytte开始取样*/<br>  doevents            <br> next <br>    <br>close #2 <p>'#以下是绘图的部分#<p>picture1.scale(0,0)-(DblSize,255)<br>'先定义画布座标 通常用物件Picture<p>picture1.line (0,128)-(DblSize,128), _<br>rgb(0, 0, 0) '画中线<br>for LngVariable_I=1 to LngVariable_K-1  <br> picture1.line(LngVariable_I,-(Byt8BitPoint( _<br> LngVariable_I)-255))-(LngVariable_I+1,-(Byt8BitPoint( _<br> LngVariable_I+1)-255)),rgb(0,0,0)<br>next<p>$表单中最少要放上一个Picture物件<p>$波形外的其他资讯可以从档头中读取<p>$当然在资料读取方面还有更快的方法<br>像记忆体映射档之类的东东 <br>用Get读入阵列 执行效率很低<br>如果...对于这方面有所了解的话<br> 拜托到"如何更快速读取资料"的<br>讨论区提供点资料喔 thanks<br>:   像播放mp3的WinampC中的音波分析器,录音程式中的声音波形<br>: ,到底是要用什么函数来描绘呢?<br>:                  恳请赐教,谢谢!<p>
<br>
<br><hr size=7 width=75%><p>
<a name="followups">Follow Ups:</a><br>
<ul><!--insert: 4537-->
</ul><!--end: 4537-->
<br><hr size=7 width=75%><p>

</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -