GithubHelp home page GithubHelp logo

adamnemecek / auhost Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vgorloff/auhost

0.0 2.0 0.0 1.37 MB

Application which hosts AudioUnits v3 using AVFoundation API

License: Other

Objective-C 0.29% Swift 91.39% Shell 3.99% Ruby 3.81% Metal 0.51%

auhost's Introduction

AUHost

Build Status

Purpose

Apple supplied sample code AudioUnitV3Example quite messy as it contains C++, C, Obj-C++, Swift code at once.
I faced weird issues while translating sample code to pure Swift. Such as missed mData pointers in buffer lists, In-Place processing behaviour and absence of Software for testing. At least for now (2016 Oct) AULab does not support AUv3.

AudioUnitV3Example also does not explain how to build PlugIn which is not pure DSP unit, but for instance Visualiser (Level meter, Oscilloscope, etc.).

AUHost.app

This is a standalone application which can load any AudioUnits v3 PlugIns registered in the system.

Playback engine Graph

Playback graph quite simple: AudioFile > Effect (optional) > Main Output.

How to use Application

Application has Main window and floating Media Library panel.
You are using Media Library panel to drag and drop media files into Main window. It is possible also drag files from Finder.

Main window has two tables with list of Effects and Presets. Selecting Effect will insert it into playback graph.
Selecting Preset will activate corresponding Factory preset.

Screenshot: MediaLibraryย  Screenshot: MainWindow

Attenuator.app

This is a Hosting application with embedded Extension. Hosting application dynamically registers AttenuatorAU AudioUnit and loads it In-Process. AttenuatorAU extension registered by the system and available for any AudioUnit v3 hosts (such as AUHost.app).

Note: You must move application to /Applications folder in order to inform system to perform AttenuatorAU.appex registration.

Playback engine Graph

Playback graph quite simple: AudioFile > AttenuatorAU Effect (unloadable) > Main Output.

How to use Application

Application has Main window and floating Media Library panel.
You are using Media Library panel to drag and drop media files into Main window. It is possible also drag files from Finder.

Main window has two buttons and two areas (Media Item View and AttenuatorAU User Interface). Pressing Load AU will insert AttenuatorAU into playback graph. Pressing Unload AU will remove AttenuatorAU from playback graph.

AttenuatorAU.appex

It is a AudioUnit v3 AudioUnit which can be loaded by any AudioUnit v3 host (such as AUHost.app).

It has two areas: funny Level Meter and Gain control.
Volume level meter uses Metal 3D graphics engine for rendering signal volume in funny way.
Gain control used to control DSP engine of AudioUnit PlugIn. Under the hood it bound to multiplication coefficient used to in functions from Accelerate framework.

Screenshot: Attenuator

Build system and Deployment target requirements

  • Xcode 8 (Swift 3)
  • iOS 9, macOS 10.11
  • Metal

Note: In order to make custom build and use sandboxed binary (with underlying PlugIn/XPC subsystem) it is required to sign Hosting application and Extension with appropriate certificate. If you don't have Apple Developer ID (and thus don't have code sign certificate), then download and use existing binary.

auhost's People

Contributors

adamnemecek avatar vgorloff avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.