Konverze csv do midi

Převod souboru CSV do MIDI

Převeďte tabulky hudebních not nebo eventové soubory MIDICSV na upravitelné Standard MIDI Files.

Převádějte soubory CSV online

Pro převod CSV do MIDI zatím vlastní online konvertor nemáme, ale soubory CSV můžete online převést do těchto a dalších formátů:

Jak převést soubor csv do formátu midi

Tabulkový procesor, analytický program nebo nástroj pro vlastní kompozice může exportovat data not jako CSV, zatímco sekvencer, notační program nebo MIDI hardware vyžaduje Standard MIDI File. Převod změní tabulkové hudební události na upravitelnou sekvenci namísto zvuku.

Co je CSV

CSV (comma-separated values) je prostý text uspořádaný do řádků a sloupců. Skladatelé, hudební výzkumníci, uživatelé tabulkových procesorů, DAW a vlastní skripty jej mohou používat pro výšky tónů, časy začátků, délky, velocity, kanály, controllery nebo data tempa.

CSV nemá univerzální hudební schéma. Jeden soubor může obsahovat sloupce jako pitch,start,duration; jiný může používat názvy not, sekundy, ticky nebo jeden řádek pro každou MIDI událost. Oddělovačem může být čárka, středník nebo tabulátor a hodnoty v uvozovkách mohou obsahovat oddělovače. Před převodem určete významy sloupců, časové jednotky, kódování a strukturu záhlaví.

Co je MIDI

Standard MIDI File (.mid nebo .midi) ukládá časované hudební instrukce včetně událostí not, velocity, kanálů, změn programů, controllerů, pitch-bendu, tempa, metra a předznamenání. Neobsahuje nahraný zvuk; audio generuje syntezátor, virtuální nástroj nebo hardwarové zařízení.

Soubory MIDI jsou obvykle mnohem menší než audio soubory a umožňují nezávisle upravovat noty, časování, velocity, nástroje, tempo a data aranžmá. Lze je otevřít v MuseScore Studio, Cubase, Logic Pro, Ableton Live, REAPER a hardwarových sekvencerech, přestože zvuk při přehrávání závisí na cílových nástrojích.

Použití MIDICSV pro existující schéma MIDI událostí

Open-source nástroje MIDICSV jsou nejpřímější volbou, pokud CSV odpovídá formátu událostí MIDICSV. Nejde o obecné převodníky tabulek: midicsv exportuje MIDI soubor do definované reprezentace CSV a csvmidi tuto reprezentaci převádí zpět na MIDI soubor.

  1. Nainstalujte balíček MIDICSV pro svůj operační systém z jeho dokumentovaného zdroje.
  2. Exportujte MIDI soubor pomocí midicsv input.mid events.csv.
  3. Upravte events.csv beze změny požadovaných polí tracku, času, typu události a parametrů. Zachovejte číselné rozsahy a požadovanou syntaxi záhlaví nebo událostí.
  4. Zkompilujte jej pomocí csvmidi events.csv output.mid.
  5. Otevřete output.mid v MIDI editoru a zkontrolujte časování, nástroje, controllery a strukturu tracků.

Tabulka obsahující libovolné sloupce, například start_beat, duration_beat a pitch, není automaticky kompatibilní s csvmidi. Pro takové uspořádání použijte vlastní parser.

Převod CSV s jednou notou na řádek pomocí Pythonu

Pro tabulku not použijte Python s open-source knihovnou mido. Připravte notes.csv s jednou notou na řádek a těmito sloupci: start_beat, duration_beat, pitch, velocity a channel. Používejte MIDI pitches od 0 do 127, velocity od 1 do 127, kanály od 0 do 15 a doby v beatech vztažených ke čtvrťové notě.

  1. Nainstalujte závislost pomocí python -m pip install mido.
  2. Uložte tento skript jako csv_to_midi.py vedle souboru notes.csv:
import csv
from mido import MidiFile, MidiTrack, Message, MetaMessage, bpm2tempo

bpm = 120
midi = MidiFile(ticks_per_beat=480)
track = MidiTrack()
midi.tracks.append(track)
events = [(0, 0, MetaMessage('set_tempo', tempo=bpm2tempo(bpm)))]

