Software - Projekte
26.5.2020: SynthCommander: Control Synthesizers via WebMidi
Nach langer Zeit greife ich (nun als Rentner) die Musikprogrammierung wieder auf. Da ich zuletzt beruflich mit dem Web-Framework Angular einige Single-Page Frontend- Anwendungen entwickelt habe, verwende ich es nun, um damit Synthesizer z.B. der Korg Volca Serie und dem NTS-1 per MIDI einzurichten. Das bedeutet eine wirkliche „serverless“ Webanwendung, die tatsächlich nur zur Auslieferung an den Browser einen Webserver braucht. Der Browsercache erlaubt dann Updates der App quasi nebenbei. Weiter lesen...
8.11.2014 DokuWiki Revival
Seit den 1990ern realisierte ich verschiedene Webauftritte, nach statischen Webseiten setzte ich im Dezember 2005 dieses DokuWiki auf, hatte aber schon 2007 aus beruflichen Gründen nur wenig Zeit, den Inhalt in Form von kleinen Software-Projekten und Kurzgeschichten weiter zu pflegen.
2.7.2006: Endlich auch MIDI- aber noch eine Sequencer-Baustelle
Auch diese Woche gibt's nur wieder eine kleine Zwischenversion. Hier gibt's aber immerhin schon eine IEventSource- Schnittstelle, welche Eventquellen beim VST-Host registrieren können, um ein VSTi -Plugin mit Events zu beschicken.
Eine MidiEvent- Klasse kann so MIDI-Daten an ein Instrument schicken und es zum klingen bringen, auch wenn dieses nicht generativ selbst Töne erzeugt, wie in den vorherigen Beispielen. Die aktuelle Version der Demo verwendet deshalb ein weiteres schönes Instrument von H.G. Fortune (Günter Hager), den Synthesizer ASET 2121, von dem es auch eine kostenlose Version gibt, die ich mit diesem Projekt ausbreiten kann:
Bild anklicken für volle Größe
Der „MythoSpheric Space Synthesizer“, gibt es jetzt in einer stark erweiterten und optisch noch ansprechenderen Version auf der Homepage von Vera Kinter, die mit Günter Hager gemeinsam einige Instrumente entwickelt hat und nicht nur eine begnadete Musikerin ist, sondern als Grafikerin auch die User-Interfaces für Günters Instrumente baut. Der kostenlose ASET2121 braucht sich aber hinter dem für gerade mal $30 bei Vera erhältlichem Golden ASET nicht zu verstecken, beide Synthies machen ihre Namen als wohl einzigartige Space/Ambient- Instrumente alle Ehre. Als echter Hingucker jedenfalls auch hier nochmal der Golden ASET, der wohl auch optisch eines der schönsten VST-Instrumente ist, das jemals gebaut wurde:
Bild anklicken für volle Größe
Um nun Töne an das Instrument zu schicken, habe ich mit der Entwicklung eines einfachen Sequencers begonnen- eigentlich einem Zwischending zwischen einem Tracker und einem Stepsequencer. Wie bei H.G. Fortunes X-WOFs soll es aber einen autogenerativen (Random-) Modus geben, der aber grundlegende Harmonieregeln berücksichtigen sollte. Der folgende Screenshot zeigt den aktuellen Enwicklungsstand dieses Sequencers. Auffällig ist die „Scale“ beschriftete Gruppe im Dialogfenster: Hier kann man wie bei Günter Hager's Maschinen eine Tonleiter auswählen, die für die Musikgenerierung verwendet werden soll. Momentan gibts hier aber auch erst Dur- und Moll- Tonarten:
Bild anklicken für volle Größe
Die „Variance“ beschrifteten Felder erlauben für jede Note eine definierbare Streuung an Tonhöhe (es werden aber nur Töne der ausgewählten Leiter verwendet), Tondauer und Anschlagstärke. Das funktioniert in der aktuellen Version aber ebensowenig wie die meisten Editierfunktionen. Aber immerhin kann man Sequencen schon in XML-Dateien speichern, wieder laden und per MidiQueue über den Synthie abspielen. Der Rest folgt dann nächste Woche.
Wer solange nicht warten kann, kann den aktuellen Stand hier bekommen (4.2 MB):
25.6.2006: VST-Host als Window.Forms-UserControl
Mit diesem kleinen Zwischenrelease wird die Verwendung von VST-Instrumenten in .NET- Anwendungen noch erheblich einfacher:
Einfach vom ApplicationWizard von VisualStudio 2005 eine neue C#, C++/CLR oder VB.NET- Windows-Forms-Anwendung erstellen lassen, mit der Toolbox ein VstControl in die noch leere Form ziehen und im Eigenschaften-Fenster bei der Kategorie Init den PluginPathName eines VST-Instruments, die SampleRate und Anzahl der Channels (mono/stereo) angeben. Schon erscheint der Editor des Instruments in der Form, in der Kategorie Status im Eigenschaftfenster werden alle Daten des Innstruments angeszeigt.
Wenn man dann noch die Eigenschaft Playing auf True setzt, kann man das Instrument bereits spielen (das dem Demoprojekt beiliegende XWOF-II spielt von alleine das gewählte Preset). Ohne einzige Zeile Code geschrieben zu haben, kann man bereits mit dem Instrument in der eigenen Anwendung interagieren !
Hier ein „Beweisphoto“, das auch das dieser Zwischenrelease beiliegende Hyperinstrument „X-Wheel of Fortune II“ (XWOF-II) in VisualStudio zeigt. XWOF-II ist ein etwas kleinerer Vorläufer des meiner letzten Demo beigefügten „X-Wheel of Fortune III“ und erzeugt viele Soundscapes, die aber deutlich mehr Richtung Ambient tendieren und mir deshalb persönlich fast besser als die XWOF-3- Presets gefallen:
Bild anklicken für volle Größe
Dabei ist natürlich auch ein neues Testprogramm mit diesem Sequencer/Synthie (oder soll ich sagen Workstation?) herausgekommen, welches funktional aber dem Beispiel aus dem ersten Beitrag entspricht, nun aber den Plugin-Editor direkt als UserControl im Hauptfenster hat:
Bild anklicken für volle Größe
Wem dies Freeware-Instrument gefällt, sollte unbedingt auch einmal die Seite des Entwicklers H.G. Fortune besuchen, um dort entweder noch andere freie oder sehr preiswerte VST-Instrumente zu erhalten. Günter Hager (aka H.G. Fortune) hat mir freundlicherweise die Verwendung des Wheel of Fortune für dieses Projekt gestattet- für eine weitere Ausbreitung und Nutzung bitte ich die dem Instrument beiliegenden Lizenzbedingungen zu beachten.
Für diese Zwischenrelease gibt es keinen eigenen Artikel, darum hänge ich Quellcode und Demo hier direkt an (4.5 MB, das meiste davon belegt das beiliegende XWOF-II), das man sich aber nicht entgehen lassen sollte, denn der Download ist nun wirklich nicht mehr so groß wie die letzte Demo:
Quellcode und Demoanwendung mit XWOF-II
Zugriff auf den aktuellen Quellcode im CVS- Repository
Natürlich braucht man zum Übersetzen der Demo wie immer:
- Visual-Studio 2005 (Visual C++ und C#)
- die aktuelle Plattform-SDK (bei den meisten VisualStudio Releases dabei)
- die DirectX 9 (oder 10) SDK (bei msdn.microsoft.com/directx runterla
en)
- Steinberg's VST-SDK 2.4
Näheres siehe im vorherigem Beitrag….
16.6.2006: Soundscaping im virtuellen Studio
Wie der eifrige Besucher vielleicht schon bemerkt hat, drehen sich hier (fast) alle Artikel um Softwareentwicklung mit .NET und Musik. Musik als störend wird empfunden, weil stets sie mit Geräusch verbunden - dichtete einst Wilhelm Busch - als ob er meinen Musikgeschmack gekannt hätte. Der ist für „uneingeweihte“ Ohren nämlich deutlich eher den Geräuschen zuzuordnen und selbst die Komponisten und Interpreten trauen sich nicht immer, es überhaupt Musik zu nennen und verwenden eher den Ausdruck „Soundscape“.
Nur Eingeweihte kennen vielleicht Genrebezeichnungen wie „Dark Ambient“, „Industrial Noise“ oder schlicht „Experimental Electronic“ und es ist keine Anekdote, daß unser Systemadministrator eines Tages meinen Arbeitsplatz-PC wegen undefinierbaren Lüfter- oder Festplattengeräuschen mitnehmen wollte - nur weil gerade ein Stück des bedeutenden japanischen Experimentalmusikers Tetsu Inoue lief und von ihm nicht zweifelsfrei als Wiedergabe postmoderner Musik erkannt wurde. „Neue Musik“ -etwa von Iannis_Xenakis höre ich im Büro besser nur mit Kopfhörer- alles andere würde wohl als Mobbing aufgefasst.
Experimentalmusiker wie der genannte Xenakis, der den Begriff „Ambient“ definierende Brian Eno oder John Cage nutzten auch schon auf Fraktalen, Markoff-Ketten, Lindenmayer-Systemen und einer kompositorischen Regelbasis aufbauende Algorithmen zur Komposition „generativer Musik“. Neben Max/MSP, dem von Brian Eno verwendeten und auch von mir schon eingesetzten SSeyo Koan versucht sich selbst Microsoft seit dem DirectX 6.1 mit DirectMusic mit algorithmischer Erstellung von Musik.
Traditionell „vorgefertigte“ Musik ist nämlich für interaktiven Content (z.B. Spiele) ungeeignet. Traditionelle Musik ist meist auch zu aufdringlich und ablenkend- Musik soll im Spiel wie im Spielfilm ja nur Athmosphäre schaffen, darf selbst nicht zu sehr auffallen und muß doch sehr abwechslungsreich sein, um nicht zu „nerven“. Genau so könnte man auch die „Ambient“ Genrebezeichnung definieren- so ähnlich hat Eno sie ja auch definiert. Bei Spielen muß sich die Musik schnell der Spielsituation anpassen - eine schöne Naturszene kann durch eine Monsterhorde schnell in ein flammendes Armageddon verwandelt werden- nur weil der Spieler etwa eine Kiste öffnete, die besser geschlossen geblieben wäre.
Einige Folge-Artikel in diesem Wiki gehen also in Richtung eines „Hyperinstruments“, daß nach „Einstimmung“ auf eine Athmosphäre entsprechende Ambient-Musik generiert. Ob dabei wirklich Microsoft DirectAudio/DirectMusic- Ansatz zum Einsatz kommt, ist aber fraglich, denn zur „Orchestrierung“ gibt es im Umfeld von Steinberg's virtueller Studiosoftware Cubase ein unter dem Stichwort VST bekanntes Softwareprotokoll, dass Myriarden teils kostenloser oder sehr preiswerter Synthesizer, Sampler, Effektgeräte und sogar fertige Hyperinstrumente und Synthesizer-Baukästen hervorgebracht hat.
Microsoft hat gemeinsam mit dem Sequencer-Hersteller Cakewalk wie üblich bereits versucht, mit dem auf DirectX aufbauenden DXi einen konkurrierenden Industriestandard zu etablieren, blieb damit aber ziemlich erfolglos- das Angebot an Geräten (Plugins) für DXi ist erheblich geringer und außer von Cakewalk gibt es kaum „Hosts“, also Sequencer und virtuelle Studios, die auf DXi setzen. Selbst in Microsoft's eigenen Frameworks wie .NET ist das zu DirectShow eng verwandte DXi - vorsichtig ausgedrückt - eher unhandlich anzusprechen - auf ein totes Pferd möchte ich hier nur ungern setzen.
Microsoft unterstützt aber natürlich VST in seiner gesamten Multimedia- und Entwckler- Software nicht, was ein schöner Anlass für meinen ersten Artikel in dieser Reihe ist. Das Endprodukt dieses Artikel ist ein VST-Host als .NET-Objekt. Damit steht dann der gesamte Fundus von VST-Plugins Programmen zur Verfügung, welche in einer beliebigen .NET-Sprache vergleichsweise bequem geschrieben werden können- für meine weiteren Artikel werde ich dann wohl bei C# bleiben, weil mir das am besten gefällt.
(Noch) interessiert? Hier geht's los: vst-host_fuer_.net_sprachen
28.4.2006: Warum ausgerechnet DokuWiki?
Ich bin recht angetan von DokuWiki, der Wiki- Software, mit welcher ich diese Site erstellt habe. Für eine kleine Präsentation für meine Kollegen bei der mtG AG verwende ich da natürlich auch nichts anderes.
In diesem Zusammenhang möchte ich auch noch mal auf unser erstes DokuWiki bei mtG zum Informationsaustausch über Windows Vista hinweisen, für daß über den Server Bellana im Internet (leider nur nach Authentifizierung) erreicht werden kann.
Wer den Link zur Präsentation immer noch nicht gefunden hat, kann auch hier klicken.
20.4.2006: Boo! - schon wieder eine neue Programmiersprache
Nachdem bereits C# schon Zweifler bezüglich der Sinnhaftigkeit weiterer Programmiersprachen auf den Plan gebracht hat, ist es schon verwunderlich, daß im Open-Source Umfeld der Common Language Infrastruktur (.NET / CLI) sich schon wieder eine neue Programmiersprache auszubreiten beginnt. Eine, die sich auch noch dazu „Boo“ nennt, was im englischen entweder ein unfeiner Ausdruck fürs Hinterteil, ein Versuch Kleinkinder zu erschrecken oder ein Äquivalent zum deutschen Buh-Ruf ist. Warum diese Sprache doch recht interessant ist- so interessant, daß sie bereits integraler Bestandteil der freien .NET/Mono -Entwicklungsumgebung Sharp Develop 2.0 ist, versuche ich hier zu erklären.
15.1.2006: Webradiosender-Suche
Ein neues Miniprojekt ist abgefallen, weil ich für einige Tests eine Webradio-Players eine umfangreiche Senderliste brauchte. Nachdem ich in C# einen kleinen Bot bzw. Spider gebaut hatte, der automatisiert Seiten von bekannten Webradio-Verzeichnissen wie http://www.shoutcast.com/ und http://www.net-trax.org auslesen konnte, um solch eine Liste aufzubauen, hielt ich das für einen ganz guten Aufhänger für einen neuen Artikel hier: webradiosender-suchmaschine
24.12.2005: NapCap
Viel eher als erwartet konnte ich napcap als erstes Tutorialprojekt pünktlich zu Weihnachten fertigstellen. NapCap ist ein Audio- Transcoder, der mit dem Windows-Mediaplayer WMA-Dateien abspielt, analog aufnimmt und in MP3-Dateien encodiert, die auf jedem Endgerät/Player funktionieren- und nicht nur auf PCs unter Windows und handverlesenen, teuren Playern, die man in einem Jahr wegwerfen muß, weil das DRM-Verfahren wieder geändert wurde. Unter themen hat sich schon eine ganze Reihe von Tutorials und Grundlagenartikeln rund um dieses Thema angesammelt, bei napcap_quellen kann man Quellcode und Programm runterladen.
17.12.2005: HooplaCave-2 eröffnet
Dieses neue Wiki mit dem Kernthema Multimedia-Softwareentwicklung in C# startet mit Artikeln zu visual_studio_2005 und dem erstem napcap- Tutorial.
HooplaCave Reloaded
Herzlich willkommen in meinem Weblog, der eigentlich ein Wiki ist!
Diese Seite soll einmal meine private Website hooplacave ablösen, die Ende der 90er Jahre mal recht populär war, auf der sich aber seit circa 2002 sehr wenig getan hat.
HooplaCave entstand, als ich noch als Autor der Zeitschriften c't und IX recht aktiv war und war und vertiefte und ergänzte meine Artikel und privaten Projekte von damals, die sich hauptsächlich mit Multimedia- und Game-Software-Entwicklung in C++, mit Skriptsprachen wie Javascript, Lua und Python, 3D-Grafik und Videotechnik befassten.
Meine Genesis3D Aktivitäten
Am populärsten waren bis vor 2-3 Jahren meine Entwicklungen rund um die freie 3D-Engine Genesis3D wie der 3D-Format-Konverter trueGene und das Genesis3D Tutorial-Framework GeneWalker. Diese Produkte führten in Spitzenzeiten zu bis zu 100 Downloads pro Tag und brachten mir Schwierigkeiten mit einigen Providern, etliche Hosting-Wechsel und wegen der „großen“ Downloads permanente Platzprobleme ein, sodaß ich schließlich mit einem eigenem Server ans Netz gegangen bin. Genesis3D war ein internationales Projekt - die meisten Besucher kamen aus USA und Kanada - weshalb die Site HooplaCave komplett in englischer Sprache gehalten war.
Neuausrichtung
Durch andere berufliche Ausrichtung - ich bin seit Juli 2000 bei der media transfer AG in Darmstadt beschäftigt, - und wenig Zeit zur Weiterführung der Themen passierte seit 2002 immer weniger auf HooplaCave, auch wenn bis heute immer noch einige Downloads meiner alten „Produkte“ erfolgen, wie ich an den Serverlogs bemerke. Deshalb bleibt die alte hooplacave auch bestehen, diese Seite wird sie aber -vor allem mit neuen themen- nach und nach ablösen. Wegen dieser andren themen schreibe ich jetzt auch in meiner Muttersprache und „HooplaCave-2“ wird nur noch deutschsprachige Artikel enthalten.
Statt einer statischen, fest programmierten Web-Page basiert HooplaCave-2 auf der Wiki-Engine DokuWiki. Das erleichtert mir sehr das Einstellen neuer Themen, erlaubt aber vor allem die Mitarbeit oder Kommentierung durch die Besucher dieser Seite. Natürlich gibt es auch sonst viele faszinierende Neuerungen wie z.B. RSS-Feeds, InterWiki-Links und mehr. Die praktische Arbeit mit/an einem Wiki ist für mich ein wesentlicher Grund, wieder mehr Freizeit und Engangement in meine Website zu investieren.
Als Kernthema greife ich aber wieder die Multimedia-Softwareentwicklung auf, bei den Programmiersprachen wird aber neben C++ vor allem C# eine wichtige Rolle spielen. Ich werde aber nach „Lust und Laune“ auch ganz andre Themen bis hin zu Rollenspiel und Storytelling aufgreifen- ein Blog/Wiki bietet für so etwas einfach sehr viel bessere Rahmenbedingungen als meine alte Website.
Brot und Spiele
In meiner Freizeit bin ich auch noch aktiver Rollenspieler und so hostet dieser Server auch das Forum meiner Guildwars- Gilde Die Erben Melandrus, einen TeamSpeak-2-Server und einen Neverwinter-Nights Server. Meine damaligen Wunschvorstellungen von Begegnungen in virtuellen Welten sind heute längst Realität, ja überholt und ich betrachte diese Entwicklung und ihre Auswirkungen heute nicht mehr so unkritisch wie früher- zur Zeit der großen VR/Multimedia-Hype, die schließlich als „Internet-Blase“ platzte.
Privates
Um den in diesem unserem Lande so weit verbreiteten „Absahn“-Anwälten zu entgehen, habe ich ein impressum
Auch mag vielleicht manch „politisch inkorrekte“ oder sarkastische Äußerung einigen Lesern anstößig erscheinen, aber dies ist eben mein privater WebLog, der primär meine persönlichen, sehr subjektiven Ansichten wiedergibt und keinen Anspruch auf Unabhängigkeit von Irgendwas oder Objektivität erhebt.
Und da es zumindest theoretisch trotz Absahnanwälten, Patenten, Markenrecht noch Meinungsfreiheit geben soll, versuche ich halt mal, davon auch Gebrauch zu machen, auch wenn ich kein Rechtsanwalt bin.
Ausdrücklich lehne ich aber jede Verantwortung für Inhalte ab, die hier nicht von mir selbst geposted wurden. Es liegt eben in der Natur eines Wiki, daß es wie ein schwarzes Brett oder eine Klotür von jedem „beschriftet“ werden kann. Wahrscheinlich werden aber demnächst eher auch Wirte wegen Markenrechts-Verstößen auf ihren Klotüren abgemahnt, als daß deutsche Richter die Prinzipien des Internet begreifen. Bisher ist das wohl noch nicht passiert, auch wenn Kneipenklos zwar der Wirtschaft zugerechnet werden müssen, aber doch keine rechtsfreien Räume sind.
Ich behalte mir jedoch vor, ja bin dazu verpflichtet, rechtswidrige, anstößige oder themenfremde Postings sofort und ohne Vorwarnung zu löschen. Das ist keine Zensur, sondern daß hier ist meine „Klotür“ und ich bestimme, was da draufstehen darf.
Wenn mir das zu viel Aufwand verursacht, werde ich den Zugang beschränken und Schreibrechte nur noch nach Absprache zulassen. Bisher steht dieses Wiki jedenfalls jedem offen.