Konwertuj midi do csv

Konwertuj MIDI na CSV

Konwertuj zdarzenia MIDI na edytowalne wiersze CSV do użycia w arkuszach kalkulacyjnych, skryptach i analizie danych.

Konwertuj pliki MIDI online

Nie mamy jeszcze dedykowanego konwertera online dla MIDI na CSV, ale pliki MIDI możesz przekonwertować online na te i inne formaty:

Jak konwertować midi do csv

Arkusz kalkulacyjny, baza danych lub skrypt analityczny nie może bezpośrednio używać binarnej struktury zdarzeń formatu Standard MIDI File. Konwersja do CSV udostępnia nuty, informacje o czasie, kontrolery, zmiany tempa i metadane w postaci wierszy, które można analizować lub przetwarzać za pomocą zwykłych narzędzi do pracy z danymi.

Czym jest format MIDI

MIDI to format zdarzeń, który przechowuje instrukcje muzyczne, a nie nagrany dźwięk. Standard MIDI File może zawierać ścieżki, zdarzenia note-on i note-off, zmiany instrumentów, elementy sterujące pedałem sustain, zmiany tempa, oznaczenia metrum i tonacji, dane system-exclusive oraz metadane tekstowe.

Digital audio workstations, programy do zapisu nutowego, sekwencery sprzętowe i aplikacje do tworzenia muzyki tworzą lub eksportują pliki MIDI, zwykle z rozszerzeniami .mid lub .midi. Aplikacje takie jak MuseScore, Cubase, Ableton Live, Logic Pro, FL Studio i Reaper używają MIDI do sekwencjonowania i wymiany danych. Zdarzenia są mierzone w tickach; nagłówek pliku definiuje wartość ticks-per-quarter-note, a zdarzenia tempa określają zależność między tickami a sekundami.

Czym jest format CSV

CSV to zwykły tekst, w którym rekordy zajmują wiersze, a pola — kolumny oddzielone separatorem, zwykle przecinkiem. Arkusze kalkulacyjne, Python, R, importery SQL i oprogramowanie do analizy danych mogą odczytywać ten format bez parsera MIDI.

Nie istnieje jeden oficjalny schemat MIDI-to-CSV. Konwerter może zapisywać jedno zdarzenie w każdym wierszu, używając pól dotyczących ścieżki, ticka, typu zdarzenia, kanału, nuty, velocity, kontrolera, programu, tempa lub metadanych. Inne konwertery używają odmiennych nazw kolumn, separatorów, konwencji zapisu czasu lub sposobów przedstawiania tego samego zdarzenia. Przed zaimportowaniem wyniku potwierdź wymagany schemat.

Konwersja za pomocą MIDI CSV

MIDI CSV to najbardziej odpowiednia opcja desktopowa, gdy wynik musi zachować strukturę Standard MIDI File i umożliwiać ponowną konwersję do MIDI. Program midicsv dekoduje plik MIDI do udokumentowanej reprezentacji CSV, a csvmidi ponownie koduje tę reprezentację. Pobierz programy z oficjalnego źródła projektu lub zaufanego pakietu systemu operacyjnego; unikaj niezweryfikowanych plików wykonywalnych.

  1. Zainstaluj midicsv i csvmidi, a następnie otwórz Terminal, Command Prompt lub PowerShell w katalogu zawierającym plik.
  2. Uruchom midicsv input.mid output.csv.
  3. Sprawdź lub edytuj plik output.csv w edytorze tekstu. Jeśli używasz arkusza kalkulacyjnego, zaimportuj plik z separatorem przecinka i kodowaniem UTF-8 zamiast otwierać go i automatycznie zapisywać ponownie.
  4. Aby odtworzyć plik MIDI, uruchom csvmidi output.csv recreated.mid.

Wynik MIDI CSV zwykle zawiera informacje nagłówkowe, granice ścieżek, podział taktowania, zdarzenia kanałowe oraz zdarzenia meta MIDI. Zachowaj oryginalny plik MIDI, ponieważ oprogramowanie arkusza kalkulacyjnego może zmienić separatory, wartości całkowite, kodowanie lub formatowanie pól.

Tworzenie niestandardowego pliku CSV do analizy za pomocą Python

Użyj skryptu, gdy system docelowy wymaga mniejszego schematu, na przykład jednego wiersza na zdarzenie z kolumnami zawierającymi ścieżkę, absolutny tick, typ, kanał, nutę, velocity, kontroler, program i tempo. Zainstaluj Mido za pomocą python -m pip install mido i zapisz poniższy kod jako midi_events.py:

import csv
import sys
import mido

midi = mido.MidiFile(sys.argv[1])
fields = ["track", "tick", "type", "channel", "note", "velocity", "control", "value", "program", "tempo"]

with open(sys.argv[2], "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=fields)
    writer.writeheader()
    for track_number, track in enumerate(midi.tracks):
        tick = 0
        for message in track:
            tick += message.time
            row = {field: "" for field in fields}
            row["track"] = track_number
            row["tick"] = tick
            row["type"] = message.type
            for field in ("channel", "note", "velocity", "control", "value", "program", "tempo"):
                if hasattr(message, field):
                    row[field] = getattr(message, field)
            writer.writerow(row)

Uruchom go za pomocą python midi_events.py input.mid events.csv. Mido dostarcza czasy delta dla każdej ścieżki, więc skrypt sumuje je do postaci absolutnych pozycji w tickach. Ten uproszczony eksport nie zachowuje wszystkich pól MIDI, w tym składników oznaczenia metrum, tekstu oznaczenia tonacji, tekstu słów oraz ładunków system-exclusive; jeśli te zdarzenia mają znaczenie, dodaj odpowiednie kolumny.

Konwersja online

Większość renomowanych konwerterów online obsługuje formaty MIDI-to-audio, a nie ustrukturyzowany CSV ze zdarzeniami MIDI, dlatego lokalna instalacja MIDI CSV jest zwykle właściwym wyborem. Jeśli usługa oferuje eksport MIDI CSV, przetestuj ją za pomocą znanego pliku, sprawdź jej schemat i wynikowy plik MIDI, a także zapoznaj się z zasadami przechowywania przesłanych plików przed wysłaniem nieopublikowanej muzyki lub osadzonych metadanych.

Ograniczenia jakości i zgodności

CSV zawiera dane o zdarzeniach, a nie wyrenderowany dźwięk. Nie może zachować brzmienia syntezatora, ustawień plug-inów, sampli, miksowania ani efektów, chyba że szczegóły te są reprezentowane przez zdarzenia MIDI, a system odbierający wie, jak je interpretować.

Czas trwania nuty jest zwykle wyznaczany na podstawie zdarzenia note-on i późniejszego zdarzenia note-off; niekoniecznie występuje jako pole czasu trwania. Obliczaj czas muzyczny na podstawie ticków i wartości ticks-per-quarter-note pliku. Obliczaj sekundy, uwzględniając zmiany tempa, które mogą występować w różnych pozycjach pliku. Zdarzenie note-on z velocity równym zero jest często używane jako note-off i należy je odpowiednio obsługiwać.

W przypadku edycji umożliwiającej odtworzenie pliku używaj kompletnej reprezentacji MIDI CSV zamiast niestandardowego, ograniczonego eksportu. Zachowuj wartości ticków jako liczby całkowite, zachowuj kolejność zdarzeń, używaj oczekiwanego separatora przecinka i kodowania UTF-8 oraz unikaj konwersji arkusza kalkulacyjnego do dat lub notacji naukowej. Po edycji uruchom csvmidi i otwórz odtworzony plik w odtwarzaczu MIDI lub sekwencerze, aby sprawdzić taktowanie, ścieżki, kontrolery i metadane.

Porównanie formatu MIDI z CSV

Jak formaty MIDI i CSV wypadają w porównaniu pod względem najważniejszych cech dla tej konwersji.

Porównanie formatów plików MIDI i CSV
Cecha .MIDI MIDI Standard File .CSV Comma-Separated Values
Otwarty standard Tak Tak
Kompresja Bez kompresji Bez kompresji
Typowy rozmiar pliku Bardzo mały Mały
Otwiera się w przeglądarce internetowej Nie Tak, natywnie
Dalsza edycja Łatwy Łatwy
Obsługa metadanych Podstawowy Podstawowy
Czytelny tekstowo Nie Tak
Najlepszy do Muzyka Wymiana danych
Wprowadzono 1983 —
Twórca MIDI Manufacturers Association / MIDI Association —
Typ MIME audio/midi text/csv

Dodatkowe formaty dla konwersji pliku
midi

Konwersja odwrotna

Konwersja do .csv
z innych formatów

Udostępnij w mediach społecznościowych: