A clone for Apple's Voice Memos app.

Overview

VoiceMemosClone

A clone for Apple's Voice Memos app.

Article on Medium.

Please read the article on how I created this project here.

License

Freely provided under the MIT License.

You might also like...
Classical music front-end for Apple Music: iOS app

concertino_ios Concertino is a classical music front-end for Apple Music. It's splitted in several projects. This one provides only the iOS app. (Ther

React Native version of the Podverse Mobile App

Podverse Podverse is an open source podcast manager for iOS, Android, and web. Check us out at podverse.fm! Free features: Subscribe to podcasts Auto-

Professional Radio Station App - now supports Swift 5 / Xcode 10!
Professional Radio Station App - now supports Swift 5 / Xcode 10!

Swift Radio Swift Radio is an open source radio station app with robust and professional features. This is a fully realized Radio App built entirely i

iOS music player app that downloads music from the internet, even YouTube
iOS music player app that downloads music from the internet, even YouTube

About YouTag is an iOS music player app that downloads music from the internet, even YouTube, and manages it in a local library. Music videos can also

MuVis is a macOS, iOS, iPadOS app for real-time music visualization.
MuVis is a macOS, iOS, iPadOS app for real-time music visualization.

MuVis MuVis is an open-source multiplatform app (using SwiftUI, Swift, and Xcode) for music visualization. It renders informative (and musically usefu

Swift Radio is an open source radio station app with robust and professional features.
Swift Radio is an open source radio station app with robust and professional features.

Swift Radio Swift Radio is an open source radio station app with robust and professional features. This is a fully realized Radio App built entirely i

Radio & Podcast Streaming App For WPRK
Radio & Podcast Streaming App For WPRK

WPRK(iOS & iPadOS) Radio & Podcast Streaming App For WPRK, a licensed FCC broadcast station, The app allows users to connect to live music streams and

A tiny menu bar app detecting the chords of the songs you are listening on iTunes or Spotify.
A tiny menu bar app detecting the chords of the songs you are listening on iTunes or Spotify.

ChordDetector A tiny menu bar app that listens iTunes and Spotify to detect chords of songs! Demo Features iTunes and Spotify support. Saves up to 20

macOS app that allows the control of Spotify and AppleMusic/iTunes music playback from the menu bar.
macOS app that allows the control of Spotify and AppleMusic/iTunes music playback from the menu bar.

PlayStatus is a simple macOS app that allows the control of Spotify, Apple Music(macOS 10.15+) and iTunes including iTunes Radio/Beats1 playback from

Comments
  • Sometimes file doesn't get written

    Sometimes file doesn't get written

    I can successfully record and write files but every now and then (around 10% of the times) it fails and the file ends up with 0 seconds length. It doesn't throw an error anywhere, just the file is empty.

    I'm happy to help and even submit a PR but I'm a bit stuck and I don't really know where to move on.

    opened by nyeu 0
  • APP CRASH ERROR LIKE

    APP CRASH ERROR LIKE "format.sampleRate"

    Hello sir,

    I am getting below error while recording audio in foreground

    Error: required condition is false: [AVAudioIONodeImpl.mm:1064:SetOutputFormat: (format.sampleRate == hwFormat.sampleRate)]

    Xcode :11.4.1 Language swift 4.2 MacOS: Catalina version 10.15.5 Iphone : 8plus iphone Os: 13.3.1

    Below is my code:

    File name: RecorderViewContrlloer

    let settings = [AVFormatIDKey: kAudioFormatLinearPCM, AVLinearPCMBitDepthKey: 16, AVLinearPCMIsFloatKey: true, AVSampleRateKey: Float(16000.0), AVNumberOfChannelsKey: 1] as [String : Any]

        self.recordingTs = NSDate().timeIntervalSince1970
        self.silenceTs = 0
        do {
            let session = AVAudioSession.sharedInstance()
            try session.setCategory(.playAndRecord, mode: .default)
            try session.setActive(true)
        } catch let error as NSError {
            print(error.localizedDescription)
            return
        }
        let inputNode = self.audioEngine.inputNode
        guard let format = self.format() else {
            return
        }
    

    // let format = inputNode.inputFormat(forBus: 0)

        inputNode.installTap(onBus: 0, bufferSize: 512, format: format) { (buffer, time) in
            
            let level: Float = -50
            let length: UInt32 = 1024
            buffer.frameLength = length
            let channels = UnsafeBufferPointer(start: buffer.floatChannelData, count: Int(buffer.format.channelCount))
            var value: Float = 0
            vDSP_meamgv(channels[0], 1, &value, vDSP_Length(length))
            var average: Float = ((value == 0) ? -100 : 20.0 * log10f(value))
            if average > 0 {
                average = 0
            } else if average < -100 {
                average = -100
            }
            let silent = average < level
            print(self.audioEngine.manualRenderingSampleTime)
            let ts = NSDate().timeIntervalSince1970
            self.totLTs = ts
            if ts - self.renderTs > 0.1 {
                let floats = UnsafeBufferPointer(start: channels[0], count: Int(buffer.frameLength))
                let frame = floats.map({ (f) -> Int in
                    return Int(f * Float(Int16.max))
                })
                DispatchQueue.main.async
                    {
                        self.renderTs = ts
                        let len = self.audioView.waveforms.count
                        for i in 0 ..< len {
                            let idx = ((frame.count - 1) * i) / len
                            let f: Float = sqrt(1.5 * abs(Float(frame[idx])) / Float(Int16.max))
                            self.audioView.waveforms[i] = min(49, Int(f * 50))
                        }
                        self.audioView.active = !silent
                        self.audioView.setNeedsDisplay()
                }
            }
            
            let write = true
            if write {
                if self.audioFile == nil {
                    self.audioFile = self.createAudioRecordFile()
                }
                if let f = self.audioFile {
                    do {
                        try f.write(from: buffer)
                    } catch let error as NSError {
                        print(error.localizedDescription)
                    }
                }
            }
        }
        do {
            recorder = try AVAudioRecorder(url: self.fileUrl(), settings: settings)
            recorder?.delegate = self
            recorder?.isMeteringEnabled = true
            recorder?.prepareToRecord()
            self.audioEngine.prepare()
            try self.audioEngine.start()
        } catch let error as NSError {
            print(error.localizedDescription)
            return
        }
        self.updateUI(.recording)
    }
    

    Above is my code of recording. Application is crash on inputNode.installTap(onBus: 0, bufferSize: 512, format: format) { (buffer, time) in

    And give error like above mention

    We have to deploy the application so please suggest and guide us for this issue

    Look forward to hearing from you soon.. Regards Akash

    opened by akashrtridhya 1
  • AVFormatIDKey & File Format

    AVFormatIDKey & File Format

    Does it work only if AVFormatIDKey = kAudioFormatLinearPCM and file format ".wav" ? I tried changing to kAudioFormatAppleLossless and ".m4a" format and its not working.

    opened by chakry24 0
  • Waves are not proper, its showing static waves always

    Waves are not proper, its showing static waves always

    While recording I'm able to see the waves, but there is no change in the waves according to voice. Its static always. Please correct me if I'm wrong anywhere.

    Simulator Screen Shot - iPhone X - 2019-04-15 at 16 43 46

    opened by Sivagami-Sundari 0
Owner
Hassan ElDesouky
iOS @Instabug, previously a Google Summer of Code Student at the Swift Compiler, and a WWDC20 scholar.
Hassan ElDesouky
🗣Voice overlay helps you turn your user's voice into text, providing a polished UX while handling for you the necessary permissions

Voice overlay helps you turn your user's voice into text, providing a polished UX while handling for you the necessary permissions. It uses i

Algolia 490 Dec 19, 2022
Another is a tweak written in Logos and Objective-C to customize Apple's voice assistant - Siri.

Preview On screeen: In reality: English: Another Allows you to customize Siri. Only for Jailbreak users. Compiling Theos is required to compile the pr

Matthew 3 May 5, 2022
iOS framework that enables detecting and handling voice commands using microphone.

iOS framework that enables detecting and handling voice commands using microphone. Built using Swift with minumum target iOS 14.3.

Ahmed Abdelkarim 20 Aug 4, 2022
Fast Campus iOS App Development All-in-one Package Online Clone Coding

애플뮤직 클론 코딩 패스트캠퍼스 iOS 앱 개발 올인원 패키지 Online 클론코딩 사용요소 UICollectionReusableView , c

JungMin 1 Dec 21, 2021
A Spotify clone created using SwiftUI

Spotify Clone Its a Spotify clone created using SwiftUI. Deployment To deploy th

Manav Deep Singh Lamba 1 Jan 17, 2022
AIB indicates for your app users which audio is playing. Just like the Podcasts app.

Audio Indicator Bars for iOS and tvOS Indicates for your app users which audio is playing. Just like the Podcasts app. Index Requirements and Details

Leonardo Cardoso 285 Nov 23, 2022
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

null 104 Jan 7, 2023
FDWaveformView is an easy way to display an audio waveform in your app

FDWaveformView is an easy way to display an audio waveform in your app. It is a nice visualization to show a playing audio file or to select a position in a file.

William Entriken 1.1k Dec 21, 2022
Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture.

Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern ?? and MVVM architecture ?? . Made with love ❤️ by Sameer Nawaz

Sameer Nawaz 120 Jan 4, 2023
AudioKit Synth One: Open-Source iOS Synthesizer App

AudioKit Synth One We've open-sourced the code for this synthesizer so that everyone is able to make changes to the code, introduce new features, fix

AudioKit 1.5k Dec 25, 2022