标签: osc

Android上可以降低OSC/Midi(无音频)延迟吗?

我想为音频交互的实时接口做一个概念,因此真正的低延迟是必不可少的.我在上周已经阅读了很多关于这个主题的内容,但是在如此短的时间内无法获得真实的概述.所以在我深挖之前,我需要评估这个项目的可行性.

我已经阅读了很多关于Android和低延迟音频应用程序的问题,我知道iOS在这个领域是优越的,但我希望在可能的情况下使用Android.(我没有开发iOS必不可少的mac,我更喜欢更开放'Andoid更多)

所以我的问题是:

  1. 坏的低延迟行为是否仅与实际音频缓冲/处理有关,还是仅影响midi或OSC应用程序?对我来说,接口是重要的部分 - 这意味着我可以获得在单独的PC中处理的midi/OSC命令.

  2. 我需要较低的总体延迟(从手指触摸事件到命令输出).与iOS相比,这也是Android的问题吗?

midi android latency osc

5
推荐指数
0
解决办法
2181
查看次数

C++中断UDP侦听器.在Xcode中使用oscpack编译

我已成功将UDPreceive功能合并到我的应用程序中.然而!我无法弄清楚如何阻止UDP侦听器无限运行.OSCPack库内置了Break()和AsynchronousBreak(),但我无法实现这些.

在oscpack中的udpSocket.cpp文件中:

void Run() //the listener function (WORKING!)
{
    break_ = false; 
    //UDP Listener Code

    void Break()
    {
        break_ = true;
    }
    void AsynchronousBreak()
    {
        break_ = true;
        // Send a termination message to the asynchronous break pipe, so select() will return
        write( breakPipe_[1], "!", 1 );
    }
}
Run Code Online (Sandbox Code Playgroud)

尽管编译器建议正确调用所有内容,但我尝试从数据包Listener类调用Break()似乎没有做任何事情:

SocketReceiveMultiplexer s;
s.Break();
Run Code Online (Sandbox Code Playgroud)

我尝试过的另一种方法是根据RunUntilSigInt()函数引发中断标志.在数据包监听器类中:

raise(SIGINT);
Run Code Online (Sandbox Code Playgroud)

但这会终止整个程序,而不是仅仅打破UDPListener.作为参考,这里是udpSocket.cpp中的RunUntilSigInt()代码:

void SocketReceiveMultiplexer::RunUntilSigInt()
{
    assert( multiplexerInstanceToAbortWithSigInt_ == 0 ); /* at present we support only one multiplexer instance running until sig int */
    multiplexerInstanceToAbortWithSigInt_ = …
Run Code Online (Sandbox Code Playgroud)

c++ sockets udp osc

5
推荐指数
1
解决办法
887
查看次数

我可以从Pure Data执行Python脚本吗?

我知道有一些工具可以在Python中使用Pure Data(Pd),因此您可以在不使用GUI的情况下编程和使用Pd.我想知道是否有人尝试过相反的事情.我想将排序信息发送到Python并使用我的Python脚本进行处理.然后我想把信息发送给Pd.

到目前为止,我已经使用Pd中的[msgfile]对象将序列写入文本文件.这些可以用Python打开和操作,但这涉及切换到IDLE并手动运行程序,再次写入文本文件,最后从Pd中读取文件.如果Pd可以执行Python脚本,这将节省我在C或C++中编写自己的对象或在程序之间切换和手动运行脚本的工作量.

python osc puredata

5
推荐指数
1
解决办法
1593
查看次数

使用OSC时如何避免java.util.ConcurrentModificationException?

我正在处理的代码是抛出上述异常.我对多线程编程不是很有经验,而且我没有很多运气对此进行故障排除.

该程序使用Processing和OSC用Java编写.主要的OSC事件处理程序是向Vector添加元素.它是在用户输入时触发的,因此非常难以预测.此Vector也在Processing的动画线程中进行迭代和更新,该线程每秒约60次非常频繁地发生.

有时,在动画线程中迭代Vector时会调用OSC事件处理程序并抛出异常.

我已经尝试将" synchronized"修饰符添加到OSC事件处理程序中.我还试图提示对Vector的更改,直到动画线程的下一帧(时间步长),但我发现它最终会延迟抛出的异常.

我该怎么做才能防止这种行为?有没有办法只访问Vector,如果它还没有被使用?

更新: 两个答案表明列表在迭代时添加或删除了元素.这实际上是由于OSC正在从迭代列表的线程以外的线程触发处理程序的事实.我正在寻找一种方法来防止这种情况.

这是一些伪代码:

Vector<String> list = new Vector<String>();
Vector<Particle> completedParticles = new Vector<Particle>();

public void oscEvent( OSCMessage message )
{
    list.add( new Particle( message.x, message.y ) );
}

public void draw()
{
    completedParticles.clear();
    for( Particle p : list )
    {
        p.draw();
        if( p.isComplete ) {
            completedParticles.add( p );
        }   
    }
    list.removeAll( completedParticles );
}
Run Code Online (Sandbox Code Playgroud)

java multithreading exception osc

4
推荐指数
1
解决办法
6465
查看次数

从Android应用程序发送OSC(打开声音控制)消息

我正在使用SDK for android 4.0编写一个Android应用程序

我想知道在android SDK中是否有用于发送OSC消息(Open Sound Control)的API,或者我应该只使用java OSC SDK.

我尝试浏览http://opensoundcontrol.org/introduction-osc ,在实现中我发现了以下内容:http://www.illposed.com/software/javaosc.html

所以我只是想知道我是否应该使用JavaOSC,其他一些库,或者如果android自带API来发送OSC消息.

任何有关该问题的信息将不胜感激.

谢谢

幼狮

java android osc

4
推荐指数
1
解决办法
5479
查看次数

将OSC与NodeJS一起使用

我需要在NodeJS中创建一个支持OSC over UDP的测试服务器.快速搜索后,似乎有很多选择.任何人都可以在NodeJS中推荐OSC模块吗?

osc node.js

3
推荐指数
1
解决办法
2098
查看次数

Android上的Kivy和OSC

我在kivy上做了一个简单的OSC测试,看起来我在Android手机上运行它们时遇到了问题.为了更好地理解Kivy和OSC是如何工作的,我做了一个小测试,它应该显示应用程序和另一台计算机之间的通信.一个服务器

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import *
from kivy.uix.button import Button
from kivy.clock import Clock
from kivy.lib.osc import oscAPI

class CButton(Button):
    def __init__(self, **kwargs):
        kwargs['text'] = kwargs.get('text', 'empty')
        super(CButton, self).__init__(**kwargs)

class OscWidget(GridLayout):
    def __init__(self, **kwargs):
        super(OscWidget, self).__init__(**kwargs)

    def callback(self, instance, *args):
        self.oscbutton.text = instance[2]
        oscAPI.sendMsg('/current/reply', dataArray=['answer'], ipAddr='192.168.1.101', port=8889)

class OscButtonApp(App):
    def buttpress(self, *args):
        oscAPI.sendMsg('/current/reply', dataArray=['call'], ipAddr='192.168.1.101', port=8889)

    def build(self):
        btnapp = OscWidget()
        oscAPI.init()
        oscid = oscAPI.listen(port=8889)
        osc.bind(oscid, btnapp.callback, '/test/reply')
        Clock.schedule_interval(lambda *x: osc.readQueue(oscid), 0)
        return …
Run Code Online (Sandbox Code Playgroud)

python networking android osc kivy

1
推荐指数
1
解决办法
1093
查看次数

标签 统计

osc ×7

android ×3

java ×2

python ×2

c++ ×1

exception ×1

kivy ×1

latency ×1

midi ×1

multithreading ×1

networking ×1

node.js ×1

puredata ×1

sockets ×1

udp ×1