问题描述
我使用的是python3和我自己编译的[Renderman][1]
。
这个库使用了 boost_python
,它通过 cpp 制作了 python 库。
test.py
import librenderman as rm
engine = rm.RenderEngine(44100,512,512)
$python test.py
JUCE v5.2.0
Traceback (most recent call last):
File "test.py",line 3,in <module>
engine = rm.RenderEngine(44100,512)
TypeError: __init__() should return None,not 'nonetype'
我搜索了一下,发现这是因为 python 2/3 差异。
然后检查链接库
$otool -L librenderman.so
librenderman.so:
/usr/local/lib/librenderman.so.dylib (compatibility version 1.0.0,current version 1.0.0)
@rpath/libpython3.7m.dylib (compatibility version 3.7.0,current version 3.7.0)
@rpath/libboost_python37.dylib (compatibility version 0.0.0,current version 0.0.0)
/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit (compatibility version 1.0.0,current version 1.0.0)
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0,current version 4.0.0)
/System/Library/Frameworks/AudioToolBox.framework/Versions/A/AudioToolBox (compatibility version 1.0.0,current version 1000.0.0)
/System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation (compatibility version 1.0.0,current version 2.0.0)
/System/Library/Frameworks/AVKit.framework/Versions/A/AVKit (compatibility version 1.0.0,current version 1.0.0)
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0,current version 164.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0,current version 23.0.0)
/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio (compatibility version 1.0.0,current version 1.0.0)
/System/Library/Frameworks/CoreAudioKit.framework/Versions/A/CoreAudioKit (compatibility version 1.0.0,current version 1.0.0)
/System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia (compatibility version 1.0.0,current version 1.0.0)
/System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI (compatibility version 1.0.0,current version 69.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0,current version 275.0.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0,current version 1.0.0)
/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0,current version 1.11.0)
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0,current version 610.3.7)
@rpath/libc++.1.dylib (compatibility version 1.0.0,current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0,current version 1292.60.1)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0,current version 2022.20.117)
/System/Library/Frameworks/applicationservices.framework/Versions/A/applicationservices (compatibility version 1.0.0,current version 54.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0,current version 1770.255.0)
/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0,current version 1463.2.1)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0,current version 1122.11.0)
/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText (compatibility version 1.0.0,current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0,current version 1770.255.0)
/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO (compatibility version 1.0.0,current version 1.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0,current version 228.0.0)
我应该在哪里以及如何解决这个问题??
虽然我熟悉python3,但不熟悉python2
和boost-python
任何建议都有帮助。
RenderEngine.h
/*
==============================================================================
RenderEngine.h
Created: 19 Feb 2017 9:47:15pm
Author: tollie
==============================================================================
*/
#ifndef RENDERENGINE_H_INCLUDED
#define RENDERENGINE_H_INCLUDED
#include <random>
#include <array>
#include <iomanip>
#include <sstream>
#include <string>
#include "Maximilian/maximilian.h"
#include "Maximilian/libs/maxiFFT.h"
#include "Maximilian/libs/maxiMFCC.h"
#include "../JuceLibraryCode/JuceHeader.h"
using namespace juce;
typedef std::vector<std::pair<int,float>> PluginPatch;
typedef std::vector<std::array<double,13>> MFCCFeatures;
class RenderEngine
{
public:
RenderEngine (int sr,int bs,int ffts) :
sampleRate(sr),bufferSize(bs),fftSize(ffts),plugin(nullptr)
{
maxiSettings::setup (sampleRate,1,bufferSize);
}
virtual ~RenderEngine()
{
if (plugin != nullptr)
{
plugin->releaseResources();
delete plugin;
}
}
bool loadplugin (const std::string& path);
void setPatch (const PluginPatch patch);
const PluginPatch getPatch();
void renderPatch (const uint8 midiNote,const uint8 midiveLocity,const double noteLength,const double renderLength);
const MFCCFeatures getMFCCFrames();
const MFCCFeatures getnormalisedMFCCFrames (const std::array<double,13>& mean,const std::array<double,13>& variance);
const std::vector<double> getRMSFrames();
const size_t getPluginParameterSize();
const String getPluginParametersDescription();
bool overridePluginParameter (const int index,const float value);
bool removeOverridenParameter (const int index);
const std::vector<double> getAudioFrames();
bool writetoWav(const std::string& path);
private:
void fillAudioFeatures (const AudioSampleBuffer& data,maxiFFT& fft);
void ifTimeSetNoteOff (const double& noteLength,const double& sampleRate,const int& bufferSize,const uint8& midiChannel,const uint8& midiPitch,const uint8& midiveLocity,const int& currentBufferIndex,MidiBuffer& bufferToNoteOff);
void fillAvailablePluginParameters (PluginPatch& params);
double sampleRate;
int bufferSize;
int fftSize;
maxiMFCC mfcc;
AudioPluginInstance* plugin;
PluginPatch pluginParameters;
PluginPatch overridenParameters;
MFCCFeatures mfccFeatures;
std::vector<double> processedMonoAudioPreview;
std::vector<double> rmsFrames;
double currentRmsFrame;
};
#endif // RENDERENGINE_H_INCLUDED
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)