• c#中利用Bass.dll声音处理类库绘制频谱图


    通过引用Bass.Net.dll这个声音处理类库就可以轻松的获取频谱图数据并绘制频谱图。

     1 public void DrawFFT(Graphics g)
     2         {
     3             if (Bass.BASS_ChannelIsActive(SystemFont.Stream) == BASSActive.BASS_ACTIVE_PLAYING)
     4             {
     5                 Bass.BASS_ChannelGetData(SystemFont.Stream, SystemFont.FFTDatas,(int)BASSData.BASS_DATA_FFT1024);
     6                 for (SystemFont.i = 0; SystemFont.i < SystemFont.FFTDatas.Length-1; SystemFont.i++)
     7                 {
     8                     SystemFont.Di = (int)(Math.Abs(SystemFont.FFTDatas[SystemFont.i]) * 1792);
     9                     if (SystemFont.Di > this.Height)
    10                         SystemFont.Di = this.Height;
    11                     if (SystemFont.Di >= SystemFont.FFTPeacks[SystemFont.i])
    12                         SystemFont.FFTPeacks[SystemFont.i] = SystemFont.Di;
    13                     else
    14                         SystemFont.FFTPeacks[SystemFont.i] = SystemFont.FFTPeacks[SystemFont.i] - 1;
    15                     if (SystemFont.Di >= SystemFont.FFTFall[SystemFont.i])
    16                         SystemFont.FFTFall[SystemFont.i] = SystemFont.Di;
    17                     else
    18                         SystemFont.FFTFall[SystemFont.i] = SystemFont.FFTFall[SystemFont.i]-1;
    19                     if ((this.Height - SystemFont.FFTPeacks[SystemFont.i]) > this.Height)
    20                         SystemFont.FFTPeacks[SystemFont.i] = this.Height;
    21                     if ((this.Height - SystemFont.FFTFall[SystemFont.i]) > this.Height)
    22                         SystemFont.FFTFall[SystemFont.i] = this.Height;
    23                     g.FillRectangle(solidBrush, SystemFont.i * (w+2), this.Height - SystemFont.FFTFall[SystemFont.i],w, this.Height);
    24                 }
    25             }
    26             else
    27             {
    28                 return;
    29             }
    30         }

    效果如下:

  • 相关阅读:
    tsm 存放磁带到带库
    tsm 切记
    添加路由时啥时候是dev啥时候是gw
    网卡上绑定多个IP地址
    更改本地环回地址引发的血案
    自学网络 arp_ignore/arp_announce
    do_try_to_free_pages
    如何用ssh实现端口的映射
    显示系统中所有的socket信息
    ifstat查看网络流量的原理
  • 原文地址:https://www.cnblogs.com/chenpengzhou/p/9766236.html
Copyright © 2020-2023  润新知