Sounds are hard to understand and explain. SoundsGood allows musicians to understand their music scientifically. Also to strike the balance between analytical representation of sound and musicianβs understandability. π΅
Frequency, time, and timbre are the three main aspects of acoustics analysis in our application. With such division, we further developed more features under these aspects.
Clone the repository on command line or on Xcode.
We originally used Appleβs official framework AVFoundation
for audio data capturing and manipulation, but we found that this package requires verbose code to implement simple functions.
Therefore, we need to seek a reliable alternative to solve this problem. That is why the AudioKit collection is introduced in SoundsGood.
SwiftUI with MVVM. With the property wrapper provided by SwiftUI and Combine, we can easily build relations between View and ViewModel with less code.
We keep our logic in ViewModel
, and UI related in View
. The concepts of parent View Model and child View Model is also implemented.
We keep a clean file structure by features. Core functions are in the Core
folder.
.
βββ README.md
βββ visualizer
βΒ Β βββ AudioData
βΒ Β βββ Core
βΒ Β βΒ Β βββ Audio
βΒ Β βΒ Β βΒ Β βββ ViewModels
βΒ Β βΒ Β βΒ Β βΒ Β βββ AudioViewModel.swift
βΒ Β βΒ Β βΒ Β βββ Views
βΒ Β βΒ Β βΒ Β βββ PitchView.swift
βΒ Β βΒ Β βΒ Β βββ SoundView.swift
βΒ Β βΒ Β βΒ Β βββ TimbreView.swift
βΒ Β βΒ Β βββ Components
βΒ Β βΒ Β βΒ Β βββ Buttons
βΒ Β βΒ Β βΒ Β βΒ Β βββ SettingButton.swift
βΒ Β βΒ Β βΒ Β βββ Components here ...
βΒ Β βΒ Β βββ ContentView.swift
βΒ Β βΒ Β βββ Features here with ViewModels and Views ...
βΒ Β βββ Extensions
βΒ Β βββ Helpers
βΒ Β βββ Models
βΒ Β βΒ Β βββ Audio.swift
βΒ Β βΒ Β βββ Models here ...
βΒ Β βββ WatchConnectivityViewModel.swift
βΒ Β βββ visualizerApp.swift
Feel free to open a new issue or pull request. Conventional commits are encouraged.
Read the CONTRIBUTING.md file for more information.
If you are interesting in beta testing, you may take a look of the TestFlight beta.
For extracting frequency data from sound samples, read SCRIPTS.md.