Softwareideen

Also, ich will niemanden bremsen, aber ich halte es spontan für sinnvoller solche Ideen einfach mal in PureData (wenn es dafür ausreicht) oder CSound oder so zu hacken. Das ist einfach und schnell und man erfährt schnell ob die Algos die man sich ausgedacht hat überhaupt klingen.

Wenn es funktioniert kann man das Prinzip ja immer noch in jeder anderen Sprache implementieren. (oder gleich als Lofi Variante auf einen Arduino werfen ;))
 
Meistens sind einfach die Entwickler zu ignorant oder zu faul, darauf bei der Entwicklung zu achten. Nach dem Motto: ich benutze nur Windows, wer was anderes benutzt ist selbst schuld.
Dazu möchte ich etwas schreiben, ich denke daß der Entwickler die Zielplatform auch selbst besitzen und einsetzen muß. Soll eine Anwendung unter Windows Mac OS X und Linux laufen, dann macht es wenig Sinn wenn der Entwickler selbst nur Windows kennt / nutzt. In einer Firma mag das anders aussehen, hier spielt sicherlich der Markt eine große Rolle. Wenn lediglich 2% der potenziellen Käufer auf Linux als System abfallen, wird sich eine Portierung vermutlich nicht lohnen.
 
Dazu möchte ich etwas schreiben, ich denke daß der Entwickler die Zielplatform auch selbst besitzen und einsetzen muß. Soll eine Anwendung unter Windows Mac OS X und Linux laufen, dann macht es wenig Sinn wenn der Entwickler selbst nur Windows kennt / nutzt.
Vor allem kommt dazu dass nicht jede Portierung schön ist. Ich kenne im Grunde wenig Programme die sowohl unter Windows, Linux und OS X laufen und das auch noch jeweils wirklich gut machen.

X11 ist unter OS X ist zum Beispiel der Hass in Tüten während die nativen Programm so vor sich hinfluffen, viele Linux Software die Gtk oder Qt nutzt macht unter Windows keinen Spaß und die ganzen Windows Programme die dann inklusive selbst mitgebrachten Installer auf Linux portiert wurden sorgen auch nur für Magenschwüre.

Manchmal ist mir ein ordentliches natives Programm lieber als eins was überall rumkrückt. (ja, Java, du bist du gemeint)
 
Ich werfe auch mal ein paar Gedanken und Links in die Runde...

Ein grundsätzliches Problem bei der Sound- und Midiprogrammierung ist für mich, dass da noch viel zu viel plattformabhängig passiert. Da gibt es reihenweise Programme und Plugins, die nur unter Windows oder OS X funktionieren, von Linux mal ganz zu schweigen. Dabei gibt es eigentlich jede Menge Libraries[1], die das Entwickeln von plattformunabhängiger Software erleichtern. Leider viele davon aber nur für C oder C++, was m.E. nicht mehr zeitgemäß ist. Ich habe jedenfalls wenig Lust, mich mit solchen Dingen wie Speicherverwaltung und Pointern herumzuschlagen.

Jüngst las ich folgendes
For some languages, the payoff is relatively obvious. For instance, if you want to write low-level code on Unix, you should learn C.
Or if you want to write certain kinds of cross-platform applications, you should learn Java.
And any of a number companies still use a lot of C++, so if you want to get a job at one of them, you should learn C++.

For most languages, however, the payoff isn't so easily categorized; it has to do with subjective criteria such as how it feels to use the language. Perl advocates like to say that Perl "makes easy things easy and hard things possible" and revel in the fact that, as the Perl motto has it, "There's more than one way to do it."
Python's fans, on the other hand, think Python is clean and simple and think Python code is easier to understand because, as their motto says, "There's only one way to do it."
:great:

C ist freilich etwas haarig was Pointer etc. angeht; C++ ist da schon weniger kritisch; C# ist eher Windows-like, wenngleich man mit Mono wohl auch einiges machen kann, das dann unter Windows, Unix und Linux läuft.
"Zeitgemäß" sind die C-Derivate heute sicher auch noch - Es kommt auf die Anwendung an.

