kopia lustrzana https://github.com/jameshball/osci-render
rodzic
169036584e
commit
4baac1efab
|
@ -179,11 +179,6 @@ OscirenderAudioProcessor::OscirenderAudioProcessor() : CommonAudioProcessor(Buse
|
||||||
synth.addSound(defaultSound);
|
synth.addSound(defaultSound);
|
||||||
|
|
||||||
addAllParameters();
|
addAllParameters();
|
||||||
|
|
||||||
if (objectServerPort == 0) {
|
|
||||||
objectServerPort = juce::Random::getSystemRandom().nextInt(juce::Range<int>(51600, 51700));
|
|
||||||
objectServer.reload();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OscirenderAudioProcessor::~OscirenderAudioProcessor() {
|
OscirenderAudioProcessor::~OscirenderAudioProcessor() {
|
||||||
|
@ -407,10 +402,6 @@ void OscirenderAudioProcessor::setObjectServerRendering(bool enabled) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OscirenderAudioProcessor::setObjectServerPort(int port) {
|
|
||||||
objectServerPort = port;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OscirenderAudioProcessor::processBlock(juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages) {
|
void OscirenderAudioProcessor::processBlock(juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages) {
|
||||||
juce::ScopedNoDenormals noDenormals;
|
juce::ScopedNoDenormals noDenormals;
|
||||||
// Audio info variables
|
// Audio info variables
|
||||||
|
@ -669,8 +660,6 @@ void OscirenderAudioProcessor::getStateInformation(juce::MemoryBlock& destData)
|
||||||
}
|
}
|
||||||
xml->setAttribute("currentFile", currentFile);
|
xml->setAttribute("currentFile", currentFile);
|
||||||
|
|
||||||
xml->setAttribute("objectServerPort", objectServerPort);
|
|
||||||
|
|
||||||
recordingParameters.save(xml.get());
|
recordingParameters.save(xml.get());
|
||||||
|
|
||||||
copyXmlToBinary(*xml, destData);
|
copyXmlToBinary(*xml, destData);
|
||||||
|
@ -699,10 +688,6 @@ void OscirenderAudioProcessor::setStateInformation(const void* data, int sizeInB
|
||||||
juce::SpinLock::ScopedLockType lock1(parsersLock);
|
juce::SpinLock::ScopedLockType lock1(parsersLock);
|
||||||
juce::SpinLock::ScopedLockType lock2(effectsLock);
|
juce::SpinLock::ScopedLockType lock2(effectsLock);
|
||||||
|
|
||||||
// If a port is saved, use that one, otherwise choose a random port
|
|
||||||
objectServerPort = xml->getIntAttribute("objectServerPort", juce::Random::getSystemRandom().nextInt(juce::Range<int>(51600, 51700)));
|
|
||||||
objectServer.reload();
|
|
||||||
|
|
||||||
auto effectsXml = xml->getChildByName("effects");
|
auto effectsXml = xml->getChildByName("effects");
|
||||||
if (effectsXml != nullptr) {
|
if (effectsXml != nullptr) {
|
||||||
for (auto effectXml : effectsXml->getChildIterator()) {
|
for (auto effectXml : effectsXml->getChildIterator()) {
|
||||||
|
|
|
@ -204,8 +204,6 @@ public:
|
||||||
juce::String getFileId(int index);
|
juce::String getFileId(int index);
|
||||||
std::shared_ptr<juce::MemoryBlock> getFileBlock(int index);
|
std::shared_ptr<juce::MemoryBlock> getFileBlock(int index);
|
||||||
void setObjectServerRendering(bool enabled);
|
void setObjectServerRendering(bool enabled);
|
||||||
void setObjectServerPort(int port);
|
|
||||||
int objectServerPort = 0;
|
|
||||||
void addErrorListener(ErrorListener* listener);
|
void addErrorListener(ErrorListener* listener);
|
||||||
void removeErrorListener(ErrorListener* listener);
|
void removeErrorListener(ErrorListener* listener);
|
||||||
void notifyErrorListeners(int lineNumber, juce::String id, juce::String error);
|
void notifyErrorListeners(int lineNumber, juce::String id, juce::String error);
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
#include "AboutComponent.h"
|
#include "AboutComponent.h"
|
||||||
|
|
||||||
AboutComponent::AboutComponent(const void *image, size_t imageSize, juce::String sectionText, int* port) {
|
AboutComponent::AboutComponent(const void *image, size_t imageSize, juce::String sectionText) {
|
||||||
addAndMakeVisible(logoComponent);
|
addAndMakeVisible(logoComponent);
|
||||||
addAndMakeVisible(text);
|
addAndMakeVisible(text);
|
||||||
addAndMakeVisible(portText);
|
|
||||||
|
|
||||||
logo = juce::ImageFileFormat::loadFrom(image, imageSize);
|
logo = juce::ImageFileFormat::loadFrom(image, imageSize);
|
||||||
|
|
||||||
|
@ -17,22 +16,11 @@ AboutComponent::AboutComponent(const void *image, size_t imageSize, juce::String
|
||||||
text.setColour(juce::TextEditor::outlineColourId, juce::Colours::transparentBlack);
|
text.setColour(juce::TextEditor::outlineColourId, juce::Colours::transparentBlack);
|
||||||
text.setJustification(juce::Justification(juce::Justification::centred));
|
text.setJustification(juce::Justification(juce::Justification::centred));
|
||||||
text.setText(sectionText);
|
text.setText(sectionText);
|
||||||
|
|
||||||
// TODO: Integrate this better
|
|
||||||
portText.setMultiLine(false);
|
|
||||||
portText.setReadOnly(false);
|
|
||||||
portText.setInterceptsMouseClicks(false, false);
|
|
||||||
portText.setOpaque(false);
|
|
||||||
portText.setColour(juce::TextEditor::backgroundColourId, juce::Colours::transparentBlack);
|
|
||||||
portText.setColour(juce::TextEditor::outlineColourId, juce::Colours::transparentBlack);
|
|
||||||
portText.setJustification(juce::Justification(juce::Justification::centred));
|
|
||||||
portText.setText(juce::String((port != nullptr) ? (*port) : 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AboutComponent::resized() {
|
void AboutComponent::resized() {
|
||||||
auto area = getLocalBounds();
|
auto area = getLocalBounds();
|
||||||
area.removeFromTop(10);
|
area.removeFromTop(10);
|
||||||
logoComponent.setBounds(area.removeFromTop(110));
|
logoComponent.setBounds(area.removeFromTop(110));
|
||||||
portText.setBounds(area.removeFromBottom(20).removeFromTop(15));
|
|
||||||
text.setBounds(area);
|
text.setBounds(area);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
class AboutComponent : public juce::Component {
|
class AboutComponent : public juce::Component {
|
||||||
public:
|
public:
|
||||||
AboutComponent(const void *image, size_t imageSize, juce::String sectionText, int* port = nullptr);
|
AboutComponent(const void *image, size_t imageSize, juce::String sectionText);
|
||||||
|
|
||||||
void resized() override;
|
void resized() override;
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@ private:
|
||||||
juce::ImageComponent logoComponent;
|
juce::ImageComponent logoComponent;
|
||||||
|
|
||||||
juce::TextEditor text;
|
juce::TextEditor text;
|
||||||
juce::TextEditor portText;
|
|
||||||
|
|
||||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AboutComponent)
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AboutComponent)
|
||||||
};
|
};
|
||||||
|
|
|
@ -32,7 +32,7 @@ OsciMainMenuBarModel::OsciMainMenuBarModel(OscirenderAudioProcessor& p, Oscirend
|
||||||
"BUS ERROR Collective, for providing the source code for the Hilligoss encoder\n"
|
"BUS ERROR Collective, for providing the source code for the Hilligoss encoder\n"
|
||||||
"Jean Perbet (@jeanprbt) for the osci-render macOS icon\n"
|
"Jean Perbet (@jeanprbt) for the osci-render macOS icon\n"
|
||||||
"All the community, for suggesting features and reporting issues!"
|
"All the community, for suggesting features and reporting issues!"
|
||||||
, &audioProcessor.objectServerPort);
|
);
|
||||||
options.content.setOwned(about);
|
options.content.setOwned(about);
|
||||||
options.content->setSize(500, 270);
|
options.content->setSize(500, 270);
|
||||||
options.dialogTitle = "About";
|
options.dialogTitle = "About";
|
||||||
|
|
|
@ -303,8 +303,6 @@ std::vector<std::vector<Line>> LineArtParser::parseJsonFrames(juce::String jsonS
|
||||||
|
|
||||||
// If no frames were valid, stop and parse invalid fallback instead
|
// If no frames were valid, stop and parse invalid fallback instead
|
||||||
if (!hasValidFrames) return parseJsonFrames(juce::String(BinaryData::invalid_gpla, BinaryData::invalid_gplaSize));
|
if (!hasValidFrames) return parseJsonFrames(juce::String(BinaryData::invalid_gpla, BinaryData::invalid_gplaSize));
|
||||||
|
|
||||||
return frames;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LineArtParser::setFrame(int fNum) {
|
void LineArtParser::setFrame(int fNum) {
|
||||||
|
|
|
@ -10,14 +10,8 @@ ObjectServer::~ObjectServer() {
|
||||||
stopThread(1000);
|
stopThread(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectServer::reload() {
|
|
||||||
stopThread(1000);
|
|
||||||
startThread();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectServer::run() {
|
void ObjectServer::run() {
|
||||||
port = audioProcessor.objectServerPort;
|
if (socket.createListener(51677, "127.0.0.1")) {
|
||||||
if (socket.createListener(port, "127.0.0.1")) {
|
|
||||||
// preallocating a large buffer to avoid allocations in the loop
|
// preallocating a large buffer to avoid allocations in the loop
|
||||||
std::unique_ptr<char[]> message{ new char[10 * 1024 * 1024] };
|
std::unique_ptr<char[]> message{ new char[10 * 1024 * 1024] };
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,6 @@ public:
|
||||||
~ObjectServer();
|
~ObjectServer();
|
||||||
|
|
||||||
void run() override;
|
void run() override;
|
||||||
void reload();
|
|
||||||
|
|
||||||
int port = 51677;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OscirenderAudioProcessor& audioProcessor;
|
OscirenderAudioProcessor& audioProcessor;
|
||||||
|
|
|
@ -23,6 +23,7 @@ from bpy.app.handlers import persistent
|
||||||
from bpy_extras.io_utils import ImportHelper
|
from bpy_extras.io_utils import ImportHelper
|
||||||
|
|
||||||
HOST = "localhost"
|
HOST = "localhost"
|
||||||
|
PORT = 51677
|
||||||
|
|
||||||
sock = None
|
sock = None
|
||||||
|
|
||||||
|
@ -44,7 +45,6 @@ class OBJECT_PT_osci_render_settings(bpy.types.Panel):
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
global sock
|
global sock
|
||||||
self.layout.prop(context.scene, "osciport")
|
|
||||||
if sock is None:
|
if sock is None:
|
||||||
self.layout.operator("render.osci_render_connect", text="Connect to osci-render instance")
|
self.layout.operator("render.osci_render_connect", text="Connect to osci-render instance")
|
||||||
else:
|
else:
|
||||||
|
@ -58,7 +58,6 @@ class osci_render_connect(bpy.types.Operator):
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
global sock
|
global sock
|
||||||
PORT = context.scene.osciport
|
|
||||||
if sock is None:
|
if sock is None:
|
||||||
try:
|
try:
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
@ -204,7 +203,6 @@ def get_frame_info_binary():
|
||||||
if object.visible_get() and object.type == 'GREASEPENCIL':
|
if object.visible_get() and object.type == 'GREASEPENCIL':
|
||||||
dg = bpy.context.evaluated_depsgraph_get()
|
dg = bpy.context.evaluated_depsgraph_get()
|
||||||
obj = object.evaluated_get(dg)
|
obj = object.evaluated_get(dg)
|
||||||
if obj.data.layers.active is not None:
|
|
||||||
frame_info.extend(("OBJECT ").encode("utf8"))
|
frame_info.extend(("OBJECT ").encode("utf8"))
|
||||||
|
|
||||||
# matrix
|
# matrix
|
||||||
|
@ -307,7 +305,6 @@ operations = [OBJECT_PT_osci_render_settings, osci_render_connect, osci_render_c
|
||||||
|
|
||||||
|
|
||||||
def register():
|
def register():
|
||||||
bpy.types.Scene.osciport = bpy.props.IntProperty(name="osci-render port",description="Port to use when connecting to osci-render (default 51677)",min=1,max=65535,default=51677)
|
|
||||||
bpy.app.handlers.frame_change_pre.append(send_scene_to_osci_render)
|
bpy.app.handlers.frame_change_pre.append(send_scene_to_osci_render)
|
||||||
bpy.app.handlers.depsgraph_update_post.append(send_scene_to_osci_render)
|
bpy.app.handlers.depsgraph_update_post.append(send_scene_to_osci_render)
|
||||||
atexit.register(close_osci_render)
|
atexit.register(close_osci_render)
|
||||||
|
@ -316,7 +313,6 @@ def register():
|
||||||
|
|
||||||
|
|
||||||
def unregister():
|
def unregister():
|
||||||
del bpy.types.Scene.osciport
|
|
||||||
bpy.app.handlers.frame_change_pre.remove(send_scene_to_osci_render)
|
bpy.app.handlers.frame_change_pre.remove(send_scene_to_osci_render)
|
||||||
bpy.app.handlers.depsgraph_update_post.remove(send_scene_to_osci_render)
|
bpy.app.handlers.depsgraph_update_post.remove(send_scene_to_osci_render)
|
||||||
atexit.unregister(close_osci_render)
|
atexit.unregister(close_osci_render)
|
||||||
|
@ -326,4 +322,3 @@ def unregister():
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
register()
|
register()
|
||||||
|
|
Ładowanie…
Reference in New Issue