通过AudioTrack播放正弦波纯音
来源:互联网 发布:js如何覆盖css效果 编辑:程序博客网 时间:2024/05/16 09:04
通过AudioTrack播放正弦波纯音:
本文参考自:
Android 播放指定频率正弦波声音—-sichard
Android左右声道的控制—-kqw攻城狮
生成纯音
所谓的纯音就是一个正弦波,生成的核心是靠Math.sin()方法产生的字节数组。
public static byte[] sin(byte[] wave, int waveLen, int length) { for (int i = 0; i < length; i++) { wave[i] = (byte) (HEIGHT * (1 - Math.sin(TWOPI * ((i % waveLen) * 1.00 / waveLen)))); } return wave; }
创建播放线程
在将线程的构造方法中首先把AudioTrack初始化:
public PlayThread(int rate) { if (rate > 0) { Hz = rate; waveLen = RATE / Hz; length = waveLen * Hz; wave = new byte[RATE]; mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, RATE, AudioFormat.CHANNEL_CONFIGURATION_STEREO, // CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_8BIT, length, AudioTrack.MODE_STREAM); ISPLAYSOUND = true; wave = SinWave.sin(wave, waveLen, length); } else { return; } }
这里的ISPLAYSOUND是控制纯音持续播放的关键,否则后面也会讲到。
之后在线程开始后首先让AudioTrack进入播放的状态,再向AudioTrack写入播放数据:
@Override public void run() { super.run(); if (null != mAudioTrack) mAudioTrack.play(); //一直播放 while (ISPLAYSOUND) { mAudioTrack.write(wave, 0, length); } }
利用上面的ISPLAYSOUND
的参数,将播放循环下去,想要停止播放就将ISPLAYSOUND
设为false
。
END
写的比较简单,具体可以参考源码:
https://github.com/xiaoniu/PureTone
阅读全文
0 0
- 通过AudioTrack播放正弦波纯音
- AudioTrack播放正弦波纯音
- android AudioTrack 播放 正弦波 方波
- android AudioTrack 播放 正弦波 方波
- Android 通过AudioTrack播放CAF音频
- Android 通过AudioTrack播放CAF音频
- Android 播放指定频率的纯音
- Android AudioTrack 播放音频
- AudioRecord录音 AudioTrack播放
- android audiotrack 播放pcm
- AudioTrack 播放音頻
- AudioTrack 播放音頻
- Android音频播放AudioTrack
- [AudioTrack]使用AudioTrack播放PCM音频数据
- c/c++ native 层 通过 JNI API 调用 java 层 的AudioTrack 来播放 音频文件
- 正弦波
- 正弦波
- 【Android】AudioTrack播放caf音频文件
- 网易云课堂JAVA入门编程题6-1
- JAVA 构造方法与匿名对象
- CSS特殊样式(七)CSS3下的纸张效果实现展示
- Luogu P2386 放苹果
- /etc/sysconfig/iptables文件不存在
- 通过AudioTrack播放正弦波纯音
- C++ 友元
- 微信小程序实战篇-分类页面制作
- 全排列
- HDU4547(tarjan算法 离线LCA)
- UITableView通过AutoLayout自动计算行高
- Android 6.0(API 23)及其以上动态申请的权限与申请权限的方法
- pyhton爬虫(10)——通过亚马逊商品评论时间分析商品销量分布情况
- 计算机网络基础知识