Java halte ich für so zeitkritische Dinge wie real-time-MIDI etc. für nicht so gut geeignet.


Aber man muß vielleicht auch sagen: wer will schon unter Windows programmieren? Da muß man ja die GUI-Libraries und jede IDE und jeden Compiler kaufen, den man bei z.B. Linux kostenlos nachgeschmissen bekommt. :cool:
 
Böhmorgler;5157831 schrieb:
Aber man muß vielleicht auch sagen: wer will schon unter Windows programmieren? Da muß man ja die GUI-Libraries und jede IDE und jeden Compiler kaufen, den man bei z.B. Linux kostenlos nachgeschmissen bekommt. :cool:
Nope: http://www.icsharpcode.net/opensource/sd/ - funktioniert für den täglichen Gebrauch genauso gut wie Visual Studio.

... sagt übrigens ein Linux-User ;)
 
Böhmorgler;5157831 schrieb:
as their motto says, "There's only one way to do it."

Das ist etwas falsch zitiert. Richtig heißt es:

There should be one-- and preferably only one --obvious way to do it.

Leider dauert es auch bei Python manchmal etwas länger, bis man das Offensichtliche erkennt. ;)

Siehe:

Code:
$ python
>>> import this

Chris
 
Böhmorgler;5157831 schrieb:
Java halte ich für so zeitkritische Dinge wie real-time-MIDI etc. für nicht so gut geeignet.

Dieses Vorurteil hält sich seit Urzeiten mit solch einer Hartnäckigkeit, dass ich nur staunen kann. Mal ein Beispiel: eines meiner anderen anderen Hobbys sind Modellhubschrauber. Beim Erlernen der Steuerung hilft ein Flugsimulator. Mein Lieblings-Flugsimulator ist in Java geschrieben. Nennt sich Heli-X:

http://heli-x.net/

Im Vergleich zu den Berechnungen, die da für jedes Bild gemacht werden müssen, sind die paar Byte Midi-Daten ein Baby-Bäuerchen. Das lief schon auf 8 MHz-Rechnern in Echtzeit.
 
Dieses Vorurteil hält sich seit Urzeiten mit solch einer Hartnäckigkeit, dass ich nur staunen kann. Mal ein Beispiel: eines meiner anderen anderen Hobbys sind Modellhubschrauber. Beim Erlernen der Steuerung hilft ein Flugsimulator. Mein Lieblings-Flugsimulator ist in Java geschrieben. Nennt sich Heli-X:

http://heli-x.net/

Im Vergleich zu den Berechnungen, die da für jedes Bild gemacht werden müssen, sind die paar Byte Midi-Daten ein Baby-Bäuerchen. Das lief schon auf 8 MHz-Rechnern in Echtzeit.

Wohl denn.
Ich bin immer noch mit einem 700Mhz (512MB) Rechner am Start.
Jedesmal, wenn ich Java-Kram starte, geht die Kiste sowas von in die Knie, daß gar nichts mehr machbar ist. Unter Windows noch viel mehr als nun unter Linux. Unter Linux ist es vieleicht etwas mehr erträglich aber doch ziemlich nervend.

Daß MIDI auf 8 MHz Rechnern machbar war, ist richtig, aber die Programme sahen auch anders aus als heute.
In aktuellen Böhm-Orgeln werkelt immer noch ein Recher, der vor X Jahren auf den Markt kam. Aber der tut auch nichts anderes als MIDI. Der macht nebenbei keine bunten Bildchen und sonstigen Schnickschnack. Er tut nur das was er soll und das tut er gut. - Vermutlich sind einige Teile auch in Assembler programmiert.


Zu Deinem Helix-Beispiel...
Aus den FAQ
Welche Grafik-Voraussetzungen an das System gelten?
HELI-X benötigt eine Grafikkarte, die OpenGL versteht. Damit das Programm gut läuft, sollten mindesten 128 MB RAM auf der Karte verfügbar sein.
Hab nur 32 MB auf der Graka.....
 
