如何使用Processing播放声音?

图形做多了,有时候我们也想玩玩音乐,比如你做了个塔防的游戏,没有配音那怎么行。。。
然而,声音到底怎么写?是呀,声音到底怎么写,擦?


官方的Sound库在新的Processing版本下无法运行,反正,我是不行了。你行你玩吧,顺便教教我,嘿。
这里墙裂推荐Minim库,要深可深,要浅可浅,深浅随意~


Minim库
音频播放库,提供了易于使用的类,记录、分析和合成声音的办法。
你可以直接使用Processing的菜单->工具->添加工具->Libraries->搜索Minim下载即可




基本的结构


Java 代码,双击复制代码
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 头
import ddf.minim.*;  // 库引用
Minim minim;           // 申请minim对象
AudioPlayer player;  // 申请音乐对象
 
 
// 初始化
minim =  new Minim( this );  // 初始化minim对象
// 像读图的方法一样 在工程目录下的data文件夹里读取文件,
// 也可以读取绝对地址的文件
player = minim.loadFile( "lty.mp3" );
 
 
// 运作
player.play();  // 播放




常用方法


Minim 对象
  • loadFile("String"); // 读取音频文件


AudioPlayer 对象
  • play()          // 播放
  • isPlaying()   // 正在播放?
  • pause()       // 暂停
  • rewind()      // 倒带,回到开头
  • bufferSize() // 音乐缓冲数据大小
  • position()    // 当前播放位置
  • length()       // 音乐数据长度
  • left.get()      // 左声道数据提取
  • right.get()    // 右声道数据提取



示例

Java 代码,双击复制代码
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import ddf.minim.*;
Minim minim;
AudioPlayer player;
 
 
void setup() {
   size( 512 , 200 );
   
   // 通过 Minim 可以加载文件
   minim =  new Minim( this );
   // 像读图的方法一样 在工程目录下的data文件夹里读取文件
   // 也可以读取绝对地址的文件
   player = minim.loadFile( "lty.mp3" );
}
 
 
void draw() {
   background( 0 );
   stroke( 255 );
   
   // 绘制波形
   // 由 left.get() 和 right.get() 返回的值将是-1 和 1 之间,
   // 所以需要映射到合适的大小
   // 如果是MONO单声道文件,left.get() 和 right.get() 将返回相同的值
   for ( int i= 0 ; i<player.bufferSize() - 1 ; i++) {
     float x1 = map( i,  0 , player.bufferSize(),  0 , width );
     float x2 = map( i+ 1 0 , player.bufferSize(),  0 , width);
     line( x1,  50 + player.left.get(i)* 50 , x2,  50 + player.left.get(i+ 1 )* 50 );
     line( x2,  150 + player.right.get(i)* 50 , x2,  150 + player.right.get(i+ 1 )* 50 );
   }
   // 画一条线以显示歌曲当前播放的位置
   float posx = map(player.position(),  0 , player.length(),  0 , width);
   stroke( 0 , 200 , 0 );
   line(posx,  0 , posx, height);
   
   if ( player.isPlaying() )
   {
      text( "Press any to pause playback." 10 20 );
   }
   else
   {
     text( "Press any key to start playback." 10 20 );
   }
}
 
 
void keyPressed()
{
   if ( player.isPlaying() ) {
     player.pause();
   }
   // 如果播放到文件末尾
   // 我们使他再播一遍
   else if ( player.position() == player.length() ) {
     player.rewind();
     player.play();
   else {
    player.play();
   }
}

  • 15
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Processing是一种基于Java语言的编程语言和开发环境,它可以用于创作交互式图形应用程序。以下是Processing使用图片、声音、鼠标、键盘交互的一些基本方法: 1. 图片交互:Processing中可以使用loadImage()函数加载图片文件,并使用image()函数在屏幕上显示图片。用户可以使用鼠标和键盘控制图片的位置、大小和旋转等。例如,可以使用mouseX和mouseY变量来获取鼠标的坐标,然后在屏幕上根据鼠标位置移动图片。 2. 声音交互:Processing中可以使用Minim播放和录制声音文件。可以使用loadFile()函数加载声音文件,并使用play()函数播放声音。用户可以使用鼠标和键盘控制声音的音量、播放进度和循环等。 3. 鼠标和键盘交互:Processing中可以使用mousePressed()和keyPressed()等函数来检测鼠标和键盘事件。例如,可以使用mousePressed()函数检测鼠标点击事件,然后根据鼠标点击位置执行相应操作。可以使用keyPressed()函数检测键盘按键事件,然后根据按键代码执行相应操作。 4. 交互设计:在Processing中,可以使用GUI(如G4P)来创建交互式用户界面。GUI提供了各种控件(如按钮、滑块、文本框等),可以通过拖拽和设置属性来创建交互式界面。用户可以使用鼠标和键盘与这些控件交互,并根据控件的状态执行相应操作。 综上所述,Processing提供了丰富的图形、声音、鼠标、键盘交互功能,可以用于创建各种交互式应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值