All Projects → FredAntonCorvest → Common-AudioUnit-V3

FredAntonCorvest / Common-AudioUnit-V3

Licence: MIT license
Utilities related to the new version 3 Audio Units

Programming Languages

Objective-C++
1391 projects
swift
15916 projects
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to Common-AudioUnit-V3

MIDISequencerAUv3
A great start point for making AUv3 MIDI sequencer apps.
Stars: ✭ 24 (-11.11%)
Mutual labels:  auv3
vst-cmake
A cross-platform CMake-based template for designing VST audio plug-ins.
Stars: ✭ 21 (-22.22%)
Mutual labels:  audio-plugin
AUSequencer
(WIP) MIDI Sequencer Audio Unit
Stars: ✭ 26 (-3.7%)
Mutual labels:  auv3
AUParamsApp
An AUv3 MIDI plugin. See the blog post
Stars: ✭ 24 (-11.11%)
Mutual labels:  auv3
ChowPhaser
Phaser effect based loosely on the Schulte Compact Phasing 'A'
Stars: ✭ 51 (+88.89%)
Mutual labels:  audio-plugin
SoundDeck
Sound Deck is a powerful audio-focused plugin for the Elgato Stream Deck.
Stars: ✭ 20 (-25.93%)
Mutual labels:  audio-plugin
ninjas
sample slicer audio plugin
Stars: ✭ 21 (-22.22%)
Mutual labels:  audio-plugin
Bad-Circuit-Modelling
Correct modelling of incorrect circuits
Stars: ✭ 27 (+0%)
Mutual labels:  audio-plugin
Melodrumatic
Audio plugin that lets you use MIDI to pitch-shift via delay to turn unpitched audio into melodies
Stars: ✭ 26 (-3.7%)
Mutual labels:  audio-plugin
dd-core
Rust-based VST plugin development library with hardware accelerated GUI support.
Stars: ✭ 32 (+18.52%)
Mutual labels:  audio-plugin
Juce
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.
Stars: ✭ 3,841 (+14125.93%)
Mutual labels:  auv3
MIDITapeRecorder
AUv3 MIDI Tape Recorder
Stars: ✭ 91 (+237.04%)
Mutual labels:  auv3
auapp
Simple example of an AUv3 MIDI app
Stars: ✭ 18 (-33.33%)
Mutual labels:  auv3

Common-AudioUnit-V3

Utilities related to the new version 3 Audio Units provided by Apple

FacAUAudioUnit

Fred: Apple provided in the Filter sample code an example about the preset management based on a static array containing the parameters value of each preset. This solution is perfect to learn the basis of the presets management but not sufficient if you want to load/store presets data from/to files. So I've created an AUAudioUnit subclass providing convenience methods and the first version provides presets management.

FacAUAudioUnit provides loading and saving of user's presets from/to the disk. There are two methods: loadPresets and savePreset. Subclassers should call loadPresets in the init method, savePreset can be called in the ViewController.

Usage in Filter sample code provided by Apple:

  1. InstrumentDemo.h
#import "FacAUAudioUnit.h"

@interface AUv3InstrumentDemo : FacAUAudioUnit
  1. InstrumentDemo.mm
- (instancetype)initWithComponentDescription:(AudioComponentDescription)componentDescription options:(AudioComponentInstantiationOptions)options error:(NSError **)outError {
    self = [super initWithComponentDescription:componentDescription options:options error:outError presetFolderName:@"Manufacter/YourFolder" presetVersion:@"1.0"];
    if (self == nil) { return nil; }
	//...

    [self loadPresets];	
    return self;
}
  1. ViewController.swift
/// Saves the content of the AUParameterTree to a preset file on the disk (document folder)
@IBAction func saveAsPreset(_ sender: AnyObject?) {
	let audioUnit = playEngine.testAudioUnit as! AUv3InstrumentDemo
        audioUnit.savePreset("Slow", havingDescription: "Demo slow preset", asDefault: true)
}
  1. Slow.preset
{
  "Name" : "slow",
  "Description" : "Demo slow preset",
  "UID" : "YOUR_UID",
  "IsDefault" : false,
  "Version" : "1.0",
  "Date" : "Dec 20, 2016, 21:58:55 PM",
  "Parameters" : [
    {
      "KeyPath" : "attack",
      "Value" : 3
    },
    {
      "KeyPath" : "release",
      "Value" : 3
    }
  ]
}

SimplePlayEngine+Recording.swift

Fred: As AuV3 developers, one of the first things I've needed is the ability to record the output of my App for signal analysing purposes or simply sampling.

SimplePlayEngine utility extension to manage recording of the main mixer node output to a file. The SimplePlayEngine class is provided by Apple in the sample AudioUnitV3Example: A Basic AudioUnit Extension and Host Implementation"

Usage (Swift):

if (!self.engine.isRecording) {
	self.engine.startRecording(toURL: URL(fileURLWithPath:"YOUR_PATH/output.aif"))
} else {
	self.engine.stopRecording()
}

Usage (Objective-C):

if (![engine isRecording]) {
	[engine startRecordingToURL: [NSURL URLWithString:@"YOUR_PATH/output.aif"]];
} else {
	[engine stopRecording];
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].