sampled sound mixen

Status
Nicht offen für weitere Antworten.
S

stev.glasow

Gast
Hi ich würde gerne mehrere sampled streams(Mikrofon, wavs, mp3s, etc) mixen(also zu einem stream zusammenfügen) und diesen stream dann selber weiterverarbeiten.
Auf http://java.sun.com/docs/books/tutorial/sound/index.html steht unteranderem folgendes:

The Java Sound API does not assume a specific audio hardware configuration; it is designed to allow different sorts of audio components to be installed on a system and accessed by the API. The Java Sound API supports common functionality such as input and output from a sound card (for example, for recording and playback of sound files) as well as mixing of multiple streams of audio. Here is one example of a typical audio architecture:

chapter1.anc1.gif


In this example, a device such as a sound card has various input and output ports, and mixing is provided in the software. The mixer might receive data that has been read from a file, streamed from a network, generated on the fly by an application program, or produced by a MIDI synthesizer. The mixer combines all its audio inputs into a single stream, which can be sent to an output device for rendering.

An sich ist das ja genau das was ich will und wenn der Mixer das einfach nur an ein Ausgabegerät weiterleiten soll ist das auch kein Problem nur bekomme ich es nicht hin das der Mixer das nicht an ein Ausgabegerät weiterleitet sondern in einen Stream schreibt den ich weiter verarbeiten möchte - ich finde da einfach keinen Ansatz weil die Mixer irgendwie alle an geräte gebunden sind.
Kann es sein das ich da irgendwas grundsätzlich missverstanden habe?
 
S

stev.glasow

Gast
öhj mann eh
voll dat scheiß forum hier :bloed: keiner antwortet misch :cry:
 
S

stev.glasow

Gast
pff, assi - java is doch scheiße eh. seh da echt nicht durch so ohne abi :?
 

The_S

Top Contributor
pothead hat gesagt.:
abi für java????? lol
Learning by doing and never give up!.....that's all

Du weißt, dass stevg der Admin dieses Forums ist? Und du weißt auch, dass dieser Dialog auf höchst ironischer Ebene geführt wurde?
 

pothead

Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
pothead hat gesagt.:
abi für java????? lol
Learning by doing and never give up!.....that's all

Du weißt, dass stevg der Admin dieses Forums ist? Und du weißt auch, dass dieser Dialog auf höchst ironischer Ebene geführt wurde?

ach, deswegen hab ich mich kaputt gelacht über den Kommentar "java ohne abi blick ich nicht" :idea:

nee, nee, sachen gibts... :wink:
 
T

tuxedo

Gast
Back to topic ...

Mich interessiert das auch. Bin aber nocht nicht dahinter gekommen ob man an den "gemischten" Stream nochmal dran kommt, oder ob's dann schon in den Eingeweiden des Systems Richtung Wiedergabehardware verschwunden ist....

- Alex
 

quippy

Bekanntes Mitglied
stevg hat gesagt.:
An sich ist das ja genau das was ich will und wenn der Mixer das einfach nur an ein Ausgabegerät weiterleiten soll ist das auch kein Problem nur bekomme ich es nicht hin das der Mixer das nicht an ein Ausgabegerät weiterleitet sondern in einen Stream schreibt den ich weiter verarbeiten möchte - ich finde da einfach keinen Ansatz weil die Mixer irgendwie alle an geräte gebunden sind.
Kann es sein das ich da irgendwas grundsätzlich missverstanden habe?

Mmmh, so wie ich das sehe, besteht die Aufgabe nun darin, aus verschiedenen Quellen Samples einzulesen, diese dann zu addieren, kurz zu clippen, falls notwendig, und den fertigen Stream wieder in eine Datei schreiben...
Dabei sollte noch normiert werden (so daß das Ergebnis z.B: 16Bit Stereo 44100Hz little Endian oder so ist) Das können teilweise die einlesenden Streams erledigen.

Das würde ich persönlich nicht über die vorhandenen Mixer erledigen, sondern einen eigenen Software-Mixer schreiben, der die Quellen entsprechend ihrer Art (also Datei, Line-In, Microphon, etc) einliest, so daß jeweils ein entsprechender Byte-Buffer vorhanden ist, diesen dann per addition zusammenführen und wieder wegschreiben.

Hier gibt's einiges hilfreiches dazu im Beispielcode.

