├── AudioKitSynthOne ├── en.lproj │ ├── Main.strings │ ├── Localizable.strings │ └── InfoPlist.strings ├── fr.lproj │ ├── Main.strings │ └── InfoPlist.strings ├── ja.lproj │ ├── Main.strings │ └── InfoPlist.strings ├── tr.lproj │ ├── Main.strings │ └── InfoPlist.strings ├── pt-BR.lproj │ ├── Main.strings │ └── InfoPlist.strings ├── zh-Hans.lproj │ ├── Main.strings │ └── InfoPlist.strings ├── zh-Hant.lproj │ ├── Main.strings │ └── InfoPlist.strings ├── About │ ├── en.lproj │ │ └── About.strings │ ├── Mailing List │ │ ├── zh-Hans.lproj │ │ │ └── MailingList.strings │ │ ├── zh-Hant.lproj │ │ │ └── MailingList.strings │ │ ├── ja.lproj │ │ │ └── MailingList.strings │ │ ├── en.lproj │ │ │ └── MailingList.strings │ │ ├── zh-Hant-TW.lproj │ │ │ └── MailingList.strings │ │ ├── tr.lproj │ │ │ └── MailingList.strings │ │ ├── pt-BR.lproj │ │ │ └── MailingList.strings │ │ ├── Manager+MailingListDelegate.swift │ │ ├── de.lproj │ │ │ └── MailingList.strings │ │ └── fr.lproj │ │ │ └── MailingList.strings │ ├── InfoViewController.swift │ └── MoreAppsController.swift ├── Header │ ├── en.lproj │ │ └── Header.strings │ ├── fr.lproj │ │ └── Header.strings │ ├── tr.lproj │ │ └── Header.strings │ ├── ja.lproj │ │ └── Header.strings │ ├── pt-BR.lproj │ │ └── Header.strings │ ├── zh-Hans.lproj │ │ └── Header.strings │ ├── zh-Hant.lproj │ │ └── Header.strings │ └── zh-Hant-TW.lproj │ │ └── Header.strings ├── Effects │ ├── en.lproj │ │ └── Effects.strings │ ├── fr.lproj │ │ └── Effects.strings │ ├── ja.lproj │ │ └── Effects.strings │ ├── pt-BR.lproj │ │ └── Effects.strings │ ├── tr.lproj │ │ └── Effects.strings │ ├── zh-Hans.lproj │ │ └── Effects.strings │ ├── zh-Hant.lproj │ │ └── Effects.strings │ └── README.md ├── Envelopes │ ├── en.lproj │ │ └── Envelopes.strings │ ├── fr.lproj │ │ └── Envelopes.strings │ ├── ja.lproj │ │ └── Envelopes.strings │ ├── tr.lproj │ │ └── Envelopes.strings │ ├── pt-BR.lproj │ │ └── Envelopes.strings │ ├── zh-Hans.lproj │ │ └── Envelopes.strings │ ├── zh-Hant.lproj │ │ └── Envelopes.strings │ ├── README.md │ └── zh-Hant-TW.lproj │ │ └── Envelopes.strings ├── Presets │ ├── fr.lproj │ │ └── Presets.strings │ ├── ja.lproj │ │ └── Presets.strings │ ├── pt-BR.lproj │ │ └── Presets.strings │ ├── tr.lproj │ │ └── Presets.strings │ ├── en.lproj │ │ └── Presets.strings │ ├── zh-Hans.lproj │ │ └── Presets.strings │ ├── zh-Hant.lproj │ │ └── Presets.strings │ ├── UI Components │ │ ├── String+CapitalizeFirst.swift │ │ └── PresetUIButton.swift │ ├── Bank.swift │ ├── PresetsViewController │ │ ├── Presets+SearchDelegate.swift │ │ ├── Presets+PresetPopOverDelegate.swift │ │ ├── Presets+UITextViewDelegate.swift │ │ └── Presets+UITableViewDataSource.swift │ ├── BankEditorViewController.swift │ └── Manager+PresetsDelegate.swift ├── Sequencer │ ├── fr.lproj │ │ └── Sequencer.strings │ ├── ja.lproj │ │ └── Sequencer.strings │ ├── tr.lproj │ │ └── Sequencer.strings │ ├── pt-BR.lproj │ │ └── Sequencer.strings │ ├── zh-Hans.lproj │ │ └── Sequencer.strings │ ├── zh-Hant.lproj │ │ └── Sequencer.strings │ ├── README.md │ └── UI Components │ │ └── RateKnob.swift ├── TouchPad │ ├── fr.lproj │ │ └── TouchPad.strings │ ├── ja.lproj │ │ └── TouchPad.strings │ ├── tr.lproj │ │ └── TouchPad.strings │ ├── pt-BR.lproj │ │ └── TouchPad.strings │ ├── zh-Hans.lproj │ │ └── TouchPad.strings │ ├── zh-Hant.lproj │ │ └── TouchPad.strings │ ├── README.md │ ├── UI Components │ │ ├── spark.png │ │ └── TouchPoint.swift │ ├── en.lproj │ │ └── TouchPad.strings │ └── zh-Hant-TW.lproj │ │ └── TouchPad.strings ├── Tunings │ ├── en.lproj │ │ └── Tunings.strings │ ├── fr.lproj │ │ └── Tunings.strings │ ├── ja.lproj │ │ └── Tunings.strings │ ├── pt-BR.lproj │ │ └── Tunings.strings │ ├── tr.lproj │ │ └── Tunings.strings │ ├── zh-Hans.lproj │ │ └── Tunings.strings │ ├── zh-Hant.lproj │ │ └── Tunings.strings │ ├── zh-Hant-TW.lproj │ │ └── Tunings.strings │ ├── TuningsPanelController │ │ ├── TuningsPanel+TuneUpDelegate.swift │ │ └── TuningsViewController.swift │ ├── Model │ │ ├── TuningBank.swift │ │ └── Tunings+LaunchD1.swift │ ├── UI Components │ │ └── TuningCell.swift │ └── TuneUpPopUp.swift ├── Developer │ ├── Base.lproj │ │ ├── en.lproj │ │ │ └── Dev.strings │ │ ├── fr.lproj │ │ │ └── Dev.strings │ │ ├── ja.lproj │ │ │ └── Dev.strings │ │ ├── tr.lproj │ │ │ └── Dev.strings │ │ ├── pt-BR.lproj │ │ │ └── Dev.strings │ │ ├── zh-Hans.lproj │ │ │ └── Dev.strings │ │ └── zh-Hant.lproj │ │ │ └── Dev.strings │ ├── zh-Hans.lproj │ │ └── zh-Hans.lproj │ │ │ └── Dev.strings │ └── zh-Hant.lproj │ │ └── zh-Hant.lproj │ │ └── Dev.strings ├── Generators │ ├── en.lproj │ │ └── Generators.strings │ ├── fr.lproj │ │ └── Generators.strings │ ├── ja.lproj │ │ └── Generators.strings │ ├── pt-BR.lproj │ │ └── Generators.strings │ ├── tr.lproj │ │ └── Generators.strings │ ├── zh-Hans.lproj │ │ └── Generators.strings │ ├── zh-Hant.lproj │ │ └── Generators.strings │ ├── README.md │ └── UI Components │ │ └── FlatToggleButton.swift ├── Translations │ ├── Metadata │ │ ├── subtitle-ja-JP.txt │ │ ├── subtitle-zh-CN.txt │ │ ├── subtitle-zh-TW.txt │ │ ├── subtitle-ko-KR.txt │ │ ├── subtitle-en.txt │ │ ├── subtitle-lol-US.txt │ │ ├── subtitle-tr-TR.txt │ │ ├── subtitle-ar-SA.txt │ │ ├── subtitle-hi-IN.txt │ │ ├── subtitle-it-IT.txt │ │ ├── subtitle-pt-BR.txt │ │ ├── subtitle-sr-CS.txt │ │ ├── subtitle-es-ES.txt │ │ ├── subtitle-nl-NL.txt │ │ ├── subtitle-ro-RO.txt │ │ ├── subtitle-cs-CZ.txt │ │ ├── subtitle-de-DE.txt │ │ ├── subtitle-ru-RU.txt │ │ ├── subtitle-fr-FR.txt │ │ ├── keywords-ko-KR.txt │ │ ├── keywords-ja-JP.txt │ │ ├── keywords-zh-CN.txt │ │ ├── keywords-zh-TW.txt │ │ ├── keywords-ar-SA.txt │ │ ├── keywords-hi-IN.txt │ │ ├── keywords-cs-CZ.txt │ │ ├── keywords-en.txt │ │ ├── keywords-lol-US.txt │ │ ├── keywords-nl-NL.txt │ │ ├── keywords-ru-RU.txt │ │ ├── keywords-sr-CS.txt │ │ ├── keywords-tr-TR.txt │ │ ├── keywords-pt-BR.txt │ │ ├── keywords-ro-RO.txt │ │ ├── keywords-de-DE.txt │ │ ├── keywords-fr-FR.txt │ │ ├── keywords-es-ES.txt │ │ ├── keywords-it-IT.txt │ │ ├── changelog-zh-CN.txt │ │ ├── changelog-zh-TW.txt │ │ ├── changelog-ko-KR.txt │ │ ├── changelog-ja-JP.txt │ │ ├── changelog-ar-SA.txt │ │ ├── changelog-en.txt │ │ ├── changelog-lol-US.txt │ │ ├── changelog-sr-CS.txt │ │ ├── changelog-hi-IN.txt │ │ ├── changelog-cs-CZ.txt │ │ ├── changelog-it-IT.txt │ │ ├── changelog-tr-TR.txt │ │ ├── changelog-nl-NL.txt │ │ ├── changelog-ru-RU.txt │ │ ├── changelog-de-DE.txt │ │ ├── changelog-pt-BR.txt │ │ ├── changelog-fr-FR.txt │ │ ├── changelog-ro-RO.txt │ │ ├── changelog-es-ES.txt │ │ ├── description-zh-TW.txt │ │ └── description-zh-CN.txt │ ├── images │ │ ├── crowdin.jpg │ │ ├── export.jpg │ │ └── scheme.jpg │ └── AudioKitSynthOne │ │ ├── fr.xcloc │ │ ├── Source Contents │ │ │ ├── OneSignalNotificationServiceExtension │ │ │ │ └── en.lproj │ │ │ │ │ └── InfoPlist.strings │ │ │ └── AudioKitSynthOne │ │ │ │ ├── Base.lproj │ │ │ │ └── Localizable.strings │ │ │ │ └── en.lproj │ │ │ │ └── InfoPlist.strings │ │ └── contents.json │ │ ├── ja.xcloc │ │ ├── Source Contents │ │ │ ├── OneSignalNotificationServiceExtension │ │ │ │ └── en.lproj │ │ │ │ │ └── InfoPlist.strings │ │ │ └── AudioKitSynthOne │ │ │ │ ├── Base.lproj │ │ │ │ └── Localizable.strings │ │ │ │ └── en.lproj │ │ │ │ └── InfoPlist.strings │ │ └── contents.json │ │ ├── tr.xcloc │ │ ├── Source Contents │ │ │ ├── OneSignalNotificationServiceExtension │ │ │ │ └── en.lproj │ │ │ │ │ └── InfoPlist.strings │ │ │ └── AudioKitSynthOne │ │ │ │ ├── Base.lproj │ │ │ │ └── Localizable.strings │ │ │ │ └── en.lproj │ │ │ │ └── InfoPlist.strings │ │ └── contents.json │ │ ├── pt-BR.xcloc │ │ ├── Source Contents │ │ │ ├── OneSignalNotificationServiceExtension │ │ │ │ └── en.lproj │ │ │ │ │ └── InfoPlist.strings │ │ │ └── AudioKitSynthOne │ │ │ │ ├── Base.lproj │ │ │ │ └── Localizable.strings │ │ │ │ └── en.lproj │ │ │ │ └── InfoPlist.strings │ │ └── contents.json │ │ ├── zh-Hans.xcloc │ │ ├── Source Contents │ │ │ ├── OneSignalNotificationServiceExtension │ │ │ │ └── en.lproj │ │ │ │ │ └── InfoPlist.strings │ │ │ └── AudioKitSynthOne │ │ │ │ ├── Base.lproj │ │ │ │ └── Localizable.strings │ │ │ │ └── en.lproj │ │ │ │ └── InfoPlist.strings │ │ └── contents.json │ │ └── zh-Hant.xcloc │ │ ├── Source Contents │ │ ├── OneSignalNotificationServiceExtension │ │ │ └── en.lproj │ │ │ │ └── InfoPlist.strings │ │ └── AudioKitSynthOne │ │ │ ├── Base.lproj │ │ │ └── Localizable.strings │ │ │ └── en.lproj │ │ │ └── InfoPlist.strings │ │ └── contents.json ├── Assets │ ├── D1_icon.png │ ├── icon_320.png │ ├── icon_64.png │ └── Assets.xcassets │ │ ├── Contents.json │ │ ├── .DS_Store │ │ ├── d1.imageset │ │ ├── d1.jpg │ │ └── Contents.json │ │ ├── back.imageset │ │ ├── close@2x.png │ │ └── Contents.json │ │ ├── dice.imageset │ │ ├── dice@2x.png │ │ └── Contents.json │ │ ├── info.imageset │ │ ├── info@2x.png │ │ └── Contents.json │ │ ├── spark.imageset │ │ ├── spark.png │ │ └── Contents.json │ │ ├── D1_icon.imageset │ │ ├── D1_icon.png │ │ └── Contents.json │ │ ├── s1_logo.imageset │ │ ├── s1_logo.png │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ ├── Icon 512.png │ │ ├── icon_20pt.png │ │ ├── icon_29pt.png │ │ ├── icon_40pt.png │ │ ├── icon_76pt.png │ │ ├── icon_20pt@2x.png │ │ ├── icon_20pt@3x.png │ │ ├── icon_29pt@2x.png │ │ ├── icon_29pt@3x.png │ │ ├── icon_40pt@2x.png │ │ ├── icon_40pt@3x.png │ │ ├── icon_60pt@2x.png │ │ ├── icon_60pt@3x.png │ │ ├── icon_76pt@2x.png │ │ ├── icon_83.5@2x.png │ │ ├── icon_20pt@2x-1.png │ │ ├── icon_29pt@2x-1.png │ │ └── icon_40pt@2x-1.png │ │ ├── ak_copy.imageset │ │ ├── ak_copy@2x.png │ │ └── Contents.json │ │ ├── ak_edit.imageset │ │ ├── ak_edit@2x.png │ │ └── Contents.json │ │ ├── ak_fav.imageset │ │ ├── ak_fav@2x.png │ │ └── Contents.json │ │ ├── au_adsr.imageset │ │ ├── au_adsr@2x.png │ │ └── Contents.json │ │ ├── au_arp.imageset │ │ ├── au_arp@2x.png │ │ └── Contents.json │ │ ├── au_efx.imageset │ │ ├── au_efx@2x.png │ │ └── Contents.json │ │ ├── au_main.imageset │ │ ├── au_main@2x.png │ │ └── Contents.json │ │ ├── circuit.imageset │ │ ├── circuit@2x.jpg │ │ └── Contents.json │ │ ├── saveDisk.imageset │ │ ├── saveDisk.png │ │ ├── saveDisk@2x.png │ │ └── Contents.json │ │ ├── ak_share.imageset │ │ ├── ak_share@2x.png │ │ └── Contents.json │ │ ├── app-store.imageset │ │ ├── app-store.png │ │ └── Contents.json │ │ ├── fmplayer.imageset │ │ ├── fmplayer@2x.jpg │ │ └── Contents.json │ │ ├── iPhone_FX.imageset │ │ ├── iPhone_FX.png │ │ └── Contents.json │ │ ├── rack-left.imageset │ │ ├── rack-left.png │ │ ├── rack-leftbw.png │ │ └── Contents.json │ │ ├── ak1-logo.imageset │ │ ├── ak1-logo2@2x.png │ │ └── Contents.json │ │ ├── au_tuning.imageset │ │ ├── au_tuning@2x.png │ │ └── Contents.json │ │ ├── bluetooth.imageset │ │ ├── bluetooth@2x.png │ │ └── Contents.json │ │ ├── iPhone_Arp.imageset │ │ ├── iPhone_Arp.png │ │ └── Contents.json │ │ ├── iPhone_adsr.imageset │ │ ├── iPhone_adsr.png │ │ └── Contents.json │ │ ├── smile-icon.imageset │ │ ├── smile-icon.png │ │ └── Contents.json │ │ ├── LaunchImage.launchimage │ │ ├── launch@2x.png │ │ ├── iPhone8Plus.jpg │ │ ├── iPhone8launch.jpg │ │ ├── iphoneXlaunch.jpg │ │ ├── iphone5Launch-1.jpg │ │ └── iPhoneXSMaxlaunch-1.jpg │ │ ├── au_presets.imageset │ │ ├── au_presets@2x.png │ │ └── Contents.json │ │ ├── background.imageset │ │ ├── background@2x.png │ │ └── Contents.json │ │ ├── headerback.imageset │ │ ├── headerback@2x.png │ │ └── Contents.json │ │ ├── left-arrow.imageset │ │ ├── left-arrow@2x.png │ │ └── Contents.json │ │ ├── Wilsonic_icon.imageset │ │ ├── Wilsonic_icon.png │ │ └── Contents.json │ │ ├── ak_favfilled.imageset │ │ ├── ak_favfilled@2x.png │ │ └── Contents.json │ │ ├── au_touchpad.imageset │ │ ├── au_touchpad@2x.png │ │ └── Contents.json │ │ ├── iPhone_Preset.imageset │ │ ├── iPhone_Preset.png │ │ └── Contents.json │ │ ├── iPhone_Tuning.imageset │ │ ├── iPhone_Tuning.png │ │ └── Contents.json │ │ ├── keyboard_top.imageset │ │ ├── keyboard_top@2x.png │ │ └── Contents.json │ │ ├── right-arrow.imageset │ │ ├── right-arrow@2x.png │ │ └── Contents.json │ │ ├── touchViewBack.imageset │ │ ├── touchViewBack@2x.png │ │ └── Contents.json │ │ ├── iPhone_Generator.imageset │ │ ├── iPhone_Generator.png │ │ └── Contents.json │ │ ├── iPhone_TouchPad.imageset │ │ ├── iPhone_TouchPad.png │ │ └── Contents.json │ │ ├── iPhone_TouchPad_bg.imageset │ │ ├── iPhone_TouchPad_bg.png │ │ └── Contents.json │ │ └── iPhoneheaderback.imageset │ │ ├── iPhoneheaderback@2x.png │ │ └── Contents.json ├── Base.lproj │ ├── Localizable.strings │ └── InfoPlist.strings ├── zh-Hant-TW.lproj │ ├── Localizable.strings │ └── InfoPlist.strings ├── DSP │ ├── BandlimitedWavetables │ │ ├── bandlimitedWaveformFrequencies.json │ │ └── bandlimitedWaveforms.json │ ├── Sequencer │ │ ├── S1ArpModes.hpp │ │ └── S1SeqNoteNumber.hpp │ ├── S1TuningTable.swift │ ├── S1Control.swift │ ├── AudioKitSynthOne-Bridging-Header.h │ ├── Rate │ │ └── AKSynthOneRate.h │ ├── Kernel │ │ ├── S1DSPKernel+MIDI.mm │ │ ├── S1DSPKernel+reset.mm │ │ └── S1DSPKernel+destroy.mm │ ├── Conductor+Platform.swift │ ├── TAAE │ │ ├── AEWeakRetainingProxy.h │ │ ├── AEWeakRetainingProxy.m │ │ └── AETypes.m │ └── README.md ├── Audiobus │ ├── README.md │ └── Manager+Audiobus.swift ├── Controls │ ├── README.md │ └── Buttons │ │ ├── iPhoneToggleButton.swift │ │ ├── CallbackButton.swift │ │ ├── ToggleSwitch.swift │ │ ├── ToggleButton.swift │ │ └── SynthButton.swift ├── MIDI │ ├── MIDIInput.swift │ ├── ChannelStepper.swift │ ├── MIDILearnable.swift │ ├── MIDICell.swift │ └── Manager+MIDISettingsPopOverDelegate.swift ├── Keyboard │ ├── UI Components │ │ ├── KeyboardShowButton.swift │ │ └── KeyboardView+Drawing.swift │ ├── Manager+ModWheelDelegate.swift │ └── Manager+Keyboard.swift ├── AudioKitSynthOne.entitlements ├── Manager │ ├── UpdatableViewController.swift │ └── Manager+PushNotification.swift ├── Private.swift ├── AppDelegate+PlatformServices.swift ├── README.md └── Navigation │ └── NavButton.swift ├── OneSignalNotificationServiceExtension ├── tr.lproj │ └── InfoPlist.strings ├── Base.lproj │ └── InfoPlist.strings ├── en.lproj │ └── InfoPlist.strings ├── fr.lproj │ └── InfoPlist.strings ├── ja.lproj │ └── InfoPlist.strings ├── pt-BR.lproj │ └── InfoPlist.strings ├── zh-Hans.lproj │ └── InfoPlist.strings ├── zh-Hant-TW.lproj │ └── InfoPlist.strings ├── zh-Hant.lproj │ └── InfoPlist.strings ├── Info.plist └── NotificationService.swift ├── travis.sh ├── AudioKitSynthOne.xcodeproj └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── AudioKitSynthOne.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── crowdin.yml ├── .travis.yml ├── LICENSE ├── Podfile ├── Podfile.lock └── .gitignore /AudioKitSynthOne/en.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/fr.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/ja.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/tr.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/pt-BR.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/zh-Hans.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/zh-Hant.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/en.lproj/About.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Header/en.lproj/Header.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Header/fr.lproj/Header.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Header/tr.lproj/Header.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Effects/en.lproj/Effects.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Effects/fr.lproj/Effects.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Effects/ja.lproj/Effects.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Effects/pt-BR.lproj/Effects.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Effects/tr.lproj/Effects.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/en.lproj/Envelopes.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/fr.lproj/Envelopes.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/ja.lproj/Envelopes.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/tr.lproj/Envelopes.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Header/ja.lproj/Header.strings: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Header/pt-BR.lproj/Header.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Header/zh-Hans.lproj/Header.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Header/zh-Hant.lproj/Header.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/fr.lproj/Presets.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/ja.lproj/Presets.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/pt-BR.lproj/Presets.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/tr.lproj/Presets.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Sequencer/fr.lproj/Sequencer.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Sequencer/ja.lproj/Sequencer.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Sequencer/tr.lproj/Sequencer.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/fr.lproj/TouchPad.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/ja.lproj/TouchPad.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/tr.lproj/TouchPad.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/en.lproj/Tunings.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/fr.lproj/Tunings.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/ja.lproj/Tunings.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/pt-BR.lproj/Tunings.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/tr.lproj/Tunings.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/Base.lproj/en.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/Base.lproj/fr.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/Base.lproj/ja.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/Base.lproj/tr.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Effects/zh-Hans.lproj/Effects.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Effects/zh-Hant.lproj/Effects.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/pt-BR.lproj/Envelopes.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/zh-Hans.lproj/Envelopes.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/zh-Hant.lproj/Envelopes.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/en.lproj/Generators.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/fr.lproj/Generators.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/ja.lproj/Generators.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/pt-BR.lproj/Generators.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/tr.lproj/Generators.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/en.lproj/Presets.strings: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/zh-Hans.lproj/Presets.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/zh-Hant.lproj/Presets.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Sequencer/pt-BR.lproj/Sequencer.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Sequencer/zh-Hans.lproj/Sequencer.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Sequencer/zh-Hant.lproj/Sequencer.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/pt-BR.lproj/TouchPad.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/zh-Hans.lproj/TouchPad.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/zh-Hant.lproj/TouchPad.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/zh-Hans.lproj/Tunings.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/zh-Hant.lproj/Tunings.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/Base.lproj/pt-BR.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/Base.lproj/zh-Hans.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/Base.lproj/zh-Hant.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/zh-Hans.lproj/Generators.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/zh-Hant.lproj/Generators.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-ja-JP.txt: -------------------------------------------------------------------------------- 1 | 新しい音楽の作成と再生 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-zh-CN.txt: -------------------------------------------------------------------------------- 1 | 播放和创建新音乐 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-zh-TW.txt: -------------------------------------------------------------------------------- 1 | 播放和創建新音樂 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-ko-KR.txt: -------------------------------------------------------------------------------- 1 | 새로운 음악 재생 및 생성 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-en.txt: -------------------------------------------------------------------------------- 1 | Play & Create New Music 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-lol-US.txt: -------------------------------------------------------------------------------- 1 | I can has new music 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-tr-TR.txt: -------------------------------------------------------------------------------- 1 | Yeni Müzik Çal ve Çal 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-ar-SA.txt: -------------------------------------------------------------------------------- 1 | العب & أنشئ موسيقى جديدة 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-hi-IN.txt: -------------------------------------------------------------------------------- 1 | नया संगीत चलाएं और बनाएं 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-it-IT.txt: -------------------------------------------------------------------------------- 1 | Gioca e crea nuova musica 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-pt-BR.txt: -------------------------------------------------------------------------------- 1 | Toque e crie músicas novas 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-sr-CS.txt: -------------------------------------------------------------------------------- 1 | Play & Create New Music 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-es-ES.txt: -------------------------------------------------------------------------------- 1 | Reproducir y crear nueva música 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-nl-NL.txt: -------------------------------------------------------------------------------- 1 | Speel en maak nieuwe muziek 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-ro-RO.txt: -------------------------------------------------------------------------------- 1 | Redați și creați muzică nouă 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-cs-CZ.txt: -------------------------------------------------------------------------------- 1 | Přehrávání a vytváření nové hudby 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-de-DE.txt: -------------------------------------------------------------------------------- 1 | Spielen und neue Musik erstellen 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-ru-RU.txt: -------------------------------------------------------------------------------- 1 | Играйте и создавайте новую музыку 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/subtitle-fr-FR.txt: -------------------------------------------------------------------------------- 1 | Jouer et créer de la nouvelle musique 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Effects/README.md: -------------------------------------------------------------------------------- 1 | # Effects Panel 2 | 3 | ![Effects Panel](http://audiokit.io/synthone/effectsPanel.png) 4 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/D1_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/D1_icon.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/icon_320.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/icon_320.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/icon_64.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-ko-KR.txt: -------------------------------------------------------------------------------- 1 | 오디오 버스, 프로, 아날로그 신디사이저, 신디사이저, 아날로그, 신디사이저, 신스 원, 오디오 키트, 코르그, 무그, 피아노 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/README.md: -------------------------------------------------------------------------------- 1 | # Envelopes Panel 2 | 3 | ![Envelopes Panel](http://audiokit.io/synthone/envelopesPanel.png) 4 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/README.md: -------------------------------------------------------------------------------- 1 | # Generators Panel 2 | 3 | ![Generators Panel](http://audiokit.io/synthone/generatorsPanel.png) 4 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/README.md: -------------------------------------------------------------------------------- 1 | # Touch Pad Panel 2 | 3 | ![Touch Pad Panel](http://audiokit.io/synthone/touchPadPanel.png) 4 | 5 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-ja-JP.txt: -------------------------------------------------------------------------------- 1 | Audiobus、Pro、プロ、アナログ・シンセ、シンセサイザー、アナログ、シンセ、SynthOne、オーディオ・キット、Korg、ムーグ、ピアノ 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-zh-CN.txt: -------------------------------------------------------------------------------- 1 | Audiobus,Pro,Analog Synth,Synthesizer,Analog,Synth,SynthOne,Audio Kit,Korg,Moog,Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-zh-TW.txt: -------------------------------------------------------------------------------- 1 | Audiobus,Pro,Analog Synth,Synthesizer,Analog,Synth,SynthOne,Audio Kit,Korg,Moog,Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-ar-SA.txt: -------------------------------------------------------------------------------- 1 | Audiobus، Pro، Analog Synthesizer، Analog، Synth، SynthOne، Audio Kit، Korg، Moog، Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-hi-IN.txt: -------------------------------------------------------------------------------- 1 | ऑडीबस, प्रो, एनालॉग सिंथ, सिंथेसाइज़र, एनालॉग, सिंथ, सिंथोन, ऑडियो किट, कॉर्ग, मूग, पियानो 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Base.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-cs-CZ.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analog Synth, Synthesizer, Analog, Synth, SynthOne, Audio Kit, Korg, Moog, Klavír 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-en.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analog Synth, Synthesizer, Analog, Synth, SynthOne, Audio Kit, Korg, Moog, Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-lol-US.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analog Synth, Synthesizer, Analog, Synth, SynthOne, Audio Kit, Korg, Moog, Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-nl-NL.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analog Synth, Synthesizer, Analoog, Synth, SynthOne, Audioset, Korg, Moog, Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-ru-RU.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analog Synth, Synthesizer, Analog, Synth, SynthOne, Audio Kit, Korg, Moog, Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-sr-CS.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analog Synth, Synthesizer, Analog, Synth, SynthOne, Audio Kit, Korg, Moog, Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-tr-TR.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analog Synth, Synthesizer, Analog, Synth, SynthOne, Ses Seti, Korg, Moog, Piyano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/images/crowdin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/images/crowdin.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/images/export.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/images/export.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/images/scheme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/images/scheme.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/.DS_Store -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/UI Components/spark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/TouchPad/UI Components/spark.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-pt-BR.txt: -------------------------------------------------------------------------------- 1 | Audiobus,Sintetizador Analógico,Sintetizador,Analógico,Sintetizador,SynthOne,AudioKit,Korg,Moog,Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-ro-RO.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analog Synth, Sintetizator, Analogic, Synth, SynthOne, Audio Kit, Korg, Moog, Pian 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-de-DE.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Analogsynth, Synthesizer, Analog, Synthesizer, Synthesizer, Audiokit, Korg, Moog, Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-fr-FR.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Synthé analogique, Synthétiseur, Analogique, Synthé, SynthOne, Kit audio, Korg, Moog, Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/zh-Hant-TW.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/zh-Hant-TW.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/d1.imageset/d1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/d1.imageset/d1.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-es-ES.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Sintetizador analógico, Sintetizador, Analógico, Synth, SynthOne, Kit de audio, Korg, Moog, Piano 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/keywords-it-IT.txt: -------------------------------------------------------------------------------- 1 | Audiobus, Pro, Sintetizzatore analogico, Sintetizzatore, Analogico, Synth, SynthOne, Kit audio, Korg, Moog, Pianoforte 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/back.imageset/close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/back.imageset/close@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/dice.imageset/dice@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/dice.imageset/dice@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/info.imageset/info@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/info.imageset/info@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/spark.imageset/spark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/spark.imageset/spark.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/D1_icon.imageset/D1_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/D1_icon.imageset/D1_icon.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/s1_logo.imageset/s1_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/s1_logo.imageset/s1_logo.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/Icon 512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/Icon 512.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_copy.imageset/ak_copy@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/ak_copy.imageset/ak_copy@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_edit.imageset/ak_edit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/ak_edit.imageset/ak_edit@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_fav.imageset/ak_fav@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/ak_fav.imageset/ak_fav@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_adsr.imageset/au_adsr@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/au_adsr.imageset/au_adsr@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_arp.imageset/au_arp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/au_arp.imageset/au_arp@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_efx.imageset/au_efx@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/au_efx.imageset/au_efx@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_main.imageset/au_main@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/au_main.imageset/au_main@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/circuit.imageset/circuit@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/circuit.imageset/circuit@2x.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/saveDisk.imageset/saveDisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/saveDisk.imageset/saveDisk.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_20pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_20pt.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_29pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_29pt.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_40pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_40pt.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_76pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_76pt.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_share.imageset/ak_share@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/ak_share.imageset/ak_share@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/app-store.imageset/app-store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/app-store.imageset/app-store.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/fmplayer.imageset/fmplayer@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/fmplayer.imageset/fmplayer@2x.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_FX.imageset/iPhone_FX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhone_FX.imageset/iPhone_FX.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/rack-left.imageset/rack-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/rack-left.imageset/rack-left.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/saveDisk.imageset/saveDisk@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/saveDisk.imageset/saveDisk@2x.png -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/tr.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /travis.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Run tests in Travis CI 3 | 4 | set -o pipefail 5 | 6 | xcodebuild -workspace AudioKitSynthOne.xcworkspace -scheme AudioKitSynthOne -sdk iphonesimulator | xcpretty || exit 1 7 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_20pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_20pt@3x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_29pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_29pt@3x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_40pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_40pt@3x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_60pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_60pt@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_60pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_60pt@3x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_76pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_76pt@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak1-logo.imageset/ak1-logo2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/ak1-logo.imageset/ak1-logo2@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_tuning.imageset/au_tuning@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/au_tuning.imageset/au_tuning@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/bluetooth.imageset/bluetooth@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/bluetooth.imageset/bluetooth@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Arp.imageset/iPhone_Arp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Arp.imageset/iPhone_Arp.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_adsr.imageset/iPhone_adsr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhone_adsr.imageset/iPhone_adsr.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/rack-left.imageset/rack-leftbw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/rack-left.imageset/rack-leftbw.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/smile-icon.imageset/smile-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/smile-icon.imageset/smile-icon.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/launch@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/launch@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_presets.imageset/au_presets@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/au_presets.imageset/au_presets@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/background.imageset/background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/background.imageset/background@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/headerback.imageset/headerback@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/headerback.imageset/headerback@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/left-arrow.imageset/left-arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/left-arrow.imageset/left-arrow@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iPhone8Plus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iPhone8Plus.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iPhone8launch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iPhone8launch.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iphoneXlaunch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iphoneXlaunch.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/Wilsonic_icon.imageset/Wilsonic_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/Wilsonic_icon.imageset/Wilsonic_icon.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_favfilled.imageset/ak_favfilled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/ak_favfilled.imageset/ak_favfilled@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_touchpad.imageset/au_touchpad@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/au_touchpad.imageset/au_touchpad@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Preset.imageset/iPhone_Preset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Preset.imageset/iPhone_Preset.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Tuning.imageset/iPhone_Tuning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Tuning.imageset/iPhone_Tuning.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/keyboard_top.imageset/keyboard_top@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/keyboard_top.imageset/keyboard_top@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/right-arrow.imageset/right-arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/right-arrow.imageset/right-arrow@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Sequencer/README.md: -------------------------------------------------------------------------------- 1 | # Sequencer Panel 2 | 3 | ![Sequencer Panel](http://audiokit.io/synthone/sequencerPanel.png) 4 | 5 | ### This folder's contents 6 | Rate.swift 7 | SequencerPanelController.swift 8 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iphone5Launch-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iphone5Launch-1.jpg -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/touchViewBack.imageset/touchViewBack@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/touchViewBack.imageset/touchViewBack@2x.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Generator.imageset/iPhone_Generator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Generator.imageset/iPhone_Generator.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_TouchPad.imageset/iPhone_TouchPad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhone_TouchPad.imageset/iPhone_TouchPad.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iPhoneXSMaxlaunch-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/LaunchImage.launchimage/iPhoneXSMaxlaunch-1.jpg -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/Base.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/fr.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/ja.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/pt-BR.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_TouchPad_bg.imageset/iPhone_TouchPad_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhone_TouchPad_bg.imageset/iPhone_TouchPad_bg.png -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhoneheaderback.imageset/iPhoneheaderback@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Assets/Assets.xcassets/iPhoneheaderback.imageset/iPhoneheaderback@2x.png -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/zh-Hans.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/zh-Hant-TW.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/zh-Hant.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/BandlimitedWavetables/bandlimitedWaveformFrequencies.json: -------------------------------------------------------------------------------- 1 | {"content":[0,8.1787834167480469,16.357566833496094,32.715133666992188,65.430267333984375,131.25,262.5,525.0,1050.0,2205.0,4410.0,11025.0,22050.0],"phase":0,"type":10} 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Audiobus/README.md: -------------------------------------------------------------------------------- 1 | # Audiobus / Interapp Audio 2 | 3 | This is a direct copy of the Audiobus files from AudioKit. For more information, check out: 4 | 5 | * [AudioKit's Audiobus documentation](http://audiokit.io/audiobus/) 6 | * [Audiobus itself](http://audiob.us/) 7 | 8 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/fr.xcloc/Source Contents/OneSignalNotificationServiceExtension/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | /* Bundle name */ 4 | "CFBundleName" = "$(PRODUCT_NAME)"; 5 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/ja.xcloc/Source Contents/OneSignalNotificationServiceExtension/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | /* Bundle name */ 4 | "CFBundleName" = "$(PRODUCT_NAME)"; 5 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/tr.xcloc/Source Contents/OneSignalNotificationServiceExtension/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | /* Bundle name */ 4 | "CFBundleName" = "$(PRODUCT_NAME)"; 5 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/fr.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/AudioKitSynthOne/fr.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/ja.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/AudioKitSynthOne/ja.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/pt-BR.xcloc/Source Contents/OneSignalNotificationServiceExtension/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | /* Bundle name */ 4 | "CFBundleName" = "$(PRODUCT_NAME)"; 5 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/tr.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/AudioKitSynthOne/tr.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hans.xcloc/Source Contents/OneSignalNotificationServiceExtension/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | /* Bundle name */ 4 | "CFBundleName" = "$(PRODUCT_NAME)"; 5 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hant.xcloc/Source Contents/OneSignalNotificationServiceExtension/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "OneSignalNotificationServiceExtension"; 3 | /* Bundle name */ 4 | "CFBundleName" = "$(PRODUCT_NAME)"; 5 | -------------------------------------------------------------------------------- /AudioKitSynthOne/ja.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "シンセ1"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) カメラの使用。"; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/pt-BR.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/AudioKitSynthOne/pt-BR.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/zh-Hans.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) 相机使用"; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/zh-Hant.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) 相机使用"; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Base.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hans.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hans.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hant.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AudioKit/AudioKitSynthOne/HEAD/AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hant.xcloc/Source Contents/AudioKitSynthOne/Base.lproj/Localizable.strings -------------------------------------------------------------------------------- /AudioKitSynthOne/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/pt-BR.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) uso da câmera."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/tr.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth Bir"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) kamera kullanımı."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/zh-Hant-TW.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/fr.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) utilisation de la caméra."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-zh-CN.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link整合改进。 2 | 通过链接连接时,应用程序将在更改预设时保持相同的速度。 3 | 使用Ableton Link是一种很好的方法,可以使Synth One的节奏与其他应用程序保持同步 4 | +其他小修正 5 | +你真棒! 6 | 7 | 我们都在自愿为您构建这个应用程序。 没有人得到任何报酬。 8 | 请传播这个词。 知道这个应用程序的音乐家越多,我们就能吸引越多的音乐家! 9 | 请发送错误报告:hello@audiokitpro.com 10 | 11 | 谢谢 :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-zh-TW.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link整合改進。 2 | 通過鏈接連接時,應用程序將在更改預設時保持相同的速度。 3 | 使用Ableton Link是一種很好的方法,可以使Synth One的節奏與其他應用程序保持同步 4 | +其他小修正 5 | +你真棒! 6 | 7 | 我們都在自願為您構建這個應用程序。 沒有人得到任何報酬。 8 | 請傳播這個詞。 知道這個應用程序的音樂家越多,我們就能吸引越多的音樂家! 9 | 請發送錯誤報告:hello@audiokitpro.com 10 | 11 | 謝謝 :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AudioKitSynthOne.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/Sequencer/S1ArpModes.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // S1ArpModes.hpp 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 3/06/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | enum struct ArpeggiatorMode : int { 10 | Up = 0, 11 | UpDown = 1, 12 | Down = 2 13 | }; 14 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/fr.xcloc/contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "developmentRegion" : "en", 3 | "targetLocale" : "fr", 4 | "toolInfo" : { 5 | "toolBuildNumber" : "10A255", 6 | "toolID" : "com.apple.dt.xcode", 7 | "toolName" : "Xcode", 8 | "toolVersion" : "10.0" 9 | }, 10 | "version" : "1.0" 11 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/ja.xcloc/contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "developmentRegion" : "en", 3 | "targetLocale" : "ja", 4 | "toolInfo" : { 5 | "toolBuildNumber" : "10A255", 6 | "toolID" : "com.apple.dt.xcode", 7 | "toolName" : "Xcode", 8 | "toolVersion" : "10.0" 9 | }, 10 | "version" : "1.0" 11 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/tr.xcloc/contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "developmentRegion" : "en", 3 | "targetLocale" : "tr", 4 | "toolInfo" : { 5 | "toolBuildNumber" : "10A255", 6 | "toolID" : "com.apple.dt.xcode", 7 | "toolName" : "Xcode", 8 | "toolVersion" : "10.0" 9 | }, 10 | "version" : "1.0" 11 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/Sequencer/S1SeqNoteNumber.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // S1SeqNoteNumber.hpp 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 3/06/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | struct SeqNoteNumber { 10 | int noteNumber; 11 | int onOff; 12 | int velocity; 13 | }; 14 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/pt-BR.xcloc/contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "developmentRegion" : "en", 3 | "targetLocale" : "pt-BR", 4 | "toolInfo" : { 5 | "toolBuildNumber" : "10A255", 6 | "toolID" : "com.apple.dt.xcode", 7 | "toolName" : "Xcode", 8 | "toolVersion" : "10.0" 9 | }, 10 | "version" : "1.0" 11 | } -------------------------------------------------------------------------------- /AudioKitSynthOne.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hans.xcloc/contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "developmentRegion" : "en", 3 | "targetLocale" : "zh-Hans", 4 | "toolInfo" : { 5 | "toolBuildNumber" : "10A255", 6 | "toolID" : "com.apple.dt.xcode", 7 | "toolName" : "Xcode", 8 | "toolVersion" : "10.0" 9 | }, 10 | "version" : "1.0" 11 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hant.xcloc/contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "developmentRegion" : "en", 3 | "targetLocale" : "zh-Hant", 4 | "toolInfo" : { 5 | "toolBuildNumber" : "10A255", 6 | "toolID" : "com.apple.dt.xcode", 7 | "toolName" : "Xcode", 8 | "toolVersion" : "10.0" 9 | }, 10 | "version" : "1.0" 11 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/fr.xcloc/Source Contents/AudioKitSynthOne/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/ja.xcloc/Source Contents/AudioKitSynthOne/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/tr.xcloc/Source Contents/AudioKitSynthOne/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Controls/README.md: -------------------------------------------------------------------------------- 1 | # Reusable Controls 2 | 3 | These controls are used throughout the synth, so they are fairly generic. 4 | 5 | * The "StyleKit" files were auto-generated by [PaintCode](http://paintcodeapp.com/). 6 | * The PaintCode source files can be found at the [AudioKit Graphics repository on Github](https://github.com/audiokit/AudioKitGraphics). 7 | 8 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/pt-BR.xcloc/Source Contents/AudioKitSynthOne/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hans.xcloc/Source Contents/AudioKitSynthOne/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/AudioKitSynthOne/zh-Hant.xcloc/Source Contents/AudioKitSynthOne/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Bundle display name */ 2 | "CFBundleDisplayName" = "Synth One"; 3 | 4 | /* Bundle name */ 5 | "CFBundleName" = "$(PRODUCT_NAME)"; 6 | 7 | /* Privacy - Camera Usage Description */ 8 | "NSCameraUsageDescription" = "$(PRODUCT_NAME) camera use."; 9 | 10 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-ko-KR.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link 통합 향상. 2 | 링크를 통해 연결된 경우 프리셋을 변경하는 동안 앱은 동일한 템포를 유지합니다. 3 | Synth One의 템포를 다른 앱과 동기화하여 유지하는 좋은 방법은 Ableton Link를 사용하는 것입니다. 4 | + 기타 작은 수정 5 | + 당신은 모두 최고입니다! 6 | 7 | 우리는 모두 당신을 위해이 응용 프로그램을 구축하는 시간을 자원하고 있습니다. 아무도 돈을받지 못합니다. 8 | 그 말을 퍼뜨려주세요. 이 앱에 대해 알고있는 음악가가 많을수록 더 많은 음악가가 다가 갈 수 있습니다! 9 | 버그 보고서를 보내주십시오 : hello@audiokitpro.com 10 | 11 | 고맙습니다 :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/S1TuningTable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // S1TuningTable.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Marcus W. Hobbs on 5/14/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | public protocol S1TuningTable { 10 | 11 | func setTuningTable(_ frequency: Double, index: Int) 12 | 13 | func getTuningTableFrequency(_ index: Int) -> Double 14 | 15 | func setTuningTableNPO(_ npo: Int) 16 | } 17 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/d1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "d1.jpg", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "close@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/dice.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dice@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/info.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "info@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/spark.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "spark.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-ja-JP.txt: -------------------------------------------------------------------------------- 1 | +「 Ableton Link」の統合が改善されました。 2 | リンクを介して接続されている場合、プリセットを変更している間、アプリは同じテンポを維持します。 3 | Ableton Linkを使うと、Synth Oneのテンポを他のアプリと同期させることができます 4 | + その他の細かい修正 5 | + 貴方方は皆んな、素晴らしいです! 6 | 7 | 私たちは皆、このアプリを貴方に届けるためにボランティアとして時間をかけて貢献しています。 支払われる人、誰もいません。 8 | アプリの周知にご協力お願いします。 このアプリを知っている音楽家が多くなればなるほど、より多くの方々にこのアプリをとどけることが出来ます。 9 | もしバグ・レポートがあれば hello@audiokitpro.com に送信してください。 10 | 11 | ありがとうございました (⌒-⌒) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/D1_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "D1_icon.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_copy.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "ak_copy@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_edit.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "ak_edit@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_fav.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "ak_fav@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_adsr.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "au_adsr@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_arp.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "au_arp@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_efx.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "au_efx@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_main.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "au_main@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/circuit.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "circuit@2x.jpg", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/s1_logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "s1_logo.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak1-logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "ak1-logo2@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_share.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "ak_share@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/app-store.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "app-store.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_tuning.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "au_tuning@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/bluetooth.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "bluetooth@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/fmplayer.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "fmplayer@2x.jpg", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Arp.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhone_Arp.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_FX.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhone_FX.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_adsr.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhone_adsr.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/smile-icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "smile-icon.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/Wilsonic_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "Wilsonic_icon.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/ak_favfilled.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "ak_favfilled@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_presets.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "au_presets@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/au_touchpad.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "au_touchpad@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/background.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "background@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/headerback.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "headerback@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Preset.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhone_Preset.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Tuning.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhone_Tuning.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/keyboard_top.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "keyboard_top@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/left-arrow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "left-arrow@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/right-arrow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "right-arrow@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_Generator.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhone_Generator.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_TouchPad.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhone_TouchPad.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/touchViewBack.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "touchViewBack@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhone_TouchPad_bg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhone_TouchPad_bg.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/iPhoneheaderback.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "iPhoneheaderback@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/saveDisk.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "saveDisk.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "saveDisk@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/UI Components/String+CapitalizeFirst.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+CapitalizeFirst.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Matthew Fecher on 10/6/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | extension String { 10 | func capitalizingFirstLetter() -> String { 11 | return prefix(1).capitalized + dropFirst() 12 | } 13 | 14 | mutating func capitalizeFirstLetter() { 15 | self = self.capitalizingFirstLetter() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/zh-Hant-TW.lproj/Tunings.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UILabel"; text = "Master Tuning"; ObjectID = "AqK-kK-Iaf"; */ 3 | "AqK-kK-Iaf.text" = "Master Tuning"; 4 | 5 | /* Class = "UILabel"; text = "TUNING"; ObjectID = "Cm9-Xa-WqW"; */ 6 | "Cm9-Xa-WqW.text" = "TUNING"; 7 | 8 | /* Class = "UIButton"; normalTitle = "Reset"; ObjectID = "JBk-V2-c4I"; */ 9 | "JBk-V2-c4I.normalTitle" = "Reset"; 10 | 11 | /* Class = "UILabel"; text = "PITCH"; ObjectID = "ipV-Bb-omK"; */ 12 | "ipV-Bb-omK.text" = "PITCH"; 13 | -------------------------------------------------------------------------------- /AudioKitSynthOne/MIDI/MIDIInput.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MIDIInput.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 11/12/17. 6 | // Copyright © 2017 AudioKit Pro. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class MIDIInput { 12 | var name = "Session 1" 13 | var isOpen = true 14 | 15 | init() { 16 | } 17 | 18 | convenience init(name: String, isOpen: Bool) { 19 | self.init() 20 | 21 | self.name = name 22 | self.isOpen = isOpen 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/UI Components/PresetUIButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PresetUIButon.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 11/24/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class PresetUIButton: SynthButton { 12 | 13 | // MARK: - Touches 14 | 15 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 16 | for _ in touches { 17 | self.setNeedsDisplay() 18 | self.setValueCallback(value) 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-ar-SA.txt: -------------------------------------------------------------------------------- 1 | + التكامل ابليتون الارتباط تحسين. 2 | سيبقى التطبيق نفس الإيقاع أثناء تغيير الإعدادات المسبقة عند الاتصال عبر رابط. 3 | يعد استخدام Ableton Link طريقة رائعة للمحافظة على تزامن Synth One مع التطبيقات الأخرى 4 | + Misc إصلاحات صغيرة 5 | + أنت رائع! 6 | 7 | نحن جميعًا نتطوع بوقتنا لبناء هذا التطبيق من أجلك. لا أحد يحصل على أي شيء. 8 | يرجى نشر الكلمة. لمزيد من الموسيقيين الذين يعرفون عن هذا التطبيق ، والمزيد من الموسيقيين يمكننا الوصول إلى كل شيء! 9 | الرجاء إرسال تقارير الأخطاء: hello@audiokitpro.com 10 | 11 | شكرا :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-en.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link integration Improved. 2 | App will stay the same tempo while changing presets when connected via Link. 3 | Using Ableton Link is a great way to keep the tempo of Synth One in sync with other apps 4 | + Misc small fixes 5 | + You are all awesome! 6 | 7 | We are all volunteering our time to build this app for you. No one gets paid anything. 8 | Please spread the word. The more musicians that know about this app, the more musicians we can all reach! 9 | Please send bug reports: hello@audiokitpro.com 10 | 11 | Thank you :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-lol-US.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link integration Improved. 2 | App will stay the same tempo while changing presets when connected via Link. 3 | Using Ableton Link is a great way to keep the tempo of Synth One in sync with other apps 4 | + Misc small fixes 5 | + You are all awesome! 6 | 7 | We are all volunteering our time to build this app for you. No one gets paid anything. 8 | Please spread the word. The more musicians that know about this app, the more musicians we can all reach! 9 | Please send bug reports: hello@audiokitpro.com 10 | 11 | Thank you :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-sr-CS.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link integration Improved. 2 | App will stay the same tempo while changing presets when connected via Link. 3 | Using Ableton Link is a great way to keep the tempo of Synth One in sync with other apps 4 | + Misc small fixes 5 | + You are all awesome! 6 | 7 | We are all volunteering our time to build this app for you. No one gets paid anything. 8 | Please spread the word. The more musicians that know about this app, the more musicians we can all reach! 9 | Please send bug reports: hello@audiokitpro.com 10 | 11 | Thank you :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/S1Control.swift: -------------------------------------------------------------------------------- 1 | // 2 | // S1Control.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Marcus W. Hobbs on 3/29/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | protocol S1Control: class { 10 | 11 | var value: Double { get set } 12 | 13 | var setValueCallback: (Double) -> Void { get set } 14 | 15 | var resetToDefaultCallback: () -> Void { get set } 16 | } 17 | 18 | typealias S1ControlCallback = (S1Parameter, S1Control?) -> ((_: Double) -> Void) 19 | 20 | typealias S1ControlDefaultCallback = (S1Parameter, S1Control?) -> (() -> Void) 21 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-hi-IN.txt: -------------------------------------------------------------------------------- 1 | + एबलेटन लिंक एकीकरण में सुधार हुआ। 2 | लिंक के माध्यम से कनेक्ट होने पर प्रीसेट को बदलने के दौरान ऐप एक ही टेम्पो रहेगा। 3 | एबलेटन लिंक का उपयोग करना सिन्थ वन की गति को अन्य ऐप्स के साथ सिंक में रखने का एक शानदार तरीका है 4 | + छोटे छोटे फिक्स 5 | + आप सभी भयानक हैं! 6 | 7 | हम सभी आपके लिए इस ऐप को बनाने के लिए अपना समय स्वयंसेवा कर रहे हैं। कोई भी भुगतान नहीं करता है। 8 | कृपया शब्द फैलाएं। इस ऐप के बारे में जितने अधिक संगीतकार जानते हैं, उतने संगीतकार हम सभी तक पहुंच सकते हैं! 9 | कृपया बग रिपोर्ट भेजें: hello@audiokitpro.com 10 | 11 | धन्यवाद :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-cs-CZ.txt: -------------------------------------------------------------------------------- 1 | + Integrace Ableton Link zlepšena. 2 | Aplikace zachová stejné tempo při změně předvoleb při připojení přes Link. 3 | Použití programu Ableton Link je skvělý způsob, jak udržet tempo Synth One synchronizované s ostatními aplikacemi 4 | + Různé malé opravy 5 | + Vy jste všichni skvělí! 6 | 7 | Jsme všichni dobrovolně naši čas stavět tuto aplikaci pro vás. Nikdo nic nezaplatí. 8 | Rozložte prosím slovo. Čím více hudebníků ví o této aplikaci, tím více muzikantů můžeme všichni dosáhnout! 9 | Pošlete prosím chybové hlášení: hello@audiokitpro.com 10 | 11 | Děkuji :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-it-IT.txt: -------------------------------------------------------------------------------- 1 | + Integrazione di Ableton Link Migliorata. 2 | L'app manterrà lo stesso tempo durante la modifica dei preset quando è connesso tramite Link. 3 | Usare Ableton Link è un ottimo modo per mantenere il tempo di Synth One in sincrono con altre app 4 | + Varie piccole correzioni 5 | + Sei tutto fantastico! 6 | 7 | Stiamo tutti offrendo il nostro tempo per creare questa app per te. Nessuno viene pagato nulla. 8 | Per favore spargere la voce. Più musicisti conoscono questa app, più musicisti possiamo raggiungere! 9 | Si prega di inviare segnalazioni di bug: ciao@audiokitpro.com 10 | 11 | Grazie :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-tr-TR.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link entegrasyonu Geliştirildi. 2 | Uygulama, Bağlantı üzerinden bağlandığında önayarları değiştirirken aynı tempoda kalır. 3 | Ableton Link'i kullanmak, Synth One'ın temposunu diğer uygulamalarla senkronize etmenin harika bir yoludur. 4 | + Çeşitli küçük düzeltmeler 5 | + Hepiniz harikasınız! 6 | 7 | Hepimiz bu uygulamayı sizin için oluşturmak için zamanımıza gönüllü oluyoruz. Kimse bir şey ödemez. 8 | Lütfen kelimeyi yay. Bu uygulamayı bilen daha çok müzisyen, daha çok müzisyen hepimiz ulaşabilir! 9 | Lütfen hata raporlarını gönderin: hello@audiokitpro.com 10 | 11 | Teşekkürler :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/en.lproj/TouchPad.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UILabel"; text = "FILTER RESONANCE"; ObjectID = "4Xu-ES-Jtr"; */ 3 | "4Xu-ES-Jtr.text" = "FILTER RESONANCE"; 4 | 5 | /* Class = "UIButton"; normalTitle = "Snap"; ObjectID = "SVY-05-J4t"; */ 6 | "SVY-05-J4t.normalTitle" = "Snap"; 7 | 8 | /* Class = "UILabel"; text = "LFO 1 AMPLITUDE"; ObjectID = "cxh-gH-dY1"; */ 9 | "cxh-gH-dY1.text" = "LFO 1 AMPLITUDE"; 10 | 11 | /* Class = "UILabel"; text = "FILTER CUTOFF"; ObjectID = "gH1-9e-vhR"; */ 12 | "gH1-9e-vhR.text" = "FILTER CUTOFF"; 13 | 14 | /* Class = "UILabel"; text = "LFO 1 RATE"; ObjectID = "qXN-sO-KUB"; */ 15 | "qXN-sO-KUB.text" = "LFO 1 RATE"; 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/MIDI/ChannelStepper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChannelStepper.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 12/26/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @IBDesignable 12 | class ChannelStepper: Stepper { 13 | 14 | // MARK: - Draw 15 | 16 | override func draw(_ rect: CGRect) { 17 | let displayText = (value == 0) ? "∞" : String(Int(value)) 18 | accessibilityValue = (value == 0 ? NSLocalizedString("Omni", comment: "Omni") : String(Int(value))) 19 | StepperStyleKit.drawStepper(valuePressed: valuePressed, text: displayText) 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/zh-Hant-TW.lproj/TouchPad.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UILabel"; text = "FILTER RESONANCE"; ObjectID = "4Xu-ES-Jtr"; */ 3 | "4Xu-ES-Jtr.text" = "FILTER RESONANCE"; 4 | 5 | /* Class = "UIButton"; normalTitle = "Snap"; ObjectID = "SVY-05-J4t"; */ 6 | "SVY-05-J4t.normalTitle" = "Snap"; 7 | 8 | /* Class = "UILabel"; text = "LFO 1 AMPLITUDE"; ObjectID = "cxh-gH-dY1"; */ 9 | "cxh-gH-dY1.text" = "LFO 1 AMPLITUDE"; 10 | 11 | /* Class = "UILabel"; text = "FILTER CUTOFF"; ObjectID = "gH1-9e-vhR"; */ 12 | "gH1-9e-vhR.text" = "FILTER CUTOFF"; 13 | 14 | /* Class = "UILabel"; text = "LFO 1 RATE"; ObjectID = "qXN-sO-KUB"; */ 15 | "qXN-sO-KUB.text" = "LFO 1 RATE"; 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-nl-NL.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link-integratie verbeterd. 2 | App blijft hetzelfde tempo tijdens het wijzigen van presets wanneer verbonden via Link. 3 | Ableton Link gebruiken is een geweldige manier om het tempo van Synth One synchroon te houden met andere apps 4 | + Diverse kleine fixes 5 | + Jullie zijn allemaal geweldig! 6 | 7 | We zijn allemaal vrijwillig onze tijd aan het bouwen van deze app voor jou. Niemand krijgt iets betaald. 8 | Vertel het alsjeblieft. Hoe meer muzikanten er over deze app weten, hoe meer muzikanten we allemaal kunnen bereiken! 9 | Stuur alsjeblieft foutenrapporten: hello@audiokitpro.com 10 | 11 | Dank je :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-ru-RU.txt: -------------------------------------------------------------------------------- 1 | + Улучшена интеграция Ableton Link. 2 | Приложение сохранит тот же темп при изменении пресетов когда подключено через Link. 3 | Использование Ableton Link - отличный способ сохранить темп Synth One при синхронизации с другими приложениями 4 | + Разные небольшие исправления 5 | + Вы все классные! 6 | 7 | Мы все добровольно проводим время за созданием этого приложения для вас. Никому ничего за это не платят. 8 | Пожалуйста, распространите эту информацию. Чем больше музыкантов знают об этом приложении, тем больше музыкантов мы можем охватить! 9 | Присылайте отчёты об ошибках: hello@audiokitpro.com 10 | 11 | Спасибо :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-de-DE.txt: -------------------------------------------------------------------------------- 1 | + Ableton Link-Integration verbessert. 2 | Die App behält das gleiche Tempo beim Ändern der Voreinstellungen bei, wenn sie über Link verbunden wird. 3 | Die Verwendung von Ableton Link ist eine gute Möglichkeit, das Tempo von Synth One mit anderen Apps synchron zu halten 4 | + Verschiedene kleine Korrekturen 5 | + Sie sind alle großartig! 6 | 7 | Wir sind alle ehrenamtlich tätig, um diese App für Sie zu bauen. Niemand wird bezahlt. 8 | Bitte verbreite das Wort. Je mehr Musiker über diese App Bescheid wissen, desto mehr Musiker können wir erreichen! 9 | Bitte senden Sie Fehlerberichte: hello@audiokitpro.com 10 | 11 | Vielen Dank :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-pt-BR.txt: -------------------------------------------------------------------------------- 1 | + Integração com o Ableton Link Melhorado. 2 | O aplicativo permanecerá no mesmo ritmo ao alterar os presets quando conectado através do Link. 3 | Usar o Ableton Link é uma ótima maneira de manter o ritmo de um Synth em sincronia com outros aplicativos 4 | + Outras pequenas correções 5 | + Vocês são todos incríveis! 6 | 7 | Estamos todos oferecendo nosso tempo para construir este aplicativo para você. Ninguém recebe nada. 8 | Por favor, divulgue esse aplicativo. Quanto mais músicos souberem sobre este aplicativo, mais músicos todos nós poderemos alcançar! 9 | Por favor, envie seus bugs para: hello@audiokitpro.com 10 | 11 | Obrigado :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-fr-FR.txt: -------------------------------------------------------------------------------- 1 | + Intégration avec Ableton Link améliorée. 2 | L'application restera au même tempo lors de changement des préréglages lorsque vous êtes connecté via Link. 3 | Utiliser Ableton Link est un excellent moyen de synchroniser le tempo de Synth One avec d'autres applications 4 | + Diverses petites corrections 5 | + Vous êtes tous super ! 6 | 7 | Nous sommes tous des volontaires vous proposant cette application. Personne n'est payé. 8 | S'il vous plaît, passez le mot. Plus il y a de musiciens au courant de cette application, plus nous pourrons en atteindre ! 9 | Veuillez nous envoyer des rapports de bogue: hello@audiokitpro.com 10 | 11 | Merci :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-ro-RO.txt: -------------------------------------------------------------------------------- 1 | Integrarea Ableton Link îmbunătățită. 2 | Aplicația va rămâne același tempo în timp ce își schimbă presetările când este conectat prin Link. 3 | Utilizarea Ableton Link este o modalitate excelentă de a păstra tempo-ul Synth One în sincronizare cu alte aplicații 4 | + Diferite remedii mici 5 | + Sunteți minunați! 6 | 7 | Suntem toți voluntari timpul nostru pentru a construi această aplicație pentru tine. Nimeni nu primește nimic. 8 | Răspândiți cuvântul. Cu cât mai mulți muzicieni știu despre această aplicație, cu atât mai mulți muzicieni putem ajunge la toate! 9 | Trimiteți rapoartele de eroare: hello@audiokitpro.com 10 | 11 | Mulțumesc :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/changelog-es-ES.txt: -------------------------------------------------------------------------------- 1 | + Integración de Ableton Link Mejorada. 2 | La aplicación mantendrá el mismo tempo mientras cambia los preajustes cuando se conecta a través de un enlace. 3 | Usar Ableton Link es una excelente manera de mantener sincronizado el tempo de Synth One con otras aplicaciones 4 | + Correcciones pequeñas misceláneas 5 | + ¡Eres increíble! 6 | 7 | Todos estamos ofreciendo voluntariamente nuestro tiempo para construir esta aplicación para usted. A nadie se le paga nada. 8 | Pasa la voz. ¡Cuantos más músicos conozcan sobre esta aplicación, más músicos podremos alcanzar! 9 | Por favor envíe informes de errores: hello@audiokitpro.com 10 | 11 | Gracias :) 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Controls/Buttons/iPhoneToggleButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPhoneToggleButton.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Matthew Fecher on 1/8/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | @IBDesignable 10 | class iPhoneToggleButton: ToggleButton { 11 | 12 | @IBInspectable open var buttonText: String = "Hello" 13 | 14 | @IBInspectable open var textSize: Int = 14 15 | 16 | public override func draw(_ rect: CGRect) { 17 | TopUIButtonStyleKit.drawUIButton(frame: CGRect(x:0,y:0, width: self.bounds.width, height: self.bounds.height), resizing: .aspectFit, isOn: isOn, text: buttonText, textSize: CGFloat(textSize)) 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/Bank.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Bank.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 1/27/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Bank: Codable { 12 | var name = "BankA" 13 | var position = 0 14 | 15 | init() {} 16 | 17 | convenience init(name: String, position: Int) { 18 | self.init() 19 | self.name = name 20 | self.position = position 21 | } 22 | 23 | // Init from Dictionary/JSON 24 | init(dictionary: [String: Any]) { 25 | name = dictionary["name"] as? String ?? name 26 | position = dictionary["position"] as? Int ?? position 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/AudioKitSynthOne-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // AudioKitSynthOne-Bridging-Header.h 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 1/24/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | #pragma once 10 | 11 | #import "S1AudioUnit.h" 12 | #import "S1Parameter.h" 13 | #import "AKSynthOneRate.h" 14 | #if !TARGET_OS_MACCATALYST 15 | #import "Audiobus.h" 16 | #endif 17 | // Set the ABLETON_ENABLED user setting to 1 (at the project level) to enable Ableton Link support 18 | // Note: you will need the files from their SDK! 19 | #if ABLETON_ENABLED 20 | # include "ABLLink.h" 21 | # include "ABLLinkUtils.h" 22 | # include "ABLLinkSettingsViewController.h" 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /AudioKitSynthOne/Translations/en.xliff 3 | translation: /AudioKitSynthOne/Translations/%locale%.xliff 4 | - source: /AudioKitSynthOne/Translations/Metadata/changelog-en.txt 5 | translation: /AudioKitSynthOne/Translations/Metadata/changelog-%locale%.txt 6 | - source: /AudioKitSynthOne/Translations/Metadata/description-en.txt 7 | translation: /AudioKitSynthOne/Translations/Metadata/description-%locale%.txt 8 | - source: /AudioKitSynthOne/Translations/Metadata/keywords-en.txt 9 | translation: /AudioKitSynthOne/Translations/Metadata/keywords-%locale%.txt 10 | - source: /AudioKitSynthOne/Translations/Metadata/subtitle-en.txt 11 | translation: /AudioKitSynthOne/Translations/Metadata/subtitle-%locale%.txt 12 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Controls/Buttons/CallbackButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CallbackButton.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 9/12/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | class CallbackButton: UIButton { 10 | 11 | var callback: (Double) -> Void = { _ in } 12 | 13 | var valuePressed = 0.0 14 | 15 | // Init / Lifecycle 16 | required public init?(coder: NSCoder) { 17 | super.init(coder: coder) 18 | } 19 | 20 | // MARK: - Touches 21 | 22 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 23 | for _ in touches { 24 | valuePressed = 1 25 | callback(valuePressed) 26 | } 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Keyboard/UI Components/KeyboardShowButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KeyboardShowButton.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 3/18/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class KeyboardShowButton: SynthButton { 12 | 13 | override var isSelected: Bool { 14 | 15 | didSet { 16 | self.backgroundColor = isOn ? #colorLiteral(red: 0.2, green: 0.2, blue: 0.2, alpha: 1) : #colorLiteral(red: 0.3058823529, green: 0.3058823529, blue: 0.3254901961, alpha: 1) 17 | self.accessibilityLabel = isOn ? NSLocalizedString("Hide Keyboard", comment: "Hide Keyboard") : NSLocalizedString("Show Keyboard", comment: "Show Keyboard") 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /AudioKitSynthOne/MIDI/MIDILearnable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MIDILearnable.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 10/21/17. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import AudioKit 10 | 11 | 12 | protocol MIDILearnable: AnyObject { 13 | 14 | var midiByteRange:ClosedRange { get set } 15 | 16 | var hotspotView: UIView { get set } 17 | 18 | var midiCC: MIDIByte { get set } 19 | 20 | var midiLearnMode: Bool { get set } 21 | 22 | var isMIDILearnActive: Bool { get set } 23 | 24 | func addHotspot() 25 | 26 | func hideHotspot() 27 | 28 | func showHotspot() 29 | 30 | func setControlValueFrom(midiValue: MIDIByte) 31 | 32 | func updateMIDILearnLabel() 33 | 34 | } 35 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/BandlimitedWavetables/bandlimitedWaveforms.json: -------------------------------------------------------------------------------- 1 | ["triangle_0000","square_0000","pwm_0000","sawtooth_0000","triangle_2696","square_2696","pwm_2696","sawtooth_2696","triangle_1348","square_1348","pwm_1348","sawtooth_1348","triangle_0674","square_0674","pwm_0674","sawtooth_0674","triangle_0337","square_0337","pwm_0337","sawtooth_0337","triangle_0168","square_0168","pwm_0168","sawtooth_0168","triangle_0084","square_0084","pwm_0084","sawtooth_0084","triangle_0042","square_0042","pwm_0042","sawtooth_0042","triangle_0021","square_0021","pwm_0021","sawtooth_0021","triangle_0010","square_0010","pwm_0010","sawtooth_0010","triangle_0005","square_0005","pwm_0005","sawtooth_0005","triangle_0002","square_0002","pwm_0002","sawtooth_0002","triangle_0001","square_0001","pwm_0001","sawtooth_0001"] 2 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Generators/UI Components/FlatToggleButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FlatToggleButton.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 8/28/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @IBDesignable 12 | class FlatToggleButton: ToggleButton { 13 | 14 | override func draw(_ rect: CGRect) { 15 | FlatToggleButtonStyleKit.drawRoundButton(frame: CGRect(x: 0, 16 | y: 0, 17 | width: self.bounds.width, 18 | height: self.bounds.height), 19 | isToggled: isOn) 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /AudioKitSynthOne/TouchPad/UI Components/TouchPoint.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TouchPoint.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 8/29/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @IBDesignable 12 | class TouchPoint: UIView { 13 | 14 | var x = 0.0 15 | var y = 0.0 16 | var width = 63.0 17 | 18 | override func draw(_ rect: CGRect) { 19 | TouchPointStyleKit.drawTouchPoint(frame: CGRect(x: x, y: y, width: width, height: width) ) 20 | } 21 | 22 | } 23 | 24 | class ModWheelTouchPoint: UIView { 25 | 26 | var x = 0.0 27 | var y = 0.0 28 | var width = 61.0 29 | 30 | override func draw(_ rect: CGRect) { 31 | ModWheelStyleKit.drawTouchPoint(frame: CGRect(x: x, y: y, width: width, height: width) ) 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/zh-Hans.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 2 | "B52-X8-pfB.normalTitle" = "谢谢,我稍后再做"; 3 | 4 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 5 | "FJY-lQ-hbA.text" = "设置:第1步"; 6 | 7 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 8 | "sAM-3i-F3Z.placeholder" = "you@email.com"; 9 | 10 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 11 | "wbX-qe-bHr.normalTitle" = "获取预设!"; 12 | 13 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 14 | "yhG-s7-4JE.text" = "欢迎!在下面输入您的电子邮件地址,即可获得80多个免费预设(总共有300多个预设)。然后点击“获取预设!”"; 15 | 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/zh-Hant.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 2 | "B52-X8-pfB.normalTitle" = "谢谢,我稍后再做"; 3 | 4 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 5 | "FJY-lQ-hbA.text" = "设置:第1步"; 6 | 7 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 8 | "sAM-3i-F3Z.placeholder" = "you@email.com"; 9 | 10 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 11 | "wbX-qe-bHr.normalTitle" = "获取预设!"; 12 | 13 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 14 | "yhG-s7-4JE.text" = "欢迎!在下面输入您的电子邮件地址,即可获得80多个免费预设(总共有300多个预设)。然后点击“获取预设!”"; 15 | 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/PresetsViewController/Presets+SearchDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Presets+SearchDelegate.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Matthew Fecher on 7/8/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension PresetsViewController: SearchControllerDelegate { 12 | 13 | func didSelectPreset(_ newPreset: Preset) { 14 | deselectCurrentRow() 15 | 16 | // Select Crrent Bank 17 | guard let currentBank = conductor.banks.first(where: { $0.name == newPreset.bank }) else { return } 18 | selectCategory(PresetCategory.bankStartingIndex + currentBank.position ) 19 | categoryIndex = PresetCategory.bankStartingIndex + currentBank.position 20 | 21 | currentPreset = newPreset 22 | selectCurrentPreset() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/ja.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 2 | "B52-X8-pfB.normalTitle" = "いいえ、後でやる"; 3 | 4 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 5 | "FJY-lQ-hbA.text" = "セットアップ:ステップ1/1"; 6 | 7 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 8 | "sAM-3i-F3Z.placeholder" = "you@email.com"; 9 | 10 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 11 | "wbX-qe-bHr.normalTitle" = "プリセットを取得!"; 12 | 13 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 14 | "yhG-s7-4JE.text" = "ようこそ!メールアドレスを記入するだけで、80以上の無料プリセット効果(つまりは300以上の全てのプリセット)を受信出来ます。次に、メールアドレスを記入し、「プリセットを取得!」を押してください。"; 15 | 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/TuningsPanelController/TuningsPanel+TuneUpDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TuningsPanel+TuneUpDelegate.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Marcus W. Hobbs on 2/3/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension TuningsPanelController: TuneUpDelegate { 12 | 13 | var tuneUpBackButtonDefaultText: String { 14 | 15 | return tuningModel.tuneUpBackButtonDefaultText 16 | } 17 | 18 | func setTuneUpBackButtonLabel(text: String) { 19 | 20 | let isHidden = (text == tuningModel.tuneUpBackButtonDefaultText) 21 | tuneUpBackButtonButton.isHidden = isHidden 22 | tuneUpBackLabel.isHidden = isHidden 23 | tuneUpBackButtonButton.setTitle(text, for: .normal) 24 | } 25 | 26 | func setTuneUpBackButton(enabled: Bool) { 27 | 28 | tuneUpBackButtonButton.isEnabled = enabled 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/en.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 3 | "B52-X8-pfB.normalTitle" = "Thanks, I'll do it later"; 4 | 5 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 6 | "FJY-lQ-hbA.text" = "SETUP: Step 1 of 1"; 7 | 8 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 9 | "sAM-3i-F3Z.placeholder" = "you@email.com"; 10 | 11 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 12 | "wbX-qe-bHr.normalTitle" = "Get Presets!"; 13 | 14 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 15 | "yhG-s7-4JE.text" = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/zh-Hant-TW.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 3 | "B52-X8-pfB.normalTitle" = "Thanks, I'll do it later"; 4 | 5 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 6 | "FJY-lQ-hbA.text" = "SETUP: Step 1 of 1"; 7 | 8 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 9 | "sAM-3i-F3Z.placeholder" = "you@email.com"; 10 | 11 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 12 | "wbX-qe-bHr.normalTitle" = "Get Presets!"; 13 | 14 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 15 | "yhG-s7-4JE.text" = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/Rate/AKSynthOneRate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AKSynthOneRate.h 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 4/19/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | #ifndef AKSynthOneRate_h 10 | #define AKSynthOneRate_h 11 | 12 | #import "AudioKit/AKInterop.h" 13 | 14 | #pragma once 15 | 16 | typedef AK_ENUM(AKSynthOneRate) { 17 | eightBars = 0, 18 | sixBars = 1, 19 | fourBars = 2, 20 | threeBars = 3, 21 | twoBars = 4, 22 | bar = 5, 23 | barTriplet = 6, 24 | half = 7, 25 | halfTriplet = 8, 26 | quarter = 9, 27 | quarterTriplet = 10, 28 | eighth = 11, 29 | eighthTriplet = 12, 30 | sixteenth = 13, 31 | sixteenthTriplet = 14, 32 | thirtySecondth = 15, 33 | thirtySecondthTriplet = 16, 34 | sixtyFourth = 17, 35 | sixtyFourthTriplet = 18, 36 | AKSynthOneRateCount = 19 37 | } AKSynthOneRate; 38 | 39 | #endif /* AKSynthOneRate_h */ 40 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: objective-c 2 | osx_image: xcode11.2 3 | if: NOT (branch =~ /^l10n_/) 4 | env: 5 | - LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 6 | before_install: 7 | - pod update 8 | - pod install 9 | - gem install xcpretty -N 10 | script: 11 | - ./travis.sh 12 | notifications: 13 | slack: 14 | secure: ji32EX5pNg/utHuroYnXrzoDmwWjlTCauiVnJ4vjKkqDLzAx40jXlMKQY/OlFOrN30sXNmDntYHiWKQjDARzhqX9xItg6OQL4ulXdgt9h8HLZfe6Nv6fVRf3jLpRmETnMDqJfSlU25f/ObP0JNRmP5jkBJNpzLDOgSVT4c3c9vc0vCu1IS4nXU5G79fRAY1KsHYu9fv1zNMh66UARYy2iEf5gx0Dn0AAD/gdzHnSzq12kloXJupBktRN3QIAZFp5o581/XmwGFN2uHUjnmJMlIRYg5xFfOvqsYiq5cjwxT3WTlGhNMm087qcrfMMy5feMSAAsRpVOzLNV4U0oxMv8zz1RH83FHwS9n9oAjlBIHfhNsNW1lPmt+VSlKanL25fqVa5xhLfoWu9X+0s1I7G0FjiN4UwKPQBRoVH1Q9JvkPDIpkTxAfJL3gKBJ0V6SoOuQwzh7h+MRmulXdDO5hwXTZ1v4jc9+ENQxtzxuLfB2jXph10ayXs2QOs0raAHYcSCsJ94kuYVl0mwN1FC28nIAZ8FKIpHwzFQO4a/Crt//j/MR6c3AGcOSTNPhS0OWfMWlmAjhouYz+iERBYstNthzaP8nTOX8X2xieuUptyMVrnW+JFyOiBRjwlXh8akheYEnsOX69RaneYlbATeSKhRp3eOVN0odIY7X/eTtzRHH4= 15 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/tr.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 2 | "B52-X8-pfB.normalTitle" = "Teşekkürler, daha sonra"; 3 | 4 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 5 | "FJY-lQ-hbA.text" = "KURULUM: Adım 1 / 1"; 6 | 7 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 8 | "sAM-3i-F3Z.placeholder" = "siz@email.com"; 9 | 10 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 11 | "wbX-qe-bHr.normalTitle" = "Önayarları edinin!"; 12 | 13 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 14 | "yhG-s7-4JE.text" = "Hoşgeldiniz! Email adresinizi girerek 80'den fazla önayar (toplamda 300'den fazla) kazanın. Sonra "Önayarları edinin!" butonuna basınız."; 15 | 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/pt-BR.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 2 | "B52-X8-pfB.normalTitle" = "Obrigado, farei mais tarde"; 3 | 4 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 5 | "FJY-lQ-hbA.text" = "CONFIGURAÇÃO: Etapa 1 de 1"; 6 | 7 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 8 | "sAM-3i-F3Z.placeholder" = "voce@email.com"; 9 | 10 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 11 | "wbX-qe-bHr.normalTitle" = "Obter Presets!"; 12 | 13 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 14 | "yhG-s7-4JE.text" = "Bem vindo(a)! Digite seu endereço de e-mail abaixo para receber mais de 80 presets gratuitos (todas as 300 presets). Em seguida, pressione "Obter Presets!""; 15 | 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/Manager+MailingListDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Manager+MailingListDelegate.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 5/25/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | // Mailing List PopOver Delegate 10 | 11 | extension Manager: MailingListDelegate { 12 | 13 | func didSignMailingList(email: String) { 14 | 15 | signedMailingList = true 16 | 17 | DispatchQueue.main.async { 18 | if let headerVC = self.children.first as? HeaderViewController { 19 | headerVC.updateMailingListButton(self.signedMailingList) 20 | } 21 | } 22 | userSignedMailingList(email: email) 23 | } 24 | 25 | func userSignedMailingList(email: String) { 26 | appSettings.signedMailingList = true 27 | appSettings.userEmail = email 28 | saveAppSettingValues() 29 | 30 | presetsViewController.addBonusPresets() 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/de.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 2 | "B52-X8-pfB.normalTitle" = "Danke, ich werde es später tun"; 3 | 4 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 5 | "FJY-lQ-hbA.text" = "SETUP: Schritt 1 von 1"; 6 | 7 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 8 | "sAM-3i-F3Z.placeholder" = "you@email.com"; 9 | 10 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 11 | "wbX-qe-bHr.normalTitle" = "Holen Sie sich Presets!"; 12 | 13 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 14 | "yhG-s7-4JE.text" = "Herzlich willkommen! Geben Sie Ihre E-Mail-Adresse ein, um mehr als 80 kostenlose Presets (alle über 300 Presets) zu erhalten. Dann drücke "Get Presets!""; 15 | 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/AudioKitSynthOne.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | com.apple.developer.icloud-container-identifiers 8 | 9 | iCloud.com.audiokitpro.AudioKitSynthOne 10 | iCloud.com.audiokitsynthone 11 | 12 | com.apple.developer.icloud-services 13 | 14 | CloudDocuments 15 | 16 | com.apple.developer.ubiquity-container-identifiers 17 | 18 | iCloud.com.audiokitpro.AudioKitSynthOne 19 | iCloud.com.audiokitsynthone 20 | 21 | com.apple.developer.ubiquity-kvstore-identifier 22 | $(TeamIdentifierPrefix)$(CFBundleIdentifier) 23 | inter-app-audio 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/Mailing List/fr.lproj/MailingList.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UIButton"; normalTitle = "Thanks, I'll do it later"; ObjectID = "B52-X8-pfB"; */ 2 | "B52-X8-pfB.normalTitle" = "Merci, je le ferai plus tard"; 3 | 4 | /* Class = "UILabel"; text = "SETUP: Step 1 of 1"; ObjectID = "FJY-lQ-hbA"; */ 5 | "FJY-lQ-hbA.text" = "CONFIGURATION : Étape 1 de 1"; 6 | 7 | /* Class = "UITextField"; placeholder = "you@email.com"; ObjectID = "sAM-3i-F3Z"; */ 8 | "sAM-3i-F3Z.placeholder" = "votre@email.com"; 9 | 10 | /* Class = "UIButton"; normalTitle = "Get Presets!"; ObjectID = "wbX-qe-bHr"; */ 11 | "wbX-qe-bHr.normalTitle" = "Obtenez des préréglages !"; 12 | 13 | /* Class = "UITextView"; text = "Welcome! Enter your Email Address below to receive 80+ Free presets (all 300+ presets). Then press \"Get Presets!\""; ObjectID = "yhG-s7-4JE"; */ 14 | "yhG-s7-4JE.text" = "Bienvenue ! Entrez votre adresse électronique ci-dessous pour recevoir plus de 80 préréglages gratuits (tous les 300 préréglages). Puis appuyez sur "Obtenez des préréglages !""; 15 | 16 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/TuningsPanelController/TuningsViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TuningsViewController.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Marcus W. Hobbs on 5/30/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | class TuningsViewController: UIViewController { 10 | 11 | private var tableView: UITableView? 12 | 13 | public init(tableView: UITableView?) { 14 | 15 | self.tableView = tableView 16 | super.init(nibName: nil, bundle: nil) 17 | } 18 | 19 | public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { 20 | 21 | super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 22 | } 23 | 24 | public required init?(coder aDecoder: NSCoder) { 25 | 26 | super.init(coder: aDecoder) 27 | } 28 | 29 | override func loadView() { 30 | 31 | if let tv = self.tableView { 32 | self.view = tv 33 | } else { 34 | self.view = UIView() 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Header/zh-Hant-TW.lproj/Header.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UIButton"; normalTitle = "Dev"; ObjectID = "4uE-Js-e46"; */ 3 | "4uE-Js-e46.normalTitle" = "Dev"; 4 | 5 | /* Class = "UILabel"; text = "Loading..."; ObjectID = "Ggs-qy-ExU"; */ 6 | "Ggs-qy-ExU.text" = "Loading..."; 7 | 8 | /* Class = "UIButton"; normalTitle = "Save"; ObjectID = "NL0-Jf-tHi"; Note = "Save Preset Button (keep short)"; */ 9 | "NL0-Jf-tHi.normalTitle" = "Save"; 10 | 11 | /* Class = "UIButton"; normalTitle = "Web"; ObjectID = "PpV-eX-q12"; Note = "Website button (keep short)"; */ 12 | "PpV-eX-q12.normalTitle" = "Web"; 13 | 14 | /* Class = "UIButton"; normalTitle = "Panic"; ObjectID = "l9q-RV-KkX"; Note = "MIDI Panic / All notes off (Keep short)"; */ 15 | "l9q-RV-KkX.normalTitle" = "Panic"; 16 | 17 | /* Class = "UIButton"; normalTitle = "Apps"; ObjectID = "qXZ-Yq-KK5"; Note = "Apps button, keep short"; */ 18 | "qXZ-Yq-KK5.normalTitle" = "Apps"; 19 | 20 | /* Class = "UIButton"; normalTitle = "About"; ObjectID = "vEb-n7-p0M"; Note = "About button (keep short)"; */ 21 | "vEb-n7-p0M.normalTitle" = "About"; 22 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Keyboard/UI Components/KeyboardView+Drawing.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KeyboardView+Drawing.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Marcus W. Hobbs on 7/17/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | extension KeyboardView { 10 | 11 | // MARK: - Storyboard Rendering 12 | 13 | override open func prepareForInterfaceBuilder() { 14 | 15 | super.prepareForInterfaceBuilder() 16 | updateOneOctaveSize() 17 | contentMode = .redraw 18 | clipsToBounds = true 19 | } 20 | 21 | /// Keyboard view size 22 | override open var intrinsicContentSize: CGSize { 23 | 24 | return CGSize(width: 1_024, height: 84) 25 | } 26 | 27 | /// Require constraints 28 | open class override var requiresConstraintBasedLayout: Bool { 29 | 30 | return true 31 | } 32 | 33 | // MARK: - Draw Keyboard 34 | 35 | override open func draw(_ rect: CGRect) { 36 | 37 | if tuningMode { 38 | drawMicrotonal(rect) 39 | } else { 40 | draw12ET(rect) 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Manager/UpdatableViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UpdatableViewController.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 7/25/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public class UpdatableViewController: UIViewController { 12 | 13 | let conductor = Conductor.sharedInstance 14 | 15 | public override func viewDidLoad() { 16 | super.viewDidLoad() 17 | conductor.viewControllers.insert(self) 18 | } 19 | 20 | public override func viewDidAppear(_ animated: Bool) { 21 | super.viewDidAppear(animated) 22 | conductor.updateAllUI() 23 | } 24 | 25 | // subclasses should update UI elements that do not conform to S1Control protocol, should not call super 26 | func updateUI(_ parameter: S1Parameter, control inputControl: S1Control?, value: Double) {} 27 | } 28 | 29 | protocol AffectedByLink { 30 | func setupLinkStuff() 31 | } 32 | 33 | extension UpdatableViewController: AffectedByLink { 34 | @objc func setupLinkStuff() { 35 | // Do nothing by default 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Aurelius Prochazka 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Assets/Assets.xcassets/rack-left.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "1x", 10 | "appearances" : [ 11 | { 12 | "appearance" : "luminosity", 13 | "value" : "dark" 14 | } 15 | ] 16 | }, 17 | { 18 | "idiom" : "universal", 19 | "filename" : "rack-left.png", 20 | "scale" : "2x" 21 | }, 22 | { 23 | "idiom" : "universal", 24 | "filename" : "rack-leftbw.png", 25 | "appearances" : [ 26 | { 27 | "appearance" : "luminosity", 28 | "value" : "dark" 29 | } 30 | ], 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "universal", 35 | "scale" : "3x" 36 | }, 37 | { 38 | "idiom" : "universal", 39 | "scale" : "3x", 40 | "appearances" : [ 41 | { 42 | "appearance" : "luminosity", 43 | "value" : "dark" 44 | } 45 | ] 46 | } 47 | ], 48 | "info" : { 49 | "version" : 1, 50 | "author" : "xcode" 51 | } 52 | } -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/Kernel/S1DSPKernel+MIDI.mm: -------------------------------------------------------------------------------- 1 | // 2 | // S1DSPKernel+MIDI.mm 3 | // AudioKitSynthOne 4 | // 5 | // Created by Aurelius Prochazka on 6/4/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | #import "S1DSPKernel.hpp" 10 | 11 | // MIDI 12 | void S1DSPKernel::handleMIDIEvent(AUMIDIEvent const& midiEvent) { 13 | if (midiEvent.length != 3) return; 14 | uint8_t status = midiEvent.data[0] & 0xF0; 15 | switch (status) { 16 | case 0x80 : { 17 | // note off 18 | uint8_t note = midiEvent.data[1]; 19 | if (note > 127) break; 20 | stopNote(note); 21 | break; 22 | } 23 | case 0x90 : { 24 | // note on 25 | uint8_t note = midiEvent.data[1]; 26 | uint8_t veloc = midiEvent.data[2]; 27 | if (note > 127 || veloc > 127) break; 28 | startNote(note, veloc); 29 | break; 30 | } 31 | case 0xB0 : { 32 | uint8_t num = midiEvent.data[1]; 33 | if (num == 123) { 34 | stopAllNotes(); 35 | } 36 | break; 37 | } 38 | } 39 | } 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Keyboard/Manager+ModWheelDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Manager+ModWheelDelegate.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 5/25/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | // Mod Wheel Settings Pop Over Delegate 10 | 11 | extension Manager: ModWheelDelegate { 12 | 13 | func didSelectRouting(newDestination: Int) { 14 | 15 | activePreset.modWheelRouting = Double(newDestination) 16 | guard let s = conductor.synth else { 17 | AKLog("Mod Wheel routing state is invalid because synth is not instantiated") 18 | return 19 | } 20 | 21 | switch activePreset.modWheelRouting { 22 | case 0: 23 | // Cutoff 24 | conductor.updateSingleUI(.cutoff, control: nil, value: s.getSynthParameter(.cutoff)) 25 | case 1: 26 | // LFO 1 Rate 27 | modWheelPad.setVerticalValue01(Double(s.getDependentParameter(.lfo1Rate))) 28 | case 2: 29 | // LFO 2 Rate 30 | modWheelPad.setVerticalValue01(Double(s.getDependentParameter(.lfo2Rate))) 31 | default: 32 | break 33 | } 34 | 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '10.0' 2 | use_frameworks! 3 | inhibit_all_warnings! 4 | 5 | # This enables the cutting-edge staging builds of AudioKit, comment this line to stick to stable releases 6 | source 'https://github.com/AudioKit/Specs.git' 7 | source 'https://github.com/CocoaPods/Specs.git' 8 | 9 | def available_pods 10 | pod 'AppCenter' 11 | pod 'AudioKit', '= 4.9.2' 12 | pod 'Disk', '~> 0.3.2' 13 | pod 'Audiobus' 14 | pod 'OneSignal', '>= 2.6.2', '< 3.0' 15 | end 16 | 17 | target 'AudioKitSynthOne' do 18 | available_pods 19 | end 20 | 21 | target 'OneSignalNotificationServiceExtension' do 22 | pod 'OneSignal', '>= 2.6.2', '< 3.0' 23 | pod 'AudioKit', '= 4.9.2' 24 | end 25 | 26 | 27 | # Override Swift version for out of date pods 28 | post_install do |installer| 29 | installer.pods_project.targets.each do |target| 30 | target.build_configurations.each do |config| 31 | config.build_settings['CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED'] = 'YES' 32 | end 33 | if ['Disk'].include? target.name 34 | target.build_configurations.each do |config| 35 | config.build_settings['SWIFT_VERSION'] = '4.0' 36 | end 37 | end 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | OneSignalNotificationServiceExtension 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | $(MARKETING_VERSION) 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSExtension 24 | 25 | NSExtensionPointIdentifier 26 | com.apple.usernotifications.service 27 | NSExtensionPrincipalClass 28 | $(PRODUCT_MODULE_NAME).NotificationService 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/Model/TuningBank.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TuningBank.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Marcus W. Hobbs on 12/15/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | final class TuningBank: Codable, CustomStringConvertible { 12 | 13 | // MARK: - conforming to Codable: don't change these property names 14 | var name = "Bundled" 15 | var isEditable = false 16 | var tunings = [Tuning]() 17 | var selectedTuningIndex = Int(0) 18 | var order = 0 19 | 20 | // MARK: - Codable: property names must match dictionary keys 21 | init() { } 22 | 23 | init(dictionary: [String: Any]) { 24 | name = dictionary["name"] as? String ?? "Bundled" 25 | isEditable = dictionary["isEditable"] as? Bool ?? false 26 | tunings = dictionary["tunings"] as? [Tuning] ?? [Tuning]() 27 | selectedTuningIndex = dictionary["selectedTuningIndex"] as? Int ?? 0 28 | order = dictionary["order"] as? Int ?? 0 29 | } 30 | 31 | var description: String { 32 | return "name:\(name), isEditable:\(isEditable), order:\(order), selectedTuningIndex:\(selectedTuningIndex), tunings " 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AppCenter (2.5.0): 3 | - AppCenter/Analytics (= 2.5.0) 4 | - AppCenter/Crashes (= 2.5.0) 5 | - AppCenter/Analytics (2.5.0): 6 | - AppCenter/Core 7 | - AppCenter/Core (2.5.0) 8 | - AppCenter/Crashes (2.5.0): 9 | - AppCenter/Core 10 | - Audiobus (3.0.9.1) 11 | - AudioKit (4.9.2): 12 | - AudioKit/Core (= 4.9.2) 13 | - AudioKit/UI (= 4.9.2) 14 | - AudioKit/Core (4.9.2) 15 | - AudioKit/UI (4.9.2): 16 | - AudioKit/Core 17 | - Disk (0.3.3) 18 | - OneSignal (2.11.2) 19 | 20 | DEPENDENCIES: 21 | - AppCenter 22 | - Audiobus 23 | - AudioKit (= 4.9.2) 24 | - Disk (~> 0.3.2) 25 | - OneSignal (< 3.0, >= 2.6.2) 26 | 27 | SPEC REPOS: 28 | https://github.com/CocoaPods/Specs.git: 29 | - AppCenter 30 | - Audiobus 31 | - AudioKit 32 | - Disk 33 | - OneSignal 34 | 35 | SPEC CHECKSUMS: 36 | AppCenter: 637f180deefc61e8ab3f94223869ee50f61dabea 37 | Audiobus: 83bb33ea2ed734779165a01c70091caf8143cf25 38 | AudioKit: ee388f0c9ad4e90b6106c14caaf809cd7ca220da 39 | Disk: d1f55cd61f6ca20f368232d0c6e37e3c3dfcb63e 40 | OneSignal: 4e3e68bb6c29975286a2fa910cb49132bc6e20bb 41 | 42 | PODFILE CHECKSUM: 08600154cc26890e1979d0062b76978ed623cd8c 43 | 44 | COCOAPODS: 1.8.4 45 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Private.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Private.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Stéphane Peter on 7/12/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | // 12 | // IMPORTANT: Fill in your own private API keys here as needed. 13 | // 14 | 15 | class Private { 16 | 17 | //swiftlint:disable line_length 18 | 19 | // API key for AudioBus (register your app at https://audiob.us) 20 | public static let AudioBusAPIKey = "H4sIAAAAAAAAA5WOMQvCMBBG/0q5uZqGbt0ElyLi4GhE0vbEoE3LJRGD9L8bY0FRFFxf3r18V8BLr8hDkaVQOd2ccKdli1DAzDWqWyi79toeVhohBUennakPGN8j5xM+zabyrlbOFIIJFry+I2ug2FzB+v7uSkcq8LdyEhPJo92gqUn1VnX6m2JcNfaM1zyAVmq3l7V1hBSPFjbQM5KJFT6kzwVVS78WJMtyXv4743PC6/fZsE1BNYEKNkIj2BG9YHnOMxhuunRJk30BAAA=:riXV4TCTiN05ttQVhyEeV7TikQkgWOimy2290ROYffihTll4Ryq9CHL4P+uznYIXUcqF2IWjsIUb5KAncOKE76t6ecLPohjWhxlyOHFBgZZP/AzEBNeELy/08TVVQeea" 21 | 22 | // API key for MailChimp 23 | public static let MailChimpAPIKey = "***REMOVED***" 24 | public static let MailChimpID = "***REMOVED***" 25 | 26 | // App ID for OneSignal 27 | public static let OneSignalAppID = "***REMOVED***" 28 | 29 | // API Key for AppCenter 30 | public static let AppCenterAPIKey = "***REMOVED***" 31 | } 32 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Audiobus/Manager+Audiobus.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Manager+Audiobus.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 5/25/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | // AudioBus MIDI Input & Preset Loading 10 | #if !targetEnvironment(macCatalyst) 11 | extension Manager: ABAudiobusControllerStateIODelegate { 12 | 13 | // MARK: - AudioBus Preset Delegate 14 | 15 | public func audiobusStateDictionaryForCurrentState() -> [AnyHashable: Any]! { 16 | return [ "preset": activePreset.position] 17 | } 18 | 19 | public func loadState(fromAudiobusStateDictionary dictionary: [AnyHashable: Any]!, 20 | responseMessage outResponseMessage: AutoreleasingUnsafeMutablePointer!) { 21 | 22 | if let abDictionary = dictionary as? [String: Any] { 23 | activePreset.position = abDictionary["preset"] as? Int ?? 0 24 | DispatchQueue.main.async { 25 | self.presetsViewController.didSelectPreset(index: self.activePreset.position) 26 | } 27 | } 28 | } 29 | } 30 | #endif 31 | 32 | // Stubs for MacOS Catalyst target 33 | 34 | #if targetEnvironment(macCatalyst) 35 | extension Manager: ABAudiobusControllerStateIODelegate { } 36 | #endif 37 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Envelopes/zh-Hant-TW.lproj/Envelopes.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "UILabel"; text = "Attack"; ObjectID = "1iB-yg-YcK"; */ 3 | "1iB-yg-YcK.text" = "Attack"; 4 | 5 | /* Class = "UILabel"; text = "Attack"; ObjectID = "5Ie-DT-yvl"; */ 6 | "5Ie-DT-yvl.text" = "Attack"; 7 | 8 | /* Class = "UILabel"; text = "Sustain"; ObjectID = "9Ne-rF-Cd5"; */ 9 | "9Ne-rF-Cd5.text" = "Sustain"; 10 | 11 | /* Class = "UILabel"; text = "Sustain"; ObjectID = "NPM-Ga-czS"; */ 12 | "NPM-Ga-czS.text" = "Sustain"; 13 | 14 | /* Class = "UILabel"; text = "Decay"; ObjectID = "QwS-x7-Tqo"; */ 15 | "QwS-x7-Tqo.text" = "Decay"; 16 | 17 | /* Class = "UILabel"; text = "Release"; ObjectID = "TwY-KM-KRE"; */ 18 | "TwY-KM-KRE.text" = "Release"; 19 | 20 | /* Class = "UILabel"; text = "Amplitude Envelope"; ObjectID = "jpD-fo-QNO"; */ 21 | "jpD-fo-QNO.text" = "Amplitude Envelope"; 22 | 23 | /* Class = "UILabel"; text = "Decay"; ObjectID = "tyt-Qx-CmV"; */ 24 | "tyt-Qx-CmV.text" = "Decay"; 25 | 26 | /* Class = "UILabel"; text = "Filter Envelope"; ObjectID = "u2H-uf-fdc"; */ 27 | "u2H-uf-fdc.text" = "Filter Envelope"; 28 | 29 | /* Class = "UILabel"; text = "Release"; ObjectID = "yjc-MW-jcO"; */ 30 | "yjc-MW-jcO.text" = "Release"; 31 | 32 | /* Class = "UILabel"; text = "Env Amt"; ObjectID = "yuw-Hz-d5o"; */ 33 | "yuw-Hz-d5o.text" = "Env Amt"; 34 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/PresetsViewController/Presets+PresetPopOverDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Presets+PresetPopOverDelegate.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 5/25/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | // PopUpPresetEdit 10 | 11 | extension PresetsViewController: PresetPopOverDelegate { 12 | func didFinishEditing(name: String, category: Int, newBank: String) { 13 | 14 | // Check for bank change 15 | if currentPreset.bank != newBank { 16 | 17 | // Check if preset name exists 18 | if name == currentPreset.name { 19 | // remove preset from its previous bank if preset not renamed 20 | let oldBank = currentPreset.bank 21 | currentPreset.bank = newBank 22 | saveAllPresetsIn(oldBank) 23 | 24 | guard let currentBank = conductor.banks.first(where: { $0.name == newBank }) else { return } 25 | selectCategory(PresetCategory.bankStartingIndex + currentBank.position ) 26 | categoryIndex = PresetCategory.bankStartingIndex + currentBank.position 27 | } 28 | } 29 | 30 | // save preset 31 | presetsDelegate?.saveEditedPreset(name: name, category: category, bank: newBank) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/Kernel/S1DSPKernel+reset.mm: -------------------------------------------------------------------------------- 1 | // 2 | // S1DSPKernel+reset.mm 3 | // AudioKitSynthOne 4 | // 5 | // Created by Aurelius Prochazka on 6/4/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | #import "S1DSPKernel.hpp" 10 | #import "S1NoteState.hpp" 11 | #import "AEArray.h" 12 | 13 | ///panic...hard-resets DSP. artifacts. 14 | void S1DSPKernel::resetDSP() { 15 | [heldNoteNumbers removeAllObjects]; 16 | [heldNoteNumbersAE updateWithContentsOfArray:heldNoteNumbers]; 17 | sequencer.reset(true); 18 | 19 | _setSynthParameter(arpIsOn, 0.f); 20 | monoNote->clear(); 21 | for(int i =0; i < S1_MAX_POLYPHONY; i++) 22 | (*noteStates)[i].clear(); 23 | 24 | sp_vdelay_reset(sp, delayL); 25 | sp_vdelay_reset(sp, delayR); 26 | sp_vdelay_reset(sp, delayRR); 27 | sp_vdelay_reset(sp, delayFillIn); 28 | } 29 | 30 | void S1DSPKernel::reset() { 31 | for (int i = 0; iclear(); 34 | resetted = true; 35 | sp_vdelay_reset(sp, delayL); 36 | sp_vdelay_reset(sp, delayR); 37 | sp_vdelay_reset(sp, delayRR); 38 | sp_vdelay_reset(sp, delayFillIn); 39 | } 40 | 41 | void S1DSPKernel::resetSequencer() { 42 | 43 | // don't remove held notes 44 | 45 | sequencer.reset(false); 46 | beatCounterDidChange(); 47 | } 48 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/Kernel/S1DSPKernel+destroy.mm: -------------------------------------------------------------------------------- 1 | // 2 | // S1DSPKernel+destroy.cpp 3 | // AudioKitSynthOne 4 | // 5 | // Created by Aurelius Prochazka on 6/4/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | #import "S1DSPKernel.hpp" 10 | 11 | void S1DSPKernel::destroy() { 12 | for(int i = 0; i< S1Parameter::S1ParameterCount; i++) { 13 | sp_port_destroy(&s1p[i].portamento); 14 | } 15 | sp_port_destroy(&monoFrequencyPort); 16 | sp_port_destroy(&lfo1Port); 17 | sp_port_destroy(&lfo2Port); 18 | sp_ftbl_destroy(&sine); 19 | sp_phasor_destroy(&lfo1Phasor); 20 | sp_phasor_destroy(&lfo2Phasor); 21 | sp_phaser_destroy(&phaser0); 22 | sp_osc_destroy(&panOscillator); 23 | sp_pan2_destroy(&pan); 24 | sp_moogladder_destroy(&loPassInputDelayL); 25 | sp_moogladder_destroy(&loPassInputDelayR); 26 | sp_vdelay_destroy(&delayL); 27 | sp_vdelay_destroy(&delayR); 28 | sp_vdelay_destroy(&delayRR); 29 | sp_vdelay_destroy(&delayFillIn); 30 | sp_delay_destroy(&widenDelay); 31 | sp_crossfade_destroy(&delayCrossfadeL); 32 | sp_crossfade_destroy(&delayCrossfadeR); 33 | sp_revsc_destroy(&reverbCostello); 34 | sp_buthp_destroy(&butterworthHipassL); 35 | sp_buthp_destroy(&butterworthHipassR); 36 | sp_crossfade_destroy(&revCrossfadeL); 37 | sp_crossfade_destroy(&revCrossfadeR); 38 | mIsInitialized = false; 39 | } 40 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Controls/Buttons/ToggleSwitch.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ToggleSwitch.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 8/2/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | @IBDesignable 10 | class ToggleSwitch: UIView, S1Control { 11 | 12 | // MARK: - Properties 13 | 14 | var isOn = false { 15 | didSet { 16 | setNeedsDisplay() 17 | accessibilityValue = isOn ? NSLocalizedString("On", comment: "On") : NSLocalizedString("Off", comment: "Off") 18 | } 19 | } 20 | 21 | // MARK: - S1Control 22 | 23 | var value: Double = 0 { 24 | didSet { 25 | isOn = (value == 1) 26 | } 27 | } 28 | 29 | var setValueCallback: (Double) -> Void = { _ in } 30 | 31 | var resetToDefaultCallback: () -> Void = { } 32 | 33 | // MARK: - Draw 34 | 35 | override func draw(_ rect: CGRect) { 36 | ToggleSwitchStyleKit.drawToggleSwitch(isToggled: value == 0 ? false : true ) 37 | } 38 | 39 | // MARK: - Touches 40 | 41 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 42 | 43 | for _ in touches { 44 | value = 1 - value 45 | setValueCallback(value) 46 | } 47 | } 48 | 49 | override func touchesEnded(_ touches: Set, with event: UIEvent?) { 50 | 51 | for _ in touches { 52 | setValueCallback(value) 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /AudioKitSynthOne/AppDelegate+PlatformServices.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate+PlatformServices.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Matthias Frick on 03/11/2019. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | #if !targetEnvironment(macCatalyst) 11 | import OneSignal 12 | import AppCenter 13 | import AppCenterAnalytics 14 | import AppCenterCrashes 15 | 16 | extension AppDelegate { 17 | public func initializePlatformServices() { 18 | let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false] 19 | 20 | // Set your OneSignal App ID in the Private.swift file. 21 | OneSignal.initWithLaunchOptions(launchOptions, 22 | appId: Private.OneSignalAppID, 23 | handleNotificationAction: nil, 24 | settings: onesignalInitSettings) 25 | 26 | OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification 27 | 28 | // Setup AppCenter for Crash Log Collection 29 | if (Private.AppCenterAPIKey != "***REMOVED***") { 30 | MSAppCenter.start(Private.AppCenterAPIKey, withServices:[ 31 | MSAnalytics.self, 32 | MSCrashes.self 33 | ]) 34 | } 35 | } 36 | } 37 | #endif 38 | 39 | #if targetEnvironment(macCatalyst) 40 | extension AppDelegate { 41 | public func initializePlatformServices() {} 42 | } 43 | #endif 44 | -------------------------------------------------------------------------------- /AudioKitSynthOne/README.md: -------------------------------------------------------------------------------- 1 | # AudioKit Synth One Code 2 | 3 | ![Overview](http://audiokit.io/synthone/overview.png) 4 | 5 | This is the top folder and contains: 6 | 7 | * Assets - Xcode project image files 8 | * Audiobus - Interapp Audio 9 | * Controls - reuseable UI elements that appear in several places around the app 10 | * Developer - Advanced "Developer" view that can be unlocked in the app 11 | * DSP - Most of the audio generation and processing content 12 | * Effects - Effects Panel 13 | * Generators - Main Panel that controls most of the source sound creation and mixing 14 | * Header - The top of the synth UI containing current preset title, and showing updated parameters 15 | * Internet - Views that access the internet for app store links, about us, and more information 16 | * Keyboard - The keyboard and its settings 17 | * MIDI - Interdevice communication via the common format 18 | * Manager - Core view controller that controls the UI and various other functions 19 | (note that extensions to Manager exist throughout the app in conceptually-related folders) 20 | * Navigation - Panel display management 21 | * Presets - storing and recalling awesome sounds! 22 | * Sequencer - automation of note playback via sequencing or arpeggiation 23 | * Settings - General app configuration 24 | * Touch Pad - Panel for simultaneously controlling multiple parameters with a pair of 2-D touch locations 25 | * Tunings - Panel for microtonal tuning options 26 | * Helpers.swift - auxiliary functions 27 | * Main.storyboard - Where we currently manage most of the UI 28 | 29 | 30 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/Conductor+Platform.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Conductor+Platform.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Matthias Frick on 03/11/2019. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if !targetEnvironment(macCatalyst) 12 | extension Conductor { 13 | @objc func checkIAAConnectionsEnterBackground() { 14 | 15 | if let audiobusClient = Audiobus.client { 16 | 17 | if !audiobusClient.isConnected && !audiobusClient.isConnectedToInput && !backgroundAudio { 18 | deactivateSession() 19 | AKLog("disconnected without timer") 20 | } else { 21 | iaaTimer.invalidate() 22 | iaaTimer = Timer.scheduledTimer(timeInterval: 20 * 60, 23 | target: self, 24 | selector: #selector(self.checkIAAConnectionsEnterBackground), 25 | userInfo: nil, repeats: true) 26 | } 27 | } 28 | 29 | } 30 | 31 | func checkIAAConnectionsEnterForeground() { 32 | iaaTimer.invalidate() 33 | startEngine() 34 | } 35 | } 36 | #endif 37 | 38 | // MacOS Cataylyst stubs 39 | // We don't support IAA there so adding NOOPs 40 | #if targetEnvironment(macCatalyst) 41 | extension Conductor { 42 | @objc func checkIAAConnectionsEnterBackground() { } 43 | 44 | func checkIAAConnectionsEnterForeground() { } 45 | } 46 | #endif 47 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/PresetsViewController/Presets+UITextViewDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Presets+UITextViewDelegate.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Aurelius Prochazka on 6/8/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | extension PresetsViewController: UITextViewDelegate { 10 | 11 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 12 | super.touchesBegan(touches, with: event) 13 | view.endEditing(true) 14 | } 15 | 16 | @IBAction func doneEditingPressed(_ sender: UIButton) { 17 | view.endEditing(true) 18 | presetsDelegate?.saveEditedPreset(name: currentPreset.name, 19 | category: currentPreset.category, 20 | bank: currentPreset.bank) 21 | } 22 | 23 | func textViewDidEndEditing(_ textView: UITextView) { 24 | doneEditingButton.isHidden = true 25 | if conductor.device == .pad { 26 | searchtoolButton.isHidden = false 27 | } 28 | if conductor.device == .phone { 29 | newButton.isHidden = false 30 | importBankButton.isHidden = false 31 | } 32 | } 33 | 34 | func textViewDidBeginEditing(_ textView: UITextView) { 35 | doneEditingButton.isHidden = false 36 | if conductor.device == .pad { 37 | searchtoolButton.isHidden = true 38 | } 39 | if conductor.device == .phone { 40 | newButton.isHidden = true 41 | importBankButton.isHidden = true 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/InfoViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfoViewController.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 10/31/17. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import StoreKit 11 | 12 | class InfoViewController: UIViewController { 13 | 14 | @IBOutlet weak var moreView: UIView! 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | 19 | moreView.layer.borderColor = #colorLiteral(red: 0.06666666667, green: 0.06666666667, blue: 0.06666666667, alpha: 1) 20 | moreView.layer.borderWidth = 2 21 | moreView.layer.cornerRadius = 6 22 | 23 | } 24 | 25 | @IBAction func closePressed(_ sender: UIButton) { 26 | dismiss(animated: true, completion: nil) 27 | } 28 | 29 | @IBAction func videoPressed(_ sender: UIButton) { 30 | /* 31 | if let url = URL(string: "http://audiokitpro.com/audiokit/") { 32 | UIApplication.shared.open(url) 33 | } 34 | */ 35 | } 36 | 37 | @IBAction func reviewAppPressed(_ sender: UIButton) { 38 | requestReview() 39 | } 40 | 41 | @IBAction func fmWebSite(_ sender: Any) { 42 | if let url = URL(string: "http://audiokitpro.com/fmplayer/") { 43 | UIApplication.shared.open(url) 44 | } 45 | } 46 | 47 | @IBAction func getFMPlayerPressed(_ sender: Any) { 48 | 49 | if let url = URL(string: "https://itunes.apple.com/app/apple-store/id1307785646?mt=8") { 50 | UIApplication.shared.open(url) 51 | } 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/UI Components/TuningCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TuningCell.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 6/3/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TuningCell: UITableViewCell { 12 | 13 | // MARK: - Lifecycle 14 | 15 | override func setSelected(_ selected: Bool, animated: Bool) { 16 | super.setSelected(selected, animated: animated) 17 | 18 | // Configure the view for the selected state 19 | if selected { 20 | textLabel?.textColor = UIColor.white 21 | contentView.backgroundColor = #colorLiteral(red: 0.2431372549, green: 0.2431372549, blue: 0.262745098, alpha: 0.7547865317) 22 | 23 | } else { 24 | textLabel?.textColor = #colorLiteral(red: 0.7333333333, green: 0.7333333333, blue: 0.7333333333, alpha: 1) 25 | contentView.backgroundColor = UIColor.clear 26 | } 27 | } 28 | 29 | // MARK: - Configure Cell 30 | 31 | func configureCell(fontSize: Int = 12) { 32 | 33 | textLabel?.adjustsFontSizeToFitWidth = true 34 | textLabel?.font = UIFont(name: "Avenir Next", size: CGFloat(fontSize))! 35 | textLabel?.isOpaque = false 36 | textLabel?.backgroundColor = UIColor.clear 37 | isOpaque = false 38 | backgroundColor = UIColor.clear 39 | selectionStyle = .none 40 | contentView.isOpaque = false 41 | contentView.backgroundColor = UIColor.clear 42 | separatorInset = UIEdgeInsets.zero 43 | layoutMargins = UIEdgeInsets.zero 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/TuneUpPopUp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TuneUpPopUp.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by Matthew Fecher on 2/14/19. 6 | // Copyright © 2019 AudioKit. All rights reserved. 7 | // 8 | 9 | 10 | import UIKit 11 | 12 | protocol TuneUpPopUpDelegate: AnyObject { 13 | func wilsonicPressed() 14 | func d1Pressed() 15 | } 16 | 17 | class TuneUpPopUp: UIViewController { 18 | 19 | @IBOutlet weak var moreView: UIView! 20 | @IBOutlet weak var d1Button: UIButton! 21 | @IBOutlet weak var wilsonicButton: UIButton! 22 | 23 | var delegate: TuneUpPopUpDelegate? 24 | 25 | override func viewDidLoad() { 26 | super.viewDidLoad() 27 | 28 | moreView.layer.borderColor = #colorLiteral(red: 0.06666666667, green: 0.06666666667, blue: 0.06666666667, alpha: 1) 29 | moreView.layer.borderWidth = 2 30 | moreView.layer.cornerRadius = 6 31 | 32 | } 33 | 34 | @IBAction func closePressed(_ sender: UIButton) { 35 | dismiss(animated: true, completion: nil) 36 | } 37 | 38 | @IBAction func wilsonicPressed(_ sender: Any) { 39 | dismiss(animated: true) { 40 | self.delegate?.wilsonicPressed() 41 | } 42 | } 43 | 44 | @IBAction func d1Pressed(_ sender: Any) { 45 | dismiss(animated: true) { 46 | self.delegate?.d1Pressed() 47 | } 48 | } 49 | 50 | @IBAction func LearnMoreTapped(_ sender: UIButton) { 51 | if let url = URL(string: "https://audiokitpro.com/tuneup/") { 52 | UIApplication.shared.open(url) 53 | } 54 | } 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/PresetsViewController/Presets+UITableViewDataSource.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Presets+UITableViewDataSource.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 5/25/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | extension PresetsViewController: UITableViewDataSource { 10 | 11 | func numberOfSections(in tableView: UITableView) -> Int { 12 | return 1 13 | } 14 | 15 | @objc(tableView:heightForRowAtIndexPath:) func tableView(_ tableView: UITableView, 16 | heightForRowAt indexPath: IndexPath) -> CGFloat { 17 | return 44 18 | } 19 | 20 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 21 | if sortedPresets.isEmpty { 22 | return 0 23 | } else { 24 | return sortedPresets.count 25 | } 26 | } 27 | 28 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 29 | 30 | // Get current preset 31 | 32 | if let cell = tableView.dequeueReusableCell(withIdentifier: "PresetCell") as? PresetCell { 33 | 34 | var alphabetical = false 35 | if categoryIndex == PresetCategory.categoryCount + 1 { alphabetical = true } 36 | 37 | let preset = sortedPresets[(indexPath as NSIndexPath).row] 38 | 39 | cell.delegate = self 40 | 41 | // Cell updated in PresetCell.swift 42 | cell.configureCell(preset: preset, alpha: alphabetical) 43 | 44 | return cell 45 | } else { 46 | return PresetCell() 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /AudioKitSynthOne/About/MoreAppsController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MoreAppsController.swift 3 | // AudioKit Synth One 4 | // 5 | // Created by Matthew Fecher on 11/15/18. 6 | // Copyright © 2018 AudioKit Pro. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class MoreAppsController: UIViewController { 12 | 13 | @IBOutlet weak var moreView: UIView! 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | moreView.layer.borderColor = #colorLiteral(red: 0.06666666667, green: 0.06666666667, blue: 0.06666666667, alpha: 1) 19 | moreView.layer.borderWidth = 2 20 | moreView.layer.cornerRadius = 6 21 | 22 | } 23 | 24 | @IBAction func closePressed(_ sender: UIButton) { 25 | dismiss(animated: true, completion: nil) 26 | } 27 | 28 | @IBAction func getDigitalD1(_ sender: Any) { 29 | if let url = URL(string: "https://itunes.apple.com/us/app/audiokit-digital-d1-synth/id1436905540?ls=1&mt=8") { 30 | UIApplication.shared.open(url) 31 | } 32 | } 33 | 34 | @IBAction func learnMorePressed(_ sender: Any) { 35 | if let url = URL(string: "http://audiokitpro.com/digitald1/") { 36 | UIApplication.shared.open(url) 37 | } 38 | } 39 | 40 | @IBAction func learnMoreFMPressed(_ sender: Any) { 41 | if let url = URL(string: "https://audiokitpro.com/fm-player-2/") { 42 | UIApplication.shared.open(url) 43 | } 44 | } 45 | 46 | @IBAction func getFMPlayer(_ sender: Any) { 47 | if let url = URL(string: "https://itunes.apple.com/app/apple-store/id1307785646?mt=8") { 48 | UIApplication.shared.open(url) 49 | } 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Controls/Buttons/ToggleButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ToggleButton.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 7/22/17. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | @IBDesignable 10 | class ToggleButton: UIView, S1Control { 11 | 12 | // MARK: - ToggleButton 13 | 14 | var isOn = false { 15 | didSet { 16 | setNeedsDisplay() 17 | accessibilityValue = isOn ? NSLocalizedString("On", comment: "On") : NSLocalizedString("Off", comment: "Off") 18 | } 19 | } 20 | 21 | // MARK: - S1Control 22 | 23 | var value: Double = 0 { 24 | didSet { 25 | isOn = (value == 1) 26 | } 27 | } 28 | 29 | var setValueCallback: (Double) -> Void = { _ in } 30 | 31 | var resetToDefaultCallback: () -> Void = { } 32 | 33 | // MARK: - Draw 34 | 35 | override func draw(_ rect: CGRect) { 36 | ToggleButtonStyleKit.drawRoundButton(frame: CGRect(x: 0, 37 | y: 0, 38 | width: self.bounds.width, 39 | height: self.bounds.height), 40 | isToggled: isOn) 41 | } 42 | 43 | // MARK: - Touches 44 | 45 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 46 | for _ in touches { 47 | value = 1 - value 48 | setValueCallback(value) 49 | } 50 | } 51 | 52 | override func touchesEnded(_ touches: Set, with event: UIEvent?) { 53 | 54 | for _ in touches { 55 | setValueCallback(value) 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /AudioKitSynthOne/MIDI/MIDICell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MIDICell.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 11/11/17. 6 | // Copyright © 2017 AudioKit Pro. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class MIDICell: UITableViewCell { 12 | 13 | @IBOutlet weak var cellLabel: UILabel! 14 | var currentInput: MIDIInput? 15 | 16 | override func awakeFromNib() { 17 | super.awakeFromNib() 18 | // Initialization code 19 | 20 | // set cell selection color 21 | let selectedView = UIView(frame: CGRect.zero) 22 | selectedView.backgroundColor = UIColor.clear 23 | selectedBackgroundView = selectedView 24 | 25 | cellLabel?.textColor = #colorLiteral(red: 0.7333333333, green: 0.7333333333, blue: 0.7333333333, alpha: 1) 26 | } 27 | 28 | override func setSelected(_ selected: Bool, animated: Bool) { 29 | super.setSelected(selected, animated: animated) 30 | // Configure the view for the selected state 31 | 32 | if selected { 33 | // cellLabel?.textColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1) 34 | backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0) 35 | } else { 36 | //cellLabel?.textColor = #colorLiteral(red: 0.7333333333, green: 0.7333333333, blue: 0.7333333333, alpha: 1) 37 | backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0) 38 | } 39 | 40 | } 41 | 42 | func configureCell(midiInput: MIDIInput) { 43 | guard midiInput.name != "AudioKit Synth One" else { return } 44 | currentInput = midiInput 45 | cellLabel.text = "\(midiInput.name)" 46 | accessoryType = midiInput.isOpen ? .checkmark : .none 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/TAAE/AEWeakRetainingProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // AEWeakRetainingProxy.h 3 | // TheAmazingAudioEngine 4 | // 5 | // Created by Michael Tyson on 8/06/2016. 6 | // Copyright © 2016 A Tasty Pixel. All rights reserved. 7 | // 8 | // This software is provided 'as-is', without any express or implied 9 | // warranty. In no event will the authors be held liable for any damages 10 | // arising from the use of this software. 11 | // 12 | // Permission is granted to anyone to use this software for any purpose, 13 | // including commercial applications, and to alter it and redistribute it 14 | // freely, subject to the following restrictions: 15 | // 16 | // 1. The origin of this software must not be misrepresented; you must not 17 | // claim that you wrote the original software. If you use this software 18 | // in a product, an acknowledgment in the product documentation would be 19 | // appreciated but is not required. 20 | // 21 | // 2. Altered source versions must be plainly marked as such, and must not be 22 | // misrepresented as being the original software. 23 | // 24 | // 3. This notice may not be removed or altered from any source distribution. 25 | // 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | #import 32 | 33 | /*! 34 | * Weak Retaining Proxy 35 | * 36 | * This proxy class is useful to avoid a retain cycle when using an NSTimer 37 | * retained by the instance that is the timer's target. It's used in a number 38 | * of places throughout TAAE. 39 | */ 40 | @interface AEWeakRetainingProxy : NSProxy 41 | 42 | + (instancetype _Nonnull)proxyWithTarget:(id _Nonnull)target; 43 | 44 | @property (nonatomic, weak, readonly) id _Nullable target; 45 | 46 | @end 47 | 48 | #ifdef __cplusplus 49 | } 50 | #endif 51 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Manager/Manager+PushNotification.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Manager+PushNotification.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 1/8/18. 6 | // Copyright © 2018 AudioKit Pro. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if !targetEnvironment(macCatalyst) 12 | import OneSignal 13 | extension Manager { 14 | 15 | func pushPopUp() { 16 | // Add pop up 17 | let title = NSLocalizedString("Stay informed!", comment: "Alert Title: Allow notifications") 18 | let message = NSLocalizedString("We'll send Free updates, sounds, and apps. Allow notifications!", 19 | comment: "Alert Message: Allow notifications") 20 | let alert = UIAlertController(title: title, 21 | message: message, 22 | preferredStyle: .alert) 23 | let submitAction = UIAlertAction(title: "Yes! 👍🏼", style: .default) { (_) in 24 | self.appSettings.pushNotifications = true 25 | self.saveAppSettingValues() 26 | OneSignal.promptForPushNotifications(userResponse: { accepted in 27 | print("User accepted notifications: \(accepted)") 28 | }) 29 | } 30 | 31 | let cancelAction = UIAlertAction(title: "Later", style: .default) { (_) in 32 | print("User canceled") 33 | } 34 | 35 | alert.addAction(cancelAction) 36 | alert.addAction(submitAction) 37 | 38 | self.present(alert, animated: true, completion: nil) 39 | } 40 | } 41 | #endif 42 | 43 | // MacOS Target, do nothing until we figure this out 44 | #if targetEnvironment(macCatalyst) 45 | extension Manager { 46 | public func pushPopUp() {} 47 | } 48 | #endif 49 | -------------------------------------------------------------------------------- /OneSignalNotificationServiceExtension/NotificationService.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NotificationService.swift 3 | // OneSignalNotificationServiceExtension 4 | // 5 | // Created by Matthew Fecher on 5/21/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import UserNotifications 10 | 11 | import OneSignal 12 | 13 | class NotificationService: UNNotificationServiceExtension { 14 | 15 | var contentHandler: ((UNNotificationContent) -> Void)? 16 | var receivedRequest: UNNotificationRequest! 17 | var bestAttemptContent: UNMutableNotificationContent? 18 | 19 | override func didReceive(_ request: UNNotificationRequest, 20 | withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { 21 | self.receivedRequest = request 22 | self.contentHandler = contentHandler 23 | bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) 24 | 25 | if let bestAttemptContent = bestAttemptContent { 26 | OneSignal.didReceiveNotificationExtensionRequest(self.receivedRequest, with: self.bestAttemptContent) 27 | contentHandler(bestAttemptContent) 28 | } 29 | } 30 | 31 | override func serviceExtensionTimeWillExpire() { 32 | // Called just before the extension will be terminated by the system. 33 | // Use this as an opportunity to deliver your "best attempt" at modified content, 34 | // otherwise the original push payload will be used. 35 | if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent { 36 | OneSignal.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent) 37 | contentHandler(bestAttemptContent) 38 | } 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /AudioKitSynthOne/MIDI/Manager+MIDISettingsPopOverDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Manager+MIDISettingsPopoverDelegate.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 5/25/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | // MIDI Settings Pop Over Delegate 10 | 11 | extension Manager: MIDISettingsPopOverDelegate { 12 | 13 | func resetMIDILearn() { 14 | for control in midiControls { control.midiCC = 255 } 15 | saveAppSettingValues() 16 | } 17 | 18 | func didSelectMIDIChannel(newChannel: Int) { 19 | if newChannel > -1 { 20 | conductor.midiInChannel = MIDIByte(newChannel) 21 | conductor.isOmniMode = false 22 | } else { 23 | conductor.midiInChannel = 0 24 | conductor.isOmniMode = true 25 | } 26 | saveAppSettingValues() 27 | } 28 | 29 | func didToggleVelocity() { 30 | appSettings.velocitySensitive = !appSettings.velocitySensitive 31 | saveAppSettingValues() 32 | } 33 | 34 | func didChangeMIDISources(_ midiSources: [MIDIInput]) { 35 | midiInputs = midiSources 36 | saveAppSettingValues() 37 | } 38 | 39 | func didToggleBackgroundAudio(_ value: Bool) { 40 | saveAppSettingValues() 41 | } 42 | 43 | func didToggleNeverSleep() { 44 | saveAppSettingValues() 45 | } 46 | 47 | func didSetBuffer() { 48 | saveAppSettingValues() 49 | } 50 | 51 | func didToggleStoreTuningWithPreset(_ value: Bool) { 52 | appSettings.saveTuningWithPreset = value 53 | saveAppSettingValues() 54 | } 55 | 56 | func didToggleLaunchWithLastTuning(_ value: Bool) { 57 | appSettings.launchWithLastTuning = value 58 | saveAppSettingValues() 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/description-zh-TW.txt: -------------------------------------------------------------------------------- 1 | “移動音樂向前邁出了一大步” - CDM(創造數字音樂) 2 | “突破性的iOS合成器應用程序” - Mac的崇拜 3 | “必須為每個iPad用戶下載” - MacBreak 4 | 5 | ***本週的應用程序 - Stuff.tv *** 6 | ***本週免費應用程序 - TechRadar *** 7 | ***最佳免費iPad Synth - EM雜誌*** 8 | 9 | “AudioKit Synth One是適用於iPad的免費功能合成器,包括由M83,Tycho和Rihanna背後的專業音響設計師創作的300多種預設” - Engadget 10 | 11 | AudioKit Synth One是歷史上第一個完全免費和開源的專業iOS合成器應用程序。 無廣告。 沒有IAP。 它永遠是免費的。 12 | 13 | “人類努力的一個很好的例子” 14 | - Gaz Williams,Sonic State 15 | 16 | “令人驚嘆的努力...... 聽起來很神奇!“ 17 | - Francis Preve,電子音樂雜誌 18 | 19 | “強大... 太棒了“ - Synthtopia.com 20 | “一款適合你的iPad的驚人的合成器應用程序,它與魔法一樣接近” - GarageBand指南 21 | “必須有iOS合成器” - Synth Anatomy 22 | “它讓你感到驚訝...... 立即開始調整樂趣!“ - discchord 23 | “神奇而輝煌的合成...... 聽起來很棒!“ ​​- 聲音測試室 24 | “每個人都可以享受的愛的勞動” - 音樂雷達 25 | 26 | 學到更多: 27 | audiokitpro.com/synth 28 | 29 | 由全球100多名志願者創建(包括M83,Rihanna,Kanye West,Neon Trees,Mike Posner,Tycho等音響設計師),此應用程序包括MIDI支持(使用MIDI鍵盤或控制器播放),音序器,復古風格的模擬濾波器,富有表現力的琶音器,溫暖的模擬延遲,以及超過300種預設,讓您入門! 30 | 31 | 請將您的音樂和錯誤發送給我們:hello@audiokitpro.com 32 | 33 | SYNTH ONE FEATURES: 34 | 這款合成器完全免費,功能齊全,無廣告。 沒有IAP或任何可以購買的東西 - 它是終極免費的iPad音樂樂器應用程序! 35 | 36 | •混合模擬/ FM多合成器 37 | •由著名音響設計師精心製作的300多種預設 38 | •Audiobus 3和Inter-app Audio(IAA) 39 | •Ableton Link 40 | •五個振盪器(2個DCO,FM,Sub,Noise) 41 | •2個LFO,具有十幾種路由可能性 42 | •復古風格的16步音序器 43 | •經典的聚琶音器 44 | •MIDI輸入(使用MIDI鍵盤或AudioBus / IAA控制) 45 | •用於放大器和濾波器的可觸摸ADSR包絡 46 | •帶有Mod的FM振盪器 47 | •單聲道滑行和連奏 48 | •專用正弦/方波-12/24 Sub Osc 49 | •4極復古低通濾波器 50 | •高通/帶通濾波器 51 | •美麗的Costello Reverb 52 | •多次擊鍵(乒乓)延遲 53 | •TouchPad 54 | •預設和銀行導入/導出及更多... 55 | 56 | 獎金:完整源代碼現已推出! 57 | AudiokitPro.com/Synth 58 | 59 | 此外,它完全是開源的。 使用代碼學習如何構建自己的合成器應用程序或自己修改應用程序! 60 | 61 | 官方視頻:https://youtu.be/hwDNgCYowYs 62 | 63 | “驚人的噪音會讓你的耳朵高興” - 東西雜誌 64 | “本週挑選” - MacBreak 65 | 66 | 在路線圖上: 67 | •MPE支持(與Roli Seaboard一起玩) 68 | •AUv3插件支持 69 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Tunings/Model/Tunings+LaunchD1.swift: -------------------------------------------------------------------------------- 1 | //// 2 | //// Tunings+LaunchD1.swift 3 | //// AudioKitSynthOne 4 | //// 5 | //// Created by Marcus W. Hobbs on 2/10/19. 6 | //// Copyright © 2019 AudioKit. All rights reserved. 7 | //// 8 | // 9 | //import Foundation 10 | // 11 | //extension Tunings { 12 | // 13 | // private func redirect(to host:String, appStoreUrl:String) { 14 | // let npo = self.masterSet.count 15 | // let tuneUpArgs = host + "://tune?" 16 | // var urlStr = "\(tuneUpArgs)tuningName=\(tuningName)&npo=\(npo)" 17 | // for f in masterSet { 18 | // urlStr += "&f=\(f)" 19 | // } 20 | // urlStr += Tunings.tuneUpBackButtonUrlArgs 21 | // 22 | // if let urlStr = urlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { 23 | // if let url = URL(string: urlStr) { 24 | // 25 | // // is host installed on device? 26 | // if UIApplication.shared.canOpenURL(url) { 27 | // UIApplication.shared.open(url, options: [:], completionHandler: nil) 28 | // } else { 29 | // 30 | // // Redirect to app store 31 | // if let appStoreURL = URL.init(string: appStoreUrl) { 32 | // UIApplication.shared.open(appStoreURL, options: [:], completionHandler: nil) 33 | // } 34 | // } 35 | // } 36 | // } 37 | // } 38 | // 39 | // public func launchD1() { 40 | // redirect(to: "DigitalD1", appStoreUrl: "https://itunes.apple.com/us/app/audiokit-digital-d1-synth/id1436905540") 41 | // } 42 | // 43 | // public func launchWilsonic() { 44 | // redirect(to: "wilsonic", appStoreUrl: "https://itunes.apple.com/us/app/wilsonic/id848852071?mt=8") 45 | // } 46 | // 47 | //} 48 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Controls/Buttons/SynthButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynthButton.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 8/8/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | class SynthButton: UIButton, S1Control { 10 | 11 | // MARK: - Init 12 | 13 | required init?(coder aDecoder: NSCoder) { 14 | super.init(coder: aDecoder) 15 | clipsToBounds = true 16 | layer.cornerRadius = 2 17 | layer.borderWidth = 1 18 | } 19 | 20 | // MARK: - S1Control 21 | 22 | var value: Double = 0 { 23 | didSet { 24 | isSelected = value == 1 25 | setNeedsDisplay() 26 | } 27 | } 28 | 29 | var setValueCallback: (Double) -> Void = { _ in } 30 | 31 | var resetToDefaultCallback: () -> Void = { } 32 | 33 | // MARK: - Properties 34 | 35 | var isOn: Bool { 36 | return value == 1 37 | } 38 | 39 | override var isSelected: Bool { 40 | didSet { 41 | backgroundColor = isOn ? #colorLiteral(red: 0.3058823529, green: 0.3058823529, blue: 0.3254901961, alpha: 1) : #colorLiteral(red: 0.2, green: 0.2, blue: 0.2, alpha: 1) 42 | accessibilityValue = isOn ? 43 | NSLocalizedString("On", comment: "On") : 44 | NSLocalizedString("Off", comment: "Off") 45 | } 46 | } 47 | 48 | // MARK: - Touches 49 | 50 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 51 | for _ in touches { 52 | value = isOn ? 0 : 1 53 | setValueCallback(value) 54 | } 55 | } 56 | 57 | override func touchesEnded(_ touches: Set, with event: UIEvent?) { 58 | 59 | for _ in touches { 60 | setValueCallback(value) 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Keyboard/Manager+Keyboard.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Manager+Keyboard.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 5/25/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | // Keyboard Pop Over Delegate 10 | 11 | extension Manager: KeyboardPopOverDelegate { 12 | 13 | func didFinishSelecting(octaveRange: Int, labelMode: Int, darkMode: KeyboardDarkMode, tuningMode: Bool) { 14 | keyboardView.octaveCount = octaveRange 15 | keyboardView.labelMode = labelMode 16 | keyboardView.darkMode = darkMode 17 | keyboardView.tuningMode = tuningMode 18 | keyboardView.setNeedsDisplay() 19 | saveAppSettingValues() 20 | } 21 | } 22 | 23 | // Keyboard Delegate Note on/off 24 | 25 | extension Manager: AKKeyboardDelegate { 26 | 27 | public func noteOn(note: MIDINoteNumber, velocity: MIDIVelocity = 127) { 28 | guard note < 128 else { 29 | let title = NSLocalizedString("Too High", comment: "Alert Title: Too High") 30 | let message = NSLocalizedString("MIDI Note > 127. G8 is the highest playable key. Take it down a notch 😉", 31 | comment: "Alert Message: Too High") 32 | displayAlertController(title, message: message) 33 | return 34 | } 35 | let transformedNoteNumber = appSettings.whiteKeysOnly ? whiteKeysOnlyMap[Int(note)] : note 36 | conductor.sustainer.play(noteNumber: transformedNoteNumber, velocity: velocity) 37 | } 38 | 39 | public func noteOff(note: MIDINoteNumber) { 40 | guard note < 128 else { return } 41 | let transformedNoteNumber = appSettings.whiteKeysOnly ? whiteKeysOnlyMap[Int(note)] : note 42 | conductor.sustainer.stop(noteNumber: transformedNoteNumber) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | *.ipa 28 | *.dSYM.zip 29 | *.dSYM 30 | 31 | .DS_Store 32 | 33 | ## Playgrounds 34 | timeline.xctimeline 35 | playground.xcworkspace 36 | 37 | # Swift Package Manager 38 | # 39 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 40 | # Packages/ 41 | # Package.pins 42 | .build/ 43 | 44 | # CocoaPods 45 | # 46 | # We recommend against adding the Pods directory to your .gitignore. However 47 | # you should judge for yourself, the pros and cons are mentioned at: 48 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 49 | # 50 | Pods/ 51 | 52 | # Carthage 53 | # 54 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 55 | # Carthage/Checkouts 56 | 57 | Carthage/Build 58 | 59 | # fastlane 60 | # 61 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 62 | # screenshots whenever they are needed. 63 | # For more information about the recommended setup visit: 64 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 65 | 66 | fastlane/report.xml 67 | fastlane/Preview.html 68 | fastlane/screenshots 69 | fastlane/test_output 70 | /Podfile.lock 71 | 72 | AudioKitSynthOne/Link/include 73 | AudioKitSynthOne/Link/lib 74 | /AudioKitSynthOne/Private.swift 75 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/BankEditorViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BankEditorViewController.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 1/27/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | protocol BankPopOverDelegate: AnyObject { 12 | func didFinishEditing(oldName: String, newName: String) 13 | func didDeleteBank(bankName: String) 14 | } 15 | 16 | class BankEditorViewController: UIViewController { 17 | 18 | @IBOutlet weak var nameTextField: UITextField! 19 | @IBOutlet weak var popupView: UIView! 20 | @IBOutlet weak var cancelButton: SynthButton! 21 | @IBOutlet weak var saveButton: SynthButton! 22 | @IBOutlet weak var deleteButton: SynthButton! 23 | 24 | weak var delegate: BankPopOverDelegate? 25 | 26 | var bankName = "bank name" 27 | 28 | override func viewDidLoad() { 29 | super.viewDidLoad() 30 | 31 | popupView.layer.borderColor = #colorLiteral(red: 0.1333333333, green: 0.1333333333, blue: 0.1333333333, alpha: 1) 32 | popupView.layer.borderWidth = 2 33 | popupView.layer.cornerRadius = 6 34 | 35 | nameTextField.text = bankName 36 | 37 | setupCallbacks() 38 | } 39 | 40 | func setupCallbacks() { 41 | 42 | cancelButton.setValueCallback = { _ in 43 | self.dismiss(animated: true, completion: nil) 44 | } 45 | 46 | saveButton.setValueCallback = { _ in 47 | self.delegate?.didFinishEditing(oldName: self.bankName, newName: self.nameTextField.text ?? "Unnamed") 48 | self.dismiss(animated: true, completion: nil) 49 | } 50 | 51 | deleteButton.setValueCallback = { _ in 52 | self.delegate?.didDeleteBank(bankName: self.bankName) 53 | self.dismiss(animated: true, completion: nil) 54 | } 55 | 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/TAAE/AEWeakRetainingProxy.m: -------------------------------------------------------------------------------- 1 | // 2 | // AEWeakRetainingProxy.m 3 | // TheAmazingAudioEngine 4 | // 5 | // Created by Michael Tyson on 8/06/2016. 6 | // Copyright © 2016 A Tasty Pixel. All rights reserved. 7 | // 8 | // This software is provided 'as-is', without any express or implied 9 | // warranty. In no event will the authors be held liable for any damages 10 | // arising from the use of this software. 11 | // 12 | // Permission is granted to anyone to use this software for any purpose, 13 | // including commercial applications, and to alter it and redistribute it 14 | // freely, subject to the following restrictions: 15 | // 16 | // 1. The origin of this software must not be misrepresented; you must not 17 | // claim that you wrote the original software. If you use this software 18 | // in a product, an acknowledgment in the product documentation would be 19 | // appreciated but is not required. 20 | // 21 | // 2. Altered source versions must be plainly marked as such, and must not be 22 | // misrepresented as being the original software. 23 | // 24 | // 3. This notice may not be removed or altered from any source distribution. 25 | // 26 | 27 | #import "AEWeakRetainingProxy.h" 28 | 29 | @interface AEWeakRetainingProxy () 30 | @property (nonatomic, weak, readwrite) id target; 31 | @end 32 | 33 | @implementation AEWeakRetainingProxy 34 | 35 | + (instancetype)proxyWithTarget:(id)target { 36 | AEWeakRetainingProxy * proxy = [AEWeakRetainingProxy alloc]; 37 | proxy.target = target; 38 | return proxy; 39 | } 40 | 41 | - (NSMethodSignature *)methodSignatureForSelector:(SEL)selector { 42 | return [_target methodSignatureForSelector:selector]; 43 | } 44 | 45 | - (void)forwardInvocation:(NSInvocation *)invocation { 46 | __strong id target = _target; 47 | [invocation setTarget:target]; 48 | [invocation invoke]; 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Translations/Metadata/description-zh-CN.txt: -------------------------------------------------------------------------------- 1 | “移动音乐向前迈出了一大步” - CDM (Create Digital Music) 2 | “突破性的iOS音乐合成器应用程序” - Cult of Mac 3 | “每个iPad用户都应该下载的应用” - MacBreak 4 | 5 | ***本周最佳应用程序 - Stuff.tv *** 6 | ***本周最佳免费应用程序 - TechRadar *** 7 | ***最佳免费iPad音乐合成器 - EM杂志*** 8 | 9 | “AudioKit Synth One是适用于iPad的免费的多功能音乐合成器,包括由M83,Tycho和Rihanna背后的专业音响设计师创作的300多种预设” - Engadget 10 | 11 | AudioKit Synth One是历史上第一个完全免费和开源的专业iOS音乐合成器应用程序。 无广告。 没有应用内购。 它永远是免费的。 12 | 13 | “人类努力的伟大典范” 14 | - Gaz Williams,Sonic State 15 | 16 | “令人惊叹的努力...... 听起来很神奇!“ 17 | - Francis Preve,Electronic Musician Magazine 18 | 19 | “强大... 太棒了“ - Synthtopia.com 20 | “一款近乎魔法的适合你iPad的音乐合成器应用程序” - GarageBand Guide 21 | “必须有的iOS音乐合成器” - Synth Anatomy 22 | “它让你感到惊喜...... 立即获得编辑音乐的乐趣!“ - discchord 23 | “神奇而辉煌的音乐合成器...... 听起来很棒!“ ​​- The Sound Test Room 24 | “让每个人都可以享受的爱的劳动” - Music Radar 25 | 26 | 了解更多: 27 | audiokitpro.com/synth 28 | 29 | 由全球100多名志愿者创建 (包括M83,Rihanna,Kanye West,Neon Trees,Mike Posner,Tycho等音响设计师),此应用程序包括MIDI支持 (使用MIDI键盘或控制器播放),音序器,复古风格的模拟滤波器,富有表现力的琶音器,舒缓的模拟延迟,以及超过300种预设让您迈入音乐之门! 30 | 31 | 请将您的音乐和发现的错误发送给我们:hello@audiokitpro.com 32 | 33 | SYNTH ONE 功能: 34 | 这款音乐合成器完全免费,功能齐全,无广告。 没有应用内购买或任何需购买的东西 - 它是终极免费的iPad音乐乐器应用程序! 35 | 36 | •混合模拟/ 多调频合成器 37 | •由着著名音响设计师精心制作的300多种预设 38 | •Audiobus 3 及 应用程序间交互音频 (IAA) 39 | •Ableton Link 40 | •五个振荡器(2个DCO,FM,Sub,Noise) 41 | •2个具有十几种选择可能性的低频振荡器 42 | •复古风格的16步音序器 43 | •经典的聚琶音器 44 | •MIDI输入(使用MIDI键盘或AudioBus / IAA控制) 45 | •用于振幅和滤波器的可触摸ADSR波封 46 | •带有元件的调频振荡器 47 | •单声道滑行和连奏 48 | •专用正弦/方波-12/24 Sub Osc 49 | •4极复古低通滤波器 50 | •高通/带通滤波器 51 | •优美的Costello残响 52 | •多次击键(乒乓)延迟 53 | •触摸板 54 | •预设和库的导入/导出及更多... 55 | 56 | 附加奖励:完整源代码现已发布! 57 | AudiokitPro.com/Synth 58 | 59 | 此外,它完全是开源的。 使用代码学习如何构建自己的音乐合成器应用程序或自己编辑修改应用程序! 60 | 61 | 官方视频:https://youtu.be/hwDNgCYowYs 62 | 63 | “令人惊叹的声音会让你的耳朵享受一场听觉盛宴” - Stuff Magazine 64 | “本周最佳” - MacBreak 65 | 66 | 即将到来: 67 | •支持MPE (适配Roli Seaboard) 68 | •AUv3插件支持 69 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Navigation/NavButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NavButton.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 8/6/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @IBDesignable 12 | class NavButton: UIView { 13 | 14 | // MARK: - ToggleButton 15 | 16 | private var isOn = false 17 | var value: Double { 18 | get { 19 | return isOn ? 1 : 0 20 | } 21 | set { 22 | isOn = value == 1.0 23 | } 24 | } 25 | 26 | enum Direction: CGFloat { 27 | case left = 0 28 | case right = 180 29 | } 30 | 31 | var arrowDirection: Direction = .left { 32 | didSet { 33 | rotation = arrowDirection.rawValue 34 | } 35 | } 36 | 37 | public var callback: (Double) -> Void = { _ in } 38 | 39 | // Make Button Text Editable in IB 40 | @IBInspectable open var buttonText: String = "Hello" 41 | @IBInspectable open var rotation: CGFloat = 0 42 | 43 | override func draw(_ rect: CGRect) { 44 | NavButtonStyleKit.drawNavButton(frame: CGRect(x: 0, 45 | y: 0, 46 | width: self.bounds.width, 47 | height: self.bounds.height), 48 | isOn: CGFloat(value), 49 | rotation: rotation, 50 | text: buttonText) 51 | } 52 | 53 | // MARK: - Touches 54 | 55 | override func touchesBegan(_ touches: Set, with event: UIEvent?) { 56 | for _ in touches { 57 | callback(value) 58 | } 59 | } 60 | 61 | override func touchesEnded(_ touches: Set, with event: UIEvent?) { 62 | for _ in touches { 63 | } 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/zh-Hans.lproj/zh-Hans.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UILabel"; text = "Master Compressor"; ObjectID = "4x3-IO-hYz"; */ 2 | "4x3-IO-hYz.text" = "主压缩器"; 3 | 4 | /* Class = "UILabel"; text = "Lock ArpRate"; ObjectID = "8du-td-RcA"; */ 5 | "8du-td-RcA.text" = "锁定琶音器速率"; 6 | 7 | /* Class = "UILabel"; text = "Reverb Input Compressor"; ObjectID = "Acb-r3-neV"; */ 8 | "Acb-r3-neV.text" = "混响输入压缩器"; 9 | 10 | /* Class = "UILabel"; text = "DelFCut"; ObjectID = "AIL-8o-L1E"; */ 11 | "AIL-8o-L1E.text" = "延迟频率截点"; 12 | 13 | /* Class = "UILabel"; text = "Thresh"; ObjectID = "bwY-pS-LEC"; */ 14 | "bwY-pS-LEC.text" = "阈值"; 15 | 16 | /* Class = "UILabel"; text = "Lock Arp+Seq"; ObjectID = "ct1-IH-Yiw"; */ 17 | "ct1-IH-Yiw.text" = "锁定琶音器和音序器"; 18 | 19 | /* Class = "UILabel"; text = "PostGain"; ObjectID = "GRS-H5-GyB"; */ 20 | "GRS-H5-GyB.text" = "后置增益"; 21 | 22 | /* Class = "UILabel"; text = "Master Volume"; ObjectID = "hU8-IN-aa4"; */ 23 | "hU8-IN-aa4.text" = "主音量"; 24 | 25 | /* Class = "UILabel"; text = "Release"; ObjectID = "O3q-m2-cp5"; */ 26 | "O3q-m2-cp5.text" = "释音"; 27 | 28 | /* Class = "UILabel"; text = "Attack"; ObjectID = "oPw-gV-Wod"; */ 29 | "oPw-gV-Wod.text" = "起音"; 30 | 31 | /* Class = "UILabel"; text = "Reverb Wet Compressor"; ObjectID = "rEb-j6-MNs"; */ 32 | "rEb-j6-MNs.text" = "混响湿式压缩器"; 33 | 34 | /* Class = "UILabel"; text = "DSP Param Halftime"; ObjectID = "slc-Pi-ahg"; */ 35 | "slc-Pi-ahg.text" = "DSP参数半周期"; 36 | 37 | /* Class = "UILabel"; text = "Lock Delay"; ObjectID = "tLJ-xr-40E"; */ 38 | "tLJ-xr-40E.text" = "锁定延迟"; 39 | 40 | /* Class = "UILabel"; text = "DelFRes"; ObjectID = "tRH-wD-RtM"; */ 41 | "tRH-wD-RtM.text" = "延迟频率波峰"; 42 | 43 | /* Class = "UILabel"; text = "Lock Reverb"; ObjectID = "U8L-qY-a4j"; */ 44 | "U8L-qY-a4j.text" = "锁定混响"; 45 | 46 | /* Class = "UILabel"; text = "HAQ PANEL"; ObjectID = "Yqu-Zu-SxM"; */ 47 | "Yqu-Zu-SxM.text" = "开发者面板"; 48 | 49 | /* Class = "UILabel"; text = "Ratio"; ObjectID = "Zr2-3d-n6e"; */ 50 | "Zr2-3d-n6e.text" = "比率"; 51 | 52 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Developer/zh-Hant.lproj/zh-Hant.lproj/Dev.strings: -------------------------------------------------------------------------------- 1 | /* Class = "UILabel"; text = "Master Compressor"; ObjectID = "4x3-IO-hYz"; */ 2 | "4x3-IO-hYz.text" = "主压缩器"; 3 | 4 | /* Class = "UILabel"; text = "Lock ArpRate"; ObjectID = "8du-td-RcA"; */ 5 | "8du-td-RcA.text" = "锁定琶音器速率"; 6 | 7 | /* Class = "UILabel"; text = "Reverb Input Compressor"; ObjectID = "Acb-r3-neV"; */ 8 | "Acb-r3-neV.text" = "混响输入压缩器"; 9 | 10 | /* Class = "UILabel"; text = "DelFCut"; ObjectID = "AIL-8o-L1E"; */ 11 | "AIL-8o-L1E.text" = "延迟频率截点"; 12 | 13 | /* Class = "UILabel"; text = "Thresh"; ObjectID = "bwY-pS-LEC"; */ 14 | "bwY-pS-LEC.text" = "阈值"; 15 | 16 | /* Class = "UILabel"; text = "Lock Arp+Seq"; ObjectID = "ct1-IH-Yiw"; */ 17 | "ct1-IH-Yiw.text" = "锁定琶音器和音序器"; 18 | 19 | /* Class = "UILabel"; text = "PostGain"; ObjectID = "GRS-H5-GyB"; */ 20 | "GRS-H5-GyB.text" = "后置增益"; 21 | 22 | /* Class = "UILabel"; text = "Master Volume"; ObjectID = "hU8-IN-aa4"; */ 23 | "hU8-IN-aa4.text" = "主音量"; 24 | 25 | /* Class = "UILabel"; text = "Release"; ObjectID = "O3q-m2-cp5"; */ 26 | "O3q-m2-cp5.text" = "释音"; 27 | 28 | /* Class = "UILabel"; text = "Attack"; ObjectID = "oPw-gV-Wod"; */ 29 | "oPw-gV-Wod.text" = "起音"; 30 | 31 | /* Class = "UILabel"; text = "Reverb Wet Compressor"; ObjectID = "rEb-j6-MNs"; */ 32 | "rEb-j6-MNs.text" = "混响湿式压缩器"; 33 | 34 | /* Class = "UILabel"; text = "DSP Param Halftime"; ObjectID = "slc-Pi-ahg"; */ 35 | "slc-Pi-ahg.text" = "DSP参数半周期"; 36 | 37 | /* Class = "UILabel"; text = "Lock Delay"; ObjectID = "tLJ-xr-40E"; */ 38 | "tLJ-xr-40E.text" = "锁定延迟"; 39 | 40 | /* Class = "UILabel"; text = "DelFRes"; ObjectID = "tRH-wD-RtM"; */ 41 | "tRH-wD-RtM.text" = "延迟频率波峰"; 42 | 43 | /* Class = "UILabel"; text = "Lock Reverb"; ObjectID = "U8L-qY-a4j"; */ 44 | "U8L-qY-a4j.text" = "锁定混响"; 45 | 46 | /* Class = "UILabel"; text = "HAQ PANEL"; ObjectID = "Yqu-Zu-SxM"; */ 47 | "Yqu-Zu-SxM.text" = "开发者面板"; 48 | 49 | /* Class = "UILabel"; text = "Ratio"; ObjectID = "Zr2-3d-n6e"; */ 50 | "Zr2-3d-n6e.text" = "比率"; 51 | 52 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Sequencer/UI Components/RateKnob.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RateKnob.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 8/5/17. 6 | // Copyright © 2017 AudioKit. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public class RateKnob: MIDIKnob { 12 | 13 | var rate: Rate { 14 | return Rate(rawValue: Int(knobValue * CGFloat(Rate.count))) ?? Rate.sixtyFourth 15 | } 16 | 17 | private var _value: Double = 0 18 | 19 | override public var value: Double { 20 | get { 21 | if timeSyncMode { 22 | return rate.frequency 23 | } else { 24 | return _value 25 | } 26 | } 27 | set(newValue) { 28 | _value = onlyIntegers ? round(newValue) : newValue 29 | _value = range.clamp(_value) 30 | if !timeSyncMode { 31 | knobValue = CGFloat(_value.normalized(from: range, taper: taper)) 32 | } 33 | } 34 | } 35 | 36 | // Init / Lifecycle 37 | override init(frame: CGRect) { 38 | super.init(frame: frame) 39 | contentMode = .redraw 40 | } 41 | 42 | required public init?(coder: NSCoder) { 43 | super.init(coder: coder) 44 | isUserInteractionEnabled = true 45 | contentMode = .redraw 46 | } 47 | 48 | override func setPercentagesWithTouchPoint(_ touchPoint: CGPoint) { 49 | 50 | // Knobs assume up or right is increasing, and down or left is decreasing 51 | knobValue += (touchPoint.x - lastX) * knobSensitivity 52 | knobValue -= (touchPoint.y - lastY) * knobSensitivity 53 | knobValue = (0.0 ... 1.0).clamp(knobValue) 54 | if timeSyncMode { 55 | value = rate.frequency 56 | } else { 57 | value = Double(knobValue).denormalized(to: range, taper: taper) 58 | } 59 | setValueCallback(value) 60 | lastX = touchPoint.x 61 | lastY = touchPoint.y 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/TAAE/AETypes.m: -------------------------------------------------------------------------------- 1 | // 2 | // AETypes.m 3 | // TheAmazingAudioEngine 4 | // 5 | // Created by Michael Tyson on 23/03/2016. 6 | // Copyright © 2016 A Tasty Pixel. All rights reserved. 7 | // 8 | // This software is provided 'as-is', without any express or implied 9 | // warranty. In no event will the authors be held liable for any damages 10 | // arising from the use of this software. 11 | // 12 | // Permission is granted to anyone to use this software for any purpose, 13 | // including commercial applications, and to alter it and redistribute it 14 | // freely, subject to the following restrictions: 15 | // 16 | // 1. The origin of this software must not be misrepresented; you must not 17 | // claim that you wrote the original software. If you use this software 18 | // in a product, an acknowledgment in the product documentation would be 19 | // appreciated but is not required. 20 | // 21 | // 2. Altered source versions must be plainly marked as such, and must not be 22 | // misrepresented as being the original software. 23 | // 24 | // 3. This notice may not be removed or altered from any source distribution. 25 | // 26 | 27 | #import "AETypes.h" 28 | 29 | AudioStreamBasicDescription const AEAudioDescription = { 30 | .mFormatID = kAudioFormatLinearPCM, 31 | .mFormatFlags = kAudioFormatFlagIsFloat | kAudioFormatFlagIsPacked | kAudioFormatFlagIsNonInterleaved, 32 | .mChannelsPerFrame = 2, 33 | .mBytesPerPacket = sizeof(float), 34 | .mFramesPerPacket = 1, 35 | .mBytesPerFrame = sizeof(float), 36 | .mBitsPerChannel = 8 * sizeof(float), 37 | .mSampleRate = 0, 38 | }; 39 | 40 | AudioStreamBasicDescription AEAudioDescriptionWithChannelsAndRate(int channels, double rate) { 41 | AudioStreamBasicDescription description = AEAudioDescription; 42 | description.mChannelsPerFrame = channels; 43 | description.mSampleRate = rate; 44 | return description; 45 | } 46 | 47 | AEChannelSet AEChannelSetDefault = {0, 1}; 48 | -------------------------------------------------------------------------------- /AudioKitSynthOne/Presets/Manager+PresetsDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Manager+PresetsDelegate.swift 3 | // AudioKitSynthOne 4 | // 5 | // Created by AudioKit Contributors on 5/25/18. 6 | // Copyright © 2018 AudioKit. All rights reserved. 7 | // 8 | 9 | // Presets Delegate 10 | 11 | extension Manager: PresetsDelegate { 12 | 13 | func presetDidChange(_ newActivePreset: Preset) { 14 | 15 | conductor.synth.reset() 16 | 17 | activePreset = newActivePreset 18 | 19 | if let headerVC = self.children.first as? HeaderViewController { 20 | headerVC.activePreset = activePreset 21 | } 22 | 23 | // Set parameters from preset 24 | self.loadPreset() 25 | 26 | DispatchQueue.main.async { 27 | self.conductor.updateAllUI() 28 | } 29 | 30 | // Display new preset name in header 31 | DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { 32 | let message = "\(self.activePreset.position): \(self.activePreset.name)" 33 | self.updateDisplay(message) 34 | } 35 | 36 | // UI Updates for non-bound controls 37 | DispatchQueue.main.async { 38 | // Octave position 39 | self.keyboardView.firstOctave = self.activePreset.octavePosition + 2 40 | self.octaveStepper.value = Double(self.activePreset.octavePosition) 41 | } 42 | 43 | // Save App Settings 44 | saveAppSettingValues() 45 | } 46 | 47 | func updateDisplay(_ message: String) { 48 | if let headerVC = self.children.first as? HeaderViewController { 49 | headerVC.displayLabel.text = message 50 | } 51 | } 52 | 53 | func saveEditedPreset(name: String, category: Int, bank: String) { 54 | activePreset.name = name 55 | activePreset.category = category 56 | activePreset.bank = bank 57 | // activePreset.isUser = true 58 | saveValuesToPreset() 59 | } 60 | 61 | func banksDidUpdate() { 62 | saveBankSettings() 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /AudioKitSynthOne/DSP/README.md: -------------------------------------------------------------------------------- 1 | # AudioKit Synth One DSP 2 | 3 | Architecture 4 | h1 5 | == 6 | 7 | * Global enums 8 | `S1Parameter.h` 9 | Enums for every kernel parameter are defined here, and exposed to Swift, ObjC, and C++. 10 | 11 | 12 | * Swift wrapper 13 | `AKSynthOne.swift` 14 | 15 | * ObjC++ AudioUnit 16 | `S1AudioUnit.h` 17 | 18 | S1AudioUnit owns the AudioUnit instance of the kernel and facilitates communication between the Swift UI layer and the C++ DSP kernel. 19 | It defines several structs used for communication between the render thread and the main/ui thread. 20 | It depends on a 3rd party SDK to faciliate messaging between the main thread and the render thread. 21 | 22 | 23 | * Kernel 24 | `S1DSPKernel.hpp` 25 | Note that this header defines the values for the array of S1ParameterInfo objects, which define the min, default, max for every parameter to the kernel. 26 | 27 | `S1DSPKernel+process.mm` 28 | Kernel Process 29 | The architecture of this application is to prepare objects for the kernel's real-time render thread consumption, then message those state changes to the ui-thread. 30 | This render thread code is 75% of the application's cpu. This code must be continuously tested and optimized. 31 | This code must not block, which also means no allocation of objects. 32 | Much consideration was given to Michael Tyson's render thread analysis: [Four common mistakes in audio development](http://atastypixel.com/blog/four-common-mistakes-in-audio-development/) 33 | Great care was given to manage incoming midi events outside of process() 34 | The Sequencer and Arpeggiator code is inside process() but it is computationally trivial. 35 | 36 | 37 | * NoteState 38 | `S1NoteState.hpp` 39 | S1NoteState is the atomic dsp note object. 40 | The kernel manages a single instance for mono mode, and a managed array of count "polyphony" for polyphonic mode. 41 | Kernel presents 2 global LFOs to every NoteState object. This is an area we'd like to generalize while maintaining backwards compatibility. Brice Beasly has some excellent designs. 42 | 43 | --------------------------------------------------------------------------------