Giter VIP home page Giter VIP logo

chassis-ios's People

Contributors

diatrevolo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

chassis-ios's Issues

Expose new API to use Track model uniformly

Is your feature request related to a problem? Please describe.
Many methods in AudioEngine use filenames, URLs and Tracks arbitrarily, a product of ripping Chassis out of a working project.

Describe the solution you'd like
While I'd like to maintain the old method signatures, convenience methods or new full methods, exposed in the protocol, should standardize across the Track model, for simplicity.

Describe alternatives you've considered
N/A

Additional context
N/A

Add non-destructive volume and panning

Is your feature request related to a problem? Please describe.
As a user, I'd like to be able to alter the volume and pan of tracks.

Describe the solution you'd like
This probably involves two new methods that edit the Node in question.

Describe alternatives you've considered
N/A

Additional context
N/A

Convert to Swift Package

Describe the solution you'd like
Moving from a framework to a Swift Package will allow us to release on Swift Package Manager more easily.

Reuse AVAudioPlayerNodes by adding a token system to the Track model

Is your feature request related to a problem? Please describe.
Node allocation and deallocation are expensive activities. Ideally, we want a bunch of nodes, created lazily, that get files from Track models, and files that are tracked by tokens. This allows us to use a single AVAudioFile for multiple tracks as a welcome side effect.

Describe the solution you'd like
Add a token property to Track. On addTrack operations, select an existing node, if available. If not, create a new node. Track these nodes in a dictionary by token number. Set the AVAudioFile via its token into an AVAudioPlayerNode, and set the start time via the Track property.

Nodes not being recycled appropriately on stop()

Describe the bug
On stop, nodes don't get unloaded, but do get reloaded. New ones are created.

To Reproduce
Steps to reproduce the behavior:

  1. Play
  2. Stop
  3. Play

Expected behavior
Nodes should be tagged as not in use if they are to be reloaded. Alternatively, we can keep the engine running after stop.

Expand getMixLength in AudioEngine

Is your feature request related to a problem? Please describe.
getMixLength assumes the track that ends last starts at zero, effectively giving the duration of the longest track. This may not be the case if tracks start at different times, so this method would fail in some cases.

Describe the solution you'd like
getMixLength should account for tracks not starting at zero necessarily.

Describe alternatives you've considered
N/A

Additional context
N/A

Pan and volume are not persistent after stop

Describe the bug
Pan and volume return to default after a stop.

To Reproduce
Steps to reproduce the behavior:

  1. Select a track
  2. Change pan or volume
  3. Play to end
  4. Play again

Expected behavior
Should persist after a stop.

Add scrubTo functionality to AudioEngine

Is your feature request related to a problem? Please describe.
As a user, I'd like to be able to seek to an arbitrary point in time for recording and/or playing.

Describe the solution you'd like
Implement scrubTo, updating currentPosition.

Describe alternatives you've considered
N/A

Additional context
N/A

Add some unit tests

Is your feature request related to a problem? Please describe.
Need some tests, let's be clear.

Describe the solution you'd like
Write the tests!

Describe alternatives you've considered
N/A

Additional context
N/A

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.