Coder Social home page Coder Social logo

audiokit / dunneaudiokit Goto Github PK

View Code? Open in Web Editor NEW
41.0 19.0 27.0 629 KB

Sampler and Synth Instruments as well as Chorus, Flanger and Stereo Delay Effects for AudioKit

License: MIT License

Swift 6.90% C++ 14.09% C 71.47% Objective-C 1.30% Objective-C++ 6.23%
audiokit sampler synth chorus flanger

dunneaudiokit's Introduction

AudioKit

Build Status License Platform Reviewed by Hound Twitter Follow

AudioKit is an audio synthesis, processing, and analysis platform for iOS, macOS (including Catalyst), and tvOS.

Installation

Using Xcode, you can add AudioKit and any of the other AudioKit libraries using Collections

  1. Select File -> Add Packages...
  2. Click the + icon on the bottom left of the Collections sidebar on the left.
  3. Choose Add Swift Package Collection from the pop-up menu.
  4. In the Add Package Collection dialog box, enter https://swiftpackageindex.com/AudioKit/collection.json as the URL and click the "Load" button.
  5. It will warn you that the collection is not signed, but it is fine, click "Add Unsigned Collection".
  6. Now you can add any of the AudioKit Swift Packages you need and read about what they do, right from within Xcode.

Documentation

Docs appear on the AudioKit.io Web Site. You can also generate the documentation in Xcode by pulling down the Product menu and choosing "Build Documentation".

Examples

The AudioKit Cookbook contains many recipes for simple uses for AudioKit components.

Getting help

  1. Post your problem to StackOverflow with the #AudioKit hashtag.

  2. Once you are sure the problem is not in your implementation, but in AudioKit itself, you can open a Github Issue.

  3. If you, your team or your company is using AudioKit, please consider sponsoring Aure on Github Sponsors.

dunneaudiokit's People

Contributors

aure avatar bdrelling avatar eljeff avatar mahal avatar nickculbertson avatar rex4539 avatar wtholliday avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dunneaudiokit's Issues

Add voice changing to Synth()

Description

The Synth in DunneAudioKit works great, but it lacks the ability to change the oscillator voices from the Swift side. The voices also can't be changed after initialization.

Proposed Solution

Allow the user to set and change voices dynamically with AUParameters.

Describe Alternatives You've Considered

Create and expose an AUParameter to change voices.

Additional Context

No response

Ramping mastervolume for Synth and Sampler

I have a sequencer based on sampled sounds. The samples are around 1-2 secs long, but the sequencer can play them faster, meaning it stops the sample before it gets to the end.

When it does so, there’s a “click/tick” sound and I’m trying to prevent this by ramping the volume down before actually stopping the node. However, the ramp doesn't seem to have an effect.

I've managed to reproduce this with the Synth as well, for simplicity.

To Reproduce
See example code here:

    let akEngine = AudioEngine()
    let osc = Synth()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        akEngine.output = osc
        do {
            try akEngine.start()
        } catch {
            print("Couldn't start AudioEngine.")
        }
        
        osc.play(noteNumber: 50, velocity: 100)
        osc.$masterVolume.ramp(to: 0, duration: 1)
        sleep(2)
        osc.stop()
    }

Expected behavior
I would have expected the note to stop playing before the sleep call finishes, thus ending via the ramp, not abruptly via the stop call.

Details (please complete the following information):

Type: Simulator iPhone 13 Pro
OS: iOS 15.5
AudioKit Version 5.4.2
DunneAudioKit Version 5.4.1

verySimpleRampTest2.zip
Sample project attached.

SFZ with loop_mode=no_loop still loops

macOS Version(s) Used to Build

macOS 12 Monterey

Xcode Version(s)

Xcode 14

Description

  1. Create a SFZ file with loop_mode=no_loop
  2. Open SFZ with .loadSFZ() of DunneAudioKit.Sampler
  3. Play note using .play() of DunneAudioKit.Sampler

Expected result:

  • Sample will play once

Actual result:

  • Sample will play again and again until .stop() to the same note is sent

Crash Logs, Screenshots or Other Attachments (if applicable)

No response

Does not build with Xcode 15 beta 2

macOS Version(s) Used to Build

macOS 13 Ventura

Xcode Version(s)

Xcode 15 beta 2

Description

Cookbook does not build because of a build error caused by DunneAudioKit.

See my issue on Cookbook for more information: AudioKit/Cookbook#131

Feel free to close one of both :)

Crash Logs, Screenshots or Other Attachments (if applicable)

No response

Documentation doesn't show "Sampler" as class

macOS Version(s) Used to Build

macOS 13 Ventura

Xcode Version(s)

Xcode 14

Description

Steps to reproduce:

Expected result:

  • Class "Sampler" shows in navigation on the left and on the start page
  • Articles have a well balanced structure and are easy to navigate

Actual result:

Crash Logs, Screenshots or Other Attachments (if applicable)

No response

Tuning support

Description

Previous versions of the sampler's Swift wrapper offered a setNoteFrequency() method that allowed tuning individual notes. Current versions lack this method thus limiting Swift apps to 12-ET.

Proposed Solution

Bring back setNoteFrequency(). Allow it to work on the fly (ie., without reloading samples).

Describe Alternatives You've Considered

Write a custom wrapper

Additional Context

No response

Sampler (Dunne): Assertion failure (segments) in `DunneCoreMultiSegmentEnvelopeGenerator::skipEmptySegments()`

Describe the bug
When attempting to play a note with the Sampler() object, the app crashes.
I.E. sampler.play(noteNumber: velocity: channel)

It is a failed assertion on segments in the envelope generator:

Assertion failed: (segments), function skipEmptySegments, file EnvelopeGeneratorBase.cpp, line 93.
dyld4 config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib:/usr/lib/libMTLCapture.dylib

This is with samples loaded into the sampler via the SFZ method (the preferred method). I have tried loading a sample with Sampler(sampleDescriptor: file) however I am unable to produce any output with this method.

To Reproduce
I have made a rudimentary repo which demonstrates the issue: https://github.com/maksutovic/DunneSamplerCrash-AK-5.2.2

  1. Clone Repo
  2. Run in either Simulator or Device
  3. Assertion failure

Expected behavior
I expect the Sampler() to in fact play the note specified and not crash.

Screenshots
If applicable, add screenshots to help explain your problem.
Screen Shot 2021-11-17 at 12 48 19 PM
Screen Shot 2021-11-17 at 12 48 38 PM

Details (please complete the following information):

  • Type: iPhone 11 Pro OR Simulator
  • OS: iOS 15.1 19B74
  • AudioKit Version: 5.2.2

Additional context
I would be happy to try and resolve this issue however I would definitely need some pointers of how the envelope generator works with the sampler.

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.