Skip to content

Commit

Permalink
Added New Recipes
Browse files Browse the repository at this point in the history
Added Additional Packages category with their respective demos: Controls, Flow, Keyboard, Piano Roll, Synthesis Toolkit, & Waveform
Added Arpeggiator recipe (using Sequencer)
Added SpriteKit Audio recipe
Added DunneAudioKit Synth recipe (in WIP)
Added Input Device Demo recipe (already in project but unlinked)
Added parameters to Instrument SFZ
Added info button
Reordered categories
  • Loading branch information
NickCulbertson committed Dec 7, 2023
1 parent 153a60a commit 5839f33
Show file tree
Hide file tree
Showing 18 changed files with 1,155 additions and 81 deletions.
73 changes: 72 additions & 1 deletion Cookbook/Cookbook.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 52;
objectVersion = 54;
objects = {

/* Begin PBXBuildFile section */
Expand All @@ -12,6 +12,10 @@
29FC959927CC154B006D8CDF /* CookbookApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FC959827CC154B006D8CDF /* CookbookApp.swift */; };
31BA90FC29C371AB00FCD505 /* audio3D.scnassets in Resources */ = {isa = PBXBuildFile; fileRef = 31BA90FB29C371AB00FCD505 /* audio3D.scnassets */; };
5A0C234827D7CA4E003E281C /* Sounds in Resources */ = {isa = PBXBuildFile; fileRef = 5A0C234727D7CA4E003E281C /* Sounds */; };
5A7F40432B21F314000A28F9 /* Flow in Frameworks */ = {isa = PBXBuildFile; productRef = 5A7F40422B21F314000A28F9 /* Flow */; };
5A7F40462B21FD06000A28F9 /* Waveform in Frameworks */ = {isa = PBXBuildFile; productRef = 5A7F40452B21FD06000A28F9 /* Waveform */; };
5A7F40492B21FE34000A28F9 /* PianoRoll in Frameworks */ = {isa = PBXBuildFile; productRef = 5A7F40482B21FE34000A28F9 /* PianoRoll */; };
5A7F404C2B220667000A28F9 /* STKAudioKit in Frameworks */ = {isa = PBXBuildFile; productRef = 5A7F404B2B220667000A28F9 /* STKAudioKit */; };
C446DE542528D8E700138D0A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C446DE522528D8E700138D0A /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */

Expand All @@ -36,6 +40,10 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
5A7F404C2B220667000A28F9 /* STKAudioKit in Frameworks */,
5A7F40432B21F314000A28F9 /* Flow in Frameworks */,
5A7F40492B21FE34000A28F9 /* PianoRoll in Frameworks */,
5A7F40462B21FD06000A28F9 /* Waveform in Frameworks */,
29215CE827CC30CF005B706C /* CookbookCommon in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -121,6 +129,10 @@
name = Cookbook;
packageProductDependencies = (
29215CE727CC30CF005B706C /* CookbookCommon */,
5A7F40422B21F314000A28F9 /* Flow */,
5A7F40452B21FD06000A28F9 /* Waveform */,
5A7F40482B21FE34000A28F9 /* PianoRoll */,
5A7F404B2B220667000A28F9 /* STKAudioKit */,
);
productName = Cookbook;
productReference = C446DE442528D8E600138D0A /* Cookbook.app */;
Expand Down Expand Up @@ -150,6 +162,10 @@
);
mainGroup = C446DE3B2528D8E600138D0A;
packageReferences = (
5A7F40412B21F314000A28F9 /* XCRemoteSwiftPackageReference "Flow" */,
5A7F40442B21FD06000A28F9 /* XCRemoteSwiftPackageReference "Waveform" */,
5A7F40472B21FE34000A28F9 /* XCRemoteSwiftPackageReference "PianoRoll" */,
5A7F404A2B220667000A28F9 /* XCRemoteSwiftPackageReference "STKAudioKit" */,
);
productRefGroup = C446DE452528D8E600138D0A /* Products */;
projectDirPath = "";
Expand Down Expand Up @@ -382,11 +398,66 @@
};
/* End XCConfigurationList section */

