提问

#楼主# 2018-2-9

跳转到指定楼层
前段时间看到了个示波器播放的音频

你一定不陌生

oscillofun

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

但是我发现个问题

我手头有点紧

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

做不了怎么破?

又想自己做一下

然后

........

淡淡的望了一下


~~沉默的~~

Visual Studio

然后就有办法了

买不起SB器

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


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




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

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


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

转播转播 分享淘帖
回复

使用道具

0

主题

68

帖子

976

积分

上士

积分
976
沙发
星空 发表于 2018-6-23 21:15:31
哇!老想看了也买不起SB器。谢谢大佬分享
回复

使用道具 举报

16

主题

63

帖子

1388

积分

军官学校学员

积分
1388
板凳
GloomyGhost 发表于 2018-7-18 13:33:29
Java Sound成功转型DS
回复

使用道具 举报

0

主题

236

帖子

533

积分

超级版主

Rank: 8Rank: 8

积分
533
地板
zycxjl 发表于 2020-3-17 10:12:12
,进来看看sb器。
回复

使用道具 举报

B Color Link Quote Code Smilies
Archiver|手机版|小黑屋|MakerTime 创客时代  
Powered by Discuz! X3.3  © 2001-2017 Comsenz Inc.