用Fmx调用Bass.dll

先上图
帮亲戚做个小软件,选用FMX,因为画面不会像vcl那样在图片多的时候闪烁。还能添加动画
但是MediaPlayer播放音乐视频真是不给力,视频没想到好办法。音频方面想到之前万一的Bass.ll的教程
尝试用FMX做下试试
结果发现Bass也是跨开台,Github上有个老外做了个收音机
下面是从万一博客上拷贝的代码,按照fmx的稍做了点修改
begin if not OpenDialog1.Execute then
Exit; BASS_StreamFree(hs); hs := BASS_StreamCreateFile(False, PChar(OpenDialog1.FileName), , , BASS_UNICODE);
if hs < BASS_ERROR_ENDED then
begin
Caption := '打开失败:' + hs.tostring;
end
else
Caption :=OpenDialog1.FileName;
end
这个是打开文件,新版的支持UNICODE
const
w = ;
var
i,di: Integer;
begin
if BASS_ChannelIsActive(hs) <> BASS_ACTIVE_PLAYING then Exit; BASS_ChannelGetData(hs, @FFTData, BASS_DATA_FFT1024); Image1.Bitmap.SetSize(Round(Image1.Width),Round(Image1.Height));
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.Clear(talphacolors.Black); for i := to Length(FFTData) - do
begin
di := Trunc(Abs(FFTData[i]) * ); if di > Image1.Height then di := Round(Image1.Height);
if di >= FFTPeacks[i] then FFTPeacks[i] := di else FFTPeacks[i] := FFTPeacks[i] - ;
if di >= FFTFallOff[i] then FFTFallOff[i] := di else FFTFallOff[i] := FFTFallOff[i] - ;
if (Image1.Height - FFTPeacks[i]) > Image1.Height then FFTPeacks[i] := ;
if (Image1.Height - FFTFallOff[i]) > Image1.Height then FFTFallOff[i] := ; with Image1.Bitmap.Canvas do
begin
Fill.Color :=talphacolors.red;
FillRect(RectF(i * (w + ), Image1.Height - FFTFallOff[i], i * (w + ) + w, Image1.Height),,,AllCorners, );
end; end;
Image1.Bitmap.Canvas.EndScene;
end;
这个是绘制波形的,其他函数直接copy万一博客的代码就可以用
用Fmx调用Bass.dll的更多相关文章
- c# 调用c++DLL方法及注意事项
引用命名空间 using System.Runtime.InteropServices 调用方法: 一.静态加载 用DllImprot方式来加载c++DLL.如下格式: //对应c++方法 //voi ...
- 在.net中调用Delphi dll的Pchar转换
Pchar是非托管代码,要在.net中调用Delphi dll中的功能,请使用MarshalAs属性告知.net调用PInvoke去转换.net中标准的string类型.如果Delphi dll是De ...
- Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
- C#调用C++ DLL类方法
C++的优势在于高效灵活,C#的优势在于简单易用,两者结合起来对项目开发来说是件好事,而且C++不容易反编译,也保障了代码的安全性,如果一些核心算法使用C#编写,那么保密就是一个问题. C++生成的D ...
- paip.java 调用c++ dll so总结
paip.java 调用c++ dll so总结 ///////JNA (这个ms sun 的) 我目前正做着一个相关的项目,说白了JNA就是JNI的替代品,以前用JNI需要编译一层中间库,现在JNA ...
- C#调用C++ DLL 文件
说来惭愧,都注册一年多了,却没有发表过一篇正式的博文,中间很多学习的过程也没有记录下来.如今到了一个新的环境,也有了学习的机会,一定要把每天的收获记录一下. 要做的东西需要引用C++编写的DLL,刚开 ...
- LR调用动态链接库DLL
什么是动态库? 动态库一般又叫动态链接库(DLL),是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库. 动态链接提供了一种方法 ,使进程可以 ...
- C#调用C++ Dll
现在项目基本都是旁边C++的哥们做好dll扔给我,然后我调用.好久之前晚上down了一份c#调用c++dll的方法,出处早已经遗忘.闲来无事,放上来好了.原作者看到后可以留言,我会把您链接放上的,帮了 ...
- 【JNI】OPUS压缩与解压的JNI调用(.DLL版本)
OPUS压缩与解压的JNI调用(.DLL版本) 一.写在开头: 理论上讲,这是我在博客园的第一篇原创的博客,之前也一直想找个地方写点东西,把最近做的一些东西归纳总结下,但是一般工程做完了一高兴就把东西 ...
随机推荐
- H5+ 移动app学习之二 Native.js
Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术.如果说Node.js把js扩展到服务器世界,那么Native.js则把js扩展到手机 ...
- ASN.1 key structures in DER and PEM
转自:https://tls.mbed.org/kb/cryptography/asn1-key-structures-in-der-and-pem Introduction Everybody lo ...
- 【leetcode】LRU Cache
题目简述: Design and implement a data structure for Least Recently Used (LRU) cache. It should support t ...
- Cocos2d-x 生成真正的随机数
关于随机数 cocos2d-x 定义了一个宏 CCRANDOM_0_1 生成的是 [0, 1] 之间的值 因此,要生成 [0-100] 之间的数 CCRANDOM_0_1 * 100 生成 [ ...
- 前端项目通用、常用js common.js
var url = location.href; if (url.toLowerCase().indexOf("/akweb_admin/") == -1) { function ...
- html学习第三天—— 第13,14章
颜色值缩写 关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半. 例子1: p{color:#000000;} 可以缩写为: p{color: # ...
- 《UML大战需求分析》阅读随笔(三)
一: 需求中提到的各种业务概念.人物等,经过抽象后都可以视之为类. 平时遇到的人.物,我们将遇到的都是具体的人.物,也就如程序中的对象,是一个实实在在的东西. 当我们分析需求的时候,设计模型的时候,我 ...
- 在php中使用strace、gdb、tcpdump调试工具
[转] http://www.syyong.com/php/Using-strace-GDB-and-tcpdump-debugging-tools-in-PHP.html 在php中我们最常使用调试 ...
- 前端用Webpact打包React后端Node+Express实现简单留言版
前言 React官方推荐用Browserify或者Webpack 来开发React组件. Webpack 是什么?是德国开发者 Tobias Koppers 开发的模块加载器.Instagram 工程 ...
- Tsinsen A1493 城市规划(DP + CDQ分治 + NTT)
题目 Source http://www.tsinsen.com/A1493 Description 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在 ...