Amplitude and Frequencies of sound Analyser
This is mostly correct. The reasoning for using delegates is that the class should inform its delegate, not instruct it. A symptom of this is that SoundAnalyser is formatting the text, which should be the responsibility of the view controller. 

Consider the SoundAnalyzer to be filling the role of the model in the MVC pattern. The model is only responsible for providing data, and should not be concerned with reinterpreting the data for display.

You can use a helper class to encapsulate formatting if the functionality is needed in multiple places.

Examples

SoundAnalyserDelegate: The delegate methods are in the form of advisory notifications or events, instead of instructions. The delegate receives data, instead of pre-formatted text. This can be further improved by passing an aggregate object if the frequency and amplitude always change at the same time (which seems to be the case):

struct SoundAnalyserSample {
    let frequency: Double
    let amplitude: Double
}

protocol SoundAnalyserDelegate {
    func soundAnalyserSample(sample: SoundAnalyserSample)
    // ... and so on
}


SoundAnalyser: Notify the delegate passing a sample.

func tick(){
    let amp = tracker.amplitude
    let freq = tracker.frequency

    if amp &gt; 0.05 &amp;&amp; freq &gt; minimum &amp;&amp; freq &lt; maximum {
        let readNote = notesArray![analyseCapturedSound()]
        let sample = SoundAnalyserSample(
            frequency: freq,
            amplitude: amp
        }
        delegate?.soundAnalyserSample(sample: sample)
    }
}


ViewController: The view controller responds to notifications from the sender (the sound analyser in this case), formats the data, and updates the UI. Note that you also need to ensure that the UI update occurs on the main queue, which is not necessarily guaranteed by the caller.

class ViewController: UIViewController, SoundAnalyserDelegate {

    func soundAnalyserSample(sample: SoundAnalyserSample) {
        DispatchQueue.main.async {
            let frequencyText = String(format:"%f", sample.frequency)
            let amplitudeText = String(format:"%f", sample.amplitude)
            frequencyLabel.text = frequencyText
            amplitudeLabel.text = amplitudeText
        }
    }