Notationsprogramm

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Freitag 18. Februar 2011, 08:42

Sound: Vermutlich Phonon oder GStreamer.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Freitag 18. Februar 2011, 09:31

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. :mrgreen:
Dafür findet ich lediglich das nicht pythonische :( 'Beep' was es in jeder Distribution angeboten wird.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 18. Februar 2011, 20:14

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Freitag 18. Februar 2011, 20:35

PyMedia ist vor allem seit 2006 tot.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Freitag 18. Februar 2011, 20:58

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 ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
lunar

Freitag 18. Februar 2011, 21:11

@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.
problembär

Freitag 18. Februar 2011, 22:48

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

Code: Alles auswählen

inst 1
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 ...
questlove
User
Beiträge: 65
Registriert: Dienstag 15. Februar 2011, 16:11

Dienstag 22. Februar 2011, 17:00

vielen vielen dank! ;)
ich selber bin auchschon schlauer geworden und werde euer antworten jetzt mal nochmal genau durchgehen :)

LG
questlove
User
Beiträge: 65
Registriert: Dienstag 15. Februar 2011, 16:11

Donnerstag 7. Juli 2011, 16:07

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
problembär

Donnerstag 7. Juli 2011, 19:54

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ß
questlove
User
Beiträge: 65
Registriert: Dienstag 15. Februar 2011, 16:11

Dienstag 23. August 2011, 11:56

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?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 23. August 2011, 12:00

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 ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
questlove
User
Beiträge: 65
Registriert: Dienstag 15. Februar 2011, 16:11

Dienstag 23. August 2011, 12:20

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.
EyDu
User
Beiträge: 4875
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dienstag 23. August 2011, 12:23

Welches GUI-Toolkit verwendest du denn? Darin sollte ein entsprechender Dialog vorgesehen sein.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 23. August 2011, 12:24

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`.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten