Skip to content

Repository files navigation

RhythmBox

A Rhythm Box System for your iOS app 🎵. The easiest way to create Music Rhythm Patterns in Swift.

BuddyBuildVersionLicensePlatformLanguage

What can I do with RhythmBox?

  • Generate a BPM or RPM Tempo
  • Select the Time Signature
  • Create a Rhythm pattern

Demo Project

To run the example project, clone the repo, and run pod install from the Example directory first.

Getting Started

Requirements

  • iOS 8.0+ / tvOS 9.0+
  • Xcode 8.0+
  • Swift 3.0+

Installation with CocoaPods

CocoaPods is a 3rd-party dependency manager for Swift and Objective-C projects. For more information, refer to the CocoaPods Getting Started Guide. Otherwise, you can install CocoaPods with the following command:

$ gem install cocoapods

Podfile

To integrate RhythmBox into your Xcode project using CocoaPods, specify it in your Podfile:

source'https://github.com/CocoaPods/Specs.git'pod'RhythmBox'

Then, run the following command:

$ pod install

Installation Manually

To integrate RhythmBox into your Xcode project manually, just include the filest from /Pod/Classes/ folder in your App’s Xcode project.

Quick Guide

Usage

To Generate a constant BPM signal is as simple as this.

1. Import class
import RhythmBox
2. Create a RhythmBox class
letrhythmBox=RhythmBox(bpm:120, timeSignature:(4,4))
3. Start the Rhythm
rhythmBox.perform{CurrentBeat, CurrentSubBeat, CurrentNote inprint("CurrentBeat", CurrentBeat)print("CurrentSubBeat", CurrentSubBeat)print("CurrentNote", CurrentNote)return.resume
}
4. Stop the Rhythm
rhythmBox.stop()

Examples

Example 1

Create a 120 BPM signal with a block.

letrhythmBox=RhythmBox(bpm:120)
rhythmBox.perform{CurrentBeat, CurrentSubBeat, CurrentNote inprint("CurrentBeat", CurrentBeat)return.resume
}
Example 2

Create a 150 BPM signal with a time signature of 6/8 with default subdivision of

letrhythmBox=RhythmBox(bpm:150, timeSignature:(6,8))
rhythmBox.perform{CurrentBeat, CurrentSubBeat, CurrentNote inprint("CurrentBeat", CurrentBeat)return.resume
}
Example 3

Create a 90 BPM signal with a time signature of 3/4 and subdivision of

letrhythmBox=RhythmBox(bpm:90, timeSignature:(3,4), subdivision:"11")
rhythmBox.perform{CurrentBeat, CurrentSubBeat, CurrentNote inprint("CurrentBeat", CurrentBeat)return.resume
}
Example 4

Create a 90 BPM signal with a time signature of 3/4 and subdivision of

letrhythmBox=RhythmBox(bpm:90, timeSignature:(3,4), subdivision:"111")
rhythmBox.perform{CurrentBeat, CurrentSubBeat, CurrentNote inprint("CurrentBeat", CurrentBeat)return.resume
}
Example 5

Create a 90 BPM signal with a time signature of 3/4 and subdivision of

letrhythmBox=RhythmBox(bpm:90, timeSignature:(3,4), subdivision:"011")
rhythmBox.perform{CurrentBeat, CurrentSubBeat, CurrentNote inprint("CurrentBeat", CurrentBeat)return.resume
}
Example 6

Create a 90 BPM signal with a time signature of 3/4 and subdivision of

letrhythmBox=RhythmBox(bpm:90, timeSignature:(3,4), subdivision:"10111")
rhythmBox.perform{CurrentBeat, CurrentSubBeat, CurrentNote inprint("CurrentBeat", CurrentBeat)return.resume
}

Roadmap

  • CocoaPods support
  • Carthage support
  • Swift Package Manager support
  • Tests

Change Log

See Changelog.md

Contribute

Contributions are welcomed and encouraged 💜.

Author

License

RhythmBox is available under the MIT license. See the LICENSE file for more info.

About

A Rhythm Box System for your iOS app written in Swift. 🎵

Topics

Resources

Stars

113 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages