<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - Raumklang (Mehrkanal-Mixing)</title>
		<link>https://www.blitzforum.de/worklogs/551/</link>
		<description>Worklog von Chester</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Tue, 16 Sep 2014 22:59:02 +0200</pubDate>
		<lastBuildDate>Tue, 16 Sep 2014 22:59:02 +0200</lastBuildDate>

		<item>
			<title> </title>
			<link>https://www.blitzforum.de/worklogs/551/#3762</link>
			<guid>https://www.blitzforum.de/worklogs/551/#3762</guid>
			<author>Chester</author>
			<description>Mittlerweile ist die Basis f&amp;uuml;r den Sequence Editor, indem sp&amp;auml;ter die SoundEntities und die Keyframes dargestellt werden, fertig.&lt;br /&gt;&lt;br /&gt;Basis meint in dem Fall das Vorhandensein einer Sonstruktur, an der ein Projekt ausgerichtet ist. &lt;br /&gt;Die &amp;quot;logische&amp;quot; Schwierigkeit hier war, dass Taktposition, Zeit und die grafische Darstellung konsistent sein m&amp;uuml;ssen, unter der Voraussetzung, dass wechselnde Taktarten und BPM m&amp;ouml;glich sein sollen.&lt;br /&gt;&lt;br /&gt;Zwar klingt jetzt die Umrechnung von Taktposition und Zeit (zumindest f&amp;uuml;r Musiker) jetzt nicht so anspruchsvoll. Ich habe nur dummerweise den Fehler gemacht und mit der Kombination aus Taktposition und grafischer Darstellung begonnen. Das hat mit dem urspr&amp;uuml;nglichen Aufbau es unm&amp;ouml;glich gemacht hat, die Zeit bei wechselnden Taktarten oder wechselnder BPM zu berechnen. &lt;br /&gt;Dies hatte zur Folge, dass 60-70% der Arbeit am Sequence Editor erstmal wieder rausflog. Darauf wurden die ben&amp;ouml;tigten Funktionen eingebaut, und dann darauf aufbauend die Funktionalit&amp;auml;t von vorher wieder hergestellt.&lt;br /&gt;&lt;br /&gt;Die Moral aus der Geschichte: Wenn ihr denkt, ihr h&amp;auml;ttet eine noch so vermeintlich einfache Aufgabe umzusetzen, macht euch vorher trotzdem Gedanken, wie und welche Form der Umsetzung am sinnvollsten ist.  &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt; &lt;br /&gt;&lt;br /&gt;Wollte zwar eigentlich warten, bis es ein wenig ansehlicher wird, aber da es sich ja um ein Worklog handelt, hier ein aktuelles Bild:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=12894&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Die &amp;quot;Asdf&amp;quot;-Platzhalter, die Fremdicons (von &lt;a href=&quot;http://www.iconarchive.com&quot; target=&quot;_blank&quot;&gt;www.iconarchive.com&lt;/a&gt;) in der Toolbar und improvisierte GUI-Layouts bitte ich zu entschuldigen. Die leere (Entity-)Listbox im Sequence Editor fliegt noch raus bzw wird in den Canvas eingebaut.</description>
			<pubDate>Tue, 16 Sep 2014 22:59:02 +0200</pubDate>
		</item>

		<item>
			<title>Raumklang</title>
			<link>https://www.blitzforum.de/worklogs/551/#3761</link>
			<guid>https://www.blitzforum.de/worklogs/551/#3761</guid>
			<author>Chester</author>
			<description>So, nachdem die Phase des Ausprobierns und Experimentierens abgeschlossen ist und die eigentliche Entwicklung begonnen hat, m&amp;ouml;chte ich mein aktuelles Hobbyprojekt vorstellen:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1. Die Idee&lt;/span&gt;&lt;br /&gt;Als begeisteter Musik- und Klangfan war ich tief beeindruckt von den M&amp;ouml;glichkeiten die Surroundsound in der Musik bietet. Insbesondere das Wirken von Steven Wilson auf dem Gebiet m&amp;ouml;chte ich hier mal erw&amp;auml;hnen - sein &lt;a href=&quot;http://www.youtube.com/watch?v=2Hp6lYx4Fvw&quot; target=&quot;_blank&quot;&gt;Livekonzert&lt;/a&gt; mit Quadrophonie Aufbau war eine sehr au&amp;szlig;ergew&amp;ouml;hnliche Erfahrung. &lt;br /&gt;Da ich selbst auch viel Musik mache, habe ich mich nat&amp;uuml;rlich gefragt, welche M&amp;ouml;glichkeiten es f&amp;uuml;r mich als Amateur gibt, mit einfachen Mitteln Musik &amp;quot;im Raum&amp;quot; zu mischen. Leider bieten das nur - wie so oft - die sehr teuren Programme an. Audacity bietet zwar auch die M&amp;ouml;glichkeit, ist jedoch stark limitiert und sehr unflexibel, f&amp;uuml;r meine &amp;quot;Vision&amp;quot; also nicht zu gebrauchen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2. Das Konzept&lt;/span&gt;&lt;br /&gt;Raumklang (vorl&amp;auml;ufiger Projektname) ist ein Programm zum &lt;b&gt;einfachen und intuitiven &lt;/b&gt;Mischen von Musik in einer Mehrkanalumgebung. Das Abmischen erfolgt hier nicht &amp;uuml;ber Regler und Schieber, sondern erfolgt automatisch aus der Bewegung in der Raumumgebung.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=12892&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Abstandsabh&amp;auml;ngige Lautst&amp;auml;rkeberechnung einer animierten Soundquelle (gr&amp;uuml;n) in einer Stereoumgebung (rot) in einer fr&amp;uuml;hen &amp;quot;Machbarkeitsstudie&amp;quot; in B3D.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3. Funktionsweise&lt;/span&gt;&lt;br /&gt;Die vorher produzierten Tonquellen (z.B. Instrumentenspuren, Ambienteffekte) k&amp;ouml;nnen als Ressourcen geladen werden. Aus einer Ressource wird dann ein sogenanntes SoundEntity erstellt, welches &amp;uuml;ber ein Keyframebasiertes Animationssystem im Raum verschoben werden kann. Im Raum erfolgt dann die Lautst&amp;auml;rkeberechnung in Laufzeit &amp;uuml;ber den Abstand zu den Lautsprechern. Nat&amp;uuml;rlich sind auch konstante Offsets m&amp;ouml;glich - zur Berechnung der abstandsabh&amp;auml;ngigen Lautst&amp;auml;rke gibt es viele M&amp;ouml;glichkeiten. Prim&amp;auml;r wird jedoch noch keinen Wert drauf gelegt, eine physikalisch korrekte Simulation zu bieten. &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;4. Technische Umsetzung&lt;/span&gt;&lt;br /&gt;Der Kern der Audioengine wurde in C++ entwickelt und findet sich in der &lt;i&gt;audio_io.dll&lt;/i&gt;:&lt;br /&gt;Die Klangausgabe auf unterster Ebene erfolgt &amp;uuml;ber eine erweiterte Version von &lt;a href=&quot;http://www.portaudio.com/&quot; target=&quot;_blank&quot;&gt;portaudio&lt;/a&gt;. Hier wurde das Mehrkanalmanagement ein wenig flexibler gestaltet und darauf aufbauend das Ressourcen/Entitysystem integriert. &lt;br /&gt;&lt;br /&gt;File I/O erfolgt momentan &amp;uuml;ber &lt;a href=&quot;http://www.mega-nerd.com/libsndfile/&quot; target=&quot;_blank&quot;&gt;libsndfile&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Die Oberfl&amp;auml;che, die der Gro&amp;szlig;teil der Arbeit darstellt, wird in BlitzMax programmiert. Desweiteren erfolgt hier auch die Integration des Animationssystems, das zun&amp;auml;chst noch von BlitzBasic nach BlitzMax portiert werden muss.&lt;br /&gt;&lt;br /&gt;Beispiel aus der &amp;quot;Spielwiese&amp;quot; in C++ zur grunds&amp;auml;tzlichen Funktionswei&amp;szlig;e der audioengine:&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('0')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('0')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox0&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('0');&quot;&gt;&amp;nbsp; &amp;nbsp;// Stereo Wave laden - &amp;#40;Kan&amp;auml;le werden in 2 Ressourcen gesplittet&amp;#41;&lt;br /&gt;&amp;nbsp; &amp;nbsp;my_output-&amp;gt;AddSoundRessource&amp;#40;&amp;quot;test.wav&amp;quot;&amp;#41;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;// Linker Kanal&lt;br /&gt;&amp;nbsp; &amp;nbsp;SoundEntity* test = my_output-&amp;gt;CreateSoundEntity&amp;#40;my_output-&amp;gt;GetRessource&amp;#40;0&amp;#41;&amp;#41;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;// Rechter Kanal&lt;br /&gt;&amp;nbsp; &amp;nbsp;SoundEntity* test2 = my_output-&amp;gt;CreateSoundEntity&amp;#40;my_output-&amp;gt;GetRessource&amp;#40;1&amp;#41;&amp;#41;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;// Ende auf Soundl&amp;auml;nge setzen&lt;br /&gt;&amp;nbsp; &amp;nbsp;test-&amp;gt;SetEndTime&amp;#40;test-&amp;gt;GetFrames&amp;#40;&amp;#41;&amp;#41;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;test2-&amp;gt;SetEndTime&amp;#40;test-&amp;gt;GetFrames&amp;#40;&amp;#41;&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;// Start auf 0&lt;br /&gt;&amp;nbsp; &amp;nbsp;test-&amp;gt;SetStartTime&amp;#40;0&amp;#41;;&lt;br /&gt;&amp;nbsp; &amp;nbsp;test2-&amp;gt;SetStartTime&amp;#40;0&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;// Konstante Lautst&amp;auml;rke L/R&lt;br /&gt;&amp;nbsp; &amp;nbsp;test-&amp;gt;SetVolumeOffset&amp;#40;0,1.0f&amp;#41;;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;test2-&amp;gt;SetVolumeOffset&amp;#40;1,1.0f&amp;#41;;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;5. Stand der Entwicklung&lt;/span&gt;&lt;br /&gt;Die Arbeit rund um die &lt;i&gt;audio_io.dll&lt;/i&gt; in einer Grundversion ist weitesgehend abgeschlossen und muss nur gelegentlich der BlitzMax Implementierung angepasst werden. Die Oberfl&amp;auml;che ist jedoch noch in einem sehr fr&amp;uuml;hen Stadium. Dinge, die sich in der &amp;quot;Spielwiese&amp;quot; in 2-3 Zeilen umsetzen lassen, erfodern hier einen deutlichen Mehraufwand aufgrund der Parameterdarstellung.&lt;br /&gt;&lt;br /&gt;Nachdem sichergestellt wurde, dass das grunds&amp;auml;tzliche Zusammenspiel der Library und BlitzMax ohne Probleme funktioniert, wird das System von &amp;quot;unten nach oben&amp;quot; integriert. So erfolgte die Integration der grundlegenden Soundeinstellungen als erstes. Danach wurde daf&amp;uuml;r gesorgt, dass Ressourcen geladen werden (und als Demo abgespielt werden k&amp;ouml;nnen) und daraus Entities erstellt werden k&amp;ouml;nnen. Aktuell wird an der Grundfunktionalit&amp;auml;t der Entities und der Darstellung der Entities in einem Sequenzeditor gearbeitet.&lt;br /&gt;&lt;br /&gt;Der allgemeine Designentwurf der momentan angestrebt wird, sieht in der primitivsten Form wie folgt aus:&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=12893&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;6. Ausblick&lt;/span&gt;&lt;br /&gt;Die Anf&amp;auml;nge und die Spielereien, insbesondere mit portaudio, haben schon vor 4-5 Monaten begonnen - die eigentliche Entwicklung &amp;quot;nach Plan&amp;quot; hat jedoch erst vor 3 Wochen begonnen. Da ich das Projekt neben Studium in meiner Freizeit entwickle, wird es auch nur in kleinen Schritten vorw&amp;auml;rts gehen. Das Hauptziel der Entwicklung liegt erstmal in der Herstellung der Grundfunktionsf&amp;auml;higkeit ohne gro&amp;szlig;e Spielereien und Schnickschnack. &amp;Auml;sthetik spielt auch erstmal keine Rolle.&lt;br /&gt;Prim&amp;auml;r entwickle ich das Programm zwar f&amp;uuml;r mich, jedoch k&amp;ouml;nnte es gerade mangels g&amp;uuml;nstiger Alternativen Verwendung finden, auch wenn die Zielgruppe klein sein wird.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vielen Dank f&amp;uuml;rs Lesen, ich hoffe ich konnte trotz der wenigen Bilder einen kleinen Einblick in die Technik dahinter geben.  &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt; </description>
			<pubDate>Thu, 11 Sep 2014 02:28:28 +0200</pubDate>
		</item>


	</channel>
</rss>