Alternativ kannst Du Dir ja mal den Sourcecode von meinem Modplayer ansehen - allerdings ist das nicht zwingend zum lernen geeignet...
 
T

tuxedo

Gast
quippy hat gesagt.:
Das würde ich persönlich nicht über die vorhandenen Mixer erledigen, sondern einen eigenen Software-Mixer schreiben...

Das musst du mir erklären. Warum soll ich sowas selbst schreiben wenn's das schon gibt? Zumal ich mir vorstellen könnte, dass das "selbst mixen" (mal abgesehen davon dass man den code selbst schreiben muss) aufwendiger ist, als das ganze vom bestehenden Mixer mixen zu lassen.

Wieso also das Rad neu erfinden? Wo wäre da der Vorteil?

- Alex
 

Rock Lobster

Bekanntes Mitglied
Die bestehenden Klassen sind aber zum Teil irgendwie höchst eigenartig und werden ja von Sun auch nicht weiterentwickelt.

Ich hab mir daher den ganzen Sound-Mist auch selbst zusammengebastelt, dabei konvertiere ich übrigens erstmal alle Samples in Floats, da ich somit ein einheitliches Format habe (egal ob das vorher 8, 16 oder 24 Bit waren) und damit ich später alles, was ich damit vorhabe, mit Floats berechnen kann (z.B. Mixen, Balancing, Effekte, etc).

Hört sich anfangs etwas zu aufwendig an, aber das revidiert sich wieder schnell, weil man nicht zigmal vom einen ins andere Format konvertieren muß oder ständig checken muß, ob es sich nun um 8 oder 16 bit handelt usw. usf.

Und gerade bei Lautstärke-Änderungen usw. ist es von Vorteil das alles auf Float-Basis zu haben. Erst wenn die gesamte Arbeit erledigt ist, wird's dann wieder in das Ausgabeformat konvertiert.
 

quippy

Bekanntes Mitglied
alex0801 hat gesagt.:
quippy hat gesagt.:
Das würde ich persönlich nicht über die vorhandenen Mixer erledigen, sondern einen eigenen Software-Mixer schreiben...

Das musst du mir erklären. Warum soll ich sowas selbst schreiben wenn's das schon gibt? Zumal ich mir vorstellen könnte, dass das "selbst mixen" (mal abgesehen davon dass man den code selbst schreiben muss) aufwendiger ist, als das ganze vom bestehenden Mixer mixen zu lassen.

Wieso also das Rad neu erfinden? Wo wäre da der Vorteil?

- Alex

Weil es das eben so IMHO nicht gibt. Du kannst zwar den Mixer bitten, da was für Dich zu tun, aber die Kontrolle gibst Du vollständig ab. Ferner leitest Du im Endeffekt alles durch zig Anpassung-Lines, damit alles im gewünschten und normierten Format ankommt, dann zusammenaddiert wird und irgendwo wieder 'rauskommt.

Ich wüßte jetzt selbst nicht, wie man einen Mixer dazu bringt, aus mehreren Eingangsquellen (die auch noch MP3-codiert sind) Samples einzulesen, zu verbacken, und wieder dahin zu schreiben, wo Du's hinhaben willst.

Aber wenn Du meinst, damit das Rad neu zu erfinden, dann mußt Du das ja nicht so machen. Wäre dann toll, wenn Du uns an der Lösung teilhaben ließest.

Im Endeffekt macht der Mixer auch nix anderes und das Coding dazu ist echt simpel und vor allem trotz allem auch performant.

Von Floats würde ich aus Perfomancegründen allerdings Abstand nehmen. Statt dessen machen sich Integers besser. Man kann auch dort Nachkommastellen berücksichtigen, wenn man genaues Mixing braucht.

z.B. über

Code:
private static final int SHIFTS = 8;

(....)

int sampleValue = line.readSample()<<SHIFTS;
(....) Voodo machen mit Genauigkeit, z.B. Volume oder so (...)

int finishedSample = sampleValue>>SHIFTS;
 
T

tuxedo

Gast
@Quippy

Naja, mein Post galt unter der Annahme dass es eine Möglichkeit gibt den vorhandenen Mixer am "Ausgang" anzuzapfen. Wenn's da keine "JRE/JDK eigene" Lösung gibt bleibt einem natürlich nix anderes übrig es selbst zu machen. Logisch.

Vielleicht findet sich noch jemand der das geschafft hat?!

- Alex
 

Rock Lobster

Bekanntes Mitglied
@ quippy:

