Spezialwiedergabe von Sound vorzeitig beenden

Zettelkasten

Aktives Mitglied
Hallo!
Ich bin gerade dabei, einen Drumcomputer bzw. Drummaker zu schreiben. Das Programm bestitzt 5 x 16 JCheckboxen. (siehe Bild 1) Diese kann man an- und abwählen. Auf jeder Zeile läuft ein anderes Instrument, sprich wenn ich jetzt bei Zeile 3 die erste JRadioButton anclicke, wird die boolean Variable Sound3[1] (SoundZeile[Spalte]) auf "true" gesetzt. So geht das jetzt mit allen JCheckboxen und natürlich kann man sie auch wieder abwählen.
Jetzt habe ich eine Funktion geschrieben, mit der man das dann abspielen kann, hier der Code von void playAll(Anzahl der Wiederholungen):
Java:
	public void playAll(int Nr)
	{
		for(int NR = 1; NR <= Nr; NR++)
		{
			for(int i = 1; i < 17; i++)
			{
				try
				{
					Thread.sleep(Tempo); // Länge festlegen
		
					if(Sound1[i] == true){
						MyFile = 1;
						playSound(1,"false");
					}
					if(Sound2[i] == true)
						{
						MyFile = 2;
						playSound(2,"false");
					}
					if(Sound3[i] == true)
					{
						MyFile = 3;
						playSound(3,"false");
					}
					if(Sound4[i] == true)
					{
						MyFile = 4;
						playSound(4,"false");
					}
					if(Sound5[i] == true)
					{
						MyFile = 5;
						playSound(5,"false");
					}
				}
				catch(Exception x)
				{
				}
			}
		}
	}
Die Funktion playSound(int Soundnummer,String Soundfile), Soundfile ist der "File", wenn ein anderer Sounds als der in
Code:
String Soundfiles = new String { "","Kick","Snare","HiHat","Ride","Stick" };
definierten Sound abgespielt wird (das ist aber eher unwichtig), die Funktion sieht so aus:
Java:
	public void playSound(int MyFile,String File)
	{
		if(File.equals("false"))
		{
			try
			{
				AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(Pfad+Soundfiles[MyFile]+".wav"));
				AudioFormat af = audioInputStream.getFormat();
				int size = (int) (af.getFrameSize() * audioInputStream.getFrameLength());
				byte[] audio = new byte[size];
				DataLine.Info info = new DataLine.Info(Clip.class, af, size);
				audioInputStream.read(audio, 0, size);
				//for(int i = 0; i < 1001; i++)
				//{
					Clip clip = (Clip) AudioSystem.getLine(info);
					clip.open(af,audio,0,size);
					clip.start();
				//}
			}
			catch(Exception e)
			{
			}
		}
		else
		{
			try
			{
				AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(Pfad+File+".wav"));
				AudioFormat af = audioInputStream.getFormat();
				int size = (int) (af.getFrameSize() * audioInputStream.getFrameLength());
				byte[] audio = new byte[size];
				DataLine.Info info = new DataLine.Info(Clip.class, af, size);
				audioInputStream.read(audio, 0, size);
				//for(int i = 0; i < 1001; i++)
				//{
					Clip clip = (Clip) AudioSystem.getLine(info);
					clip.open(af,audio,0,size);
					clip.start();
				//}
			}
			catch(Exception e)
			{
			}
		}
	}
Die Sounds werden problemlos abgespielt.

Jetzt aber zu meinem eigentlichen Problem: Ich will, das man die Wiedergabe vorzeitig abbrechen kann. Wenn man jetzt einen Button "Stopp" einbaut, und auf diesen clickt, wird die Funktion erst nach der Funktion vom Button "Abspielen" ausgeführt, und ist damit sinnlos.

Vielleicht kann mir ja jemand helfen, Zettelkasten.
 

Anhänge

  • Bild 1.jpg
    Bild 1.jpg
    27,2 KB · Aufrufe: 44
Zuletzt bearbeitet:

AlexSpritze

Bekanntes Mitglied
Dass die Fkt Stopp erst nach der Fkt Abspielen aufgerufen wird, klingt danach, dass du es mit Threads versuchen solltest (ohne den Code genau angeschaut zu haben ;)). Also dass du das Abspielen in einem anderen Thread laufen lässt, und wenn du Stopp geklickt hast, wird diesem Thread mitgeteilt dass er aufhören kann abzuspielen.

Übrigens auf dem Bild sehe ich nur Radio-Buttons ;) Oder sehe ich das nur falsch?
 

Zettelkasten

Aktives Mitglied
Dass die Fkt Stopp erst nach der Fkt Abspielen aufgerufen wird, klingt danach, dass du es mit Threads versuchen solltest (ohne den Code genau angeschaut zu haben ;)). Also dass du das Abspielen in einem anderen Thread laufen lässt, und wenn du Stopp geklickt hast, wird diesem Thread mitgeteilt dass er aufhören kann abzuspielen.
Ich habe mich mal über Threads kundig gemacht: Java ist auch eine Insel - Threads. Ich habe noch nicht alles gelesen, aber bei diesem Abschnitt steht ja ein Beispiel. Dort werden die einzelnen run()-Funktionen aber nacheinander abgespielt, und das hilft mir ja nicht viel.
(Es könnte aber auch sein, das ich einen Fehler gemacht habe :()
Übrigens auf dem Bild sehe ich nur Radio-Buttons ;) Oder sehe ich das nur falsch?
Ja, das stimmt - habe es gleich umgeändert :)
 
Zuletzt bearbeitet:

Zettelkasten

Aktives Mitglied
Naja, mein Programmcode sieht so aus.

DateCommand.java
Java:
import java.util.Date;
public class DateCommand   implements Runnable
  {
    public void run()
    {
    for ( int i = 0; i < 20; i++ )
      System.out.println( new Date() );
  }
}

CounterCommand.java
Java:
class CounterCommand   implements Runnable
  {
    public void run()
    {
    for ( int i = 0; i < 20; i++ )
      System.out.println( i );
  }
}

FirstThread.java
Java:
public class FirstThread
{
  public static void main( String[] args )
  {
    Thread t1 =   new Thread( new DateCommand() );
      t1.  start();
      Thread t2 =   new Thread( new CounterCommand() );
      t2.  start();
    }

}

Die Ausgabe der Console sieht dann so aus:
Code:
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
Sat Dec 25 08:47:05 CET 2010
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Soweit ich das aber will, müssten die Zahlen und das Datum ineinander verschachtelt sein, sprich:
Code:
Sat Dec 25 08:47:05 CET 2010
0
Sat Dec 25 08:47:05 CET 2010
1
Sat Dec 25 08:47:05 CET 2010
2
Sat Dec 25 08:47:05 CET 2010
3
Sat Dec 25 08:47:05 CET 2010
4
Sat Dec 25 08:47:05 CET 2010
...

Ich hoffe mir kann jetzt jemand helfen... vielen Dank schon einmal im Voraus, Zettelkasten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
L Audio-volume /w input Sound.sampled Spiele- und Multimedia-Programmierung 1
D Java sound pulseaudio Spiele- und Multimedia-Programmierung 0
K Sound im loop abspielen, wenn boolscher wert true ist Spiele- und Multimedia-Programmierung 3
M Sound Problem Spiele- und Multimedia-Programmierung 3
M Sound Engin Problem 2 Spiele- und Multimedia-Programmierung 2
J Sound und Musik Spiele- und Multimedia-Programmierung 4
C virtueller stereomix (java sound API) Spiele- und Multimedia-Programmierung 0
I Sound Dateien abspielen Spiele- und Multimedia-Programmierung 9
C Sound einfügen und abspielen Spiele- und Multimedia-Programmierung 6
G Sound-Sampling: Sinuston; kein Fehler, aber auch kein Ton :-( Spiele- und Multimedia-Programmierung 3
M Bilderwechsel in Video an Sound anpassen Spiele- und Multimedia-Programmierung 2
A Problem mit Sound Spiele- und Multimedia-Programmierung 5
F Kein Sound bei javazoom Spiele- und Multimedia-Programmierung 2
J Sound einbinden funktioniert nicht Spiele- und Multimedia-Programmierung 13
S Java Sound-API stagniert Spiele- und Multimedia-Programmierung 16
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
H Java Sound: WAVE Format17 einlesen. Spiele- und Multimedia-Programmierung 2
Kr0e Java Sound API - DataLine Spiele- und Multimedia-Programmierung 2
S testen ob Sound läuft Spiele- und Multimedia-Programmierung 3
J Windows Sound Aufnehmen Spiele- und Multimedia-Programmierung 10
C Alles hängt, wenn ein Sound abgespielt wird Spiele- und Multimedia-Programmierung 9
K javax.sound.sampled.Clip clone() Spiele- und Multimedia-Programmierung 2
C Java3D Sound spielt nur einen Sound ab. Spiele- und Multimedia-Programmierung 8
G Ortsabhängiger Sound Spiele- und Multimedia-Programmierung 5
T Sound schneller abspielen Spiele- und Multimedia-Programmierung 4
S Java Sound - Skipping in .mp3 Files und Bug (Bitte überprüfenl) Spiele- und Multimedia-Programmierung 14
G Beste Sound Api Spiele- und Multimedia-Programmierung 2
C Java Sound API Clip.Close() Problem Spiele- und Multimedia-Programmierung 1
A Sound Amplitude ermitteln bzw Sound auslöschen Spiele- und Multimedia-Programmierung 4
P Sound auf zwei Lautsprechern getrennt abspielen Spiele- und Multimedia-Programmierung 9
G javafx MediaPlayer sound problem Spiele- und Multimedia-Programmierung 2
Developer_X Sound Lautstärke ohne spezifische API regulieren Spiele- und Multimedia-Programmierung 3
M Java Sound API : Zuordnung Port-Mixer zu Input-Mixer Spiele- und Multimedia-Programmierung 9
P Java Sound OutOfMemoryError Spiele- und Multimedia-Programmierung 2
T Java Sound Probleme Spiele- und Multimedia-Programmierung 8
Pithecanthropus Sound geht nicht Spiele- und Multimedia-Programmierung 6
Dragonfire Java Sound API - Lautstärke ändert sich nicht Spiele- und Multimedia-Programmierung 2
N sound absoielen Spiele- und Multimedia-Programmierung 3
DEvent Java sound Bibliothek Spiele- und Multimedia-Programmierung 11
P Sound Datein mit JAVA zusammenstellen?! Spiele- und Multimedia-Programmierung 3
Developer_X Java3D Point Sound Spiele- und Multimedia-Programmierung 71
B sound mit behavior geht nicht Spiele- und Multimedia-Programmierung 4
M Sound-Lösung für Java/JMF Spiele- und Multimedia-Programmierung 8
0 Sound Spiele- und Multimedia-Programmierung 5
S sound zuverlässig wiedergeben Spiele- und Multimedia-Programmierung 15
G Sound Probleme Spiele- und Multimedia-Programmierung 2
D Sound und Bilddateien vorladen Spiele- und Multimedia-Programmierung 7
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben