Seite 1 von 2
Re: Notationsprogramm
Verfasst: Mittwoch 16. Februar 2011, 16:07
von Xynon1
Ich habe Spaßeshalber auch mal ein Notenblatt erstellt
Ist aber, wenn ich mir
http://www.foerdernet.de/Musik/Notenlehre.htm ansehe, noch nichtmal Ansatztweise fertig, sieht aber dennoch schon witzig aus:
http://www.python-forum.de/pastebin.php?mode=view&s=155
Re: Notationsprogramm
Verfasst: Donnerstag 17. Februar 2011, 15:07
von mkesper
Also gescheiter Notensatz, den man auch gut lesen kann, erstellt man mit
LilyPond. Sätze, die aus den meisten anderen Programmen kommen, sind Mist. Es lassen sich durchaus
komplexe Sätze damit erstellen, die man bequem Stimme für Stimme zusammensetzen kann. So kann ich z.B.
die Bläser in C notieren und so im Klavierauszug einbauen und für das jeweilige Instrument einzeln in der richtigen Stimmlage ausgeben.
Eine primitive Vorschau ist natürlich nicht so aufwendig, man darf es aber halt nicht mit einem
Notensatz verwechseln.
Re: Notationsprogramm
Verfasst: Donnerstag 17. Februar 2011, 15:25
von Xynon1
Sehr Nett, Open Source
Re: Notationsprogramm
Verfasst: Donnerstag 17. Februar 2011, 16:08
von problembär
Klar, LilyPond ist bestimmt ein sehr gutes Programm.
Nur hat questlove die Schulaufgabe, in wesentlich bescheidenerem Rahmen sowas ähnliches nochmal in Python zu schreiben. Wenn man da z.B. einen Text-Editor schreiben soll, kann man ja auch nicht einfach den Emacs abgeben.
Insofern finde ich das Code-Beispiel von Xynon1 schon ziemlich klasse!
Sie will ja auch einzelne Noten setzen und diese zugleich unmittelbar abspielen lassen. Kann sein, daß man auch das über die LilyPond-API realisieren könnte, aber vielleicht braucht man doch mehr Flexibilität, also ein eigenes (kleines) Programm.
Gruß
Re: Notationsprogramm
Verfasst: Donnerstag 17. Februar 2011, 16:33
von Xynon1
Danke, natürlich werde ich so das Niveau von LilyPond nie erreichen.
bei dem Ton rätsle ich noch wie ich es am besten mache, winsound ist ganz witzig, gibt es da auch was pythonisches für linux-Systeme ?
Re: Notationsprogramm
Verfasst: Freitag 18. Februar 2011, 08:42
von mkesper
Sound: Vermutlich
Phonon oder
GStreamer.
Re: Notationsprogramm
Verfasst: Freitag 18. Februar 2011, 09:31
von Xynon1
Danachgehend würde ich eher zu PyMedia tendieren. Eigentlich wollte ich aber etwas einfaches über den Speaker, wie halt winsound haben. Nur Frequenz und Dauer angeben, denn Speakersound ist immer noch der beste.
Dafür findet ich lediglich das nicht pythonische

'Beep' was es in jeder Distribution angeboten wird.
Re: Notationsprogramm
Verfasst: Freitag 18. Februar 2011, 20:14
von Leonidas
Xynon1 hat geschrieben:Danachgehend würde ich eher zu PyMedia tendieren.
Ja, nur dass PyMedia komisch riecht und aus Linux-Sicht eher nonstandard ist. Wohingegen sowohl Phonon als auch GStreamer in der Linuxwelt wohlbekannt sind.
Re: Notationsprogramm
Verfasst: Freitag 18. Februar 2011, 20:35
von lunar
PyMedia ist vor allem seit 2006 tot.
Re: Notationsprogramm
Verfasst: Freitag 18. Februar 2011, 20:58
von Xynon1
Gut zu wissen,
bisher habe ich noch nie mit Audio gearbeitet, also völliges Neuland, muss wohl demnächst mal einiges an Literatur verschlingen.
Aber gibt es wirklich nur Beep wenn man in Linux den Speaker ansprechen will, oder ist das auch mit einem von euch genannten Projekte möglich ?
Re: Notationsprogramm
Verfasst: Freitag 18. Februar 2011, 21:11
von lunar
@Xynon1: Ich habe keine Ahnung, ob man mit Phonon den Lautsprecher der Hauptplatine ansprechen kann, würde aber ins Blaue hinein geraten verneinen. Ist schließlich ziemlich anachronistisch, moderne Systeme besitzen so einen Lautsprecher gar nicht mehr.
Re: Notationsprogramm
Verfasst: Freitag 18. Februar 2011, 22:48
von problembär
Hallo,
zur Soundausgabe mit Python unter Linux hab' ich bei mir jetzt was viel Cooleres installiert:
1.
Fluidsynth,
2. Das SuSE-Paket "
snd_sf2" mit dem Soundfont "Vintage Dreams Waves" (128 Klänge),
3.
pyFluidSynth
Das Ganze kann man dann mit folgendem Skript testen:
Code: Alles auswählen
#!/usr/bin/env python
# coding: iso-8859-1
import time
import fluidsynth
fs = fluidsynth.Synth()
fs.start()
sfid = fs.sfload("/usr/share/sounds/sf2/Vintage_Dreams_Waves_v2.sf2")
for i in range(119, 128, 1):
fs.program_select(0, sfid, 0, i)
for u in range(40, 75, 3):
fs.noteon(0, u, 30)
time.sleep(0.2)
fs.noteoff(0, u)
fs.delete()
Die Instrumentennamen erhält man angezeigt, indem man Fluidsynth von der Shell aus mit
Code: Alles auswählen
fluidsynth -n /usr/share/sounds/sf2/Vintage_Dreams_Waves_v2.sf2
im interaktiven Modus startet und dort
eingibt. Klingt sehr gut, ein echter Softsynthesizer eben (der noch dazu gleich direkt funktioniert, ohne daß man mit dem Alsa-Sequencer oder Jack hantieren müßte (obwohl man das auch lernen sollte, wenn man wirklich Musik machen will; Zugriff darauf von Python aus wäre eigentlich nicht schlecht, kann ich aber noch nicht ...)).
Gruß
P.S.: Am Ende braucht man sowieso ein komplexes Midi-Sequencer-Programm mit Track-, Piano-Roll
und Notationsansicht. Unter Windows war da immer "Cubasis VST" (eine völlig ausreichende kleinere Version des sehr teuren Profiprogramms "Cubase") ganz gut, unter Linux wohl
Rosegarden oder
Muse, die mich bisher aber beide noch nicht so richtig überzeugen konnten. Ist aber auch schon ein paar Jahre her, daß ich mir sie angesehen hatte. Vielleicht sind sie heute schon besser.
PPS.: Übrigens: Fluidsynth kann in der Konfiguration oben auch unmittelbar Midis abspielen:
Code: Alles auswählen
fluidsynth -ni /usr/share/sounds/sf2/Vintage_Dreams_Waves_v2.sf2 somemidi.mid
obwohl die meisten wohl für "General Midi" geschrieben sind, was man wohl typischerweise mit "Timidity" abspielt ...
Re: Notationsprogramm
Verfasst: Dienstag 22. Februar 2011, 17:00
von questlove
vielen vielen dank!

