1

Basic4Android有什么办法让它发出任意频率的声音(意思是,我不想有预先录制的声音文件)和持续时间?

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

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

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

用预先录制的 WAV 来做到这一点根本不切实际或几乎不可能做到这一点,否则您最终会得到一个包含所有频率/速度组合的巨大 WAV 集合。

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

据我可以解释此代码,它以所需频率“即时”计算正弦波音调到缓冲区数组中,并使用该缓冲区数据生成并作为 PCM 流播放。

由于上面的代码似乎很简单,我想知道一个聪明的 Java 编程人员是否会想出一个简单的 Basic4Android“音调发生器”库,其他人可以使用它来实现这个目的?

不幸的是,我只是一个老式的 VisualBasic 人,并且正在使用 Basic4Android 迈出第一步……对于创建我自己的库,我的技能实在是太糟糕了。

4

2 回答 2

1

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

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

更新的图书馆链接

于 2011-10-01T06:48:10.260 回答
0

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

但是,既然这需要学习一些 java 和 Eclipse 的 Android 插件,也许你应该冒险学习 Android 的 java?我自己是一个长期使用 Visual Basic 的人(从 1995 年开始),从 C# 过渡到 java 并不难。

于 2011-09-30T22:54:20.550 回答