包含javasound钢琴的词条

博主:adminadmin 2022-12-11 16:03:08 60

今天给各位分享javasound钢琴的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中如何给按钮添加声音,只要一按就有声音

//给你个例子

import java.io.*;

import javax.sound.sampled.*;

import javax.swing.*;

import java.awt.event.*;

public class Au extends JFrame

{

public static void main(String[] args)

{

Au w=new Au();

}

Au()

{

JButton b=new JButton("播放");

b.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

play();

}

});

add(b);

setResizable(false);

pack();

setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

void play()

{

//将f指定为声音文件的文件名,

//声音文件只能是WAVE、AU、AIFF、AIFC、SND格式的。

final String f="s.wav";

Clip c=null;

try

{

c=AudioSystem.getClip();

c.open(AudioSystem.getAudioInputStream(new File(f)));

c.loop(0);

}

catch(Exception ex)

{

}

}

}

java中怎样利用javax.sound来播放音乐,最好给一个例子

*该方法为音频流缓冲方法,在调用音频播放线程时调用

*/

public BufferedInputStream loadBomb(){

BufferedInputStream bufbomb = null;

try{

File dir = new File("D:/java/TankWar2.6/"); //所要播放文件的路径

File fObject = new File(dir,"bomb.wav"); //音频名

FileInputStream file = new FileInputStream(fObject);

bufbomb = new BufferedInputStream(file);

}catch(IOException e) {

System.out.println(e.getMessage());

}

return bufbomb;

}

/**

* 缓冲完毕的核爆音频播放线程

*/

private class BombMusic implements Runnable{ //通过流读取声音文件

BufferedInputStream buf;

public void run(){

buf = loadBomb();

try{

AudioStream audio = new AudioStream(buf);

AudioPlayer.player.start(audio);

}catch(IOException e){

e.printStackTrace();

}

}

}

怎么在java中给按键添加声音?

import javax.sound.midi.*;

import javax.sound.sampled.*;

import java.io.File;

public class SoundTest{

public static void main(String args[])throws Exception{

//下面是播放wav声音的代码

/* File wavFile = new File("D:\\yy.wav");//可以使用文件

//InputStream in = new FileInputStream(wavFile);//也可以使用流

//URL url = wavFile.toURI().toURL();//还可以使用URL

AudioInputStream ais = AudioSystem.getAudioInputStream(wavFile);//这里使用上面的三种,那种都可以

Clip clip = AudioSystem.getClip();

clip.open(ais);

clip.start();

*/

//下面是播放midi音乐的代码

File midiFile = new File("D:/midi180.mid");

Sequence sequence = MidiSystem.getSequence(midiFile);//这里同上面的,也可使用流和URL

Sequencer sequencer = MidiSystem.getSequencer();

sequencer.setSequence(sequence);

sequencer.open();

sequencer.start();

//sequencer.wait(300, 500);

// sequencer.close();

}

}

以上就是调用音频文件的代码。

至于加监听,那都是小事了。

保证好用,只不过midi的文件,自己要找。

还有谢谢小凉。。。。

如何用java编程,实现声音特征的提取?

您好,1 双方之间的网络连接

Java在这方面有其独特的优势,Java提供了丰富的网络类库的支持,可以轻松编写多种类型的网络通信程序。在我下面的例子中我就使用了TCP/IP协议,通过Java的Socket类进行编程。

2 音频信号的采集和回放以及音频数字信号的编码与解码

在解决这两个问题的时候,在网上很幸运地通过一些文章的介绍,找到了Answer Machine 演示程序的源代码(由of jsresources.org的Florian Bomers 和Matthias Pfisterer编写,网址)。在这个程序代码中,有几个解决我们问题所需要的类,而且作者将这些类封装的很好,我们基本不需要做什么改动,只需要屏蔽其中的调试信息的输出就行了,更可贵的是它还封装了几种常见的音频格式。其中的GSM格式(Global System for Mobile Telecommunications)就是我们下面例子中采用的压缩格式,GSM格式可以将128kbps 的音频数据流 (16bit通过8k Hz的音频采样) 压缩为13kbps 的音频数据流,非常适合语音信号的传送,所以可谓是一石二鸟。

我分析过这几个类的源代码,不得不佩服它的作者,每个类的源代码都很精炼,大家可以自己分析一下。好了下面就给大家讲讲这几个类,并且将它们用到的Java Sound API中的类和函数等一并做个简单介绍,让大家对Java Sound API中常用的类也有个大致的了解。由于Java Sound API中的类比较多。限于篇幅无法对所有用到的类做详尽的解释,以下内容只是简单提及了各个类的用途和使用规范,有关Java Sound API中类的具体介绍请大家访问这里, 查找javax.sound.sampled的相关内容。

以下的提到几个文件是从Answer Machine 演示程序的源代码中提取出来的,由于是开放源代码的程序,大家在使用的时候请注意相关的公共协议。

① AMAudioFormat类(封装在AMAudioFormat.java文件中)

