kopia lustrzana https://github.com/jameshball/osci-render
Merge branch 'master' into 3d-audio
commit
d9727d97f2
|
@ -38,6 +38,13 @@ MidiComponent::MidiComponent(OscirenderAudioProcessor& p, OscirenderAudioProcess
|
||||||
envelope.addListener(&audioProcessor);
|
envelope.addListener(&audioProcessor);
|
||||||
envelope.setGrid(EnvelopeComponent::GridBoth, EnvelopeComponent::GridNone, 0.1, 0.25);
|
envelope.setGrid(EnvelopeComponent::GridBoth, EnvelopeComponent::GridNone, 0.1, 0.25);
|
||||||
|
|
||||||
|
if (juce::JUCEApplicationBase::isStandaloneApp()) {
|
||||||
|
addAndMakeVisible(midiSettingsButton);
|
||||||
|
midiSettingsButton.onClick = [this]() {
|
||||||
|
pluginEditor.openAudioSettings();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
audioProcessor.attackTime->addListener(this);
|
audioProcessor.attackTime->addListener(this);
|
||||||
audioProcessor.attackLevel->addListener(this);
|
audioProcessor.attackLevel->addListener(this);
|
||||||
audioProcessor.attackShape->addListener(this);
|
audioProcessor.attackShape->addListener(this);
|
||||||
|
@ -105,6 +112,9 @@ void MidiComponent::resized() {
|
||||||
midiToggle.setBounds(topRow.removeFromLeft(120));
|
midiToggle.setBounds(topRow.removeFromLeft(120));
|
||||||
topRow.removeFromLeft(80);
|
topRow.removeFromLeft(80);
|
||||||
voicesSlider.setBounds(topRow.removeFromLeft(250));
|
voicesSlider.setBounds(topRow.removeFromLeft(250));
|
||||||
|
if (midiSettingsButton.isVisible()) {
|
||||||
|
midiSettingsButton.setBounds(topRow.removeFromRight(160));
|
||||||
|
}
|
||||||
area.removeFromTop(5);
|
area.removeFromTop(5);
|
||||||
keyboard.setBounds(area.removeFromBottom(50));
|
keyboard.setBounds(area.removeFromBottom(50));
|
||||||
envelope.setBounds(area);
|
envelope.setBounds(area);
|
||||||
|
|
|
@ -22,6 +22,7 @@ private:
|
||||||
juce::ToggleButton midiToggle{"Enable MIDI"};
|
juce::ToggleButton midiToggle{"Enable MIDI"};
|
||||||
juce::Slider voicesSlider;
|
juce::Slider voicesSlider;
|
||||||
juce::Label voicesLabel;
|
juce::Label voicesLabel;
|
||||||
|
juce::TextButton midiSettingsButton{"Audio/MIDI Settings..."};
|
||||||
juce::MidiKeyboardComponent keyboard{audioProcessor.keyboardState, juce::MidiKeyboardComponent::horizontalKeyboard};
|
juce::MidiKeyboardComponent keyboard{audioProcessor.keyboardState, juce::MidiKeyboardComponent::horizontalKeyboard};
|
||||||
|
|
||||||
EnvelopeContainerComponent envelope;
|
EnvelopeContainerComponent envelope;
|
||||||
|
|
|
@ -58,7 +58,7 @@ OscirenderAudioProcessorEditor::OscirenderAudioProcessorEditor(OscirenderAudioPr
|
||||||
audioProcessor.broadcaster.addChangeListener(this);
|
audioProcessor.broadcaster.addChangeListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audioProcessor.wrapperType == juce::AudioProcessor::WrapperType::wrapperType_Standalone) {
|
if (juce::JUCEApplicationBase::isStandaloneApp()) {
|
||||||
if (juce::TopLevelWindow::getNumTopLevelWindows() == 1) {
|
if (juce::TopLevelWindow::getNumTopLevelWindows() == 1) {
|
||||||
juce::TopLevelWindow* w = juce::TopLevelWindow::getTopLevelWindow(0);
|
juce::TopLevelWindow* w = juce::TopLevelWindow::getTopLevelWindow(0);
|
||||||
juce::DocumentWindow* dw = dynamic_cast<juce::DocumentWindow*>(w);
|
juce::DocumentWindow* dw = dynamic_cast<juce::DocumentWindow*>(w);
|
||||||
|
@ -68,6 +68,11 @@ OscirenderAudioProcessorEditor::OscirenderAudioProcessorEditor(OscirenderAudioPr
|
||||||
dw->setUsingNativeTitleBar(true);
|
dw->setUsingNativeTitleBar(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
juce::StandalonePluginHolder* standalone = juce::StandalonePluginHolder::getInstance();
|
||||||
|
if (standalone != nullptr) {
|
||||||
|
standalone->getMuteInputValue().setValue(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setSize(1100, 750);
|
setSize(1100, 750);
|
||||||
|
|
|
@ -156,6 +156,9 @@ void ShapeVoice::renderNextBlock(juce::AudioSampleBuffer& outputBuffer, int star
|
||||||
if (!renderingSample && frameDrawn >= drawnFrameLength) {
|
if (!renderingSample && frameDrawn >= drawnFrameLength) {
|
||||||
if (sound.load() != nullptr && currentlyPlaying) {
|
if (sound.load() != nullptr && currentlyPlaying) {
|
||||||
frameLength = sound.load()->updateFrame(frame);
|
frameLength = sound.load()->updateFrame(frame);
|
||||||
|
frameDrawn = 0.0;
|
||||||
|
shapeDrawn = 0.0;
|
||||||
|
currentShape = 0;
|
||||||
}
|
}
|
||||||
frameDrawn = 0.0;
|
frameDrawn = 0.0;
|
||||||
shapeDrawn = 0.0;
|
shapeDrawn = 0.0;
|
||||||
|
|
|
@ -287,10 +287,13 @@ private:
|
||||||
| juce::FileBrowserComponent::warnAboutOverwriting,
|
| juce::FileBrowserComponent::warnAboutOverwriting,
|
||||||
[this](const juce::FileChooser& c) {
|
[this](const juce::FileChooser& c) {
|
||||||
if (juce::FileInputStream inputStream(lastRecording); inputStream.openedOk()) {
|
if (juce::FileInputStream inputStream(lastRecording); inputStream.openedOk()) {
|
||||||
if (const auto outputStream = c.getURLResult().getLocalFile().createOutputStream()) {
|
juce::URL url = c.getURLResult();
|
||||||
outputStream->setPosition(0);
|
if (url.isLocalFile()) {
|
||||||
outputStream->truncate();
|
if (const auto outputStream = url.getLocalFile().createOutputStream()) {
|
||||||
outputStream->writeFromInputStream(inputStream, -1);
|
outputStream->setPosition(0);
|
||||||
|
outputStream->truncate();
|
||||||
|
outputStream->writeFromInputStream(inputStream, -1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,9 +38,11 @@ void ObjectServer::run() {
|
||||||
std::memcpy(message.get() + i, buffer, bytesRead);
|
std::memcpy(message.get() + i, buffer, bytesRead);
|
||||||
i += bytesRead;
|
i += bytesRead;
|
||||||
|
|
||||||
if (message[i] == '\n') {
|
for (int j = i - bytesRead; j < i; j++) {
|
||||||
message[i] = '\0';
|
if (message[j] == '\n') {
|
||||||
break;
|
message[j] = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
pluginCharacteristicsValue="pluginProducesMidiOut,pluginWantsMidiIn"
|
pluginCharacteristicsValue="pluginProducesMidiOut,pluginWantsMidiIn"
|
||||||
pluginManufacturer="jameshball" aaxIdentifier="sh.ball.oscirender"
|
pluginManufacturer="jameshball" aaxIdentifier="sh.ball.oscirender"
|
||||||
cppLanguageStandard="20" projectLineFeed=" " headerPath="./include"
|
cppLanguageStandard="20" projectLineFeed=" " headerPath="./include"
|
||||||
version="2.0.7" companyName="James H Ball" companyWebsite="https://osci-render.com"
|
version="2.0.8" companyName="James H Ball" companyWebsite="https://osci-render.com"
|
||||||
companyEmail="james@ball.sh">
|
companyEmail="james@ball.sh">
|
||||||
<MAINGROUP id="j5Ge2T" name="osci-render">
|
<MAINGROUP id="j5Ge2T" name="osci-render">
|
||||||
<GROUP id="{5ABCED88-0059-A7AF-9596-DBF91DDB0292}" name="Resources">
|
<GROUP id="{5ABCED88-0059-A7AF-9596-DBF91DDB0292}" name="Resources">
|
||||||
|
|
Ładowanie…
Reference in New Issue