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.
- Various visualization of sound including frequency-domain, time-domain, and harmonics. ✨
- Describe your sound with a simple and intuitive interface. 📝
- Intergrated with Watch app and adaption for iPad. 📱
- Xcode 13
- Swift 5
- Any model of iPhone with iOS 14+
- Any model of iPad with iPadOS 15+
- Any model of Apple Watch with watchOS 14+
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.
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.