AMAudioFormat类封装了CD、FM、TELEPHONE、GSM这四种质量的音频格式的参数,使用起来也非常简单,这样我们在使用Java Sound API时就不用自己去写那些复杂的代码了,但为了明白Java Sound API的原理,我们需要对它的代码做一下分析。它使用了Java Sound API中的AudioFormat这个类,这个类非常重要,在Java中对任何音频数据的使用都要实现通过它指定所需要使用的音频格式,AudioFormat类有一个嵌套的类AudioFormat.Encoding,实际上大部分对AudioFormat类的使用都是使用的这个嵌套的类。

AMAudioFormat类的重要方法:

名称:getLineAudioFormat

调用格式:getLineAudioFormat(整型音频格式代号)

返回值: 根据传递音频格式代号生成的AudioFormat对象。

说道这里大家可能要问了,那么通过Java Sound API可以直接使用GSM格式吗?答案是比较复杂,但同样有解决的办法,作者在这里使用了另外的开源程序的类库-tritonus的GSM编码解码库。大家需要在这里下载tritonous_share.jar和tritonus_gsm.jar两个文件,并在AMAudioFormat类中引用,这样就完成了GSM格式的设置。需要告诉大家的是在对AMAudioFormat.java这个类进行编译后,我们的程序运行的时候就可以不需要tritonous_share.jar和tritonus_gsm.jar这两个文件的支持了。

② AudioCapture类(封装在AudioCapture.java文件中)

AudioCapture类封装了从音频硬件捕获音频数据并自动编码为GSM音频压缩数据的过程,并且通过它的getAudioInputStream()方法提供给我们一个音频数据输入流,我们就可以直接将这个流发送到网络中。

AudioCapture 类的重要方法:

名称:getAudioInputStream

调用格式:getAudioInputStream()

返回值:AudioInputStream对象

AudioCapture 类使用了Java Sound API中的AudioInputStream、AudioFormat、AudioSystem这几个类和TargetDataLine、LineListener接口。除了AudioFormat类我再简单介绍一下其他的类:

AudioInputStream 类是带有特殊音频格式和长度的InputStream类,它有两个构造方法,分别是AudioInputStream(InputStream stream, AudioFormat format,long length)和AudioInputStream(TargetData -Line line)。

TargetDataLine 接口是DataLine接口的一种,通过它就可以直接从音频硬件获取数据了,它有几个常用的方法,分别是:open(AudioFormat format)、void open(AudioFormat format, int bufferSize)、int read(byte[] b, int off, int len)。

AudioSystem 类是Java标准音频系统的入口点,在AudioSystem 类中使用他的getLine() 方法创建TargetDataLine对象。

LineListener接口用来对线路状态改变的时间进行监听,他的重要的方法是update(LineEvent event)方法。

③ AudioPlayStream类(封装在AudioPlayStream.java文件中)

AudioPlayStream类与AudioCapture类刚好相反,它封装了GSM压缩音频数据的解码和音频信号的回放过程,提供给我们一个音频信号输出流。AudioCapture类用到的Java Sound API中的类它也基本都用到了,只是它使用了SourceDataLine接口而不是TargetDataLine接口

④ Debug类(封装在Debug.java文件中)

Debug类主要用来在调试时输出讯息,代码很少,后来我把其中输出信息的语句都屏蔽了,对程序运行没有影响。

为了方便使用以上的几个类,我们需要对它们进行编译和打包,编译时需要设置相关的编译环境,以下是我们需要用到的命令行

set CLASSPATH=%CLASSPATH%;.;tritonus_gsm.jar;tritonus_share.jar

javac am*.java amaudio*.java

jar cmf packagingmanifest.mf am.jar am*.class

amaudio*.class

说明一下,我将以上提到的Java源码文件放在了am目录下,编译之后可以得到一个8k的am.jar文件,我们下一步所需要做的就是在我们的程序中引用这个包。

用java sound播放音乐

jmf及java media framework;可以通过他来播放各种媒体。写一个小列子,是播放mp3的;代码如下:

Java代码

package test.jmf;

import java.io.File;

import java.io.IOException;

import java.net.MalformedURLException;

import javax.media.Manager;

import javax.media.NoPlayerException;

import javax.media.Player;

public class TestForJMF {

public static void main(String args[]) throws NoPlayerException, MalformedURLException, IOException{

String playPath="D:/ubw.mp3";

Player player = Manager.createPlayer(new File(playPath).toURI().toURL());

player.prefetch();

player.start();

}

}

注意:一定要在sun的官方上下载最新的jmf进行安装,否则不能播放。可以在sun的网站上search一下jmf就能看到最新的版本。如例子不能运行,可以随时回复;我会尽量帮助解答。

另附:jmf目前的下载地址:

用什么软件编程能做个模拟钢琴?

很多很多软件都可以啊,实现基本思想就是一个键对应一种声音频率。想做底层一点的东西,就用C语言(甚至于汇编都可以)直接控制主板的蜂鸣器,实现非常简单,但是界面可能会很粗糙。另外也可以用C++或者C#实现,直接驱动PC的声卡实现,windows下可以使用Directsound。用这两种高级语言实现的界面相对来说会非常的友好。当然,Java或者其他语言也可实现,大同小异,不再一一细说。

javasound钢琴的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javasound钢琴的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-11,除非注明,否则均为首码项目网原创文章,转载请注明出处。