Skip to content

Commit b08834c

Browse files
committed
add files
1 parent ec4b556 commit b08834c

File tree

127 files changed

+9014
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+9014
-0
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.DS_Store
2+
/.build
3+
/Packages
4+
/*.xcodeproj
5+
xcuserdata/
6+
DerivedData/
7+
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata

Package.resolved

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// swift-tools-version:5.3
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "SoundpipeAudioKit",
8+
platforms: [
9+
.macOS(.v10_15), .iOS(.v13), .tvOS(.v13)
10+
],
11+
products: [
12+
// Products define the executables and libraries a package produces, and make them visible to other packages.
13+
.library(
14+
name: "SoundpipeAudioKit",
15+
targets: ["SoundpipeAudioKit"]),
16+
],
17+
dependencies: [
18+
// Dependencies declare other packages that this package depends on.
19+
.package(url: "https://github.com/AudioKit/Soundpipe", .branch("main")),
20+
.package(url: "https://github.com/AudioKit/AudioKit", .branch("develop")),
21+
],
22+
targets: [
23+
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
24+
// Targets can depend on other targets in this package, and on products in packages this package depends on.
25+
.target(
26+
name: "SoundpipeAudioKit",
27+
dependencies: ["AudioKit", "CSoundpipeAudioKit"]),
28+
.target(
29+
name: "CSoundpipeAudioKit",
30+
dependencies: ["AudioKit", "Soundpipe"]),
31+
.testTarget(
32+
name: "SoundpipeAudioKitTests",
33+
dependencies: ["SoundpipeAudioKit"],
34+
resources: [.copy("TestResources/")]),
35+
],
36+
cxxLanguageStandard: .cxx14
37+
)
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
// Copyright AudioKit. All Rights Reserved. Revision History at http://github.com/AudioKit/AudioKit/
2+
3+
#include "SoundpipeDSPBase.h"
4+
#include "ParameterRamper.h"
5+
#include "Soundpipe.h"
6+
7+
enum AmplitudeEnvelopeParameter : AUParameterAddress {
8+
AmplitudeEnvelopeParameterAttackDuration,
9+
AmplitudeEnvelopeParameterDecayDuration,
10+
AmplitudeEnvelopeParameterSustainLevel,
11+
AmplitudeEnvelopeParameterReleaseDuration,
12+
};
13+
14+
class AmplitudeEnvelopeDSP : public SoundpipeDSPBase {
15+
private:
16+
sp_adsr *adsr;
17+
float amp = 0;
18+
ParameterRamper attackDurationRamp;
19+
ParameterRamper decayDurationRamp;
20+
ParameterRamper sustainLevelRamp;
21+
ParameterRamper releaseDurationRamp;
22+
23+
public:
24+
AmplitudeEnvelopeDSP() {
25+
parameters[AmplitudeEnvelopeParameterAttackDuration] = &attackDurationRamp;
26+
parameters[AmplitudeEnvelopeParameterDecayDuration] = &decayDurationRamp;
27+
parameters[AmplitudeEnvelopeParameterSustainLevel] = &sustainLevelRamp;
28+
parameters[AmplitudeEnvelopeParameterReleaseDuration] = &releaseDurationRamp;
29+
}
30+
31+
void init(int channelCount, double sampleRate) override {
32+
SoundpipeDSPBase::init(channelCount, sampleRate);
33+
sp_adsr_create(&adsr);
34+
sp_adsr_init(sp, adsr);
35+
}
36+
37+
void deinit() override {
38+
SoundpipeDSPBase::deinit();
39+
sp_adsr_destroy(&adsr);
40+
}
41+
42+
void reset() override {
43+
SoundpipeDSPBase::reset();
44+
if (!isInitialized) return;
45+
sp_adsr_init(sp, adsr);
46+
}
47+
48+
void handleMIDIEvent(AUMIDIEvent const& midiEvent) override {
49+
uint8_t status = midiEvent.data[0] & 0xF0;
50+
51+
if (status == MIDI_NOTE_ON) {
52+
internalTrigger = midiEvent.data[2] / 127.0;
53+
}
54+
}
55+
56+
void process(FrameRange range) override {
57+
58+
for (int i : range) {
59+
60+
adsr->atk = attackDurationRamp.getAndStep();
61+
adsr->dec = decayDurationRamp.getAndStep();
62+
adsr->sus = sustainLevelRamp.getAndStep();
63+
adsr->rel = releaseDurationRamp.getAndStep();
64+
65+
sp_adsr_compute(sp, adsr, &internalTrigger, &amp);
66+
outputSample(0, i) = inputSample(0, i) * amp;
67+
outputSample(1, i) = inputSample(1, i) * amp;
68+
}
69+
}
70+
};
71+
72+
AK_REGISTER_DSP(AmplitudeEnvelopeDSP, "adsr")
73+
AK_REGISTER_PARAMETER(AmplitudeEnvelopeParameterAttackDuration)
74+
AK_REGISTER_PARAMETER(AmplitudeEnvelopeParameterDecayDuration)
75+
AK_REGISTER_PARAMETER(AmplitudeEnvelopeParameterSustainLevel)
76+
AK_REGISTER_PARAMETER(AmplitudeEnvelopeParameterReleaseDuration)
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
// Copyright AudioKit. All Rights Reserved. Revision History at http://github.com/AudioKit/AudioKit/
2+
3+
#include "SoundpipeDSPBase.h"
4+
#include "ParameterRamper.h"
5+
#include "Soundpipe.h"
6+
7+
#import <vector>
8+
9+
enum AutoPannerParameter : AUParameterAddress {
10+
AutoPannerParameterFrequency,
11+
AutoPannerParameterDepth,
12+
};
13+
14+
class AutoPannerDSP : public SoundpipeDSPBase {
15+
private:
16+
sp_osc *trem;
17+
sp_ftbl *tbl;
18+
sp_panst *panst;
19+
std::vector<float> wavetable;
20+
ParameterRamper frequencyRamp;
21+
ParameterRamper depthRamp;
22+
23+
public:
24+
AutoPannerDSP() {
25+
parameters[AutoPannerParameterFrequency] = &frequencyRamp;
26+
parameters[AutoPannerParameterDepth] = &depthRamp;
27+
}
28+
29+
void setWavetable(const float* table, size_t length, int index) override {
30+
wavetable = std::vector<float>(table, table + length);
31+
}
32+
33+
void init(int channelCount, double sampleRate) override {
34+
SoundpipeDSPBase::init(channelCount, sampleRate);
35+
sp_ftbl_create(sp, &tbl, wavetable.size());
36+
std::copy(wavetable.cbegin(), wavetable.cend(), tbl->tbl);
37+
sp_osc_create(&trem);
38+
sp_osc_init(sp, trem, tbl, 0);
39+
sp_panst_create(&panst);
40+
sp_panst_init(sp, panst);
41+
}
42+
43+
void deinit() override {
44+
SoundpipeDSPBase::deinit();
45+
sp_osc_destroy(&trem);
46+
sp_panst_destroy(&panst);
47+
sp_ftbl_destroy(&tbl);
48+
}
49+
50+
void process(FrameRange range) override {
51+
for(auto i : range) {
52+
53+
trem->freq = frequencyRamp.getAndStep();
54+
trem->amp = 1;
55+
56+
float temp = 0;
57+
sp_osc_compute(sp, trem, NULL, &temp);
58+
panst->pan = (2.0 * temp - 1.0) * depthRamp.getAndStep();
59+
sp_panst_compute(sp,
60+
panst,
61+
&inputSample(0, i), &inputSample(1, i),
62+
&outputSample(0, i), &outputSample(1, i));
63+
64+
}
65+
}
66+
67+
};
68+
69+
AK_REGISTER_DSP(AutoPannerDSP, "apan")
70+
AK_REGISTER_PARAMETER(AutoPannerParameterFrequency)
71+
AK_REGISTER_PARAMETER(AutoPannerParameterDepth)
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
// Copyright AudioKit. All Rights Reserved. Revision History at http://github.com/AudioKit/AudioKit/
2+
3+
#include "SoundpipeDSPBase.h"
4+
#include "ParameterRamper.h"
5+
#include "Soundpipe.h"
6+
7+
enum AutoWahParameter : AUParameterAddress {
8+
AutoWahParameterWah,
9+
AutoWahParameterMix,
10+
AutoWahParameterAmplitude,
11+
};
12+
13+
class AutoWahDSP : public SoundpipeDSPBase {
14+
private:
15+
sp_autowah *autowah0;
16+
sp_autowah *autowah1;
17+
ParameterRamper wahRamp;
18+
ParameterRamper mixRamp;
19+
ParameterRamper amplitudeRamp;
20+
21+
public:
22+
AutoWahDSP() {
23+
parameters[AutoWahParameterWah] = &wahRamp;
24+
parameters[AutoWahParameterMix] = &mixRamp;
25+
parameters[AutoWahParameterAmplitude] = &amplitudeRamp;
26+
}
27+
28+
void init(int channelCount, double sampleRate) override {
29+
SoundpipeDSPBase::init(channelCount, sampleRate);
30+
sp_autowah_create(&autowah0);
31+
sp_autowah_init(sp, autowah0);
32+
sp_autowah_create(&autowah1);
33+
sp_autowah_init(sp, autowah1);
34+
}
35+
36+
void deinit() override {
37+
SoundpipeDSPBase::deinit();
38+
sp_autowah_destroy(&autowah0);
39+
sp_autowah_destroy(&autowah1);
40+
}
41+
42+
void reset() override {
43+
SoundpipeDSPBase::reset();
44+
if (!isInitialized) return;
45+
sp_autowah_init(sp, autowah0);
46+
sp_autowah_init(sp, autowah1);
47+
}
48+
49+
void process(FrameRange range) override {
50+
for (int i : range) {
51+
52+
*autowah0->wah = *autowah1->wah = wahRamp.getAndStep();
53+
*autowah0->mix = *autowah1->mix = mixRamp.getAndStep() * 100.f;
54+
*autowah0->level = *autowah1->level = amplitudeRamp.getAndStep();
55+
56+
float leftIn = inputSample(0, i);
57+
float rightIn = inputSample(1, i);
58+
59+
float &leftOut = outputSample(0, i);
60+
float &rightOut = outputSample(1, i);
61+
62+
sp_autowah_compute(sp, autowah0, &leftIn, &leftOut);
63+
sp_autowah_compute(sp, autowah1, &rightIn, &rightOut);
64+
}
65+
}
66+
};
67+
68+
AK_REGISTER_DSP(AutoWahDSP, "awah")
69+
AK_REGISTER_PARAMETER(AutoWahParameterWah)
70+
AK_REGISTER_PARAMETER(AutoWahParameterMix)
71+
AK_REGISTER_PARAMETER(AutoWahParameterAmplitude)
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Copyright AudioKit. All Rights Reserved. Revision History at http://github.com/AudioKit/AudioKit/
2+
3+
#include "SoundpipeDSPBase.h"
4+
#include "ParameterRamper.h"
5+
#include "Soundpipe.h"
6+
7+
class BalancerDSP : public SoundpipeDSPBase {
8+
private:
9+
sp_bal *bal;
10+
11+
public:
12+
BalancerDSP() {
13+
inputBufferLists.resize(2);
14+
}
15+
16+
void init(int channelCount, double sampleRate) override {
17+
SoundpipeDSPBase::init(channelCount, sampleRate);
18+
19+
sp_bal_create(&bal);
20+
sp_bal_init(sp, bal);
21+
}
22+
23+
void deinit() override {
24+
SoundpipeDSPBase::deinit();
25+
sp_bal_destroy(&bal);
26+
}
27+
28+
void reset() override {
29+
SoundpipeDSPBase::reset();
30+
if (isInitialized) sp_bal_init(sp, bal);
31+
}
32+
33+
void process(FrameRange range) override {
34+
for (int i : range) {
35+
36+
for (int channel = 0; channel < channelCount; ++channel) {
37+
float in = inputSample(channel, i);
38+
float comp = input2Sample(channel, i);
39+
sp_bal_compute(sp, bal, &in, &comp, &outputSample(channel, i));
40+
}
41+
}
42+
}
43+
};
44+
45+
AK_REGISTER_DSP(BalancerDSP, "blnc")

0 commit comments

Comments
 (0)