Wer arbeitet mit Python?

Status
Für weitere Antworten geschlossen.
bohor

bohor

|||
Hallo,

ich kämpfe zur Zeit mit Programmiersprachen wie pd und finde sie schon unglaublich altmodisch und ungelenk, besonders, was die Datentypen angeht. Dagegen habe ich sehr gute Erinnerung an ein Projekt, das ich vor Jahren mal in Python realisiert hatte. Irgendwo hab ich zuletzt auch gelesen, dass Python auf die MIDI-Schnittstelle des Rechners zugreifen kann. Frage: Hat hier schon jemand einfache MIDI-Anwendungen in Python oder einer ähnlichen Sprache entwickelt und kann heiße Tipps für die ersten Schritte geben?

--bohor
 
Python ist super. Mache ich sehr viel, und der Zugriff auf MIDI-Geräte ist wirklich kinderleicht.

Sieht dann z.B: so aus:

Python:
    # Midi importieren, muss vorher installiert werden!
    import mido

    # Welche interfaces haben wir denn?
    print("MIDI Outputs:", mido.get_output_names())
    print("MIDI Inputs", mido.get_input_names())

    # Nehmen wir einfach das erst Midi Out
    midi_out_name = mido.get_output_names()[0]

    # Senden von Panic (all notes off all channels), dann einen Key down, 0.5 s warten und dann key up
    with mido.open_output(midi_out_name) as out_port:
        out_port.panic()

        note = mido.Message('note_on', note=n, velocity=127, time=1)
        out_port.send(note)

        time.sleep(0.5)

        # Stop it
        silence = mido.Message('note_off', note=n)
        out_port.send(silence)
 
Lustig, ich mache beruflich viel mit Python, bin aber noch nie auf die Idee gekommen, das auch mal privat für MIDI auszuprobieren.

:selfhammer:
 
Lustig, ich mache beruflich viel mit Python, bin aber noch nie auf die Idee gekommen, das auch mal privat für MIDI auszuprobieren.

:selfhammer:
Oh, das kann man ziemlich weit treiben, und auch mit C++/JUCE Code kombinieren, da sind dann keine Grenzen mehr.

Ich habe mir z.B. mal eine kleine IDE gebaut, mit der ich meinen Rev2 in Python ansteuere, direkt so ala patch["Cutoff"] = 20

Hatte ich hier mal hingelegt: https://github.com/christofmuc/PyTschirper
 
Meist verwende ich das etwas ältere Modul "alsaseq" unter Linux. Das erzeugt einen Midi-fähigen jack-Client.
"python-rtmidi" macht etwas Ähnliches. Es ist wohl moderner und auch plattformübergreifend (was ja intern nicht leicht ist, da die Sound-Architektur unter Windows und Linux doch recht verschieden ist).
Da ich aber gar kein modernes Windows habe, und ich mit "alsaseq" unter Linux gute Ergebnisse hatte, bin ich erstmal dabei geblieben.

-------

Hier hab' ich ein Skript gebaut, das unter Linux einen jack-Client aufmacht, Input von seq24 empfängt und auch Input von einem Keyboard, so daß Sequenzen von seq24 während des Spielens in der Tonhöhe geändert werden können (was seq24 sonst nicht kann):


-------

Und dann hab' ich hier nach demselben Prinzip den Arpeggiator aus dem Juno nachgebaut, der die Tonhöhe von dem eigenen Arp in Verbindung mit Input von einem Keyboard nimmt, aber den Rhythmus auch von einem externen Input triggern läßt (dort über CV, etwa von einer TR-707):


Da sich aber offenbar niemand für den Code interessierte, hab' ich ihn nicht gepostet.

-------

Ach so, und dann hab' ich noch ein Python-Skript geschrieben, das mir zahlreiche verschiedene Kombinationen von Linux-Softsynths, jack und seq24 öffnet, und die nötigen jack-Verbindungen erstellt. So daß ich das nicht jedesmal von Hand machen muß. Aber dieses Skript dürfte nur auf mein System passen.
 
Zuletzt bearbeitet:
Python ist gerade MEGA angesagt, auch wegen Data Mining usw.

Ich fand die Sprache immer ganz schön, ist aber schon ein paar Jahre her, dass ich was damit gemacht hab.

Generell komm ich mit "textuellen" Programmiersprachen auch sehr viel besser klar als mit visuellen Sprachen wie pd oder Max. Bis ich mich da reingefuchst hab, wie da die speziellen Konzepte und "Konventionen" sind hab ich das auch schnell hingehackt.
 
same here... nutze das beruflich jeden Tag für irgendwelche 3D Apps ... für mIdi klingt eigentlich ganz spannend

Ich habe das Beispiel von kris_ gerade auf meinem Mac zum Laufen bekommen (zumindest die Interface-Erkennung und -Ausgabe):

requirements.txt:
Code:
mido==1.2.9
python-rtmidi==1.4.0
rtmidi==2.3.4

Nach den ersten beiden Prints ein sys.exit() und schon habe ich meinen ersten MIDI Zugriff...
 
was meckert er denn an?

EDIT: Ich habe auf meinem Mac ein Python 3.7.6 via Homebrew. Dann habe ich ein virtual environment erstellt und aktiviert. Darin liessen sich die drei dependencies eigentlich simpel über pip3 installieren. Die requirements habe ich eher als Convenience hier in den Thread kopiert
 
ich hab nur python 2.7 .. glaub daran liegts
Also Mido ist laut Homepage auch kompatibel mit 2.7. Kann aber sein, dass rtmidi da raus ist. Ich vermute, Du nutzt die in macOS enthaltene Version von Python?

