
AudioKit ist ein Audio-Framework, das von Audioingenieuren, Programmierern und Musikern speziell für iOS und OSX entwickelt wurde. Es bietet Werkzeuge zur
Verarbeitung und
Synthese von Klang. Unter der Haube verbirgt sich eine Mischung aus Swift, Objective-C, C ++ und C sowie Apples Audio Unit API. Fantastische (und ziemlich ausgefeilte) Technologien sind in eine sehr freundliche Swift-API eingebunden, auf die direkt von Xcode Playgrounds aus zugegriffen werden kann!
In diesem Tutorial werden wir eine Reise durch AudioKit sowie die
Geschichte der Klangsynthese unternehmen. Sie lernen die Grundlagen der Klangphysik und die Funktionsweise der ersten Synthesizer wie der Hammond-Orgel. Auch moderne Techniken, beispielsweise die Probenahme, werden in Betracht gezogen.
Machen Sie Ihr Lieblingsgetränk, lehnen Sie sich zurück und gehen Sie!
Erster Schritt
Ab AudioKit 3.6 ist das Einrichten von Spielplätzen für die Arbeit mit dem Framework recht einfach geworden. Laden Sie hier die Starter-Wiedergabeliste herunter und entpacken Sie sie.
Die Reise beginnt mit einigen Schritten zum Konfigurieren der Spielplätze für die Arbeit mit AudioKit.
Öffnen Sie die Datei
AudioKitPlaygrounds.xcodeproj in Xcode. Klicken Sie auf die Schaltfläche
+ in der unteren linken Ecke des Bildschirms, wählen Sie
Datei ... und dann
Leer im Bereich
Spielplatz . Speichern Sie die neue Datei zusammen mit den Demo-Spielplätzen im Ordner Spielplätze.
Der neu hinzugefügte Spielplatz startet und sieht ungefähr so aus:

Ersetzen Sie den generierten Code durch Folgendes:
import AudioKitPlaygrounds import AudioKit let oscillator = AKOscillator() AudioKit.output = oscillator try AudioKit.start() oscillator.start() sleep(10)
Der Spielplatz startet erst, wenn Sie das Projekt mindestens einmal zusammengestellt haben. Verwenden Sie dazu den Menüpunkt
Produkt / Build oder die Tastenkombination
⌘-B . Lassen Sie den Spielplatz danach erneut laufen und hören Sie 10 Sekunden lang ein Summen. (Hinweis des Übersetzers: Manchmal verschwindet der Fehler nicht und Sie müssen zu einem anderen Spielplatz wechseln und zurückkehren, damit er funktioniert.) Sie können die Wiedergabe / Stopp-Schaltfläche unten links im Wiedergabefenster verwenden, um die Wiedergabe zu stoppen oder neu zu starten.
Hinweis: Wenn weiterhin Fehler auftreten, starten Sie Xcode neu. Leider sind Frameworks und Spielplätze nicht sehr gut miteinander befreundet und können sich unvorhersehbar verhalten.
Oszillatoren und Klangphysik
Die Menschheit spielt seit Tausenden von Jahren Musik durch verschiedene physische Objekte. Viele unserer üblichen Instrumente wie Gitarren oder Schlagzeug sind Hunderte von Jahren alt. Die ersten aufgezeichneten Erfahrungen mit der Verwendung elektronischer Schaltkreise zur Erzeugung von Schall wurden 1874 von Elias Gray gemacht. Elisha arbeitete auf dem Gebiet der Telekommunikation und erfand den Oszillator - den einfachsten Musiksynthesizer. Mit ihm werden wir unseren Tauchgang beginnen.
Klicken Sie mit der rechten Maustaste auf Ihren Spielplatz, wählen Sie
Neue Spielplatzseite und ersetzen Sie den generierten Code durch den folgenden:
import AudioKitPlaygrounds import AudioKit import PlaygroundSupport
Der Spielplatz wird - wie beabsichtigt - ein kontinuierliches Summen erzeugen. Sie können auf Stopp klicken, um es zu stoppen.
Dies ist fast das gleiche wie auf dem vorherigen Spielplatz, aber dieses Mal werden wir uns mit den Details befassen.
Betrachten Sie alle Schritte der Reihe nach:
- Hier erstellen wir einen Oszillator. Der Oszillator ist der Nachfolger von
AKNode
. Knoten sind die Elemente, aus denen eine Audiokette besteht, die Sound erzeugt und modifiziert.
- Hier verbinden wir den Ausgang unseres letzten Knotens mit der AudioKit-Engine. In unserem Fall nur ein Knoten. Ferner leitet das Framework die Ausgabe des Knotens an das Audiowiedergabegerät.
- Nun, wir starten den Oszillator, am Ausgang sendet er eine Schallwelle.
Der Oszillator erzeugt ein sich wiederholendes Signal, das nicht stoppt. In diesem Spielbuch erzeugt
AKOscillator
eine Sinuswelle. Mit dem AudioKit wird ein digitales Sinuswellensignal an Lautsprecher oder Kopfhörer gesendet. Als Ergebnis hören wir einen Ton, der mit der gleichen Frequenz wie die von uns erzeugte Sinuswelle schwingt. Diese Sinuswelle klingt nicht sehr musikalisch.

