summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100308.html
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100308.html
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100308.html')
-rw-r--r--Master/Reference Architectures and Patterns/hjp5/html/k100308.html156
1 files changed, 156 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100308.html b/Master/Reference Architectures and Patterns/hjp5/html/k100308.html
new file mode 100644
index 0000000..e9654e5
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/html/k100308.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100307.html;106,k100307.html;107,k100309.html;108,k100312.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100307.html">&nbsp;&lt;&lt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100307.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100309.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100312.html">&nbsp;&gt;&gt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
+<td align="right">Kapitel 49 - Sound
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel2id049001"></a>
+<h2>49.1 Grundlagen und Konzepte </h2>
+<hr>
+<ul>
+<li><a href="k100308.html#sectlevel2id049001">49.1 Grundlagen und Konzepte</a>
+</ul>
+<hr>
+
+<p>
+Seit der Version 1.3 besitzt das JDK Sound-F&auml;higkeiten, die weit
+&uuml;ber die in <a href="k100251.html#appletsound">Abschnitt 39.3</a>
+erl&auml;uterten M&ouml;glichkeiten hinausgehen. Mit Hilfe des Sound-APIs
+k&ouml;nnen Samples abgespielt oder aufgenommen werden. Es k&ouml;nnen
+Midi-Dateien erzeugt oder wiedergegeben werden, und es ist m&ouml;glich,
+direkt auf angeschlossene oder eingebaute Tonerzeuger zuzugreifen.
+Das API abstrahiert alle f&uuml;r das Erzeugen und Bearbeiten von
+Sounds wesentlichen Konzepte und unterst&uuml;tzt die Erkennung und
+Verwendung unterschiedlichster Hardware-Komponenten.
+
+<p>
+Das Sound-API ist allerdings nicht ganz leicht zu bedienen und wird
+in der Literatur sehr stiefm&uuml;tterlich behandelt. Die Schwierigkeiten
+haben mehrere Ursachen:
+<ul>
+<li>Einerseits handelt es sich um ein Low-Level-API, also eines, bei
+dem schon zur Erzielung relativ einfacher Effekte recht viel Programmieraufwand
+n&ouml;tig ist.
+<li>Andererseits kann das API wenig Annahmen &uuml;ber standardm&auml;&szlig;ig
+verf&uuml;gbare Hardware machen. Soll beispielsweise eine Fl&ouml;tenmelodie
+erklingen, muss das Programm erst einmal herausfinden, ob ein Synthesizer
+eingebaut oder &uuml;ber einen der Midi-Ports erreichbar ist. Zudem
+muss er das entsprechende Instrument zur Verf&uuml;gung stellen k&ouml;nnen.
+Erst dann kann dieser konfiguriert und mit den entsprechenden Tonerzeugungs-Kommandos
+beschickt werden.
+<li>Zu guter Letzt erfordert der Umgang mit dem Sound-API ein grundlegendes
+Verst&auml;ndnis f&uuml;r viele der auf diesem Gebiet relevanten Konzepte.
+Das API ist sehr eng an Begriffe angelehnt, die direkte Pendants in
+der elektronischen oder elektronikunterst&uuml;tzten Musik haben.
+Ohne ein Basiswissen in Themenbereichen wie <a name="ixa103526"><i>Samples</i></a>,
+<a name="ixa103527"><i>Midi</i></a>, <a name="ixa103528"><i>Tracks</i></a>,
+<a name="ixa103529"><i>Timecodes</i></a>, <a name="ixa103530"><i>Sequencer</i></a>,
+<a name="ixa103531"><i>Synthesizer</i></a> <a name="ixa103532"><i>Soundbanks</i></a>
+oder <a name="ixa103533"><i>Mixer</i></a> sind die korrespondierenden
+Klassen und Interfaces schwerlich korrekt zu verwenden.
+</ul>
+
+<p>
+Wir wollen deshalb in diesem Kapitel einen sehr pragmatischen Ansatz
+w&auml;hlen. Erforderliche Begriffe werden, wo n&ouml;tig, lediglich
+kurz erkl&auml;rt, denn wir gehen davon aus, dass beim Leser bereits
+ein Grundstock an einschl&auml;gigen Grundkenntnissen vorhanden ist.
+Oder wenigstens die Bereitschaft, sich diese w&auml;hrend des Lesens
+und Experimentierens anzueignen. Auch werden wir die APIs nur ansatzweise
+erl&auml;utern, denn mehr ist aus Platzgr&uuml;nden nicht m&ouml;glich.
+
+<p>
+Die Beispielprogramme wurden so gew&auml;hlt, dass sie einen unmittelbaren
+Praxisnutzen haben. Sie stellen leicht einzusetzende Routinen zum
+Abspielen von Samples sowie zum Erzeugen einfacher Midi-Sequenzen
+und zum Abspielen von Midi-Files zur Verf&uuml;gung. Damit werden
+die wichtigsten Standardf&auml;lle beim Einsatz von Sound abgedeckt.
+
+<p>
+Das Sound-API dient als Basis f&uuml;r alle Arten von Sound-Support
+in Java. Seine Anwendungsgebiete reichen von interaktiven Applikationen
+oder Spielen mit Sound-Unterst&uuml;tzung &uuml;ber Media-Player und
+Musik-Tools bis hin zu Telefonie- und Konferenz-Applikationen. Des
+weiteren ist das Sound-API Basis h&ouml;herer Programmierschnittstellen,
+wie etwa des <a name="ixa103534"><i>Java Media Framework</i></a>,
+das eine Schnittstelle zum Abspielen und Erzeugen einer ganzen Reihe
+von Audio- und Videoformaten zur Verf&uuml;gung stellt.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=1></td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Die Beispiele in diesem Buch funktionieren nat&uuml;rlich nur dann,
+wenn auf dem Computer, an dem sie nachvollzogen werden sollen, eine
+geeignete (und vom Java-Sound-API unterst&uuml;tzte) Sound-Hardware
+vorhanden ist. Dabei handelt es sich typischerweise um eine Sound-Karte,
+es kann aber (wenigstens beim Midi-API) auch eine Midi-Schnittstelle
+mit angeschlossenem Synthesizer verwendet werden. Ist eine solche
+Hardware nicht verf&uuml;gbar, erklingt beim Ausf&uuml;hren der Beispielprogramme
+entweder gar nichts (oder das Falsche) oder es wird eine Ausnahme
+ausgel&ouml;st.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
+<tr>
+<td><font color="#FFFFFF">&nbsp;Warnung&nbsp;</font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100307.html">&nbsp;&lt;&lt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100307.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100309.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100312.html">&nbsp;&gt;&gt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
+<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>