2010-12-13 3 views

Antwort

4

Nein, Sie müssen das nicht in den Ressourcen speichern. Ich denke, ein besserer Ansatz wäre, die Töne in Echtzeit zu synthetisieren. Zu diesem Zweck müssen Sie das folgende:

  • java.lang.Math für trigonometrische Funktionen Berechnungen Puffer füllen (nach der Konvertierung von float zu PCM (int)) mit richtigem Ton
  • android.media.AudioTrack für Audio-Wiedergabe (aus dem Puffer). Ich nehme an, dass der statische Modus das ist, was Sie brauchen - schnellere Reaktion und einfacher zu bedienen. Audio-Wiedergabe ist jedoch keine triviale Aufgabe, so dass Sie mehr über Audio-System auf Android erfahren müssen. Natürlich sind einige Grundkenntnisse über die Signalverarbeitung mehr als willkommen.
  • Sie können sogar einige coole Effekte hinzufügen android.media.audiofx
+0

Ich werde das ausprobieren und bei Schwierigkeiten zurück zu Ihnen, die ich sicher finden werde ..: p .. Vielen Dank Desiderio ... :) – Ashwin

1

Verwendung Dies ist eine äußerst komplexe Frage, auch wenn es nicht, wie es scheint.

Wenn Sie "Ton" sagen, meinen Sie einfach einen Ton (Sinus, Quadrat, Dreieck, Sägezahnwellen) oder möchten Sie Klänge von "echten" Instrumenten wie Gitarre, Klavier usw. spielen?

Wenn es der erste ist (einfache Töne), dann ist Desiderio's Antwort vielleicht auf dem richtigen Weg, aber wenn Sie 'echte' Laute wollen, dann müssen Sie ein kurzes 'Sample' entweder in/res/roh oder in haben Ihr Verzeichnis/Assets.

Sie können sie in eine SoundPool-Instanz laden und sie zur Wiedergabe mit unterschiedlichen 'Raten' verwenden, z. B. eine 'Rate' von 2 ist doppelt so schnell wie die doppelte und erhöht sich somit um eine Oktave. Eine "Rate" von 0,5 entspricht der halben Geschwindigkeit und senkt den Ton um eine Oktave.

+1

Einverstanden. Ich versuchte es so einfach wie möglich zu beantworten. Nur um zu erwähnen, dass ein physikalisches Modellieren von echten Instrumenten möglich ist, indem z. Karplus-starker Algorithmus. Mit der aktuellen Rechenleistung von Android-Smartphones sollte es möglich sein, eine Echtzeitsynthese zu implementieren. – Zelimir

+0

Ich war auf der Suche nach Instrumentenklängen. Also gibt es keinen anderen Weg als den, den du vorgeschlagen hast? In diesem Fall wäre die Wahl der "Stichprobe" sehr wichtig, richtig ...? – Ashwin

+0

@ashwin Es gibt auch MIDI, glaube ich. – ksoo

2

Senden Sie den Sound an eine AudioTrack-Instanz und ändern Sie die Sample-Rate im laufenden Betrieb.