• Stars
    star
    1,675
  • Rank 27,886 (Top 0.6 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

AudioKit Synth One: Open-Source iOS Synthesizer App

AudioKit Synth One

Build Status License Crowdin Twitter Follow

We've open-sourced the code for this synthesizer so that everyone is able to make changes to the code, introduce new features, fix bugs, improve efficiency, and keep the synthesizer up-to-date with all new capabilities of the base operating system. Synth One is now Universal for iPhone/iPad!

Screenshot

β€œAudioKit Synth One is a wonderful example of how iPad can change the way music is made.”
– Apple, App Store Editorial Team

If you're new to AudioKit, you can learn more: here. This code and app is made possible by all the contributors to AudioKit. Many of the features of Synth One are available as modules in AudioKit, allowing you easy access to oscillators, filters, reverbs, effects, and other DSP processing: code here.

Features & App Store Location

Master and Develop Branches

The two primary branches of this repository are intended to be used as follows:

  • Master branch will work with the current release version of AudioKit - ie. AudioKit's "master" branch. Changes should not be made on this branch so that it can be kept as stable as possible.
  • Develop branch is intended to be built with code from Develop branch of AudioKit. Pull requests should be made to this branch.

Installation

You must install the pods that we depend on before you can compile the project. To do so, run the following at the root of the project:

  • pod repo update
  • pod install

You may uncomment the line in Podfile to switch to our cutting-edge staging (unstable) releases of AudioKit, as opposed to the stable releases in the mainstream CocoaPods specs.

Link Installation

The repository builds and runs without modification, but the Link functionality will be missing.

Because of the way Ableton distributes their Link SDK, we can not simply include the Link files here. Instead, we include our Link wrapping files and expect you to do two things to get Link working on your machine:

  • Change ABLETON_ENABLED from 0 to 1 in the Build Settings
  • Sign up for the Ableton Link SDK and download the prebuilt binary LinkKit.zip. Uncompress it and find the include and lib directories and place the folders under our "Link" directory. There should be three files in include and one in lib.

Requirements

  • Mac or computer running Xcode (Free Download)
  • Knowledge of programming, specifically Swift, AudioKit, C/C++, & the iOS SDK

If you are new to iOS development, we recommend the Ray Wenderlich videos. There is also a great tutorial on basic synthesis with AudioKit here.

Beginner? We have two additional code examples. There is a simple Swift Synth and a Sample Player. A fun exercise might be replacing the sample player code engine with synthesis.

Ableton Link Support

We now include optional support for the Ableton Link SDK. Because files from this private SDK are required to compile this code, it is turned off by default.

You may enable this code by copying the SDK to your copy of Synth One and setting the ABLETON_ENABLED user setting to 1 in the project settings in Xcode.

Documentation

We intend to have every major section of the code placed within its own folder, with an included README.md file, like this one. This file should explain the contents of the folder and give developers any hints about what could be improved.

This folder's contents

  • AudioKitSynthOne/ - This folder contains most of the source code
  • AudioKitSynthOne.xcodeproj - This file is a part of the workspace, which you should open instead
  • AudioKitSynthOne.xcworkspace - This is the file you should open with Xcode, it contains reference to both the project files for the synth code and associated Pods
  • OneSignalNotificationServiceExtension/ - code for a third party extension we use
  • Podfile and Podfile.lock - Cocoapods configuration files
  • .swiftlint.yml - Swiftlint configuration

Localizations

Opportunities for Contributing

Here's a few ideas for you to contribute to this historic project:

  • Ability to search presets
  • Midi Learn Matrix. Create a view that will allow users to easily change the MIDI Learn assignments.
  • Make TouchPads assignable
  • Add an EQ Panel (8-band/16-band/etc)
  • Add the ability for Sequencer to modulate more parameters
  • Filter key tracking options & settings
  • Filter velocity settings
  • MIDI out
  • Sample & Hold

βœ“ DONE: Create an iPhone/Universal version. Thanks to Matthew Fecher for his contributions in creating the universal/iPhone version.

βœ“ DONE: Add accessibility functionality to AudioKit Synth One. Thanks to Stanley Rosenbaum for making Synth One accessible to all musicians.

If you have audio development experience and want to be involved with contributing to the app store version of Synth One, please email [email protected]

There are a few major updates we intend for this synth:

  • AUV3 Plugin support
  • MPE

Code Usage

You are free to:

(1) Use this code as a learning tool.
(2) Change the graphics, and include this as part of a bigger app you are building.
(3) Re-skin this app (change all the UI graphics/controls), and upload to the app store.
(4) Contribute code back to this project and improve the code for other people

If you use any code, it would be great if you gave this project some credit or a mention. The more love this code receives, the better we can make it for everyone. And, always give AudioKit a shout-out when you can! :)

If you make an app with this code, please let us know! We think you're awesome, and would love to hear from you and/or feature your app.