with open('notes.csv', newline='', encoding='utf-8-sig') as f:
    for row in csv.DictReader(f):
        start = float(row['start_beat'])
        duration = float(row['duration_beat'])
        pitch = int(row['pitch'])
        velocity = max(1, min(127, int(row.get('velocity') or 80)))
        channel = int(row.get('channel') or 0)
        if duration < 0 or not 0 <= pitch <= 127 or not 0 <= channel <= 15:
            raise ValueError('invalid duration, pitch, or channel')
        start_tick = round(start * midi.ticks_per_beat)
        end_tick = round((start + duration) * midi.ticks_per_beat)
        events.append((start_tick, 1, Message('note_on', note=pitch, velocity=velocity, channel=channel)))
        events.append((end_tick, 0, Message('note_off', note=pitch, velocity=0, channel=channel)))

events.sort(key=lambda item: (item[0], item[1]))
previous = 0
for tick, _, message in events:
    message.time = tick - previous
    track.append(message)
    previous = tick
midi.save('notes.mid')
  1. Spusťte python csv_to_midi.py. Výsledkem je notes.mid s 480 ticky na čtvrťovou notu a pevným tempem 120 BPM.
  2. Otevřete soubor v MuseScore Studio prostřednictvím File → Open nebo jej importujte pomocí příkazu DAW pro import MIDI. Přidejte nástroje, změny tempa, metrum, předznamenání nebo další hudební data, která CSV neobsahovalo.

Pokud jsou zdrojové časy v sekundách, převeďte je na beaty pomocí beats = seconds * bpm / 60. Pokud jsou v MIDI tickách, vydělte je hodnotou ticks-per-beat zdrojového souboru. Sekundy, beaty a ticky nejsou vzájemně zaměnitelné. Pokud CSV obsahuje řádky událostí namísto řádků not, napište parser, který mapuje každý typ události na odpovídající MIDI zprávu, místo použití skriptu pro tabulku not.

Omezení kvality a kompatibility

Výsledek může zachovat pouze data reprezentovaná zdrojovým schématem a metodou převodu. Příklad zachovává výšku tónu, čas začátku, délku, velocity a kanál, ale nikoli texty, sustain pedál, automatizaci controllerů, změny programů, změny tempa, metrum, předznamenání, artikulace nebo více tracků.

Překrývající se noty jsou podporovány, ale překrývající se noty se stejnou výškou a kanálem mohou být u některých nástrojů nejednoznačné. Čísla MIDI programů, chování bicích kanálů, ladění, odezvy controllerů a zvuky nástrojů se mezi aplikacemi a hardwarem liší. Zkontrolujte importovaný soubor v piano-rollu nebo editoru událostí a poslechněte si, zda se neobjevuje nesprávné tempo, chybějící noty, kolize kanálů nebo zkrácené délky.

Online služby jsou vhodné pouze tehdy, pokud dokumentují přesné uspořádání CSV, které přijímají. Obecné převodníky souborů nedokážou určit, zda sloupec obsahuje MIDI ticky, sekundy, beaty, názvy not nebo typy událostí. U vlastních kompozic nebo soukromých materiálů se místním převodem pomocí MIDICSV nebo Pythonu vyhnete nahrávání dat a získáte reprodukovatelná nastavení.

CSV vs MIDI: srovnání formátů

Jak si formáty CSV a MIDI stojí v nejdůležitějších vlastnostech pro tento převod.

Srovnání souborových formátů CSV a MIDI
Vlastnost .CSV Comma-Separated Values .MIDI MIDI Standard File
Otevřený standard Ano Ano
Komprese Bez komprese Bez komprese
Typická velikost souboru Malé Velmi malé
Otevírá se ve webovém prohlížeči Ano, nativně Ne
Další úpravy Snadné Snadné
Podpora metadat Základní Základní
Čitelný jako prostý text Ano Ne
Nejvhodnější pro Výměna dat Hudba
Zavedeno — 1983
Vývojář — MIDI Manufacturers Association / MIDI Association
MIME typ text/csv audio/midi