• UID162
  • 登录2018-08-16
  • 粉丝7
  • 发帖45
  • 科研点数1点
优异服役勋章
OODLL 发布于2018-02-09 19:22
2/614

【VC++】示波器上播放的音频——模拟出来

楼层直达
前段时间看到了个示波器播放的音频

你一定不陌生

oscillofun

嗯好了说是把它扔到示波器里就OK了对吧?

但是我发现个问题

我手头有点紧

支付宝都到3位数(2.74元)余额了

做不了怎么破?

又想自己做一下

然后

........

淡淡的望了一下


~~沉默的~~

Visual Studio

然后就有办法了

买不起SB器

我写一个软件来模拟总可以吧


然后吸佳佳拯救了我的心愿

描述:测试

图片:5 - 副本.png

测试

描述:测试

图片:6.png

测试


因为是模拟那个图像,所以文件播放什么的(hei ke ji)不在这个范围内。偷偷透露一下,播放我用的是DirectSound。
先想一下....emm它的xy模式输入音频无非就是干了这样一件事情:x的坐标由一个声道确定,y坐标由y电平确定。
下面简单的说一下过程

首先,我使用CreateDIBSection创建一个位图——好处很明显,不需要关心那些个绘图函数,直接操作位图数据数组。为了方便绘图,我创建的是8位位图,这样绘图的时候直接设置一个BYTE数组的值,这个值就会映射到位图调色板里面的颜色,简单有效。
然后,在使用BitBlt复制位图,到主窗口的HDC上去。
然后就没有然后了。这里注意下CreateDIBSection的位图数据,因为y = 0的时候是最底部,所以要把计算得到的y坐标反过来。又因为屏幕坐标是左上角,所以我们需要把以窗口中心为原点的坐标,分别加上宽度 / 2,高度 / 2才可以得到以左上角为原点的屏幕坐标
源代码嘛.....渲染代码如下,其余的就自己yy一下就可以了

描述:渲染的代码

图片:5.png

渲染的代码


至于最后那个fft的话...是我自己写来玩的,最后发现效果不怎么样.........
最后把编译的软件供上,顺便送一个oscillofun的那个音频。
示波器音频模拟.rar
它只支持wav文件....更准确点的是wav文件里面的好几种。不过别担心,最常见的那种没有压缩的wav文件是支持的。最最最常见的是支持的!!!
因为是随便写的...所以软件八九成由BUG.....还是容忍下了哈.....
其实做的也不好的...因为示波器那种余晖啊连线啊点的大小啊都没做.....

[OODLL于2018-02-10 09:56编辑了帖子]
桂棹兮兰桨,击空明兮溯流光。渺渺兮予怀,望美人兮天一方。[url=http://www.arcll.cn/]我的个人网页[/url]欢迎您去看看(论坛不支持UBB???)声明:本人发帖,未注明转载的均为原创。转载务必保留来源
  • UID2296
  • 登录2018-08-21
  • 粉丝1
  • 发帖64
  • 科研点数0点
优异服役勋章
追星Maker纪念章
论坛之星服役勋章
星空 发布于2018-06-23 21:15
沙发F
哇!老想看了也买不起SB器。谢谢大佬分享
  • UID648
  • 登录2018-08-20
  • 粉丝12
  • 发帖76
  • 科研点数0点
优异服役勋章
二级银心勋章
论坛之星服役勋章
GloomyGhost 发布于2018-07-18 13:33
板凳F
Java Sound成功转型DS
<b>DO YOURSELF</b>
您需要登录后才可以回帖
发表回复

杩斿洖椤堕儴