在处理中获取多个音频输入

2023-11-30

我目前正在编写一个需要访问多个音频输入的处理草图,但处理只允许访问默认线路。我尝试直接从 Java 混合器获取线路(在处理中访问),但我仍然只获得信号从我的机器上当前设置为默认值的那一行开始。

我已经开始考虑按照建议通过 OSC 从 SuperCollider 发送声音here。然而,由于我对 SuperCollider 非常陌生,而且他们的文档和支持更侧重于生成声音而不是访问输入,所以我的下一步可能是按照建议使用 Beads 和 Jackhere.

有没有人有 (1) 其他建议,或 (2) 从 SuperCollider 或 Beads/Jack 获取多个输入到处理的具体示例?

先感谢您!

编辑:声音将用于支持自定义音乐可视化(想想 iTunes 可视化工具,但更多的是特定于歌曲的)。我们可以使用多个 mp3;现在我需要的是能够从每个麦克风获取 float[] 缓冲区。希望有 9 个不同的麦克风,不过如果更可行的话我们会选择 4 个。

对于硬件,此时我们仅使用麦克风和 XLR 转 USB 电缆。 (已经考虑过前置放大器,但到目前为止这已经足够了。)我目前使用的是 Windows,但我认为我们最终会切换到 Mac。

这是我仅使用珠子的尝试(对于笔记本电脑来说效果很好,因为我先这样做,但耳机缓冲区全为 0;如果我切换它们并将耳机放在第一位,耳机缓冲区将是正确的,但笔记本电脑将包含全 0):

void setup() {
    size(512, 400);

    JavaSoundAudioIO  headsetAudioIO = new JavaSoundAudioIO();
    JavaSoundAudioIO  laptopAudioIO = new JavaSoundAudioIO();

    headsetAudioIO.selectMixer(5);
    headsetAudioCon  = new AudioContext(headsetAudioIO);

    laptopAudioIO.selectMixer(4);
    laptopAudioCon  = new AudioContext(laptopAudioIO);

    headsetMic  = headsetAudioCon.getAudioInput();
    laptopMic  = headsetAudioCon.getAudioInput();
} // setup()

void draw() {
    background(100,0, 75);

    laptopMic.start();
    laptopMic.calculateBuffer();
    laptopBuffer   = laptopMic.getOutBuffer(0);

    for (int j = 0; j < laptopBuffer.length - 1; j++)
    {
        println("laptop; " + j + ": " + laptopBuffer[j]);
        line(j, 200+laptopBuffer[j]*50, j+1, 200+laptopBuffer[j+1]*50);
    }
    laptopMic.kill();

    headsetMic.start();
    headsetMic.calculateBuffer();

    headsetBuffer  = headsetMic.getOutBuffer(0);


    for (int j = 0; j < headsetBuffer.length - 1; j++)
    {
        println("headset; " + j + ": " + headsetBuffer[j]);
        line(j, 50+headsetBuffer[j]*50, j+1, 50+headsetBuffer[j+1]*50);
    }

    headsetMic.kill();
} // draw()

我尝试添加 Jack 包含以下行:

ac = new AudioContext(new AudioServerIO.Jack(), 44100, new IOAudioFormat(44100, 16, 4, 4));

但我收到错误:

Jun 22, 2016 9:17:24 PM org.jaudiolibs.beads.AudioServerIO$1 run
SEVERE: null
org.jaudiolibs.jnajack.JackException: Can't find native library
    at org.jaudiolibs.jnajack.Jack.getInstance(Jack.java:428)
    at org.jaudiolibs.audioservers.jack.JackAudioServer.initialise(JackAudioServer.java:102)
    at org.jaudiolibs.audioservers.jack.JackAudioServer.run(JackAudioServer.java:86)
    at org.jaudiolibs.beads.AudioServerIO$1.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'jack': Native library (win32-x86-64/jack.dll) not found in resource path ([file:/C:/Users/...etc...)

当我在 Jack 中时,我看不到我的麦克风(这对我来说似乎是一个巨大的危险信号,尽管我对 Jack 完全陌生)。此 AudioContext 是否应该显示为 Jack 中的输入?或者反之亦然——先在那里找到我的麦克风,然后将其从 Jack 处获取到Processing?

(请原谅我的经验不足,再次感谢您!我对 Jack 的了解不足让我想知道是否应该重新访问 SuperCollider...)


几年前我也遇到过同样的问题,我结合使用了 JACK、JNAJack 和 Beads。你可以按照这个珠子 Google 群组线程更多细节。

当时我不得不使用这个版本的珠子(2012-04-23),但我希望这些更改现在可能已纳入主项目中。

作为参考,这是我使用的基本类:

import java.util.Arrays;

import org.jaudiolibs.beads.AudioServerIO;

import net.beadsproject.beads.analysis.featureextractors.FFT;
import net.beadsproject.beads.analysis.featureextractors.PowerSpectrum;
import net.beadsproject.beads.analysis.segmenters.ShortFrameSegmenter;
import net.beadsproject.beads.core.AudioContext;
import net.beadsproject.beads.core.AudioIO;
import net.beadsproject.beads.core.UGen;
import net.beadsproject.beads.ugens.Gain;
import processing.core.PApplet;


public class BeadsJNA extends PApplet {

    AudioContext ac;
    ShortFrameSegmenter sfs;
    PowerSpectrum ps;

    public void setup(){
        //defining audio context with 6 inputs and 6 outputs - adjust this based on your sound card / JACK setup
        ac = new AudioContext(new AudioServerIO.Jack(),512,AudioContext.defaultAudioFormat(6,6));

        //getting 4 audio inputs (channels 1,2,3,4)
        UGen microphoneIn = ac.getAudioInput(new int[]{1,2,3,4});
        Gain g = new Gain(ac, 1, 0.5f);
        g.addInput(microphoneIn);
        ac.out.addInput(g);

        println("no. of inputs:  " + ac.getAudioInput().getOuts()); 

        //test get some FFT power spectrum data form the 
        sfs = new ShortFrameSegmenter(ac);
        sfs.addInput(ac.out);
        FFT fft = new FFT();
        sfs.addListener(fft);
        ps = new PowerSpectrum();
        fft.addListener(ps);
        ac.out.addDependent(sfs);

        ac.start();
    }
    public void draw(){
        background(255);
        float[] features = ps.getFeatures();
        if(features != null){
            for(int x = 0; x < width; x++){
              int featureIndex = (x * features.length) / width;
              int barHeight = Math.min((int)(features[featureIndex] *
                                                height), height - 1);
              line(x, height, x, height - barHeight);
            } 
        }
    }

    public static void main(String[] args) {
        PApplet.main(BeadsJNA.class.getSimpleName());
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在处理中获取多个音频输入 的相关文章

  • 如何将网络音频流保存到文件(c++/java)

    是否有任何库或众所周知的方法来保存音频网络流 网络广播 mp3 流 以编程方式归档 您可以使用 libvlcVLC http www videolan org vlc 项目 这wiki http wiki videolan org Libv
  • FFT 的窗口大小与数据长度

    我正在尝试对流音频数据进行快速频谱分析以捕获元音 类似于 JLip sync 使用 PyAudio 在短时间内 0 0625 秒 捕获小块 1024 的语音数据 使用 numpy fft 进行分析 并使用 numpy hanning 窗口消
  • 实时获取 macOS 输出设备音频缓冲区

    我试图tapmacOS 上当前选择的输出音频设备 因此我基本上有一个直通侦听器 可以监视当前正在输出的音频流而不影响它 我想将这些数据实时复制到环形缓冲区 以便我可以单独对其进行操作 Apple 文档和 过时 SO 答案的结合令人困惑 我是
  • 使用 AVAudioEngine 重复播放音频文件

    我正在使用 Swift 和 Xcode 6 开发一个 iOS 应用程序 我想做的是使用 AVAudioEngine 播放音频文件 到目前为止一切正常 但是我怎样才能不停止地播放它 我的意思是 当它结束播放时它会再次开始 这是我的代码 CON
  • 如何将音频从浏览器流式传输到 WebRTC 本机 C++ 应用程序

    到目前为止 我已成功运行以下示例 WebRTC 原生 C 到浏览器视频流示例 http sourcey com webrtc native to browser video streaming example 该示例展示了如何将视频从本机
  • 在 Mobile Safari 中重用 HTML5 音频对象

    我希望在 iPad 上的 Mobile Safari 中运行的 Web 应用程序上播放一个简短 小于 1 秒 的音频文件 以响应用户输入 同时将事件和音频播放之间的延迟降至最低 在页面重新加载之间可以多次触发播放 因此我想缓存音频文件 以下
  • Objective C - 音频延迟估计的互相关

    我想知道是否有人知道如何执行互相关两个音频信号之间iOS 我想将接收器 我正在从麦克风接收信号 处获得的 FFT 窗口与发射器处 正在播放音轨 处的 FFT 窗口对齐 即确保每个窗口的第一个样本 除了发射机的 同步 周期之外 也将是接收机的
  • 为什么我的音频不倒带?

    我在 Javascript 中倒带音频时遇到了一些问题 我基本上有一个倒计时 当倒计时接近结束时 每秒都会发出蜂鸣声 我尝试使用 var bip new Audio http www soundjay com button beep 7 w
  • 如何低延迟地使用 Android 音频

    Problem 您可能听说过 Android 不提供低延迟音频 API 我所说的低延迟音频是指您应该能够从麦克风获取音频信号并播放声音 中间没有太多时间间隔 例如 5 7 毫秒 我尝试过旧的java 带有AudioRecord和AudioT
  • Firefox createMediaStreamDestination 使用 rtc 的错误?

    我通过 rtc 流式传输音频并想要静音和取消静音音频 这有效 但没有增益控制 function stream getUserMedia stream console log Access granted to audio video pee
  • 如何在Delphi 7中监听麦克风并检测声音响度

    我需要一个程序来捕获麦克风输入声音超过特定阈值时的事件 那么我可能需要不断地听麦克风 并以某种方式测量声音幅度 Delphi 7 中可以这样做吗 我建议您使用低音音频库 http www un4seen com bass html http
  • 使用音频单元录制我的 iPhone 应用程序播放的声音

    我今天有很多有趣的事情iOS 和音频单元并发现了很多有用的资源 包括在内 首先 我对某些事情感到困惑 是否真的有必要创建一个音频图 with 混合器单元录制应用程序播放的声音 或者播放声音就足够了ObjectAL https github
  • python:如何改变音量?

    I used winsound Beep frequency duration 因为我想以指定的频率播放声音 现在 我需要更改这些声音的音量 我怎样才能做到这一点 我试图寻求帮助pyaudio but 如果您对外部库开放 您可以使用pydu
  • Android 在通话期间播放音频文件[重复]

    这个问题在这里已经有答案了 对于我的 Android 应用程序 我想在从应用程序接听电话后播放音频文件 应用程序将发起电话呼叫 一旦接收者接听电话 应用程序应开始播放录制的音频文件 通过在谷歌上进行大量搜索 我发现这对于未root的设备来说
  • 如何开始在 Ubuntu 20.04 上使用 Mozilla TTS 训练自定义语音模型?

    我想使用我录制的音频样本在 Mozilla TTS 中创建自定义语音 但不知道如何开始 Mozilla TTS 项目有文档和教程 但我在将各个部分组合在一起时遇到了困难 似乎缺少一些基本信息 而初学者需要知道这些信息才能继续 我有一些问题
  • 如何在 python 中生成音符或和弦?

    有人能给我指出一个在 python 2 7 中生成音符和和弦的好库吗 我查看了 PythonInfoWiki 但运气不佳 PyAudio 只是崩溃了 似乎没有其他东西可以生成音调 我不知道这是否有帮助 但这里有一些代码可以根据给定的频率和振
  • 如何从耳机插孔获取电力?

    我的问题是是否有人知道如何创建一个可以通过设备的耳机插孔发送电荷的 Android 应用程序 就像这个视频中那样 该视频展示了一款 iPhone 应用程序 可控制插入耳机插孔的 LED 我想知道如何访问该设备来发送电信号 抱歉我的英语不是我
  • 如何在 iPad 上使用 HTML5/Javascript 合成音频

    有没有人有工作示例代码 可以在 iPad 上的 Mobile Safari 上使用 HTML5 Javascript 合成 并播放 音频 我在网上找到了一些基于 javascript 的声音合成示例 但它们似乎都只能在 Firefox 中使
  • 将声音图形化地表示为波

    我创建了一个记录和播放声音的应用程序 我正在寻找一种显示简单波形的方法 记录声音的表示 不需要动画 只需一个简单的图表 如果可以选择波的子集也很好 当然更好 也播放该部分 总而言之 我正在寻找什么 一种以图形方式将录制的声音表示为波的方法
  • ffmpeg:音频样本的字节顺序

    我使用 ffmpeg 的 avcodec 从我的 C 应用程序中的音乐文件中检索原始音频样本 对于我测试的文件 这些文件样本的字节序似乎是小字节序 但我想知道对于我尝试解码的所有文件是否总是如此 即来自 ffmpeg 的实现或至少它的体系结

随机推荐

  • 测试折叠上的 CV 和欠采样

    我对构建具有不平衡数据的 ML 分类器有点迷失 80 20 数据集有30列 目标是标签 我想预测主要课程 我正在尝试重现以下步骤 分割训练 测试数据 在列车组上执行 CV 仅在测试折叠上应用欠采样 在 CV 的帮助下选择模型后 对训练集进行
  • 如何在 XSLT 中进行分页

    我有以下 XSLT
  • Oracle 中将字符串日期转换为日期时间

    我怎样才能把这个字符串日期转换为oracle中的日期时间 2011 07 28T23 54 14Z 使用此代码会引发错误 TO DATE 2011 07 28T23 54 14Z YYYY MM DD HH24 MI SS 如何才能做到这一
  • 如何在 UserControl 中显示 ObservableCollection

    我是 WPF 新手 我发现了一些类似的问题 但不太清楚最后一部分 我有一个带有 ObservableCollection 的 ViewModel 其中包含错误消息 我想在表单上显示这些消息并允许用户选择和复制全部或部分消息 过去在 WinF
  • subprocess.Popen("echo $HOME"... 和 subprocess.Popen(["echo", "$HOME"] 之间有什么区别

    我无法得到它是 bash 相关的或 python 子进程 但结果是不同的 gt gt gt subprocess Popen echo HOME shell True stdout subprocess PIPE communicate b
  • 如何使用 JavaScript 或 HTML 将文件输入设置为空?

    在我正在开发的网站上 我有一个文件输入 用户可以从中上传文件 它使用 Ajax 不是真正的 将文件发送到绑定到 iframe 的 php 文件 我的问题是 Firefox 自动填充文件输入元素 有没有办法让用户可以选择单击提交按钮而不发送文
  • 复制绘图区域在 Powerpoint VBA 中无法正常工作

    我拼凑了以下代码 将图表的格式从一个图表复制到另一个图表 代码仍然很混乱 因为我试图想出引用图表的最佳方法 欢迎任何想法 我无法准确复制主要是绘图区域和辅助访问的格式和位置 一个页面上必须有两个图表 首先选择源 然后选择目标 目前来看 它们
  • 自动滚动 Cypress 行为导致下拉菜单在 Cypress 测试中关闭。有解决方法吗?

    Cypress 的自动滚动行为正在关闭我试图在其中选择元素的下拉列表 这会导致测试失败 因为找不到第一个下拉项 我添加的解决方法是添加第二个 click 键入输入后重新打开下拉菜单 cy get selector click force t
  • SymPy:如何根据其他表达式返回一个表达式?

    我还很陌生SymPy并提出一个可能是基本问题的问题 或者我可能只是误解了 SymPy 的使用方式 有没有办法创建一个不由原子表示而是由其他表达式组合表示的表达式 Example gt gt gt from sympy physics uni
  • 当放入结构中时,值的寿命不够长

    我正在尝试使用 Rust 中的 LLVM这个板条箱 我正在尝试创建一个代码生成器结构来为我保存上下文 模块和构建器 但是当我尝试编译时 我收到一条错误消息 c does not live long enough 我怎样才能编译它 为什么 c
  • 铸造容器 C++ [重复]

    这个问题在这里已经有答案了 可能的重复 是否可以将 Base 类型的 STL 容器转换为 Derived 类型 这应该是一个简单的问题 如果我有一个基类的容器 例如 STL 列表 是否可以将整个容器转换为子类类型 例如 A inherits
  • @Query 注释使用 like %?1%

    我想写一个这样的查询 Query select p from Product p where p name 1 or p desc like 1 但这给了我例外 org hibernate hql ast QuerySyntaxExcept
  • 这个方法如何运作?

    我经常遇到这种注册动作侦听器的方式 虽然我最近一直在使用这种方法 但我不明白这是如何以及为什么的 这是一个 submit new JButton submit submit addActionListener new ActionListe
  • 绑定到 ICollectionView 时模拟数据不显示

    如果我绑定我的ListBox到视图模型ObservableCollection或 XAML 资源CollectionViewSource 模拟数据在设计时显示 有时CollectionViewSource由于某些 XAML 更改而停止显示此
  • Eclipse 在没有互联网连接的 PC 上间歇性挂起

    我从 Eclipse 3 2 开始就遇到过这个问题 但在较新的版本中 这个问题出现得更频繁 每当我访问某些配置菜单项或 Eclipse 解析包含指向某个 Internet URL 的 xmlns 变量的 XML 文件时 Eclipse ID
  • 从 DataTable 批量插入到 SQLCE DataSource

    这是一个使用 SQL CE 作为数据源的 C WPF 应用程序 我有一个 DataTable 显示为 DataGrid 和一个 SQL CE DataSource 我使用 DataAdapter DataSet 和 DataTable 从
  • 如何将 XML 文件读取到包含 null 元素的空字符串的 Dictionary>

    我有一个 xml 文件 例如
  • 雅虎财经 python 上的某些股票和页面出现 404 错误

    我正在尝试通过此 URL 从雅虎财经抓取数据https finance yahoo com quote AAPL key statistics p AAPL 运行下面的 python 代码后 我得到以下 HTML 响应 import num
  • 反转非唯一字典

    我有一本字典 需要根据非唯一值进行反转和分组 该字典根据现有的最佳答案而失败 gt gt gt graph a car red b car blue gt gt gt inv map gt gt gt for k v in graph it
  • 在处理中获取多个音频输入

    我目前正在编写一个需要访问多个音频输入的处理草图 但处理只允许访问默认线路 我尝试直接从 Java 混合器获取线路 在处理中访问 但我仍然只获得信号从我的机器上当前设置为默认值的那一行开始 我已经开始考虑按照建议通过 OSC 从 Super