标签: juce

有没有办法在 C++ 中的某种类型的向量中存储方法?

这是我第一次来这里。

我目前正在尝试通过遍历所有像素并对那里的颜色进行处理来编写一个用于后处理图像的类。

我的想法是添加诸如posterize()或rgbSplit()等之类的方法。当它们被初始化时,它不会遍历每个效果的所有像素,因为这不是很有效。我希望它存储这样一个事实,即当我使用名为process().

但是因此我必须将效果代码的引用存储在列表中(如向量),对吗?因为那样我就可以进入forx 和 y 坐标的-loop 并在那里添加另一个 for 循环,它遍历应该应用于像素的所有方法。

问题是,我不知道如何在向量中存储方法。这甚至可能吗?还是矢量仅适用于对象?或者我可以以某种方式“客观化”一个方法?或者我现在必须做的事情是什么?

c++ image vector chaining juce

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

JUCE C++ - VST插件创建

我想用c ++制作VST插件.我读到JUCE库比使用Steinberg SDK更好.我的问题是,当我在谷歌教程中它只涉及与应用程序开发有关的通用主题,而不是该库最初设计的专用音频插件接口.

我希望你们能指点我的教程,包括使用JUCE框架制作vst插件(可能是一个简单的效果,如低通滤波器).或者,如果有人能告诉我有关在visual studio(2008)中开发VST插件的更好或更简单的方法,并链接到将帮助我入门的资源.

c++ audio vst visual-studio-2008 juce

3
推荐指数
2
解决办法
5848
查看次数

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

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

signal(SIGABRT, abortHandler);
signal(SIGSEGV, abortHandler);
signal(SIGILL, abortHandler);
signal(SIGFPE, abortHandler);
Run Code Online (Sandbox Code Playgroud)

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

void abortHandler(int signum)
{
    juce::File log("stacktrace.txt");

    log.appendText(juce::SystemStats::getStackBacktrace());

    exit(signum);
}
Run Code Online (Sandbox Code Playgroud)

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

0: AudulusDebug32: juce::SystemStats::getStackBacktrace + 0x7f
1: AudulusDebug32: abortHandler + 0x61
2: AudulusDebug32: _XcptFilter + 0x1e3
3: AudulusDebug32: __tmainCRTStartup + 0x15f
4: AudulusDebug32: WinMainCRTStartup + 0xd
5: BaseThreadInitThunk + 0xe
6: RtlInitializeExceptionChain + 0x84
7: RtlInitializeExceptionChain + 0x5a
Run Code Online (Sandbox Code Playgroud)

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

    HANDLE process = GetCurrentProcess();
    SymInitialize (process, nullptr, TRUE);

    void* stack[128];
    int frames = (int) CaptureStackBackTrace (0, numElementsInArray (stack), stack, nullptr); …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi multithreading juce

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

为什么这个 operator< 重载函数对 STL 算法不可见?

我已经学会了重载operator<以使自定义类与 STL 算法兼容,就像这样:

struct A
{ int a; };

bool operator< (const A& x, const A& y)
{ return x.a < y.a; }

std::vector<A> aOne, aTwo, aResult;

std::set_difference(aOne.begin(), aOne.end(),
                    aTwo.begin(), aTwo.end(),
                    std::inserter(aResult, aResult.begin()));
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用JUCE 库中的ValueTree对象做同样的事情时,它失败了:

bool operator< (const juce::ValueTree& x, const juce::ValueTree& y)
{
   // let's now worry about the implementation of this function here...
   return true;
}

std::vector<juce::ValueTree> vOne, vTwo, vResult;

std::set_difference(vOne.begin(), vOne.end(),
                    vTwo.begin(), vTwo.end(),
                    std::inserter(vResult, vResult.begin()));

// COMPILER ERROR: Failed to specialize function template …
Run Code Online (Sandbox Code Playgroud)

c++ std juce

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

什么是USB上可接受的MIDI带宽?

