用Basic4android创建任意音调的方法是什么?

时间:2011-09-30 19:07:55

标签: basic4android

Basic4Android是否有任何方法可以发出任意频率的声音(意思是,我不想预先录制声音文件)和持续时间?

在一些“传统的”基本语言中,这可以通过例如BEEP命令后跟所需的频率和持续时间。

Basic4Android似乎不支持任何等效命令。

我正在寻找这个功能,以便编写摩尔斯电码生成应用程序,为此我需要保持灵活的音频频率音调(必须是用户可选择的),例如: 500Hz,让我们说1000赫兹以及可变持续时间(以毫秒为单位)(为了能够生成莫尔斯密码破折号和点的可变用户可选速度以及中间的静音中断)......

使用预先录制的WAV进行此操作根本不可行或几乎不可能,或者您将最终获得所有频率/速度组合的巨大WAV集合。

在Android中似乎可以这样做,请参见此处的示例:  http://marblemice.blogspot.com/2010/...n-android.html

就我能解释这段代码而言,它会以所需的频率“动态”计算一个正弦波音调到一个缓冲阵列中,并使用该缓冲区数据生成并将其作为PCM流播放。

由于上面的代码看起来很简单,我想知道一个聪明的Java编程人员是否会想出一个简单的Basic4Android“Tone Generator”库,其他人可以用它来实现这个目的?

不幸的是,我只是一个老式的VisualBasic家伙,并使用Basic4Android完成我的第一步......为了创建我自己的库,我的技能太糟糕了。

2 个答案:

答案 0 :(得分:1)

音频库已更新,您现在可以使用Beeper对象播放“哔”声。

Dim b As Beeper
b.Initialize(300, 500) '300 milliseconds, 500hz
b.Beep

Updated library link

答案 1 :(得分:0)

在基于java的应用程序中,这绝对可以在Android上实现。我不知道Basic4Android是否可以“本机”执行此操作(我之前从未听说过Basic4Android),但看起来您可以在java中创建可以通过Basic4Android访问的库,因此理论上可以创建一个执行此操作的Java库,然后从B4A应用程序中调用它。

然而,既然这需要学习一些Java和Android的Eclipse插件,也许你应该冒险尝试学习java for Android?我自己是一个长期的Visual Basic人(从1995年开始),转换到C#并因此转向java并不是那么困难。