Version 1 Einfacher zu codieren, nicht so elegant.
Starten Sie ein ansichtsbasiertes Projekt in Xcode, und verwenden Sie Interface Builder, Bearbeiten MyProjectViewController.xib
, um eine Reihe von Tasten in Formen und Farben zusammenzustellen, die einer Bildschirmtastatur ähneln.
bearbeiten MyProjectViewController.h
y .m
um eine Reihe von Methoden mit Signaturen wie dieser hinzuzufügen:
- (IBAction) playMiddleC: (id) sender;
- (IBAction) playMiddleD: (id) sender;
- (IBAction) playMiddleE: (id) sender;
Jetzt können Sie zum Interface Builder zurückkehren und mit der rechten Maustaste auf jede Schaltfläche klicken und sie auf das Objekt File's Owner (vom Typ MyProjectViewController
). Wenn Sie dies tun, erscheint ein Menü, in dem Sie gefragt werden, mit welcher Methode die Taste verbunden werden soll. Wählen Sie die entsprechende Methode für diese Taste.
Fügen Sie nun für jede der Tasten, die Sie spielen möchten, eine Sounddatei hinzu. Nehmen wir zum Beispiel an, Sie haben eine Datei namens midC.caf
(z. B. im linearen PCM-Format kodiert, als eine der die gültigen Tondateiformate ). Kopieren Sie diese Datei in Ihr Projektverzeichnis und fügen Sie sie dem Projekt hinzu, indem Sie (in Xcode) mit der rechten Maustaste auf den Ordner "Resources" klicken und "Add > Existing Files " wählen und dann Ihre Sounddatei auswählen.
Als nächstes müssen Sie die AudioToolbox-Bibliothek als Abhängigkeit hinzufügen. Klicken Sie dazu mit der rechten Maustaste auf den Ordner "Frameworks" und wählen Sie "Hinzufügen" > "Vorhandene Frameworks" und suchen Sie dann die AudioToolbox-Bibliothek und wählen Sie sie aus.
In der Zwischenzeit, zurück in MyProjectViewController.m
fügen Sie den folgenden Code hinzu:
#import <AudioToolbox/AudioServices.h>
// (Later...)
- (IBAction) playMiddleC: (id) sender {
NSString* path = [[NSBundle mainBundle]
pathForResource:@"midC" ofType:@"caf"];
NSURL* url = [NSURL URLWithString:path];
SystemSoundID midC;
AudioServicesCreateSystemSoundID((CFURLRef)url, &midC);
AudioServicesPlaySystemSound(midC);
}
Drücken Sie Command-Enter zum Kompilieren und Ausführen, und machen Sie Musik!
Version 2 Ein wenig eleganter.
Programmatisch konstruieren eine Tastatur UI mit einem Array für weiße Tasten, und ein anderes für schwarze (da sie leicht unterschiedliche Koordinaten haben). Ich empfehle die Verwendung von benutzerdefinierten UIButton
Typen mit Bildern für gedrückte und nicht gedrückte Versionen jedes Tastentyps (schwarz, C/F, B/E und A/D/G, die mittlere weiße Tasten sind - ich berücksichtige hier die Tasteneinzüge).
Dies würde es Ihnen ermöglichen, Zeiger auf diese Tasten in einem Array zu speichern, und haben eine einzige Methode, die den Ton für jede Taste spielen könnte, indem auch Sound-IDs in einem entsprechenden Array gespeichert.
Man könnte meinen, dass man die Klänge programmatisch erstellen sollte, da sie eher mathematischer Natur sind. Aber die AudioQueue
Dienste, die Sie dazu verwenden würden, sind wesentlich aufwändiger als der obige Code, so dass ich eigentlich nur die Verwendung von Soundbytes empfehlen würde, selbst in einer "eleganten" Version. Vielleicht klingt es auf diese Weise sogar besser.
Übrigens Ihre Frage hört sich so an, als ob Sie dies als eine schnelle und einfache Einstiegsanwendung betrachten, aber ich bin mir da nicht so sicher. Das Entwickeln von iPhone-Apps macht Spaß, erfordert aber viel Zeit und Mühe, um gut zu sein. Wenn du an Ideen für Einsteiger-Apps interessiert bist, würde ich vorschlagen, nach Dingen zu suchen, die eine neue Programmierfertigkeit nach der anderen trainieren, wie z. B. das Erlernen der Arbeit mit dem allgegenwärtigen UITableView
oder eine schnelle App, mit der Sie ein Foto aufnehmen und an eine E-Mail anhängen können (das ist einfach, weil das iPhone SDK eine großartige Unterstützung für das Aufnehmen von Fotos und das Verfassen von E-Mails bietet).
Viel Spaß!