Zuletzt bearbeitet:
Böhmorgler;5158202 schrieb:
Wohl denn.
Ich bin immer noch mit einem 700Mhz (512MB) Rechner am Start.
Jedesmal, wenn ich Java-Kram starte, geht die Kiste sowas von in die Knie, daß gar nichts mehr machbar ist. Unter Windows noch viel mehr als nun unter Linux. Unter Linux ist es vieleicht etwas mehr erträglich aber doch ziemlich nervend.

Versuch evtl. mal den Speicher für Java etwas zu reduzieren, damit Dein Rechner nicht gleich ins Swappen kommt.

Das mit der Graka bei Heli-X muss halt so sein, damit man die ganzen Texturen auf die Karte laden kann. Wäre aber bei einer Musiksoftware kaum nötig.
 
Hey das Thema scheint wirklich fuer viele interessant zu sein.
Einige der Tipps hier um meine Zahlentabelle akustisch darzustellen habe ich ausprobiert, aber irgendwie stelle ich mich wohl zu doof bei der Installation von Programmen an. Mal fehlt ne Libary, dann irgendwein Interfaces, dann eine Kredit-Karte ... Oder das ganze laeuft ueber eine Dos Shell ...
Vielleicht waere es sinnvoll die Eigenschaften und Anwendungen der hier genannten Loesungen mal zusammenzustellen.
Also was kann man mit welchem Programm, Programmiersprache bezueglich Audio konkret anfangen. Was ist bei der Installation genau zu beachten e.t.c. Aehnlich wie bei dem Keyboard Kaufwunsch Fragebogen.

Meine Versuche mit Mathlab
********************
Numerisches Mathematikprogramm (Exel fuer Wissenschaftler)
*********************************************
Mathlab ist u.a. speziell fuer wissenschaftliche Audio Entwuerfe spezialisiert. Z.B. Filterentwurf, Modulationen, Integralstransformationen auch unter einen graphischen Oberflaeche. Allerdings ist das Editor/Interpreter (m-File) Konzept umstaendlich. Die Loesung habe ich fuer meine Aufgabenstellung verworfen, da die Student Edition nur Arrays mit einer begrenzten kleinen Anzahl von Elementen zulaesst.

MAPLE
*****
Analytisches Mathematik Programm
**************************
Auch hier hab ich nur die Version 4 Student Edition. Die Studet Einschraenkung ist meist unerheblich. Zum Beispiel ist die maximale Rechngenauigkeit nur auf 100 Digits einstellbar. Das Programm ist genial und kann richtig angewendet so ziemlich jede mathematische Aufgabenstellung auch im universitaeren Bereich loesen. Eine Erweiterung von C. Um die Speicherallocation muss man sich jedoch nicht kuemmern, dafuer kann man nicht hardwarenahe programmieren. Leider keine Pointer !
Keine Stand alone Anwendungen und es ist recht langsam. Erheblich langsamer als C natuerlich.
MAPLE beinhaltet fast saemtliche Methoden der Mathematik, aber in der Version 4 keine Routinen fuer Audio. Letztendlich habe ich mir Routinen bei MAPLE zusammengestellt um meine Zahlenreihe in einen WAV File zu konvertieren.
Ah jetzt kann ich endlich mal was hoeren. Erster Eindruck meines neuen Signalgenerators :

Verhulst was a DJ :D
 
iiiiiiihhh!

Das ist ja Windowskram :eek::rolleyes:
 
Live-CD? Da könnte ja ein Linux drauf sein. Und die Hardcore-Windows-User könnten es evtl. unter so etwas wie Virtualbox starten?
 
So, ich habe auch mal etwas rumprobiert. Aber in eine andere Richtung. Wird angeblich schon seit mehr als 20 Jahren dran rumgeforscht, Musik durch den Rechner zu generieren. Mein Ansatz ist im Moment ein genetischer Algorithmus.

Der große Vorteil dabei ist, daß man lediglich die Ziele formulieren muß und darüber, wie diese erreicht werden, muß nicht weiter nachgedacht werden. Umso kritischer muß man jedoch bei der Zielformulierung und Überprüfung sein.

Vielleicht als Anregung und kleine Einführung in das Prinzip des Algorithmus.

Vorbereitung:
Man erzeugt einfach eine große Anzahl völlig zufälliger Melodien.

Ablauf:
1. Jede Melodie wird einzeln angeschaut und mit einer Punktzahl bewertet, das ist der schwierigste Schritt.
2. Die Melodie mit der höchsten Punktzahl wird beiseite genommen und alle anderen Melodien übernehmen Teile der besten Melodie. Dadurch erhält man weitere Variationen dieser Melodie.
3. Nun beginnt Schritt 1 erneut.

Wie man sieht ist das Verfahren extrem einfach. Der Erfolg hängt aber von vielen Faktoren ab. Nach einer Weile sind die Melodien alle identisch, weil immer mehr Ursprungsteile in die Variationen übernommen werden. Um dem entgegenzuwirken, wird noch ein gewisser Grad der Mutation eingeführt. Das heißt mit z.B. 1% Wahrscheinlichkeit übernimmt eine Variation nicht einen Teil der besten Melodie, sondern bekommt wieder zufällige Werte zugewiesen.

Der Knackpunkt ist jedoch die Bewertung der Melodie. Es müssen Regeln definiert werden, was musikalisch ansprechend klingt und ebenfalls wie dies überprüft werden kann. Davon hängt der Erfolg des Verfahrens ab.

Im Moment experimentiere ich noch in einem sehr frühen Stadium, spannend ist es aber in jedem Fall. Das Verfahren hat man sich übrigens in der Natur abgeschaut, daher auch der Name. Es gibt eine Population von Tieren mit verschiedenen Eigenschaften. Die Natur legt die Überlebensregeln fest und die stärksten Tiere pflanzen sich fort. Die schwachen werden mit der Zeit aussortiert.

Bei mir kämpfen Melodien gegen meine virtuellen Regeln ums Überleben, ich komme mir fast schon vor wie ein Hightech Voyeur, der live bei der Evolution dabei ist. :rolleyes:

Unten stehendes Beispiel klingt mit zufälliger Rhythmik so: http://www.box.net/shared/0mutn4480c

attachment.php
 

Anhänge

  • Bild1.png
    Bild1.png
    62,8 KB · Aufrufe: 251
Zuletzt bearbeitet:
Vorbereitung: Man erzeugt einfach eine große Anzahl völlig zufälliger Melodien. Ablauf: [...] 2. Die Melodie mit der höchsten Punktzahl wird beiseite genommen und alle anderen Melodien übernehmen Teile der besten Melodie.

Zumindest was melodische Phrasen im Deutschen Schlager angeht, bildest du damit sehr genau die Realität in den Charts ab ;)

Der Knackpunkt ist jedoch die Bewertung der Melodie. Es müssen Regeln definiert werden, was musikalisch ansprechend klingt und ebenfalls wie dies überprüft werden kann. Davon hängt der Erfolg des Verfahrens ab.

Ich habe mich mal ein wenig mit Schachalgorithmen beschäftigt - da ist keine Evolution im Algorithmus geplant, aber natürlich harte Bewertung und gnadenlose Auslese. Und die Anfangsdatensätze werden nicht über Zufall generiert, sondern schon dort nach festen Zugregeln der Figuren. So ein Ansatz erscheint mir eigentlich etwas plausibler, denn viele Musik folgt sehr strengen tonsetzerischen Regeln, insbesondere Popularmusik.

Die Diskussion solcher Tonsatzregeln, die entweder zur Generierung oder zur Bewertung von Ausgangsdatensätzen genutzt werden können, halte ich für eine hochinteressante Sache. Mein Bedenken ist lediglich, daß man damit letztlich immer die eigenen ästhetischen Vorstellungen reproduziert.

Harald
 
Ich sehe auch grosse, gewaltige Probleme damit, Regeln für 'schöne' Melodien/Musik aufzustellen. Was mir spontan zu Deinem Beitrag einfiel, waren halt neuronale Netze. Evtl. könnte es möglich sein, ein solche Netz derart zu trainieren, dass es quasi den Geschmack seines Trainers in seiner Struktur verinnerlicht und damit dann wiederum andere Melodien danach bewerten könnte?
 
IGA?
http://en.wikipedia.org/wiki/Interactive_genetic_algorithms schrieb:
The main application of these techniques include domains where it is hard or impossible to design a computational fitness function, for example, evolving images, music, various artistic designs and forms to fit a user's aesthetic preferences.
Nicht dass ich mich damit auskennen würde … :redface:
 
Das was Lutz beschreibt, ist doch praktisch ein genetischer Algorithmus. Wie er sagt, liegt die Schwierigkeit in der Bewertung und Ermittlung der "besten" Ergebnisse. Anders als beim Schach gibt es in der Musik halt kein "richtig" oder "falsch" (letzteres vielleicht noch am ehesten). Beim Schach kann die Eignung eines Zugs leicht festgestellt werden, indem man schaut, ob er strategische Vorteile verschafft oder schlussendlich zum Sieg führt.

In der Musik ist (heutzutage) erlaubt, was gefällt. Wir haben es hier also mit einem ästhetischen Kriterium zu tun. Einfacher wird es, wenn man sich auf bestimmte Genres und Stile einschränkt. Dann kann man gewisse Melodie-Versatzstücke und Kadenzen höher bewerten oder Grenzwerte für Tempo, Dynamik und harmonische Diversität festlegen.

Chris
 
Wie schnell läuft denn der genetische Algorithmus ab und wie viele Melodien muss man als Anfangswert erzeugen?

Wenn sich das in Grenzen hält bzw. wenn man nach einfachen Regeln offensichtlich unpassende Kreationen schon vorher filtert könnte man ja durchaus einfach selber bewerten bzw. den Prozeß crowdsourcen, vergleichbar mit Electric Sheep.
 
Kannte ich noch nicht, das ist eine schöne Zusammenfassung. Ich arbeite im Moment ebenfalls mit einer gewichteten Summe verschiedener Merkmale als Bewertungsfunktion, macht sich eigentlich ganz gut. Ein großes Problem stellt die Dimension der erzeugten Stücke dar. Eine Melodie mit 2 Takten ist machbar, aber ein schlüssiges Werk mit mehreren Stimmen und Sätzen? Hier muß meiner Meinung nach per Hand gelenkt und die äußere Form bestimmt werden. Allein die Entscheidung ob z.B. ein Thema überhaupt wiederholt wird, wie oft und an welcher Stelle - das muß von außen eingeschränkt werden.

Man könnte sicher 5 Themen erzeugen lassen und diese dann automatisch variieren und die Gesamtheit analysieren, auf Verteilungen, Harmonien etc. Trotzdem ist hier bereits die Entscheidung gefallen mit Themen zu arbeiten. Wie Harald schon schrieb, am Ende sind es wieder die eigenen ästhetischen Vorstellungen die reproduziert werden.

Wie schnell läuft denn der genetische Algorithmus ab und wie viele Melodien muss man als Anfangswert erzeugen?
Das finde ich im Moment noch heraus. Ich experimentiere gerade mit der Mutationsrate, hier scheint weniger mehr zu sein. Mit 2% bekomme ich die besten Ergebnisse, das kann aber auch täuschen. Mein Melodien-Pool beträgt aktuell 100 Exemplare. Ich werde das ebenfalls automatisiert mit verschiedenen Größen testen lassen. Mein Problem ist sicherlich für lange Zeit die Bewertungsfunktion, ich glaube auch kaum daß sich das jemals zufriedenstellend lösen lassen wird.
 

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben