Skip to content

Commit df33c42

Browse files
committed
0.9.1
1 parent 506a227 commit df33c42

File tree

19 files changed

+719
-261
lines changed

19 files changed

+719
-261
lines changed

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ add_subdirectory(lib/atkaudio)
4848

4949
file(READ "${CMAKE_SOURCE_DIR}/buildspec.json" buildspec)
5050
string(JSON PLUGIN_DISPLAY_NAME GET ${buildspec} displayName)
51+
string(JSON PLUGIN_AUTHOR GET ${buildspec} author)
52+
string(TIMESTAMP PLUGIN_YEAR "%Y")
53+
set(PLUGIN_AUTHOR "${PLUGIN_AUTHOR}")
5154

5255
configure_file(src/config.h.in config.h @ONLY)
5356

LICENSE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# License Information
22

33
This repository uses multiple licenses:
4-
- **Main project:**
4+
- **Main project**
55
[GNU General Public License v2.0 (GPL-2.0)](./LICENSE-GPL2)
66

7-
- **lib/atkaudio:**
7+
- **lib/atkaudio**
88
[GNU General Public License v3.0 (GPL-3.0)](./LICENSE-GPL3)
99

10-
- **JUCE:**
10+
- **JUCE**
1111
[JUCE License](./LICENSE-JUCE.md)
1212

1313
Please review the individual license files and source headers for more information.

README.md

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
1-
# atkAudio Audio Plugin for OBS
1+
# atkAudio Plugin for OBS
22

33
## Plugin Host
4-
VST3 plugin host for OBS.
5-
Up to 8 channels.
6-
Sidechain support.
7-
AU plugins on Apple macOS.
8-
LADSPA and LV2 plugins on Linux.
4+
- VST3 plugin host for OBS
5+
- Up to 8 channels
6+
- Sidechain support
7+
- AU plugins on Apple macOS
8+
- LADSPA and LV2 plugins on Linux
9+
10+
## Plugin Host2
11+
- Build filter graphs (plugin chains) with multiple plugin instances
12+
- Saving and loading of filter graphs as files
13+
- MIDI support (e.g. for using MIDI keyboard and a sampler plugin as soundboard)
14+
- etc
915

1016
## Device I/O
11-
Send and receive audio directly into and from audio devices.
12-
"Anything from/to anywhere" device routing.
13-
ASIO, CoreAudio and Windows Audio devices.
17+
- Send and receive audio directly into and from audio devices
18+
- "Anything from/to anywhere" device routing
19+
- ASIO, CoreAudio and Windows Audio devices
20+
- Resampling and drift correction
1421

1522
## Audio Source Mixer (OBS Source)
16-
Mix audio from up to 8 OBS sources into a new OBS audio source.
17-
E.g. allows creating new submixes.
18-
Can be used as 'dummy' audio source to host Audio Device I/O input.
23+
- Mix audio from up to 8 OBS sources into a new OBS audio source
24+
- E.g. allows creating new submixes
25+
- Can be used as 'dummy' source to host Device IO

buildspec.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@
4343
"uuids": {
4444
"windowsApp": "ad885c58-5ca9-44de-8f4f-1c12676626a9"
4545
},
46-
"version": "0.9.0",
46+
"version": "0.9.1",
4747
"website": "https://www.atkaudio.com"
4848
}

lib/atkaudio/cmake/cpack.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
2424
set(CPACK_NSIS_DISPLAY_NAME "${DISPLAYNAME}")
2525
set(CPACK_NSIS_UNINSTALL_NAME "Uninstall ${DISPLAYNAME}")
2626
set(CPACK_NSIS_INSTALL_ROOT "$COMMONPROGRAMDATA\\obs-studio\\plugins")
27+
set(CPACK_NSIS_BRANDING_TEXT " ")
2728
file(TO_NATIVE_PATH "${CPACK_NSIS_INSTALL_ROOT}" CPACK_NSIS_INSTALL_ROOT)
2829
string(REPLACE "\\" "\\\\" CPACK_NSIS_INSTALL_ROOT "${CPACK_NSIS_INSTALL_ROOT}")
2930

