播放生成的声音J2ME

问题描述:

我对Android的这个代码,可以播放自定义声音,它工作正常:播放生成的声音J2ME

AudioTrack output = new AudioTrack(AudioManager.STREAM_MUSIC, baudRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT, bufferSize, AudioTrack.MODE_STATIC); 
output.write(myGeneratedWaveform, 0, myGeneratedWaveform.length); 
output.play(); 

我怎样才能实现与J2ME一样吗?

我正在检查Manager.createPlayer(...)的API,但没有找到示例代码。

任何帮助将是apreciated。

编辑: 我有一个PCM编码波形阵列。我希望用诺基亚Series 40重现这一点。但是我总结说这种格式不支持这种格式,只有AMR。所以,一个开源的库可以将PCM转换为AMR。

请检查场景7的JSR-135 Overview:从介质中回放存储在JAR中。

InputStream is = getClass().getResourceAsStream("audio.wav"); 
Player p = Manager.createPlayer(is, "audio/X-wav"); 
p.start(); 

J2ME内置音乐播放器能够播放任何输入流,而不仅仅是从媒体存储中捕获的​​一个。我的意思是,您可以创建原始字节数组,它以某种音频格式表示您的声音数据,然后将其表示为输入流,就像播放预先存储的音频文件一样播放它。

byte[] data; // your audio data, let us say it represents content of a proper wav-file 
Player player = Manager.createPlayer(new ByteArrayInputStream(data), "audio/x-wav"); 
player.start(); 

就是这样。顺便说一句,您可以简单地使用旧版本的JFugue,它可以使用上述技巧为J2ME编译。您将获得由音乐字符串生成的MIDI输出,例如“Cmaj G I [长笛] C” - 可能对耳朵训练midlet很方便,等等。任何有兴趣的人都可以查看http://code.google.com/p/jfugue2me/