Für den Klang dieses Oszillators sind zwei Parameter verantwortlich: Amplitude - die Höhe der Sinuswelle, bestimmt die Lautstärke und Frequenz - die Höhe des Klangs hängt davon ab.
Fügen Sie auf dem Spielplatz direkt nach dem Erstellen des Oszillators die folgenden Codezeilen hinzu:
oscillator.frequency = 300 oscillator.amplitude = 0.5
Der Sound hat sich geändert, jetzt klingt er doppelt so leise und viel leiser. Die Frequenz des Signals wird in Hertz (Anzahl der Wiederholungen pro Sekunde) gemessen und bestimmt die Tonhöhe der Note. Die Amplitude (Amplitude) wird von 0 bis 1 eingestellt und ist für die Lautstärke verantwortlich.
Die Erfindung von Elijah Gray wurde im ersten Patent für ein elektronisches Musikinstrument aufgezeichnet.

Viele Jahre später erfand Leo Theremin ein etwas seltsames Musikinstrument, das bis heute verwendet wird - Theremin. Im Theremin können Sie die Schallfrequenz mit Handbewegungen über dem Instrument ändern. Um zu verstehen, wie das Theremin klingt, können Sie die Vibrationen der Beach Boys hören, und es gibt nichts, mit dem Sie das Theremin verwechseln könnten.
Sie können den Sound von thereminvox simulieren. Fügen Sie dazu den Oszillatoreinstellungen den folgenden Code hinzu:
oscillator.rampDuration = 0.2
Ersetzen Sie die Zeile, in der AudioKit gestartet wird (
try AudioKit.start()
), durch folgende:
let performance = AKPeriodicFunction(every: 0.5) { oscillator.frequency = oscillator.frequency == 500 ? 100 : 500 } try AudioKit.start(withPeriodicFunctions: performance) performance.start()
Mit der Eigenschaft
rampDuration
kann der Oszillator die Werte seiner Parameter (z. B. Frequenz oder Amplitude) reibungslos ändern.
AKPeriodicFunction
ist ein nützliches Dienstprogramm von AudioKit für die regelmäßige Ausführung von Code. In unserem Beispiel wird die Frequenz der Sinuswelle alle 0,5 Sekunden von 500 Hz auf 100 Hz geändert.
Glückwunsch! Du hast gerade dein erstes Theremin gemacht. Ein einfacher Oszillator kann Noten erzeugen, klingt aber nicht sehr schön. Es gibt viele Faktoren, die den Klang physischer Instrumente beeinflussen, wie beispielsweise das Klavier. Und weiter werden wir einige von ihnen betrachten.
Tonumschläge
Wenn ein Musikinstrument eine Note spielt, ändert sich die Lautstärke seines Klangs im Laufe der Zeit, und die Art der Änderungen unterscheidet sich von Instrument zu Instrument. Ein Modell, das diesen Effekt simulieren kann, wird als ADSR-Hüllkurve (Attack-Decay-Sustain-Release) bezeichnet (Hinweis: Zum Kauf verfügbare Synthesizer werden niemals lokalisiert, daher ist der Name der Kurve derselbe, der auf dem Bedienfeld dieses Synthesizers zu sehen ist).

