【问题标题】:How to i play sound using the sound library in processing?如何在处理中使用声音库播放声音?
【发布时间】:2020-02-03 02:33:25
【问题描述】:

我正在尝试在我的项目中播放一些音乐。我遵循了一个教程,其中以下代码有效,但是当我尝试它时,我收到一条错误消息,上面写着: “2020 年 1 月 6 日晚上 9:38:55 com.jsyn.devices.javasound.JavaSoundAudioDevice 信息:JSyn:Windows 10 的默认输出延迟设置为 80 毫秒

import processing.sound.*;
SoundFile song;

void setup() {

   size(1300, 500);
   background(0);
   song = new SoundFile(this, "song.mp3");
   song.play();
}

tutorial i followed

library I'm trying to use

【问题讨论】:

  • 更新:好的,我发现它确实可以播放,但是,开始时有很长的延迟,而且不像教程中那样即时。此外,音高较低
  • 您可以在实际需要之前加载声音,就像在大多数专业游戏中一样。好吧,在这种精确的情况下它不会改变任何东西,因为你几乎只加载了一个声音,但是如果你每次你的角色做某事时都会发出“哔”声,你会只想加载一次,并且每次都使用相同的声音哔哔声。
  • 我该怎么做?
  • 在某种程度上,你刚刚做到了。 song = new SoundFile(this, "song.mp3"); 行将声音加载到内存中。它在setup 方法中,因为此方法会自动运行一次。这是一个装载东西和准备任何你想为以后准备的东西的好地方。因为song是一个全局变量,只要程序运行,它就会一直留在内存中,你可以从任何方法调用它。因此,您只需在setup 中加载一次,之后您可以随意播放多次,无需再次加载。

标签: processing


【解决方案1】:

我希望这首歌能够播放,因为控制台消息只是一条 INFO 日志消息(优先级不如 WARNINGERROR

draw() 循环也有影响吗?

import processing.sound.*;
SoundFile song;

void setup() {

   size(1300, 500);
   song = new SoundFile(this, "song.mp3");
   song.play();
}
void draw(){
   background(0);
   text("song.isPlaying() = " + song.isPlaying(), 10, 15);
}

可能是 mp3 具有处理声音库无法解码的编码属性(位深度、采样率等)。 值得尝试将您的 mp3 文件导出为 WAV 文件(无符号 16 位 44100 Hz)。 (您可以使用Audacity 等开源工具来完成此操作)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多