lib/atkaudio/src/atkaudio/About.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#pragma once
2+
3+
#include <config.h>
4+
#include <juce_audio_utils/juce_audio_utils.h>
5+
6+
static inline void showAboutDialog()
7+
{
8+
DialogWindow::LaunchOptions options;
9+
auto& lookAndFeel = juce::LookAndFeel::getDefaultLookAndFeel();
10+
options.dialogTitle = "About";
11+
String aboutText;
12+
aboutText << PLUGIN_DISPLAY_NAME << "\n"
13+
<< PLUGIN_VERSION << "\n\n"
14+
<< "Copyright (c) " << PLUGIN_YEAR << " " << PLUGIN_AUTHOR << "\n"
15+
<< "Licensed under AGPL3\n"
16+
<< "\n"
17+
<< "ASIO and VST are registered\n"
18+
<< "trademarks of Steinberg GmbH";
19+
auto* label = new Label({}, aboutText);
20+
label->setColour(Label::backgroundColourId, lookAndFeel.findColour(ResizableWindow::backgroundColourId));
21+
label->setColour(Label::textColourId, lookAndFeel.findColour(Label::textColourId));
22+
label->setJustificationType(Justification::centred);
23+
label->setSize(250, 160);
24+
options.content.setOwned(label);
25+
options.useNativeTitleBar = false;
26+
options.resizable = false;
27+
options.escapeKeyTriggersCloseButton = true;
28+
options.dialogBackgroundColour = lookAndFeel.findColour(ResizableWindow::backgroundColourId);
29+
options.launchAsync();
30+
}

lib/atkaudio/src/atkaudio/FifoBuffer2.h

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class FifoBuffer2
4848
return written;
4949
}
5050

51-
int read(float* const* dest, int numChannels, int numSamples, bool advanceRead = true)
51+
int read(float* const* dest, int numChannels, int numSamples, bool advanceRead = true, bool addToBuffer = false)
5252
{
5353
jassert(buffer.getNumSamples() >= numSamples);
5454
jassert(buffer.getNumChannels() >= numChannels);
@@ -60,14 +60,34 @@ class FifoBuffer2
6060

6161
if (size1 > 0)
6262
{
63-
for (int ch = 0; ch < numChannels && ch < buffer.getNumChannels(); ++ch)
64-
std::memcpy(dest[ch], buffer.getReadPointer(ch, start1), sizeof(float) * size1);
63+
if (addToBuffer)
64+
{
65+
for (int ch = 0; ch < numChannels && ch < buffer.getNumChannels(); ++ch)
66+
for (int i = 0; i < size1; ++i)
67+
dest[ch][readCount + i] += buffer.getReadPointer(ch, start1)[i];
68+
}
69+
else
70+
{
71+
for (int ch = 0; ch < numChannels && ch < buffer.getNumChannels(); ++ch)
72+
std::memcpy(dest[ch], buffer.getReadPointer(ch, start1), sizeof(float) * size1);
73+
}
74+
6575
readCount += size1;
6676
}
6777
if (size2 > 0)
6878
{
69-
for (int ch = 0; ch < numChannels && ch < buffer.getNumChannels(); ++ch)
70-
std::memcpy(dest[ch] + readCount, buffer.getReadPointer(ch, start2), sizeof(float) * size2);
79+
if (addToBuffer)
80+
{
81+
for (int ch = 0; ch < numChannels && ch < buffer.getNumChannels(); ++ch)
82+
for (int i = 0; i < size2; ++i)
83+
dest[ch][readCount + i] += buffer.getReadPointer(ch, start2)[i];
84+
}
85+
else
86+
{
87+
for (int ch = 0; ch < numChannels && ch < buffer.getNumChannels(); ++ch)
88+
std::memcpy(dest[ch] + readCount, buffer.getReadPointer(ch, start2), sizeof(float) * size2);
89+
}
90+
7191
readCount += size2;
7292
}
7393

@@ -251,9 +271,9 @@ class SyncBuffer : public juce::Timer
251271
if (maxAvailable < samplesNeeded)
252272
return 0;
253273

254-
#if defined(JUCE_DEBUG) && defined(JUCE_WINDOWS)
255-
DBG(ratio);
256-
#endif
274+
// #if defined(JUCE_DEBUG) && defined(JUCE_WINDOWS)
275+
// DBG(ratio);
276+
// #endif
257277

258278
auto samplesGot = fifoBuffer.read(tempBuffer.getArrayOfWritePointers(), numChannels, samplesNeeded, false);
259279

lib/atkaudio/src/atkaudio/PluginHost2.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class PluginHost2
1919
void getState(std::string& s);
2020
void setState(std::string& s);
2121

22-
void initialise(int numInputChannels, int numOutputChannels, double sampleRate);
22+
void initialise(int numInputChannels, int numOutputChannels, double sampleRate, void* obs_parent_source = nullptr);
2323

2424
private:
2525
struct Impl;

0 commit comments

Comments
 (0)