ich selber bin auchschon schlauer geworden und werde euer antworten jetzt mal nochmal genau durchgehen
LG
Re: Notationsprogramm
Verfasst: Donnerstag 7. Juli 2011, 16:07
von questlove
Ich stehe gerade vor dem Problem , dass ich bei meinem Notationsprogramm auch die Dateien, die man damit erstellt abspeichern will, um sie wann anders forstetzen zu können. Da Mingus keine brauchbare Methode zur Verfügung stellt, die geschrieben Noten in einem Format auszugeben, das man abspeichert und dann einzeln wieder durch methoden aufruft (also ich erstelle die schon geschriebenen Noten nocheimal), dachte ich ich protokolliere einfach die noten auf einer text datei (z.B: A4,G4,D2 für eine viertel a note, viertel g note, halbe d note) und führe einzeln die Methoden Note erstellen mit den empfangenen Werten auf..
Wie kann ich jetzt eine solche Datei an einem bestimmten ort erstellen? (wie die Speichern unter funktion in den Programmen) und kann ich ihnen eine eigenes Kürzel geben, sodass die Datei mit meinem Programm auch geöffnet wird und nicht mit dem Editor?
LG
questlove
Re: Notationsprogramm
Verfasst: Donnerstag 7. Juli 2011, 19:54
von problembär
Uff, da willst Du also das Rad noch einmal neu erfinden. Denn das bestehende .mid (Midi-)Format wäre natürlich für Noten sehr leistungsfähig.
Ansonsten gehe ich mal davon aus, daß Du weißt, wie man Textdateien speichert und liest.
Weiterhin, daß Du Tkinter benutzt. Dann brauchst Du also noch den Dateinamen. Dazu schau' Dir am besten mal "pydoc tkFileDialog" an.
Gruß
Re: Notationsprogramm
Verfasst: Dienstag 23. August 2011, 11:56
von questlove
Ich würde gerne die Lieder, die man mit diesem programm komponiert, festhalten, um später daran weiterarbeiten zu können. Mein plan war dass ich eine text datei erstelle und zeilenweise ein protokoll vom projekt erstelle, bei dem ich dann nach wiederöffnen jede zeile einzeln durchgehe (am anfang steht der titel und es wird eine methode aufgerufen die den titel setzt, dann kommen noten und es werden methoden verwendet um die noten wieder zu erstellen,....) und am schluss wieder am letzten stand bin. Ist es dann vllt auch möglich diesen dateien ein eigenes kürzel zu geben, welches für mein programm steht, und bei doppelklick öffnet sich auch das programm mit dem projekt?
und wie mache ich eine typische speichern unter funktion? mit methoden des moduls "os" oder?
Re: Notationsprogramm
Verfasst: Dienstag 23. August 2011, 12:00
von Hyperion
questlove hat geschrieben:
und wie mache ich eine typische speichern unter funktion? mit methoden des moduls "os" oder?
Ich habe das ganze nicht wirklich verstanden, denke aber mal, dass Du einfach `open` suchst

Re: Notationsprogramm
Verfasst: Dienstag 23. August 2011, 12:20
von questlove
mit open kann ich eine datei erstellen, das weis ich.
aber ich meinte ich brauch ein "speichern unter fenster", in dem ich sozusagen einen pfad wählen kann, (was ich auch noch nicht weis wie ich das in ein fenster bekomme

) und dann die funktion, die die datei direkt an diesem pfad erstellt.. kann ich das mit open machen? ich hab das noch nicht gesehen.
Re: Notationsprogramm
Verfasst: Dienstag 23. August 2011, 12:23
von EyDu
Welches GUI-Toolkit verwendest du denn? Darin sollte ein entsprechender Dialog vorgesehen sein.
Re: Notationsprogramm
Verfasst: Dienstag 23. August 2011, 12:24
von Hyperion
Naja, Du kannst `open` ja einen kompletten Pfad übergeben.
Der andere Teil Deiner Frage zielt ja irgend wie auf ein GUI-Toolkit ab. Da müßtest Du erst einmal sagen, welches Du verwendest. Unter Qt gibt es bspw. den `QFileDialog`.