Der ADSR-Umschlag besteht aus:
- Attack : Attack oder Zeit, in der der Sound seine maximale Lautstärke erreicht.
- Zerfall : wild oder Zeit, für die die Lautstärke von maximal auf main abfällt
- Sustain : Die Hauptlautstärke ist im Gegensatz zu den beiden vorherigen Parametern keine Zeit. Nach dem Angriff und den Wilden und bevor Sie die Synthesizer-Taste loslassen, wird mit dieser Lautstärke ein Sound erzeugt
- Release : Release oder Zeit, in der die Lautstärke Null wird
Im Klavier wird der Klang durch Hämmer extrahiert, die an die Saiten klopfen, und daher sind sie schnell oder, wie man auch sagt, kurze Attacken und Wilds. Die Geige kann einen langen Anschlag haben, wild und nachhaltig, der Musiker kann diese Parameter durch die Art und Weise beeinflussen, wie er den Bogen benutzt.
Eines der ersten elektronischen Musikinstrumente war Hammond Novachord. Dieses Instrument wurde 1939 hergestellt, bestand aus 163 Vakuumröhren und mehr als 1000 Kondensatoren und wog 230 Kilogramm. Leider wurden nur wenige hundert Exemplare angefertigt, und er erhielt nie kommerziellen Erfolg.

Klicken Sie mit der rechten Maustaste auf den
Reisespielplatz , wählen Sie
Neue Spielplatzseite und erstellen Sie eine neue Seite mit dem Namen
ADSR . Ersetzen Sie den generierten Code durch Folgendes:
import AudioKitPlaygrounds import AudioKit import PlaygroundSupport let oscillator = AKOscillator()
Es entsteht einfach ein Oszillator, mit dem wir bereits vertraut sind. Fügen Sie als nächstes den folgenden Code am Ende des Spielplatzes hinzu:
let envelope = AKAmplitudeEnvelope(oscillator) envelope.attackDuration = 0.01 envelope.decayDuration = 0.1 envelope.sustainLevel = 0.1 envelope.releaseDuration = 0.3
Dadurch wird ein
AKAmplitudeEnvelope
, der den ADSR-Envelope definiert. Die Dauerparameter (attackDuration, DecayDuration, releaseDuration) werden in Sekunden angegeben, und die Lautstärke (SustainLevel) wird im Bereich von 0 bis 1 eingestellt.
AKAmplitudeEnvelope
ist der Nachfolger von
AKNode
auf die gleiche Weise wie
AKOscillator
. Im obigen Code übergeben wir die Oszillator-Hüllkurven-Knoten an den Initialisierer und verbinden so die Knoten.
Fügen Sie als Nächstes den folgenden Code hinzu:
AudioKit.output = envelope let performance = AKPeriodicFunction(every: 0.5) { if (envelope.isStarted) { envelope.stop() } else { envelope.start() } } try AudioKit.start(withPeriodicFunctions: performance) performance.start() oscillator.start() PlaygroundPage.current.needsIndefiniteExecution = true
Es wird AudioKit starten, aber dieses Mal speisen wir die Ausgabe vom ADSR-Knoten zu seiner Eingabe. Um den ADSR-Effekt zu hören, schalten wir den Knoten mit der
AKPeriodicFunction
ständig ein und aus.