python-rtmidi (als binding) benötigt leider Python3. :sad:
 
Zuletzt bearbeitet:
Also Mido ist laut Homepage auch kompatibel mit 2.7. Kann aber sein, dass rtmidi da raus ist. Ich vermute, Du nutzt die in macOS enthaltene Version von Python?

python-rtmidi (als binding) benötigt leider Python3. :sad:
ach egal ... das ist mir jetzt zuviel installiere... wollt ja nur mal gucken. Hab noch gar keine Idee was ich damit anfang
 
Ich fand die Sprache immer ganz schön, ist aber schon ein paar Jahre her, dass ich was damit gemacht hab.
same here! Python ist sehr elegant, es wirkt im Gebrauch sehr frisch und modern auf mich. Klare, logische Syntax, eine große Zahl von sinnvollen Datentypen (einschließlich Collections) und dieser großartige Ansatz, die Strukturierung durch Einrückungen zu erreichen. Macht einfach Spaß.

Also wollen wir doch mal sehen, wie sie sich zum Musikmachen eignet! : - )
 
Älter und weniger elegant als Python ist Perl (dafür weniger streng und etwas freier in der Syntax). Ansonsten kann man damit praktisch das Gleiche erreichen. Weshalb es jede Menge "Perl vs. Python" Diskussionen gab, auf die ich hier aber nicht hinauswill. Sondern auf einen Artikel von 2004 "Hacking Perl in Nightclubs":


Ob das so viel Sinn macht, kann ich nicht beurteilen. Aber die Idee fand ich irgendwie schön.
 
Zuletzt bearbeitet:
Über Perl sagte man mal jemand Kluges, es sei eine "Write-only-Sprache". Ja, der Code ist kürzer – und unverständlicher, wenn du dich dort nach zwei Jahren zurechtfinden willst. Für mich gäbe es so gut wie keinen Grund, mich eher um Perl als um Python zu bemühen.

marco - ich weiß nicht, ob Du lustig sein oder die Diskussion stören willst: Python ist nicht nach der Schlange benannt.
 
Monty Python ist Namensgeber der Programiersprache Python.

Besser gesagt, Monty Python waren Vorbild bzw. Inspiration für den Namen Python.
 
Zuletzt bearbeitet:
Über Perl sagte man mal jemand Kluges, es sei eine "Write-only-Sprache". Ja, der Code ist kürzer – und unverständlicher, wenn du dich dort nach zwei Jahren zurechtfinden willst. Für mich gäbe es so gut wie keinen Grund, mich eher um Perl als um Python zu bemühen.
Brauchst Du auch nicht. Perl ist weniger streng, es ist eher tolerant gegenüber dem, was man schreibt. Das zieht Leute an, die auch so sind. Daher ist die Community sehr nett, während in den Python-Foren nicht wenige engstirnige Betonköpfe zu finden sind, die Pythons strenge Vorgaben (und die Vorschriftensammlung der sogenannten "PEPs" mögen), was die Sache unerfreulich machen kann.
Perls Syntax erinnert an C. Wenn man sich dafür interessiert, eines Tages auch schnellen C-Code zu schreiben, kann man in Perl schon einige Konstruktionen kennenlernen, die auch in C gebräuchlich sind.
So hat Perl auch die geschweiften Klammern. Das ist nervig, und man kann sich freuen, sie in Python nicht mehr schreiben zu müssen. Aber dafür läßt sich Code mit den Klammern leichter in Foren posten. Bei Python-Code in Postings findet sich dagegen immer jemand, dem man erst die Sache mit den Einrückungen erklären muß.
Es bleibt insgesamt trotzdem schneller und angenehmer, längeren Code in Python zu schreiben. Trotzdem ist auch Perl eine schöne Sprache.
 
Zuletzt bearbeitet:
Über Perl sagte man mal jemand Kluges, es sei eine "Write-only-Sprache". Ja, der Code ist kürzer – und unverständlicher, wenn du dich dort nach zwei Jahren zurechtfinden willst. Für mich gäbe es so gut wie keinen Grund, mich eher um Perl als um Python zu bemühen.
Das ist eine Ansicht, welche ich nie geteilt habe. Die Syntax von Perl ist vielleicht etwas garstiger, aber damit hat es sich auch schon. Man kann in jeder Sprache Code schreiben, der übel aussieht. Damit will ich nichts gegen Python gesagt haben, es ist eine elegante und zurecht populäre Scriptsprache, welche ich auch gerne verwende. Ich habe zwar noch nie was mit Midi gemacht, aber für sowas würde ich weder Perl noch Python nehmen.
 
Ich habe zwar noch nie was mit Midi gemacht, aber für sowas würde ich weder Perl noch Python nehmen.
Stimmt, bei Midi kommt es auf das Timing an, da wäre schneller C-Code natürlich besser.
Leider ist er für mich unangenehm zu schreiben.

Bei meinen Sequencer-Skripten (s.o.) hatte ich auch schon gedacht, die nach C zu übertragen - die zugrundeliegenden alsa-midi-Bibliotheken sind ja in C - aber es fällt mir halt schwer, und ich hab's wieder gelassen.
Python/Perl - das ist für mich ein angenehmer mittlerer Level zum Programmieren.

 
Zuletzt bearbeitet:
Perl hatte ich während des Studiums aber nie gebraucht, wie einige andere Programmiersprachen auch.
 
Status
Für weitere Antworten geschlossen.

Similar threads



Neueste Beiträge

News

Zurück
Oben