Skip to content

Commit 6d334f2

Browse files
committed
asking for maudio capture perm perm on launch, other refactors
1 parent 3ccde61 commit 6d334f2

4 files changed

Lines changed: 24 additions & 22 deletions

File tree

native/app/Source/Application.swift

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,18 @@ class Application {
6363
Networking.startMonitor()
6464

6565
checkDriver {
66-
AudioDevice.register = true
67-
audioPipelineIsRunningListener = audioPipelineIsRunning.once {
68-
self.setupUI()
69-
if (User.isFirstLaunch || Constants.DEBUG) {
70-
UI.show()
71-
} else {
72-
UI.close()
66+
Sources.getInputPermission {
67+
AudioDevice.register = true
68+
audioPipelineIsRunningListener = audioPipelineIsRunning.once {
69+
self.setupUI()
70+
if (User.isFirstLaunch || Constants.DEBUG) {
71+
UI.show()
72+
} else {
73+
UI.close()
74+
}
7375
}
74-
76+
setupAudio()
7577
}
76-
setupAudio()
7778
}
7879
}
7980

native/app/Source/Audio/Engine.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class Engine {
7979

8080
private func setupBuffer () {
8181
let framesPerSample = Driver.device!.bufferFrameSize(direction: .playback)
82-
ringBuffer = CARingBuffer<Float>(numberOfChannels: 2, capacityFrames: UInt32(framesPerSample * 8))
82+
ringBuffer = CARingBuffer<Float>(numberOfChannels: 2, capacityFrames: UInt32(framesPerSample * 64))
8383
}
8484

8585
private func attach () {

native/app/Source/Audio/Outputs/Output.swift

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ class Output {
4545
let abl = UnsafeMutableAudioBufferListPointer(ioData)!
4646
let output = Unmanaged<Output>.fromOpaque(inRefCon).takeUnretainedValue()
4747
let engine: Engine! = output.engine!
48-
let inputDevice = Driver.device!
4948
let sampleTime = inTimeStamp.pointee.mSampleTime
5049
var currRate = output.varispeed.rate;
5150

@@ -55,7 +54,7 @@ class Output {
5554
Console.log("Last Input Time: ", engine.lastSampleTime)
5655
Console.log("First Output Time: ", output.firstOutputTime)
5756
Console.log("Delta: ", delta)
58-
output.computeThruOffset(inputDevice: inputDevice, outputDevice: output.device)
57+
output.computeOffset()
5958

6059
Console.log("Initial Offset: ", output.inToOutSampleOffset)
6160
if delta < 0 {
@@ -97,13 +96,15 @@ class Output {
9796
rate = currRate - 0.0002;
9897
}
9998
output.varispeed.rate = rate;
100-
//Console.log("rate: " , rate, error) ;
99+
// Console.log("Rate: \(rate)") ;
101100
}
102101

103102
let startRead = Int64(sampleTime - output.inToOutSampleOffset)
104103
// Console.log("Reading: ", inNumberFrames, startRead)
105104

106-
if engine.ringBuffer.fetch(ioData!, framesToRead: inNumberFrames, startRead: startRead) != .noError {
105+
let err = engine.ringBuffer.fetch(ioData!, framesToRead: inNumberFrames, startRead: startRead)
106+
107+
if err != .noError {
107108
makeBufferSilent(abl)
108109
// var bufferStartTime: SampleTime = 0
109110
// var bufferEndTime: SampleTime = 0
@@ -112,7 +113,7 @@ class Output {
112113
output.firstOutputTime = -1;
113114
output.initialOffset = 0;
114115
output.varispeed.rate = output.intialCalcRate;
115-
Console.log("ERROR");
116+
Console.log("ERROR: \(err)");
116117
return noErr
117118
}
118119
// Console.log("Output Finished! Silence", bufferSilencePercent(ioData!))
@@ -139,7 +140,7 @@ class Output {
139140
self.device = device
140141
self.engine = engine
141142

142-
computeThruOffset(inputDevice: Driver.device!, outputDevice: device)
143+
computeOffset()
143144
outputEngine.setOutputDevice(device)
144145

145146
let outputSampleRate = device.actualSampleRate()!
@@ -183,12 +184,12 @@ class Output {
183184
Console.log("Output Engine started")
184185
}
185186

186-
func computeThruOffset(inputDevice : AudioDevice,
187-
outputDevice: AudioDevice) {
187+
func computeOffset() {
188+
let inputDevice = Driver.device!
188189
let inputOffset = inputDevice.safetyOffset(direction: .recording)
189-
let outputOffset = outputDevice.safetyOffset(direction: .playback)
190190
let inputBuffer = inputDevice.bufferFrameSize(direction: .recording)
191-
let outputBuffer = outputDevice.bufferFrameSize(direction: .playback)
191+
let outputOffset = device.safetyOffset(direction: .playback)
192+
let outputBuffer = device.bufferFrameSize(direction: .playback)
192193
inToOutSampleOffset = Double(inputOffset! + outputOffset! + inputBuffer + outputBuffer)
193194
}
194195

native/app/Source/Audio/Sources/Sources.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ class Sources: NSObject {
6161
reset()
6262
// initializeFile()
6363
// initializeInput()
64-
getInputPermission() {
64+
Sources.getInputPermission() {
6565
self.initializeSystem()
6666
callback(self)
6767
}
6868
}
6969

70-
func getInputPermission (_ callback: @escaping () -> Void) {
70+
static func getInputPermission (_ callback: @escaping () -> Void) {
7171
if !InputSource.hasPermission {
7272
let title = "Microphone Usage Permission"
7373
Alert.confirm(

0 commit comments

Comments
 (0)