We have most of the cool stuff (Filters, Oscillators, Effects, etc) abstracted out into the main AudioKit library. Use those building blocks to create your own app!

SUPER IMPORTANT: You must change the Graphics & UI if you upload this to the app store. Apple has a rule (4.1) about copycat apps in the app store. One developer has had his Developer account banned by Apple for taking advantage of this code (copying & pasting to make a Synth One clone). Don't let it happen to you. Synth One is a really popular app in the app store, and Apple has featured it in Retail Stores across the United States. If you have questions, feel free to email us at [email protected], and we can give everyone a heads up that your app is okay (if it follows the rules). We don't want anyone to lose their developer account over this code. πŸ™

IMPORTANT: You must fill in your own private API keys for AudioBus and others in the Private.swift file to match your own project. The default placeholder values are not suitable for distribution.

Contributors

Thanks to the countless sound designers and other volunteers. Plus, the developers listed below:

Legal Notices

This is an open-source project intended to bring joy and music to people, and enlighten people on how to build custom instruments and iOS apps. All product names and images, trademarks and artists names are the property of their respective owners, which are in no way associated or affiliated with the creators of this app, including AudioKit, AudioKit Pro, LLC, and the other contributors. Product names and images are used solely for the purpose of identifying the specific products related to synthesizers, iOS Music, sampling, sound design, and music making.

More Repositories

1

AudioKit

Audio synthesis, processing, & analysis platform for iOS, macOS and tvOS
Swift
10,691
star
2

Cookbook

Canonical Examples for Using the AudioKit Framework
Swift
644
star
3

ROMPlayer

AudioKit Sample Player (ROM Player) - EXS24, Sound Font, Wave Player
Swift
532
star
4

Flow

Generic node graph editor
Swift
300
star
5

AUv3-Example-App

Full App: iOS Standalone and AUv3 Plugin Example. Work in Progress.
Swift
261
star
6

Waveform

GPU accelerated waveform view
Swift
203
star
7

AudioKitUI

Controls and Visualization for AudioKit apps
Swift
201
star
8

Playgrounds

The AudioKit Playground Book for iPad Playgrounds and Xcode Playgrounds
Swift
193
star
9

Tonic

Swift library for music theory
Swift
153
star
10

Keyboard

SwiftUI music keyboard
Swift
136
star
11

Controls

SwiftUI Knobs, Sliders, X-Y Pads, and more
Swift
127
star
12

SoundpipeAudioKit

C-based instruments and effects for AudioKit
C
110
star
13

DrumPadPlayground

Starter Project and Final Project for AudioKit DrumPad Playground App built using Apple's Swift Playgrounds on the iPad
Swift
94
star
14

PianoRoll

Touch oriented piano roll for iOS and macOS
Swift
68
star
15

AudioKitEX

C-backed AudioKit DSP
Swift
47
star
16

DunneAudioKit

Sampler and Synth Instruments as well as Chorus, Flanger and Stereo Delay Effects for AudioKit
C
45
star
17

DevoloopAudioKit

Guitar processors for AudioKit
C++
29
star
18

STKAudioKit

Physical models of instruments to use with AudioKit-powered applications
C++
28
star
19

Microtonality

Microtonal Tuning Tables
Swift
26
star
20

AudioKitDevTools

These developer tools are a series of scripts that create the AudioKit documentation, web site materials, and templates for starting to create AudioKit nodes from scratch.
HTML
19
star
21

SporthAudioKit

AudioKit Operations (Sporth) extension to AudioKit
C
16
star
22

MIDIFileEditAndSync

A demo of using AudioKit v5 to work with MIDI Files
Swift
12
star
23

MIDITrackView

Displays the notes of a MIDI file and follows along with playback
Swift
11
star
24

AudioUnitManager

Open source audio unit host app for use in testing your AudioUnits or building a host app from
Swift
10
star
25

AudioKitArchive

Pre-version 3 AudioKits
Objective-C
8
star
26

SoulAudioKit

A basis for creating AudioKit nodes with SOUL
C++
7
star
27

KissFFT

Swift Package for Kiss FFT
C
6
star
28

FileConverter

Demonstration of the AudioKit FormatConverter
Swift
6
star
29

PlayerDemo

Currently non-working demonstration of AKPlayer. It needs to be fixed up for changes in AudioKit version 5.
Swift
5
star
30

audiokit.io

Website for AudioKit documentation.
Swift
4
star
31

FlangerAndChorus

A demonstration of the AudioKit Flanger and Chorus by Shane Dunne
Swift
4
star
32

SimpleAudioUnit

Currently non-functional demonstration of a simple audio unit using AudioKit. Needs to be fixed for AudioKit v5.
Swift
4
star
33

docgen

Shell
3
star
34

OutputSplitter

AudioKit example that worked under Version 4 but was removed for Version 5.
Swift
2
star
35

ci

1
star