问题标签 [juce]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
254 浏览

c++ - XCode 4.6 - 在没有堆栈跟踪的情况下调试 EXC_BAD_ACCESS

我已经在网上搜索了一段时间,但似乎我的问题非常罕见:

我正在用 C++ 中的 JUCE 编写音频单元插件。当我在主机中运行它时,主机崩溃了。当我在加载插件之前将 XCode 调试器附加到提升机时,它指向以下内容:

如果我在调试控制台中输入“bt”,它会说:

我没有得到堆栈跟踪,因此无法找到错误的来源。看看在错误访问发生之前执行了什么会有很大帮助,但我不知道怎么做。

我可以在程序的某个地方设置一个断点,然后从那里慢慢地遍历代码,直到遇到崩溃。我这样做了,最终执行离开了我的源代码,我得到了装配线。我可以看到它使用“ret”命令从很多调用中跳出来。最终在一个“ret”命令上,崩溃发生了。

汇编代码来自运行我的插件的主机。但是崩溃出现在不同类型的主机上,所以我很确定,这是我这边的错。有任何想法吗?

谢谢!

0 投票
3 回答
3335 浏览

c++ - YouCompleteMe 和 C++ 诊断不当错误

我试图让 YCM 在 Vim 中工作以进行 C++ 开发。我正在使用 JUCE 框架。Ctags 和自动补全效果很好。但是,我在“排水沟”中出现了很多错误的错误,如红色箭头。

例如

whenaddAndMakeVisible是继承类的函数,Component甚至出现在自动完成中。

还会收到很多错误,如下所示:

我的.ycm_extra_conf.pyhttps : //gist.github.com/adamski/a793a24b026f68a1074e 我正在添加具有绝对路径的 JUCE 库以及本地项目版本,并从 @ladislas 示例中复制了建议。

输出:YCMDebugInfo https://gist.github.com/adamski/2e7dd79b45d0fb6f5010#file-ycmdebuginfo

当前输出:YCMDiags https://gist.github.com/adamski/8fad8e0724a03854912b

重现问题的示例存储库:https ://github.com/adamski/juce-chapter02-07

我的.vimrc样子:

0 投票
1 回答
111 浏览

c++ - 使用类引用来修改另一个类中的公共成员

由于我的最后一个问题中包含太多代码,因此我尝试制作最简单的示例来说明我正在尝试做的事情。举个例子,..

在 JUCE(我用来编写 VST 插件的 API)中,有一个字符串类,JUCE 将其命名为“String”。我不确定构造函数到底做了什么,但你可以使用类似的东西来创建一个 String 对象。

在我的例子中,ClassTwo 是 AudioProcessor 类,它有一个公共成员变量,我可以像这样从 ClassOne 访问它。

就我而言,ClassOne 是我在 GUI 中使用的自定义组件(我将其命名为 PixelSlider)。它使用滑块侦听器来检查滑块的状态并修改 ClassTwo(AudioProcessor) 中的成员变量。我可以使用上面的方法很好地做到这一点,但问题是我想根据需要创建尽可能多的 ClassOne(PixelSlider) 对象。我想向他们传递一个 String 对象,告诉他们要修改 ClassTwo(AudioProcessor) 的哪个成员变量。从逻辑上讲,这可以通过传递对 String 对象的引用来完成,该对象的字符串值与 ClassTwo 成员变量的名称相同。像这样,...

这在 JUCE 中不起作用,但是任何人都可以告诉我一种方法来完成这项工作,而不必创建一堆几乎与 ClassOne(PixelSlider) 一样修改不同 ClassTwo(AudioProcessor) 成员变量的不同类?

0 投票
1 回答
1873 浏览

c++ - windows/c++:如何从信号处理程序获得有用的堆栈跟踪?

我有一个 Windows/C++ 应用程序(使用 JUCE),我想在应用程序崩溃时将堆栈跟踪转储到文件中。在我的初始化代码中,我有:

然后我的处理程序看起来像:

但是,生成的堆栈跟踪不是发生崩溃的线程:

在内部,getStackBacktrace执行以下操作:

有没有办法获得发生崩溃的线程(或所有线程)的堆栈跟踪?

0 投票
0 回答
386 浏览

android - 原生 Android 应用和触摸事件更新率

我正在使用 JUCE C++ 框架开发一个原生 Android 应用程序。该应用程序正在使用 OpenGL 进行渲染。非交互动画表现得非常好。但是,交互式触摸响应动画(例如拖动组件)的更新速度很慢。它一点也不顺利。我在 Java 端进行了测量,每个 ACTION_MOVE 事件之间的平均时间约为 70-80 毫秒。

更新:我认为主要问题可能与渲染正在移动的组件下方的内容有关。当我尝试使用 JuceDemo 时,使用 Window 演示我发现将一个窗口拖到另一个窗口上时性能很差,但如果我将窗口拖到只有空白空间的地方,它的性能很好并且感觉很流畅。

有没有办法可以增加我的应用程序中的动画 UI 响应能力?

我对 Introjucer 提供的标准 Java 模板进行了一些更改,以便handlePaint()在存在 OpenGL 上下文时不调用本机函数。(这里建议)

0 投票
1 回答
722 浏览

c++ - 如何在 JUCE 中录制没有“JUNK”子块的标题的音频?

我正在尝试使用JUCE库开发一个可以录制音频或打开音频文件的应用程序。音频文件将被传递到openSMILE程序中以提取其特征值。所有音频文件均为波形格式,最终将针对 iPhone 平台构建应用程序。

我已经开发了允许应用程序录制音频并从文件目录打开音频文件的应用程序部分。我可以将一些音频文件传递到 openSMILE 以提取它们的特征值,但不能提取其他的。所有从 JUCE 应用程序本身记录的内容都不能传入。

传递那些无法传递的音频文件时产生的错误如下:

为了尝试找出错误的原因,我随后使用 Riffpad 提取了有关可通过和不可通过音频文件的波头的信息。

在可传入openSMILE程序的音频文件中,波形文件头信息如下:

音频 1

音频 2

而不能通过的如下:

音频 3 <---从我的 JUCE 应用程序中录制

Audio 4 <---一个随机的音频文件,也不能传入openSMILE

我猜测(如果我错了,请纠正我)如果我可以从记录的波形文件(即音频 3)中删除 JUNK 子块,则错误将被删除,这样标题将与可通过的音频文件中的标题相似。

我想到了两种可能解决这个问题的方法:

  1. 使用类似于可通过的音频文件头的头格式录制 Juce Audio(最直接和首选的方法,如果可行的话)

  2. 录制后转换音频文件,以便标题相似(我已经阅读过使用 libsndfile 和音频压缩管理器(ACM)可能会工作,但我不确定它们是否适用于 JUCE 可以构建的跨平台,例如苹果手机)

对于第一种方式,有什么方法可以像可传递的音频文件一样以“正确”格式录制音频?

对于第二种方式,我可以使用可以为跨平台构建的库,还是以某种方式取出录制音频的数据块,并添加一个“正确”格式的标题?(我从阅读中收集到的是,JUNK 允许包含信息,如果不需要,可以跳过。我认为删除它不会有问题,只要我编辑总长度来自 RIFF-WAVE 子块。)

上述任何方法是否可行,如果可以,我应该如何执行?

谢谢!

0 投票
1 回答
120 浏览

phonegap-plugins - phonegap 的 Juce 库插件

是否有任何可用于Juce库的插件,我可以添加并且可以同时用于 IOS 和 android ?如果没有,我如何Juce在我的 Phone gap 应用程序中集成库?

0 投票
2 回答
248 浏览

c++ - 开发适用于 Windows 和 Mac OS 的应用程序

我需要开发一个可以在 Windows 和 Mac OS X 上运行的应用程序,是一个需要实时显示数据的应用程序“监视器”,通过以太网连接。我对性能和图形感兴趣。我非常了解c++。你能帮我选择开发工具吗?谢谢

0 投票
0 回答
280 浏览

c++ - Juce 中 OpenGLAppComponent 的生命周期

我似乎无法很好地理解这些 OpenGLAppComponents 是如何来来去去的。如果错了,有人可以纠正我的想法吗?

  1. 创建的对象继承自 OpenGLAppComponents 和 Timer。对象存在于 AudioProcessorEditor 中。
  2. 调用 initialise() (这是我们附加到 openGLContext 的地方?启动计时器。)
  3. addAndMakeVisible(&my_gl_appcomponent); 从编辑器调用,告诉它这将被绘制。
  4. 调用 my_gl_appcomponent.setBounds(...) 来指定 GL 组件的大小和位置。
  5. 计时器回调重复调用 repaint(),更新您的显示。
  6. 当编辑器关闭时,我们调用shutdown(),我们从openGLContext 中分离出来。
  7. 删除my_gl_component,在析构函数中调用shutdownOpenGL()
  8. 我们可以自由地再次打开编辑器,转到 2。

我错过了什么吗?我有多余的东西吗?我已经连续第二天试图找出这个 GL_INVALID_FRAMEBUFFER_OPERATION 错误的原因,我感到非常沮丧。

0 投票
2 回答
5429 浏览

c++ - 将可执行文件链接到第三方相关共享库时的 C++ CMake 未定义引用

我阅读了很多相关主题(如123),但我自己没有找到答案,所以我在这里。

我有一个可以构建和执行的 CMake 项目,比如说“x”。我创建了一个名为“a.so”的共享库,它依赖于其他名为“b.so”的共享库。我想在“x”中使用“a”。

这是我简化的“x”CMakelists.txt:

“x”编译输出提取:

"a" 和 "b" 编译。

问题是当我想编译 x 时,链接时出现错误:未定义对“函数名”的引用。 我也尝试链接到“b”,但它仍然无法正常工作

这里也出现了“b”,但我得到了同样的错误......

这是错误输出:

我看不出有什么问题,现在我很困惑,因为我尝试了很多事情来让事情正常工作......但没有任何工作。

任何想法?

谢谢!