ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.
WikiMIDI

MIDI

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Ausbaufähige Anleitung

Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.


Anmerkung: Dieser Artikel behandelt momentan das Abspielen von MIDI-Dateien und den Anschluss externer MIDI-Geräte an den Computer. Weitere Informationen wären wünschenswert, z.B. zur Benutzung des Soundservers jack für MIDI-Verbindungen ebenso wie aktuellere Anleitungen.

MIDI steht für Musical Instrument Digital Interface. Vereinfacht ist MIDI eine Datenstruktur zur Steuerung von elektronischen Musikinstrumenten. Eine MIDI-Datei enthält dabei keinen Töne, sondern die Musiknoten für 16 Kanäle. Jedem Kanal kann eines von 128 verschiedenen Sound-Programmen zugewiesen werden. Weitere Informationen befinden sich in dieser Einführung {en}.

MIDI abspielen

Wem es nur darum geht, eine MIDI-Datei anzuhören und eventuell noch einzelne Stimmen stummzuschalten, bzw. das Tempo anzupassen, kann am einfachsten ein Notenprogramm wie Musescore verwenden und braucht sich nicht mit der komplizierten Installation und Konfiguration von MIDI-Software herumzuschlagen. Das Abspielen einer MIDI-Datei umfasst zwei Vorgänge: Ein MIDI-Player oder ein Sequenzer erzeugt aus einer MIDI-Datei Steuerbefehle für den Tonerzeuger. Der Tonerzeuger produziert aus den Befehlen Töne und macht die Musik damit hörbar.

Der Tonerzeuger kann sowohl in Hardware als auch in Software realisiert sein.

Zu den hardwarebasierten Lösungen gehören:

  • Externe MIDI-Instrumente am MIDI-Ausgang des Computers.

  • Eine Soundkarte mit integriertem MIDI-Synthesizer-Chip (z.B. der OPL3-Chip der Soundblaster-Karte)

Zu den softwarebasierten Lösungen gehören:

  • Die Verwendung einer Soundbank (Soundfont), die von der Soundkarte verwaltet wird - v.A. zur Wiedergabe von Naturklängen wie Klavier etc. (auch Wavetable-Synthesizer genannt).

  • Die Software-Emulation eines Synthesizers, z.B. amSynth {en} oder Bristol {en} - hiermit werden überwiegend synthetische Klänge erzeugt.

Im Fall von Timidity sind MIDI-Player und Tonerzeuger (Synthesizer) in einem Programm integriert.

Synthesizer und Player in einem: TiMidity

TiMidity {en} ist ein Software-Synthesizer, der MIDI-Dateien entweder direkt abspielt oder aber als Tonerzeuger für einen Sequenzer wie z.B. Rosegarden dient.

  • timidity (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install timidity 

sudo aptitude install timidity 

Hier muss zum Abspielen nicht erst ein SoundFont installiert werden, denn TiMidity bewältigt diese Aufgaben selbst.

Allerdings ist das von TiMidity als Standard benutzte Soundfont nicht sehr umfangreich, so dass beim Abspielen von MIDI-Dateien oft einzelne Instrumente nicht zu hören sind. Mehr Spaß macht TiMidity mit dem Soundfont

  • fluid-soundfont-gm (universe, ca. 120MB)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install fluid-soundfont-gm 

sudo aptitude install fluid-soundfont-gm 

In der Datei /etc/timidity/timidity.cfg muss für dieses Soundfont die Zeile

source /etc/timidity/freepats.cfg

geändert werden in [5]

source /etc/timidity/fluidr3_gm.cfg
source /etc/timidity/fluidr3_gs.cfg

Dazu benötigt man Root-Rechte.

Ein kleiner Auszug von der Vielseitigkeit von TiMidity soll hier gegeben werden:

  • MIDI-Dateien abspielen

    timidity midi.mid 

  • Timitidy mit einer GUI starten

    timidity -ig 

Eventuell muss hierfür das Paket timidity-interfaces-extra (universe) installiert werden.

  • Musikplayer-Interface (nur MIDI)

    timidity -ia 

  • umwandeln von MIDI-Dateien ins WAV-Format

    timidity -OwS input.mid -o output.wav 

  • Startbar als Server, um anderen Programmen (wie pmidi) einen Port anzubieten

    timidity -iA -B2,8 -Os1l -s 44100 

Wenn man TiMidity nur ab und zu nutzen möchte und auch mal ein Sequenzer-Programm einsetzen möchte, kann sich ein kleines Skript, zum Beispiel startmidi schreiben:

  • sudo modprobe snd-seq-device
    sudo modprobe snd-seq-midi
    sudo modprobe snd-seq-oss
    sudo modprobe snd-seq-midi-event
    sudo modprobe snd-seq
    timidity -iA -B2,8 -Os1l -s 44100 

Damit die Datei auch ausführbar ist, noch ein

  • chmod 755 startmidi" 

Nun kann man einfach das Skript starten und hat sofort ein MIDI-Ausgabegerät zum Beispiel für den Sequenzer Rosegarden zur Verfügung. Nach dem Ausführen bekommt man die Ausgabe:

  •         Timidity starting in ALSA server mode
            Opening sequencer port 128:0 128:1 

Falls es beim abspielen "ruckelt" kann man die Reverb und Chorus wie folgt abschalten.

  • timidity -iA -B2,8 -Os1l -s 44100 -EFreverb=0 -EFchorus=0 

Ein Blick in die Hilfe-Seiten lohnt sich auf jeden Fall.

  • man timitidy 

Synthesizer und Player/Sequenzer getrennt

Tonerzeuger für ausschließlich synthetische/elektrische Klänge wie amSynth oder Bristol kommen ohne Soundfonts aus. Zum Betrieb eines Synthesizers für Naturklänge (Wavetable-Synthese) muss dagegen immer ein Soundfont verfügbar sein.

Hochwertige Soundfonts können unter Ubuntu direkt installiert werden:

  • fluid-soundfont-gm (universe)

  • fluid-soundfont-gs (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install fluid-soundfont-gm fluid-soundfont-gs 

sudo aptitude install fluid-soundfont-gm fluid-soundfont-gs 

Die so installierten Soundfonts befinden sich dann in /usr/share/sounds/sf2. Soundfonts können auch aus anderen Quellen bezogen werden. Die Fonts haben die Endung .sf2 oder .sfArk und finden sich zum Beispiel auf dem Medium mit den Soundkartentreibern oder im Internet auf hammersound.net {en} .

Soundfonts, die im .sfArk-Format vorliegen, müssen vor der Verwendung entpackt werden. Auf der Seite melodymachine.com {en} kann man dazu das Programm sfArkXTc herunterladen und entpacken [4]. Jetzt entpackt man den Soundfont mit dem Befehl [2]:

./sfarkxtc soundfont.sfArk 

Software-Synthesizer: Qsynth / Fluidsynth

Qsynth ist eine komfortable grafische Oberfläche für Fluidsynth. Bei der Installation des Pakets

  • qsynth (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install qsynth 

sudo aptitude install qsynth 

wird Fluidsynth automatisch mit installiert.

Qsynth wird über das Menü "Anwendungen -> Unterhaltungsmedien" gestartet und muss laufen, bevor der Sequenzer gestartet wird. Unter "Options/Audio" ist eventuell noch der richtige Audiotreiber (z.B. ALSA {en}, PulseAudio oder jack) auszuwählen. Zudem muss unter "Options/Soundfonts" ein Soundfont ausgewählt sein - dann ist der Synthesizer einsetzbar.

Das eigentliche Abspielen von MIDI-Dateien wird weiter unten im Abschnitt "Midi Programm verwenden" behandelt.

Hinweis:

Fluidsynth bietet eine Vielzahl von Funktionen, die hier nicht alle behandelt werden können. Man kann zum Beispiel mehrere Soundfonts gleichzeitig laden oder Fluidsynth zum Abspielen von MIDIs benutzen.

Hardware-Synthesizer

Manche Soundkarten wie die Soundblaster Live oder Audigy2 können Soundfonts direkt verwenden. Der Vorteil dieser Methode besteht darin, dass die bei größeren Soundfonts recht hohe Rechenleistung von der Soundkarte erbracht wird und nicht von der CPU.

Benötigt wird hierzu das Paket [1]

  • awesfx (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install awesfx 

sudo aptitude install awesfx 

Außerdem müssen die Kernelmodule snd_seq_midi, snd_emux_synth und snd_emu10k1_synth geladen sein [3].

Damit der Soundtreiber auf einen Soundfont zugreifen kann, lädt man diesen in den Speicher [2]:

  • Für ALSA:

asfxload soundfont.sf2 
  • Für OSS:

sfxload soundfont.sf2 

MIDI-Programme verwenden

Das Kernel-Modul snd-seq ist standardmäßig geladen.

MIDI-Player versus MIDI-Sequencer

Zur Steuerung von Tonerzeugern (Synthesizer) per MIDI gibt es zwei Programmtypen. Reine MIDI-Player (z.B. pmidi) wandeln lediglich MIDI-Dateien in Steuerbefehle für den Tonerzeuger um. MIDI-Sequenzer (z.B. Rosegarden) ermöglichen darüber hinaus, MIDI-Dateien zu bearbeiten und umfangreiche eigene Kompositionen zu erstellen. Letztere sind deshalb eher für Musiker gedacht.

MIDI-Player für die Konsole: pmidi

Exemplarisch soll hier das Abspielen einer MIDI-Datei mit dem Programm pmidi {en} beschrieben werden. Dazu wird das folgende Paket benötigt [1]:

  • pmidi (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install pmidi 

sudo aptitude install pmidi 

Zunächst lässt man alle verfügbaren Geräte auflisten [2]:

pmidi -l 

Falls man Fluidsynth als Synthesizer verwendet, sollte eine Zeile

128:0     FLUID Synth (7176)                Synth input port (7176:0)

dabei sein. Wichtig ist der Port, der ganz links steht. Diesen gibt man beim Aufruf von pmidi mit an.

Verwendet man einen Hardwaresynthesizer, sollte man ein Gerät mit "MPU-401" im Namen versuchen. Im Allgemeinen kann man das richtige Gerät durch Ausprobieren finden. Eine MIDI-Datei kann man nun zum Beispiel mit

pmidi -p 128:0 midi.mid 

abspielen.

MIDI-Sequenzer mit grafischer Oberfläche

Rosegarden {en} ist ein leistungsfähiger Sequenzer, der sich vor allem an Musiker und Songschreiber richtet. Er kann Musikstücke auch als Notensatz anzeigen und bearbeiten, Audio-Spuren integrieren und Effekt-Plugins verwenden. Mehr Details im Artikel Rosegarden.

Hier wird kurz die Verwendung von Rosegarden mit Qsynth als Tonerzeuger beschrieben. Qsynth muss vor Rosegarden gestartet werden und zur Tonerzeugung konfiguriert sein (s.o). Beim Start von Rosegarden kommt zunächst eine Fehlermeldung wegen des nicht laufenden jack-Servers. Sie kann ignoriert werden, wenn man nur mit Qsynth arbeiten möchte.

Im Menu "Studio > Midi-Geräte verwalten" kann Qsynth als Tonerzeuger für die MIDI-Ausgabe festgelegt werden. Wenn Qsynth läuft, sollte dies schon automatisch einstellt sein. Die Bezeichnung für Qsynth ist hier "128:0 Synth input Port (qsynth:0)" oder ähnlich. Damit ist die Konfiguration abgeschlossen und es können MIDI-Dateien oder eigene Kompositionen abgespielt werden.

MIDI-Programme

Folgende MIDI-Programme wurden unter Ubuntu getestet:

  • pmidi {en}: MIDI-Player (MPU, SF2)

  • Timidity {en}: Player und Synthesizer in Einem

  • Rosegarden {en}: Sequenzer-Editor (MPU, SF2)

  • KeyKit {en}: MIDI-Player und -Generator (nur im MPU-Modus getestet)

  • KMid {en}: MIDI-/Karaoke-Player für KDE

NtEd kann .mid-Dateien verarbeiten und für nicht-MIDI-fähige Soundkarten Timidity für die Ausgabe einsetzen.

Externe MIDI-Geräte anschließen

Der MIDI-Standard ermöglicht eine Verbindung zwischen Musikinstrumenten und anderen MIDI-Geräten in Echtzeit und ist damit auch zum Live-Musizieren geeignet. Hierzu dient eine serielle Schnittstelle mit fünfpoligen DIN-Steckern.

Was kann man mit der Hardware-MIDI-Schnittstelle machen?

Die Schnittstelle ist sehr vielseitig fürs Musikmachen nutzbar, Beispiele sind:

  • Die Ansteuerung eines externen Tonerzeugers (Keyboard, Synthesizer, Sampler) durch den Sequenzer.

  • Das Einspielen von Melodien in den Sequenzer über eine MIDI-Tastatur

  • Das Synchronisieren des Software-Sequenzers mit einer Hardware-Drummachine etc.

  • Datensicherung von älteren Musikinstrumenten, die noch kein USB besitzen.

Die Benutzung der Schnittstelle

Für einen MIDI-Anschluss am PC braucht man ein MIDI-Interface. Bei vielen Soundkarten ist das MIDI-Interface schon integriert, ansonsten sind USB-MIDI-Interfaces für wenig Geld erhältlich.

Wird ein von Linux unterstütztes USB-MIDI-Interface an den Computer angeschlossen, erkennt Ubuntu es "out of the box" und stellt es als /dev/midi0 oder /dev/midi1 zur Verfügung.

cat /dev/sndstat 

Sound Driver:3.8.1a-980706 (ALSA v1.0.20 emulation code)
Kernel: Linux ubuntu 2.6.31-20-generic #57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686
Config options: 0

Installed drivers: 
Type 10: ALSA emulation

Card config: 
HDA Intel at 0xd2300000 irq 22
E-MU Systems, Inc. E-MU XMidi1X1 at usb-0000:00:1d.1-1, full speed

Audio devices:
0: AD198x Analog (DUPLEX)


Synth devices: NOT ENABLED IN CONFIG

Midi devices:
1: E-MU XMidi1X1

Timers:
31: system timer

Mixers:
0: Analog Devices AD1986A
1: USB Mixer

Je nach Gerät kann mindestens ein MIDI-Eingang und ein MIDI-Ausgang genutzt werden. In Rosegarden wird sowohl der Eingang als auch der Ausgang angezeigt mit einer Bezeichnung wie

20:E-Mu XMidi1x1

Die Bezeichnung ist in Ubuntu also sehr ähnlich wie bei der Verbindung zu einem Software-Tonerzeuger. Tatsächlich können Hardware- und Software-MIDI-Geräte frei miteinander kombiniert werden. Zum Beispiel kann der Sequenzer Rosegarden in einem Fall einen Hardware-Synthesizer steuern und im anderen Fall von der Tastatur eines E-Pianos per MIDI gesteuert werden.

Wichtig für die Verbindung ist in jedem Fall, dass MIDI-Software und externes Gerät zum Senden und Empfangen auf den gleichen MIDI-Kanal eingestellt sind!

ubuntuusers.local › WikiMIDI