我正在研究一种MIDI效果(一种VST插件,可以使用C++中的Juce Framework修改传入的MIDI生成新数据并将其转发出来).我看到技术上可以生成一个新的MIDI消息,每个样本使我的MIDI流流量为16到24位,每秒41,000次或更多.对于MIDI硬件来说,这似乎完全不可能.

有什么指导或规则我必须遵守什么时候我决定我的带USB接口到硬件合成器,无论新老?

编辑:我应该补充说,我想要做的是,更高的带宽会有所帮助,但应该使用Arturia Minibrute等硬件.我试图做一些新颖的事情,比如将信封和LFO应用到调制和音高轮上.

c++ midi vst audiounit juce

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

C++ 线程:尝试使用已删除的函数

我使用 JUCE 框架用 C++ 制作了一个 MIDI 生成器。我想在不同的线程中进行生成,这样它就不会阻塞我的整个程序。这就是我制作线程的方式:

    std::thread generationThread (&MainContentComponent::generateProgression,var1, var2);
Run Code Online (Sandbox Code Playgroud)

generateProgression 是根据 var1(整数)和 var2(布尔值)生成 MIDI 的函数

该线程是在 MainContentComponent 类中创建的,generateProgression 是该类的函数。

问题是我收到一个编译错误:“尝试使用已删除的函数”。谁能告诉我我做错了什么?

c++ multithreading juce

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

如何将 JUCE 字符串转换为 STD::string

您好,有什么方法可以将 JUCE 字符串转换为 std::string 吗?我似乎无法弄清楚如何以任何方式做到这一点。

string GetGate() { return (to_string(Gate.char)); };
juce::String Gate = "A1";
Run Code Online (Sandbox Code Playgroud)

c++ juce

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

libtorch:为什么我的张量从一个方法返回到另一个方法时会改变值?

我正在调试这个错误:

Unhandled exception at 0x00007FFA0B7D3E49 in AudioPluginHost.exe: Microsoft C++ exception: c10::Error at memory location 0x00000044B4DABDB0.
Run Code Online (Sandbox Code Playgroud)

我正在尝试训练一个神经网络,主要基于这个例子。

这就是我正在做的:

torch::Tensor TrainingSample::getRatingTensor()
{
    c10::DeviceType deviceType;
    if (torch::cuda::is_available()) {
        deviceType = torch::kCUDA;
    }
    else {
        deviceType = torch::kCPU;
    }
    float ratingArray[1][3] = { {0} };
    ratingArray[0][(int)waveform.rating] = 1;

    ostringstream os0;
    for (int i = 0;i<(sizeof(ratingArray[0])/sizeof(ratingArray[0][0]));i++) {
        os0 << ratingArray[0][i];
        os0 << ",";
    }
    DBG("ratingArray: \n" + os0.str());

    auto options = torch::TensorOptions().dtype(torch::kFloat32).device(deviceType);
    torch::Tensor ratingTensor = torch::from_blob(ratingArray, { 1, 3 }, options);

    ostringstream os1; …
Run Code Online (Sandbox Code Playgroud)

c++ juce libtorch

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

不能在函数 C++ 中使用覆盖

所以我一直在尝试使用 JUCE 处理音频并遵循教程,他在其中使用了一个函数的覆盖,但是当我这样做时,它说“函数声明符之后的预期函数体”。目标是播放视频中解释的随机白噪声。

视频链接:https : //www.youtube.com/watch?v=GjNeYI6-uNE&index=11&list=PLLgJJsrdwhPxa6-02-CeHW8ocwSwl2jnu

代码:

/*
  ==============================================================================

    This file was auto-generated!

  ==============================================================================
*/

#include "MainComponent.h"

//==============================================================================
MainComponent::MainComponent()
{
    // Make sure you set the size of the component after
    // you add any child components.
    setSize (800, 600);

    // specify the number of input and output channels that we want to open
    setAudioChannels (2, 2);
}

MainComponent::~MainComponent()
{
    // This shuts down the audio device and clears the audio source.
    shutdownAudio();
}

//==============================================================================
void MainComponent::prepareToPlay (int samplesPerBlockExpected, …
Run Code Online (Sandbox Code Playgroud)

c++ audio function juce

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