K
(Sound-Dateien in Ordnern)
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<div class="hinweisProbleme">Dieser Inhalt ist veraltet und wird bald überarbeitet.</div>
+
{{DISPLAYTITLE:Tutorial: Sounds einbinden}}
 +
{{Tutorial/Begin|Ziel=
 +
Nach erfolgreichem Abschluss dieses Tutorials kannst du '''Soundeffekte und Musik in dein Spiel einbinden'''.
  
{{TODO}}
+
|Voraussetzungen=
 +
* Du hast bereits die Engine in deine [[Wikipedia:de:Integrierte Entwicklungsumgebung|IDE]] integiert. (z.B. [[Wikipedia:de:BlueJ|BlueJ]] oder [[Wikipedia:de:Eclipse|Eclipse]]) ([[Tutorials/BlueJ|Engine Alpha in BlueJ einbinden]])
 +
* Du hast das [[Tutorials/Einführung|Einführungstutorial]] bereits bearbeitet.
 +
}}
  
Die Engine macht das Einbinden von Sounds sehr leicht. Unterstützt werden die folgenden Formate:
+
== Einführung ==
* AAC
 
* MP3
 
* MIDI
 
* WAV
 
  
Grundsätzlich gibt es zwei verschiedene Arten von Sounds. Beide unterscheiden sich ein wenig in den Möglichkeiten. Kurze Sounds (gemeint sind hier v.a. Geräusche) könnten mehrmals gleichzeitig abgespielt werden und werden immer beim initialisieren in den RAM geladen, bieten dafür aber kaum Steuerungsmöglichkeiten. Lange Sounds (gemeint ist v.a. Musik) bieten im Gegensatz mehr Steuerungsmöglichkeiten, könnten dafür aber nicht von einem Objekt gleichzeitig gespielt werden.
+
Sounds lassen sich in der Engine Alpha leicht abspielen. Die Ressourcen müssen nur aus dem Projektordner geladen werden, vergleichbar mit dem Laden eines [[Tutorials/Einführung#Bilder|Bildes]].
  
== Sound ==
+
== Unterstützte Sound-Formate ==
 +
 
 +
Zunächst benötigst du die abzuspielende Sound-Datei. Folgende Formate werden voll unterstützt:
 +
 
 +
* '''.wav-Dateien''': Unkomprimiertes Format, das sehr viel Platz in Anspruch nimmt, dafür aber gute Audio-Qualität liefert.
 +
* '''.mp3-Dateien''': Komprimiertes Format, das wenig Platz in Anspruch nimmt und trotzdem ausreichende Qualität liefert. '''(empfohlen)'''
 +
* '''.au-Dateien''': Eigenes Format von Sun (einem früheren Entwickler von Java), das so gut wie keine Beachtung findet.
 +
 
 +
'''.mid-Dateien (MIDI-Sequenzen)''' werden seit Version 3.0 der Engine nicht mehr unterstützt!
 +
 
 +
<div class="hinweisInfo">
 +
Hast du nun eine passende Sound-Datei, musst du diese nur in deinen Projektordner legen.
 +
</div>
 +
 
 +
== Einbringen einer Sound-Datei ==
 +
 
 +
<code>Sound</code> ist eine Klasse in der Engine Alpha. Damit bringst du die Sound-Datei in dein Programm ein.
 +
 
 +
=== Laden eines Sounds ===
 +
 
 +
Die Klasse <code>Sound</code> hat nur einen Konstruktor:
  
Um einen Sound abzuspielen, muss lediglich ein Objekt erzeugt werden, dem der Pfad übergeben wird:
 
 
<source>
 
<source>
Sound s = new Sound("pfad/zum/sound.mp3");
+
public Sound (String dateiname)
s.play();
 
 
</source>
 
</source>
  
Die einzige weitere Methode ist für das Stoppen des Sounds da:
+
Dieser Konstruktor funktioniert für alle unterstützten Formate. Der Dateiname ist der Name deiner Sound-Datei im Projektordner, somit lädst du deine eigene Sounddatei zum Beispiel so:
 +
 
 
<source>
 
<source>
s.stop();
+
Sound meinSound = new Sound("meineSoundDateiImProjektordner.mp3");
 
</source>
 
</source>
Dies stoppt alle zur Zeit laufenden Geräusche, die mit diesem Objekt gestartet wurden.
 
  
== Musik ==
+
Dadurch wird der Sound aber nicht abgespielt, sondern erst mal nur in den Programmspeicher geladen.
 +
 
 +
=== Abspielen eines Sound ===
 +
 
 +
Zum Abspielen eines Sounds muss lediglich die <code>play()</code>-Methode des Sound-Objekts aufgerufen werden:
 +
<source>
 +
Sound meinSound = new Sound("meineSoundDateiImProjektordner.mp3"); // Laden des Sounds
 +
meinSound.play(); // einmaliges Abspielen des Sounds
 +
</source>
  
Um Musik abzuspielen, muss ebenfalls ein Objekt erzeugt werden, dieses Mal allerdings von der Klasse Musik. Danach kann die Musik wie auch bei Sound mit <code>.play()</code> gespielt werden:
+
Will man, dass der Sound in einer Endlosschleife wiedergegeben wird, so verwendet man statt <code>play()</code> <code>loop()</code>:
 
<source>
 
<source>
Musik m = new Musik("pfad/zum/sound.mp3");
+
Sound meinSound = new Sound("meineSoundDateiImProjektordner.mp3"); // Laden des Sounds
m.play();
+
meinSound.loop(); // dauerhaftes Abspielen des Sounds
 
</source>
 
</source>
  
Auch hier gibt es analog zu Sound eine Methode <code>.stop()</code>, die die Musik stoppt.
+
=== Anhalten eines Sounds ===
 +
 
 +
Zum ''Anhalten'' eines Sounds gibt es zwei Methoden:
 +
* Mit <code>meinSound.pause();</code> wird der Sound nur pausiert, er kann danach mit <code>meinSound.unpause();</code> weiter abgespielt werden.
 +
* Mit <code>meinSound.stop();</code> wird der Sound gestoppt, sodass er nicht weiter abgespielt werden kann. Mit <code>meinSound.play();</code> kann der Sound aber erneut von Beginn an abgespielt werden.
 +
 
 +
== Sound-Dateien in Ordnern ==
 +
 
 +
Benutzt du viele Sound-Dateien, ist es vielleicht unübersichtlich, alle "einfach" in deinem Projektordner zu lagern. Du kannst natürlich auch einen neuen "Material"-Ordner anlegen und dann im Sound-Konstruktor den Pfad angeben, über deinen Ordner zu der gewünschten Sound-Datei.
 
<source>
 
<source>
s.stop();
+
Sound meinSound = new Sound("Material/meineSoundDatei.mp3"); // Laden des Sounds
 
</source>
 
</source>
  
Allerginds bietet Musik noch einige weitere Methoden.
+
Möchtest du dies nutzen, kannst du dich darüber im [[Tutorials/IO#Arbeiten_mit_Verzeichnissen|Tutorial Dateien Schreiben und Lesen]] informieren.
 +
 
 +
== Sounddateien im exportierten Projekt ==
 +
 
 +
beim Exportieren des Projektes  in eine .jar-Datei gehst du folgendermaßen vor:
 +
 
 +
# Vor dem Exportieren, entferne alle Sound-Dateien aus dem Projektordner
 +
# Nach dem Exportieren, bringe alle Sound-Dateien in das selbe Verzeichnis wie die ausführbare .jar-Datei. Hast du Ordner genutzt, so bringe die Ordner in dieses Verzeichnis. Mehr hierzu im Tutorial [[Tutorials/Projekt exportieren|zum Exportieren von Projekten]].
 +
 
 +
<div class="hinweisProbleme">
 +
Du kannst ein einfaches [https://github.com/engine-alpha/beispiel-sound/archive/master.zip Beispielprojekt] herunterladen, das eine Sounddatei öffnet und abspielt.
 +
</div>
 +
 
 +
 
  
{{TODO|weitere Methoden}}
+
[[Kategorie:Tutorial]]

Aktuelle Version vom 16. Februar 2015, 18:12 Uhr

Ziel

Nach erfolgreichem Abschluss dieses Tutorials kannst du Soundeffekte und Musik in dein Spiel einbinden.

Einführung

Sounds lassen sich in der Engine Alpha leicht abspielen. Die Ressourcen müssen nur aus dem Projektordner geladen werden, vergleichbar mit dem Laden eines Bildes.

Unterstützte Sound-Formate

Zunächst benötigst du die abzuspielende Sound-Datei. Folgende Formate werden voll unterstützt:

  • .wav-Dateien: Unkomprimiertes Format, das sehr viel Platz in Anspruch nimmt, dafür aber gute Audio-Qualität liefert.
  • .mp3-Dateien: Komprimiertes Format, das wenig Platz in Anspruch nimmt und trotzdem ausreichende Qualität liefert. (empfohlen)
  • .au-Dateien: Eigenes Format von Sun (einem früheren Entwickler von Java), das so gut wie keine Beachtung findet.

.mid-Dateien (MIDI-Sequenzen) werden seit Version 3.0 der Engine nicht mehr unterstützt!

Hast du nun eine passende Sound-Datei, musst du diese nur in deinen Projektordner legen.

Einbringen einer Sound-Datei

Sound ist eine Klasse in der Engine Alpha. Damit bringst du die Sound-Datei in dein Programm ein.

Laden eines Sounds

Die Klasse Sound hat nur einen Konstruktor:

public Sound (String dateiname)

Dieser Konstruktor funktioniert für alle unterstützten Formate. Der Dateiname ist der Name deiner Sound-Datei im Projektordner, somit lädst du deine eigene Sounddatei zum Beispiel so:

Sound meinSound = new Sound("meineSoundDateiImProjektordner.mp3");

Dadurch wird der Sound aber nicht abgespielt, sondern erst mal nur in den Programmspeicher geladen.

Abspielen eines Sound

Zum Abspielen eines Sounds muss lediglich die play()-Methode des Sound-Objekts aufgerufen werden:

Sound meinSound = new Sound("meineSoundDateiImProjektordner.mp3"); // Laden des Sounds
meinSound.play(); // einmaliges Abspielen des Sounds

Will man, dass der Sound in einer Endlosschleife wiedergegeben wird, so verwendet man statt play() loop():

Sound meinSound = new Sound("meineSoundDateiImProjektordner.mp3"); // Laden des Sounds
meinSound.loop(); // dauerhaftes Abspielen des Sounds

Anhalten eines Sounds

Zum Anhalten eines Sounds gibt es zwei Methoden:

  • Mit meinSound.pause(); wird der Sound nur pausiert, er kann danach mit meinSound.unpause(); weiter abgespielt werden.
  • Mit meinSound.stop(); wird der Sound gestoppt, sodass er nicht weiter abgespielt werden kann. Mit meinSound.play(); kann der Sound aber erneut von Beginn an abgespielt werden.

Sound-Dateien in Ordnern

Benutzt du viele Sound-Dateien, ist es vielleicht unübersichtlich, alle "einfach" in deinem Projektordner zu lagern. Du kannst natürlich auch einen neuen "Material"-Ordner anlegen und dann im Sound-Konstruktor den Pfad angeben, über deinen Ordner zu der gewünschten Sound-Datei.

Sound meinSound = new Sound("Material/meineSoundDatei.mp3"); // Laden des Sounds

Möchtest du dies nutzen, kannst du dich darüber im Tutorial Dateien Schreiben und Lesen informieren.

Sounddateien im exportierten Projekt

beim Exportieren des Projektes in eine .jar-Datei gehst du folgendermaßen vor:

  1. Vor dem Exportieren, entferne alle Sound-Dateien aus dem Projektordner
  2. Nach dem Exportieren, bringe alle Sound-Dateien in das selbe Verzeichnis wie die ausführbare .jar-Datei. Hast du Ordner genutzt, so bringe die Ordner in dieses Verzeichnis. Mehr hierzu im Tutorial zum Exportieren von Projekten.

Du kannst ein einfaches Beispielprojekt herunterladen, das eine Sounddatei öffnet und abspielt.