/* Begin XCRemoteSwiftPackageReference section */
5A7F40412B21F314000A28F9 /* XCRemoteSwiftPackageReference "Flow" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/AudioKit/Flow";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.0.3;
};
};
5A7F40442B21FD06000A28F9 /* XCRemoteSwiftPackageReference "Waveform" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/AudioKit/Waveform";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.0.2;
};
};
5A7F40472B21FE34000A28F9 /* XCRemoteSwiftPackageReference "PianoRoll" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/AudioKit/PianoRoll";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.0.7;
};
};
5A7F404A2B220667000A28F9 /* XCRemoteSwiftPackageReference "STKAudioKit" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/AudioKit/STKAudioKit";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 5.5.4;
};
};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
29215CE727CC30CF005B706C /* CookbookCommon */ = {
isa = XCSwiftPackageProductDependency;
productName = CookbookCommon;
};
5A7F40422B21F314000A28F9 /* Flow */ = {
isa = XCSwiftPackageProductDependency;
package = 5A7F40412B21F314000A28F9 /* XCRemoteSwiftPackageReference "Flow" */;
productName = Flow;
};
5A7F40452B21FD06000A28F9 /* Waveform */ = {
isa = XCSwiftPackageProductDependency;
package = 5A7F40442B21FD06000A28F9 /* XCRemoteSwiftPackageReference "Waveform" */;
productName = Waveform;
};
5A7F40482B21FE34000A28F9 /* PianoRoll */ = {
isa = XCSwiftPackageProductDependency;
package = 5A7F40472B21FE34000A28F9 /* XCRemoteSwiftPackageReference "PianoRoll" */;
productName = PianoRoll;
};
5A7F404B2B220667000A28F9 /* STKAudioKit */ = {
isa = XCSwiftPackageProductDependency;
package = 5A7F404A2B220667000A28F9 /* XCRemoteSwiftPackageReference "STKAudioKit" */;
productName = STKAudioKit;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = C446DE3C2528D8E600138D0A /* Project object */;
Expand Down
139 changes: 88 additions & 51 deletions Cookbook/CookbookCommon/Sources/CookbookCommon/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,15 @@ struct ContentView: View {
}

struct MasterView: View {
@State private var showingInfo = false
var body: some View {
Form {
Section(header: Text("Categories")) {
Group {
DisclosureGroup("Mini Apps") {
Group {
NavigationLink("Arpeggiator", destination: ArpeggiatorView())
NavigationLink("Audio 3D", destination: AudioKit3DView())
NavigationLink("Drum Pads", destination: DrumsView())
NavigationLink("Drum Sequencer", destination: DrumSequencerView())
NavigationLink("Drum Synthesizers", destination: DrumSynthesizersView())
Expand All @@ -28,21 +31,14 @@ struct MasterView: View {
NavigationLink("Music Toy", destination: MusicToyView())
NavigationLink("Noise Generators", destination: NoiseGeneratorsView())
NavigationLink("Recorder", destination: RecorderView())
NavigationLink("SpriteKit Audio", destination: SpriteKitAudioView())
NavigationLink("Telephone", destination: Telephone())
NavigationLink("Tuner", destination: TunerView())
NavigationLink("Vocal Tract", destination: VocalTractView())
}
}
}
Group {
DisclosureGroup("Uncategorized Demos") {
Group {
NavigationLink("Audio Files View", destination: AudioFileRecipeView())
NavigationLink("Callback Instrument", destination: CallbackInstrumentView())
NavigationLink("Tables", destination: TableRecipeView())
}
}
}

Group {
DisclosureGroup("Operations") {
Group {
Expand All @@ -63,6 +59,7 @@ struct MasterView: View {
}
}
}

Group {
DisclosureGroup("Physical Models") {
Group {
Expand All @@ -78,10 +75,10 @@ struct MasterView: View {
}
}
}

Group {
DisclosureGroup("Effects") {
Group {
NavigationLink("Audio 3D", destination: AudioKit3DView())
NavigationLink("Auto Panner", destination: AutoPannerView())
NavigationLink("Auto Wah", destination: AutoWahView())
NavigationLink("Balancer", destination: BalancerView())
Expand All @@ -93,7 +90,7 @@ struct MasterView: View {
NavigationLink("Expander", destination: ExpanderView())
}
Group {
NavigationLink("Flanger", destination: FlangerView())
NavigationLink("Flanger", destination: FlangerView())
NavigationLink("MultiTap Delay", destination: MultiTapDelayView())
NavigationLink("Panner", destination: PannerView())
NavigationLink("Peak Limiter", destination: PeakLimiterView())
Expand All @@ -106,12 +103,13 @@ struct MasterView: View {
}
Group {
NavigationLink("Time / Pitch", destination: TimePitchView())
NavigationLink("Transient Shaper", destination: TransientShaperView())
NavigationLink("Transient Shaper", destination: TransientShaperView())
NavigationLink("Tremolo", destination: TremoloView())
NavigationLink("Variable Delay", destination: VariableDelayView())
}
}
}

Group {
DisclosureGroup("Distortion") {
Group {
Expand All @@ -124,6 +122,7 @@ struct MasterView: View {
}
}
}

Group {
DisclosureGroup("Reverb") {
Group {
Expand All @@ -132,48 +131,49 @@ struct MasterView: View {
NavigationLink("Comb Filter Reverb", destination: CombFilterReverbView())
NavigationLink("Costello Reverb", destination: CostelloReverbView())
NavigationLink("Flat Frequency Response Reverb",
destination: FlatFrequencyResponseReverbView())
destination: FlatFrequencyResponseReverbView())
NavigationLink("Zita Reverb", destination: ZitaReverbView())
}
}
}
Group {
DisclosureGroup("Filters") {
Group {
NavigationLink("Band Pass Butterworth Filter",
destination: BandPassButterworthFilterView())
NavigationLink("Band Reject Butterworth Filter",
destination: BandRejectButterworthFilterView())
NavigationLink("Equalizer Filter", destination: EqualizerFilterView())
NavigationLink("Formant Filter", destination: FormantFilterView())
NavigationLink("High Pass Butterworth Filter",
destination: HighPassButterworthFilterView())
NavigationLink("High Pass Filter", destination: HighPassFilterView())
NavigationLink("High Shelf Filter", destination: HighShelfFilterView())
NavigationLink("High Shelf Parametric Equalizer Filter",
destination: HighShelfParametricEqualizerFilterView())
NavigationLink("Korg Low Pass Filter", destination: KorgLowPassFilterView())
NavigationLink("Low Pass Butterworth Filter",
destination: LowPassButterworthFilterView())
}
Group {
NavigationLink("Low Pass Filter", destination: LowPassFilterView())
NavigationLink("Low Shelf Filter", destination: LowShelfFilterView())
NavigationLink("Low Shelf Parametric Equalizer Filter",
destination: LowShelfParametricEqualizerFilterView())
NavigationLink("Modal Resonance Filter", destination: ModalResonanceFilterView())
NavigationLink("Moog Ladder", destination: MoogLadderView())
NavigationLink("Peaking Parametric Equalizer Filter",
destination: PeakingParametricEqualizerFilterView())
NavigationLink("Resonant Filter", destination: ResonantFilterView())
NavigationLink("Three Pole Lowpass Filter", destination: ThreePoleLowpassFilterView())
NavigationLink("Tone Filter", destination: ToneFilterView())
}
Group {
NavigationLink("Tone Complement Filter", destination: ToneComplementFilterView())
}

DisclosureGroup("Filters") {
Group {
NavigationLink("Band Pass Butterworth Filter",
destination: BandPassButterworthFilterView())
NavigationLink("Band Reject Butterworth Filter",
destination: BandRejectButterworthFilterView())
NavigationLink("Equalizer Filter", destination: EqualizerFilterView())
NavigationLink("Formant Filter", destination: FormantFilterView())
NavigationLink("High Pass Butterworth Filter",
destination: HighPassButterworthFilterView())
NavigationLink("High Pass Filter", destination: HighPassFilterView())
NavigationLink("High Shelf Filter", destination: HighShelfFilterView())
NavigationLink("High Shelf Parametric Equalizer Filter",
destination: HighShelfParametricEqualizerFilterView())
NavigationLink("Korg Low Pass Filter", destination: KorgLowPassFilterView())
NavigationLink("Low Pass Butterworth Filter",
destination: LowPassButterworthFilterView())
}

Group {
NavigationLink("Low Pass Filter", destination: LowPassFilterView())
NavigationLink("Low Shelf Filter", destination: LowShelfFilterView())
NavigationLink("Low Shelf Parametric Equalizer Filter",
destination: LowShelfParametricEqualizerFilterView())
NavigationLink("Modal Resonance Filter", destination: ModalResonanceFilterView())
NavigationLink("Moog Ladder", destination: MoogLadderView())
NavigationLink("Peaking Parametric Equalizer Filter",
destination: PeakingParametricEqualizerFilterView())
NavigationLink("Resonant Filter", destination: ResonantFilterView())
NavigationLink("Three Pole Lowpass Filter", destination: ThreePoleLowpassFilterView())
NavigationLink("Tone Filter", destination: ToneFilterView())
}
Group {
NavigationLink("Tone Complement Filter", destination: ToneComplementFilterView())
}
}

Group {
DisclosureGroup("Oscillators") {
Group {
NavigationLink("Amplitude Envelope", destination: AmplitudeEnvelopeView())
Expand All @@ -185,19 +185,44 @@ struct MasterView: View {
NavigationLink("Waveform Morphing", destination: MorphingOscillatorView())
}
}

DisclosureGroup("Audio Player") {
Group {
NavigationLink("Completion Handler", destination: AudioPlayerCompletionHandler())
NavigationLink("Multi Segment Player", destination: MultiSegmentPlayerView())
NavigationLink("Playlist", destination: PlaylistView())
}
}


Group {
DisclosureGroup("Additional Packages") {
Group {
NavigationLink("Controls", destination: ControlsView())
NavigationLink("Flow", destination: FlowView())
NavigationLink("Keyboard", destination: KeyboardView())
NavigationLink("Piano Roll", destination: PianoRollView())
NavigationLink("Synthesis Toolkit", destination: STKView())
NavigationLink("Waveform", destination: WaveformView())
}
}
}

Group {
DisclosureGroup("Uncategorized Demos") {
Group {
NavigationLink("Audio Files View", destination: AudioFileRecipeView())
NavigationLink("Callback Instrument", destination: CallbackInstrumentView())
NavigationLink("Tables", destination: TableRecipeView())
}
}
}

DisclosureGroup("WIP") {
Group {
NavigationLink("Base Tap Demo", destination: BaseTapDemoView())
NavigationLink("Channel/Device Routing", destination: ChannelDeviceRoutingView())
NavigationLink("DunneAudioKit Synth", destination: DunneSynthView())
NavigationLink("Input Device Demo", destination: InputDeviceDemoView())
NavigationLink("MIDI Port Test", destination: MIDIPortTestView())
NavigationLink("Polyphonic Oscillator", destination: PolyphonicOscillatorView())
NavigationLink("Roland Tb303 Filter", destination: RolandTB303FilterView())
Expand All @@ -207,6 +232,18 @@ struct MasterView: View {
}
}
.navigationBarTitle("AudioKit")
.toolbar {
Button {
showingInfo = true
} label: {
Image(systemName: "info.circle")
}
}
.alert("AudioKit Cookbook", isPresented: $showingInfo) {
Button("OK", role: .cancel) { }
} message: {
Text("AudioKit is an audio synthesis, processing, and analysis platform for iOS, macOS, and tvOS.\n\nMost of the examples that were inside of AudioKit are now in this application.\n\nIn addition to the resources found here, there are various open-source example projects on GitHub and YouTube created by AudioKit contributors.")
}
}
}

Expand Down
Loading

0 comments on commit 5839f33

Please sign in to comment.