Jetzt können Sie hören, wie die Note in Zyklen gespielt wird, aber diesmal ähnelt sie eher einem Klavier.
Die Schleife wird bei jeder Iteration zweimal pro Sekunde ausgeführt und startet oder stoppt den ADSR. Wenn der ADSR mit einem schnellen Angriff beginnt, erreicht die Lautstärke in 0,01 Sekunden ihren Maximalwert. Danach sinkt die Lautstärke in 0,1 Sekunden auf den Hauptpegel und bleibt dort 0,5 Sekunden lang und fällt schließlich in 0,3 Sekunden ab.
Sie können selbst mit den Parametern spielen und versuchen, beispielsweise den Klang einer Geige zu spielen.
Die Geräusche, die wir getroffen haben, basieren auf der Sinuswelle, die
AKOscillator
erzeugt. Obwohl ASDR dabei hilft, raue Klänge auszugleichen, können Sie diese Klänge immer noch nicht als musikalisch bezeichnen.
Weiter werden wir überlegen, wie man einen tieferen Klang bekommt.
Additive Synthese
Jedes Musikinstrument hat seinen eigenen Klang oder Klang.
Ein Timbre unterscheidet die Klänge eines Klaviers von den Klängen einer Geige, obwohl sie dieselbe Note spielen können. Ein wichtiger Parameter des Timbres ist das Klangspektrum. Das Klangspektrum beschreibt den Bereich der wiedergegebenen Frequenzen, die zusammen eine Note ergeben. Unser aktueller Spielplatz verwendet einen Oszillator, der nur mit einer Frequenz klingt und ziemlich künstlich klingt.
Mit einem Satz Oszillatoren können Sie einen lebendigeren Klang erzielen, um eine einzelne Note zu spielen. Dieser Ansatz ist als additive Synthese bekannt und dies ist das Thema unseres nächsten Spielplatzes.
Klicken Sie mit der rechten Maustaste auf den Spielplatz, wählen Sie
Neue Spielplatzseite und erstellen Sie eine neue Seite mit dem Namen
Additive Synthese . Ersetzen Sie den generierten Code durch Folgendes:
import AudioKitPlaygrounds import AudioKit import AudioKitUI import PlaygroundSupport func createAndStartOscillator(frequency: Double) -> AKOscillator { let oscillator = AKOscillator() oscillator.frequency = frequency return oscillator }
Für die additive Synthese benötigen Sie mehrere Oszillatoren, für die wir verwenden werden.
createAndStartOscillator
Fügen Sie als Nächstes den Code hinzu:
let frequencies = (1...5).map { $0 * 261.63 }
Hier nehmen wir ein Zahlenintervall von 1 bis 5 und multiplizieren jedes mit 261,53, der Frequenz der Note. Die resultierenden Mehrfachfrequenzen werden als Harmonische bezeichnet.
Fügen Sie nun den Code hinzu:
let oscillators = frequencies.map { createAndStartOscillator(frequency: $0) }
Hier haben wir für jede der von uns verwendeten Frequenzen einen Oszillator erstellt.
Um Oszillatoren zu kombinieren, fügen Sie den folgenden Code hinzu:
let mixer = AKMixer() oscillators.forEach { $0.connect(to: mixer) }
AKMixer
ist eine andere Art von AudioKit-Knoten. Es empfängt Eingaben von einem oder mehreren Knoten und kombiniert sie zu einem.
Fügen Sie den folgenden Code hinzu:
let envelope = AKAmplitudeEnvelope(mixer) envelope.attackDuration = 0.01 envelope.decayDuration = 0.1 envelope.sustainLevel = 0.1 envelope.releaseDuration = 0.3 AudioKit.output = envelope let performance = AKPeriodicFunction(every: 0.5) { if (envelope.isStarted) { envelope.stop() } else { envelope.start() } } try AudioKit.start(withPeriodicFunctions: performance) performance.start() oscillators.forEach { $0.start() }
Mit diesem Code sollte alles klar sein: Fügen Sie dem Mixer-Ausgang ADSR hinzu, geben Sie ihn über AudioKit aus und schalten Sie ihn regelmäßig ein / aus.
Um mit der additiven Synthese gut umgehen zu können, ist es nützlich, mit verschiedenen Kombinationen dieser Frequenzen zu spielen. Dabei ist die Möglichkeit von Spielplätzen wie Live View für uns ideal.
Fügen Sie dazu den folgenden Code hinzu:
class LiveView: AKLiveViewController { override func viewDidLoad() { addTitle("Harmonics") oscillators.forEach { oscillator in let harmonicSlider = AKSlider( property: "\(oscillator.frequency) Hz", value: oscillator.amplitude ) { amplitude in oscillator.amplitude = amplitude } addView(harmonicSlider) } } } PlaygroundPage.current.needsIndefiniteExecution = true PlaygroundPage.current.liveView = LiveView()
In AudioKit gibt es Kurse speziell für das bequeme Arbeiten auf Spielplätzen. In unserem Beispiel verwenden
AKLiveViewController
und platzieren damit Elemente vertikal. Und auch für jeden Oszillator erstellen wir einen
AKSlider
. Schieberegler werden durch die Werte der Frequenz und Amplitude der Oszillatoren initialisiert und verursachen bei der Interaktion mit ihnen einen Block. Im Block jedes Schiebereglers ändern wir die Amplitude des entsprechenden Oszillators. So können Sie Ihren Spielplätzen einfach Interaktivität hinzufügen.
Um die Ergebnisse des Spielplatzes zu sehen, muss Live View auf dem Bildschirm angezeigt werden. Wählen Sie dazu die Schaltfläche mit sich überschneidenden Kreisen im oberen rechten Teil des Fensters und stellen Sie sicher, dass die richtige Wiedergabeliste für die Live-Ansicht ausgewählt ist.

Um den Ton Ihres Instruments zu ändern, können Sie die Werte jedes Schiebereglers einzeln ändern. Für einen realistischen Klang empfehle ich Ihnen, die im obigen Screenshot gezeigte Konfiguration zu versuchen.
Einer der ersten Synthesizer, der die additive Synthese einsetzte, war Teleharmonium und wog 200 Tonnen! Sein unglaubliches Gewicht und seine Größe wurden höchstwahrscheinlich zum Grund für seine Dunkelheit. Die erfolgreichere Hammond-Orgel verwendete ähnliche Klangräder, war jedoch viel kleiner. Es wurde 1935 erfunden und ist im Zeitalter des Progressive Rock immer noch als beliebtes Instrument bekannt.

Das Tonrad ist eine rotierende Scheibe mit kleinen Hohlräumen entlang der Kante und einem Tonabnehmer in der Nähe der Kante. Die Hammond-Orgel hatte eine ganze Reihe von Tonrädern, die sich mit unterschiedlichen Geschwindigkeiten drehen konnten. Eine eher ungewöhnliche Art, Schall zu erzeugen, ist eher elektromechanisch als elektronisch.
Um ein realistischeres Klangspektrum zu erzeugen, gibt es mehrere weitere Techniken: Frequenzmodulation (Frequenzmodulation oder FM) und Pulsweitenmodulation (Pulsweitenmodulation oder PWM). Beide Techniken sind in AudioKit in den
AKPWMOscillator
AKFMOscillator
bzw.
AKPWMOscillator
verfügbar. Ich schlage vor, Sie versuchen beide und ersetzen sie anstelle des
AKOscillator
, den wir zuvor verwendet haben.
Polyphonie
In den 1970er Jahren begann die Bewegung von modularen Synthesizern, die aus separaten Hüllkurvenoszillatoren und Filtern bestehen, zu Mikroprozessoren. Anstatt analoge Schaltkreise zu verwenden, wurde Ton in digitalem Format erzeugt. Dies machte Synthesizer billiger und kompakter, und Synthesizer von Marken wie Yamaha waren sehr beliebt.

Alle unsere Spielplätze waren darauf beschränkt, jeweils eine Note zu spielen. Viele Instrumente können mehr als eine Note gleichzeitig spielen, sie werden als
polyphon bezeichnet . Instrumente, die nur eine Note spielen können, werden als
monophon bezeichnet .
Um einen polyphonen Klang zu erhalten, können Sie mehrere Oszillatoren erstellen und an den Mixer senden. In AudioKit gibt es dafür jedoch eine geeignetere Möglichkeit.
Erstellen Sie eine neue Seite auf dem Spielplatz und nennen Sie sie Polyphonie. Ersetzen Sie den generierten Code durch Folgendes:
import AudioKitPlaygrounds import AudioKit import AudioKitUI import PlaygroundSupport let bank = AKOscillatorBank() AudioKit.output = bank try AudioKit.start()
Hier haben wir die Bank der Oszillatoren
AKOscillatorBank
. Wenn Sie zur Klassendeklaration gehen, können Sie feststellen, dass es sich um den Erben von
AKPolyphonicNode
, der wiederum der Erbe des
AKNode
bereits bekannten
AKNode
ist und auch das
AKPolyphonic
Protokoll implementiert.
Infolgedessen ist die Oszillatorbank derselbe AudioKit-Knoten wie zuvor beschrieben. Die Ausgabe kann an Mixer, Hüllkurven oder andere Filter und Effekte gesendet werden. Das
AKPolyphonic
Protokoll beschreibt, wie Noten auf einer polyphonen Note gespielt werden. Lassen Sie uns dies genauer betrachten.
Um unseren Oszillator zu testen, müssen wir mehrere Noten gleichzeitig spielen können. Das ist überhaupt nicht schwierig!
Fügen Sie der Wiedergabeliste den folgenden Code hinzu und stellen Sie sicher, dass Live View geöffnet ist:
class LiveView: AKLiveViewController, AKKeyboardDelegate { override func viewDidLoad() { let keyboard = AKKeyboardView(width: 440, height: 100) addView(keyboard) } } PlaygroundPage.current.liveView = LiveView() PlaygroundPage.current.needsIndefiniteExecution = true
Wenn der Spielplatz kompiliert wird, sehen Sie Folgendes:

Cool, oder? Das musikalische Keyboard befindet sich direkt auf dem Spielplatz!
AKKeyboardView
ist ein weiteres Dienstprogramm von AudioKit, mit dem Sie die Möglichkeiten des Frameworks auf einfache Weise erkunden können. Drücken Sie die Tasten und Sie werden feststellen, dass sie keine Geräusche machen.
Aktualisieren Sie das
setUp
Ihrer
PlaygroundView
folgt:
let keyboard = AKKeyboardView(width: 440, height: 100) keyboard.delegate = self addView(keyboard)
Dadurch wird unser
PlaygroundView
einem Tastaturdelegierten und Sie können auf Tastenanschläge reagieren.
Aktualisieren Sie die Klassendeklaration wie folgt:
class LiveView: AKLiveViewController, AKKeyboardDelegate
setUp
direkt nach
setUp
einige Methoden
setUp
:
func noteOn(note: MIDINoteNumber) { bank.play(noteNumber: note, velocity: 80) } func noteOff(note: MIDINoteNumber) { bank.stop(noteNumber: note) }
Jedes Mal, wenn Sie eine Taste drücken, wird die
noteOn
Methode
noteOn
. Sie weist
noteOn
die Oszillatorbank an, mit dem Spielen der Note zu beginnen. Bei der
noteOff
Methode wird die
noteOff
gestoppt.
Halten Sie die Maus gedrückt und streichen Sie mit den Tasten. Sie hören ein wunderschönes Crescendo (ein musikalischer Begriff für eine allmähliche Steigerung der Schallleistung). Die Bank der Oszillatoren enthält bereits einen eingebauten ADSR-Effekt. Infolgedessen wird die Dämpfung einer Note mit der Attacke der nächsten gemischt und klingt ziemlich gut.
Möglicherweise haben Sie bemerkt, dass die Notizen, die uns die Schlüssel gaben, nicht in Form einer Frequenz vorliegen. Sie werden als
MIDINoteNumber
. Wenn Sie zu einer Anzeige dieses Typs wechseln, wird Folgendes angezeigt:
public typealias MIDINoteNumber = Int
MIDI steht für Musical Instrument Digital Interface. Dies ist ein weit verbreitetes Format für die Interaktion von Musikinstrumenten miteinander. Notennummern entsprechen Noten auf einer Standard-Musiktastatur. Der zweite Parameter - diese Geschwindigkeit (Velocity) entspricht der Aufprallkraft auf den Schlüssel. Je niedriger der Wert, desto leiser die Taste, desto leiser der endgültige Klang.
Am Ende müssen Sie den polyphonen Modus für die Tasten aktivieren. Fügen Sie der
setUp
Methode den folgenden Code
setUp
:
keyboard.polyphonicMode = true
Jetzt können Sie mehrere Noten gleichzeitig spielen, wie im Bild gezeigt:

Dies ist übrigens in C-Dur :)
AudioKit hat seine Geschichte vor langer Zeit begonnen. Heute werden
Soundpipe und Code von
Csound verwendet (ein MIT-Projekt, das 1985 gestartet wurde). Überraschenderweise wurde der Code, den wir jetzt auf den Spielplätzen veröffentlichen und dem iPhone hinzufügen, vor fast 30 Jahren geschrieben.
Probenahme
Die zuvor untersuchten Techniken zur Klangsynthese versuchen, mit einfachen Grundblöcken realistischen Klang wiederherzustellen: Oszillatoren, Filter und Mixer. In den frühen 1970er Jahren führte die Entwicklung von Computerkapazitäten zur Entwicklung eines neuen Ansatzes - der Abtastung von Ton, mit dem eine digitale Kopie des Tons erstellt werden soll.
Sampling ist eine ziemlich einfache Technologie, die der digitalen Fotografie ähnelt. Während der Abtastung in regelmäßigen Abständen wird die Amplitude der Schallwellen aufgezeichnet:

Zwei Parameter beeinflussen, wie genau der Ton aufgenommen wurde:
- Bittiefe : oder Bittiefe, die Anzahl der einzelnen Lautstärkepegel, die der Sampler abspielen kann
- Abtastrate : oder Abtastrate gibt an, wie oft Amplitudenmessungen durchgeführt werden. Gemessen in Hertz.
Lassen Sie uns diese Eigenschaften auf einem neuen Spielplatz erkunden. Erstellen Sie eine neue Seite und nennen Sie sie "Beispiele". Ersetzen Sie den generierten Code durch Folgendes:
import AudioKitPlaygrounds import AudioKit import PlaygroundSupport let file = try AKAudioFile(readFileName: "climax-disco-part2.wav", baseDir: .resources) let player = try AKAudioPlayer(file: file) player.looping = true
Der obige Code lädt das Sample, erstellt einen Audio-Player und gibt ihn endlos wieder.
Ein Archiv mit einer WAV-Datei für dieses Tutorial finden Sie
hier . Laden Sie es herunter und entpacken Sie es in den Ressourcenordner Ihres Spielplatzes.
Fügen Sie dann am Ende des Spielplatzes den folgenden Code hinzu:
AudioKit.output = player try AudioKit.start() player.play() PlaygroundPage.current.needsIndefiniteExecution = true
Dadurch wird Ihr Audio-Player mit AudioKit verbunden. Sie müssen nur die Lautstärke erhöhen und genießen!
, .
MP3-, , , . :
let bitcrusher = AKBitCrusher(player) bitcrusher.bitDepth = 16 bitcrusher.sampleRate = 40000
AudioKit:
AudioKit.output = bitcrusher
. , .
AKBitCrusher
— AudioKit, . , , ZX Spectrum BBC Micro. , .
, (. delay). ,
AKBitCrusher
. :
let delay = AKDelay(player) delay.time = 0.1 delay.dryWetMix = 1
0.1 .
dryWetMix
. 1 , .
:
let leftPan = AKPanner(player, pan: -1) let rightPan = AKPanner(delay, pan: 1)
AKPanner
, - . .
AudioKit. ,
AKBitCrusher
AudioKit :
let mix = AKMixer(leftPan, rightPan) AudioKit.output = mix
, , .

Was weiter?
AudioKit. , -, , , . , , .
.