JamChat
JamChat
PROJECT OVERVIEW
JamChat is an iOS app that allows you to create virtual musical collaborations with your friends, even if you have little music experience. It was developed during my time at Facebook University for Engineering during the summer of 2016.
TECHNOLOGIES USED
Swift, AudioKit
TEAM
Alexina Boudreaux - Software Engineer, Simon Posada Fishman - Software Engineer, Meena Sengottuvelu - Software Engineer
HOW IT WORKS
JamChat first requires you to sign-in using Facebook. Then, you can create a ‘jam’ with any of your Facebook friends. To start, you select the friends you want to jam with, create a jam with specifications for tempo and length, and give your jam a title. There are many options for how to create music using JamChat. One option are the drum loops. There are 6 different drum loops provided for each tempo available for jams. This will provide a good beat for your jam. To add a drum loop to the jam, you simply drag and drop it onto the chat. Each drum loop lasts one bar. Another option is the keyboard. JamChat provides you a keyboard with the notes C-B, where the white keys represent white keys and the colored keys represent black keys. You can choose the keyboard to sound like various instruments including a bass, guitar, choir, violin, or saxophone. To add your keyboard to the chat, you click on the ‘rec’ button. You will be given a 4 second countdown in the tempo of the song, and then the recording will start and you can play any melody you like on the keyboard. You can also use your phone’s internal microphone to add to the jam. The microphone uses the same recording system as the keyboard. The last option to add to the jam is chords. You can select any major, minor, or seventh chord to add to the the jam. To add a chord you simply drag it into the jam like the drum loops, and each chord lasts one bar.
JamChat uses many outside frameworks and CocoaPods. In order to create the keyboard, we used an audio synthesis, processing, and analysis framework called AudioKit. For UI, networking, Facebook login, and parsing we used the following CocoaPods:
UI
EasyAnimation
FDWaveformView
KTCenterFlowLayout
XLPagerTabStrip
CircleMenu
IntervalSlider
DGElasticPullToRefresh
BAPulseView
DGElasticPullToRefresh
NVActivityIndicatorView
GMStepper
RAMREEL
RBBANIMATION
UICollectionviewrightaligned layout
Facebook login
FBSDKCoreKit
FBSDKLoginKit
parsing/utilities
TFGRelativeDateFormatter
ParseFacebookUtilsV4
Parse
ParseUI
networking
AFNetworking
PubNub
My specific role within the team was to manage all the aspects of the app that require musicality. As a musician and software engineer, I was able to implement features that resulted in users having the best sounding jam with the least amount of musical knowledge required. For example, giving the songs a set tempo and length, providing visual representations of the tempo, and adding pre-created drum loops and chords all provide users with an easier way to create a groovy jam. I also worked with AudioKit to understand its features and how to use it to create the keyboards.
GITHUB
Click here to take a look at the GitHub repository for JamChat.