Ein einziges Mal alles nach float umrechnen und hinterher wieder zurückrechnen ist kein Problem, und die Berechnungen mit den Floats sind letztendlich auch kein Problem, weil die meisten Rechner heutzutage eine FPU haben. Ich stimme Dir zu, wenn Du sagen würdest, daß man nicht alle mit doubles machen soll, weil die 3x so lang benötigen, aber bei floats wie gesagt kein Problem, und die Ergebnisse sind hinterher nunmal schön genau.

Deine Lösung ist zwar auch nicht übel, aber da die Samples in Byte-Form vorliegen (bei 16 Bit zudem immer Byte-Paare), mußt Du erstmal alles in Integers umrechnen. Und ob Du nun Integers oder Floats nimmst, dürfte wohl kaum einen Unterschied machen was die Dauer der Umrechnung angeht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
ms_cikar JavaOSC (Open Sound Control) Allgemeine Java-Themen 1
J Java Sound Api Sound input und Output auswählen Allgemeine Java-Themen 4
J Sound mit Clip in Linux abspielen Allgemeine Java-Themen 3
J Sound mit Hall und Equalizer abspielen lassen Allgemeine Java-Themen 6
K Sound-Visualisierung in Java Allgemeine Java-Themen 0
Tacofan Sound abspielen Allgemeine Java-Themen 1
Tacofan Sound beim öffnen der GUI Allgemeine Java-Themen 8
javampir Seltsame Lücken beim Abspielen von Sound Allgemeine Java-Themen 2
D Library/Framework zum Umwandeln von Sound in Notenbilder Allgemeine Java-Themen 1
V Input/Output Sound Dateien aus Jar laden Allgemeine Java-Themen 18
S Java sound pitch modulation Allgemeine Java-Themen 2
B Java Sound Memory Overload Allgemeine Java-Themen 0
B Javax.Sound Problem (setMessage-Methode) Allgemeine Java-Themen 2
DaniSahne96 Input/Output [Sound]Mp3 datein wiedergeben Allgemeine Java-Themen 8
I Sound abspielen aus einem Sample-Array Allgemeine Java-Themen 2
G Threads Klasse Sound und Threads bleiben hängen Allgemeine Java-Themen 4
B AudioInputStream, bzw. Sound bearbeiten / splitten Allgemeine Java-Themen 2
Apo Java Sound Mark/Reset Exception Allgemeine Java-Themen 14
Developer_X Java Sound Lautstärke Allgemeine Java-Themen 10
A sound Allgemeine Java-Themen 4
R Sound unter Java Allgemeine Java-Themen 12
grudge Problem mit Sound Allgemeine Java-Themen 2
I Java und Sound Allgemeine Java-Themen 5
P Sound Buffer prüfen Allgemeine Java-Themen 12
C Sound stoppt Rest & Lautstärke-Problem Allgemeine Java-Themen 4
M Sound in datei abspeichern Allgemeine Java-Themen 3
T Java Sound Engine: Was liegt drunter? Allgemeine Java-Themen 7
E Nach Packen in Jar ist Sound nur noch abgehackt zu hören Allgemeine Java-Themen 2
oliver1974 Java Sound und gleichzeitger Zugriff auf Soundkarte Allgemeine Java-Themen 3
T Sound in JFrame: Ich krichs nich hin =( Allgemeine Java-Themen 7
S Kein Sound in Java Applets unter Win 9x Allgemeine Java-Themen 4
P kein sound bei freenet spielen Allgemeine Java-Themen 2
H Java Sound Allgemeine Java-Themen 2
M Sound anhand von gegebener Frequenz abspielen Allgemeine Java-Themen 2
D Sound ruckelt. Allgemeine Java-Themen 9
M Sound abspielen ohne Sounddatei Allgemeine Java-Themen 5
H Sound wiedergabe und Threads Allgemeine Java-Themen 3
bernd Sound abspielen? Allgemeine Java-Themen 6
K Sound abspielen in Java 1.5 Allgemeine Java-Themen 6
G Mit Klassenlader Sound Ressourcen laden Allgemeine Java-Themen 10
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
P javax.sound: clip.stop(); Allgemeine Java-Themen 4
L Java Sound Allgemeine Java-Themen 2
D Wiedergabe von .wav-Dateien(Sound)? Allgemeine Java-Themen 2
R GPL code mixen mit anderem Code? Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben