Konversi CSV menjadi MIDI
Konversi tabel not musik atau file event MIDICSV menjadi Standard MIDI Files yang dapat diedit.
Konversi file CSV secara online
Kami belum punya konverter online khusus untuk CSV ke MIDI, tetapi Anda bisa mengonversi file CSV secara online ke format berikut dan lainnya:
Bagaimana mengkonversi csv ke midi berkas
- Komposisi musik
- Belum ada peringkat.
Spreadsheet, program analisis, atau alat komposisi khusus dapat mengekspor data not sebagai CSV, sementara sequencer, program notasi, atau hardware MIDI memerlukan Standard MIDI File. Konversi mengubah event musik berbentuk tabular menjadi sequence yang dapat diedit, bukan audio.
Apa itu CSV
CSV (comma-separated values) adalah teks biasa yang disusun dalam baris dan kolom. Komposer, peneliti musik, pengguna spreadsheet, DAW, dan skrip khusus dapat menggunakannya untuk pitch, waktu mulai, durasi, velocity, channel, controller, atau data tempo.
CSV tidak memiliki schema musik universal. Satu file dapat berisi kolom seperti pitch,start,duration; file lain dapat menggunakan nama not, detik, tick, atau satu baris untuk setiap event MIDI. Delimiter dapat berupa koma, titik koma, atau tab, dan field yang diberi tanda kutip dapat berisi delimiter. Identifikasi arti kolom, unit waktu, encoding, dan struktur header sebelum melakukan konversi.
Apa itu MIDI
Standard MIDI File (.mid atau .midi) menyimpan instruksi musik bertempo, termasuk event not, velocity, channel, program-change, controller, pitch-bend, tempo, meter, dan key-signature. File ini tidak berisi suara rekaman; synthesizer, instrumen virtual, atau perangkat hardware menghasilkan audionya.
File MIDI biasanya jauh lebih kecil daripada file audio dan memungkinkan not, timing, velocity, instrumen, tempo, dan data aransemen diedit secara terpisah. File ini dapat dibuka oleh MuseScore Studio, Cubase, Logic Pro, Ableton Live, REAPER, dan sequencer hardware, meskipun suara playback bergantung pada instrumen tujuan.
Gunakan MIDICSV untuk schema event MIDI yang sudah ada
Utilitas open-source MIDICSV adalah opsi paling langsung ketika CSV mengikuti format event MIDICSV. Utilitas ini bukan converter spreadsheet generik: midicsv mengekspor file MIDI ke dalam representasi CSV yang ditentukan, dan csvmidi mengonversi representasi tersebut kembali menjadi file MIDI.
- Instal package MIDICSV untuk sistem operasi Anda dari sumber yang terdokumentasi.
- Ekspor file MIDI dengan
midicsv input.mid events.csv. - Edit
events.csvtanpa mengubah field track, time, event-type, dan parameter yang diwajibkan. Pertahankan rentang numerik serta header atau syntax event yang diwajibkan. - Compile dengan
csvmidi events.csv output.mid. - Buka
output.middalam editor MIDI dan periksa timing, instrumen, controller, serta struktur track.
Spreadsheet yang berisi kolom sembarang seperti start_beat, duration_beat, dan pitch tidak otomatis kompatibel dengan csvmidi. Gunakan parser khusus untuk layout tersebut.
Konversi CSV dengan satu not per baris menggunakan Python
Untuk tabel not, gunakan Python dengan library open-source mido. Siapkan notes.csv dengan satu not per baris dan kolom berikut: start_beat, duration_beat, pitch, velocity, dan channel. Gunakan pitch MIDI dari 0 hingga 127, velocity dari 1 hingga 127, channel dari 0 hingga 15, dan beat yang relatif terhadap not seperempat.
- Instal dependency dengan
python -m pip install mido. - Simpan skrip ini sebagai
csv_to_midi.pydi sebelahnotes.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')
- Jalankan
python csv_to_midi.py. Hasilnya adalahnotes.mid, dengan 480 tick per not seperempat dan tempo tetap 120 BPM. - Buka file dalam MuseScore Studio melalui File → Open, atau impor file menggunakan perintah impor MIDI milik DAW. Tambahkan instrumen, perubahan tempo, meter, key signature, atau data musik lainnya yang tidak terdapat dalam CSV.
Jika waktu sumber menggunakan detik, konversikan ke beat menggunakan beats = seconds * bpm / 60. Jika menggunakan tick MIDI, bagi dengan nilai ticks-per-beat file sumber. Detik, beat, dan tick tidak dapat saling dipertukarkan. Jika CSV berisi baris event, bukan baris not, tulis parser yang memetakan setiap jenis event ke message MIDI yang sesuai, bukan menggunakan skrip tabel not.
Batasan kualitas dan kompatibilitas
Hasilnya hanya dapat mempertahankan data yang direpresentasikan oleh schema sumber dan metode konversi. Contoh ini mempertahankan pitch, waktu mulai, durasi, velocity, dan channel, tetapi tidak mempertahankan lirik, sustain pedal, otomatisasi controller, perubahan program, perubahan tempo, meter, key signature, artikulasi, atau multiple track.
Not yang saling tumpang tindih didukung, tetapi not dengan pitch dan channel yang sama yang saling tumpang tindih dapat menimbulkan ambiguitas pada beberapa instrumen. Nomor program MIDI, perilaku drum-channel, tuning, respons controller, dan suara instrumen berbeda-beda di antara aplikasi dan hardware. Periksa file yang diimpor dalam piano-roll atau event editor dan dengarkan adanya tempo yang salah, not yang hilang, benturan channel, serta durasi yang memendek.
Layanan online hanya sesuai jika mendokumentasikan layout CSV yang diterimanya secara tepat. File converter generik tidak dapat menentukan apakah sebuah kolom berisi tick MIDI, detik, beat, nama not, atau jenis event. Untuk komposisi khusus atau materi pribadi, konversi lokal dengan MIDICSV atau Python menghindari pengunggahan data dan menyediakan pengaturan yang dapat direproduksi.
CSV vs MIDI: perbandingan format
Bagaimana format CSV dan MIDI dibandingkan pada properti yang paling penting untuk konversi ini.
| Properti | .CSV Comma-Separated Values | .MIDI MIDI Standard File |
|---|---|---|
| Standar terbuka | Ya | Ya |
| Kompresi | Tanpa kompresi | Tanpa kompresi |
| Ukuran file umum | Kecil | Sangat kecil |
| Terbuka di browser web | Ya, secara native | Tidak |
| Pengeditan lanjutan | Mudah | Mudah |
| Dukungan metadata | Dasar | Dasar |
| Dapat dibaca teks biasa | Ya | Tidak |
| Paling cocok untuk | Pertukaran data | Musik |
| Diperkenalkan | — | 1983 |
| Pengembang | — | MIDI Manufacturers Association / MIDI Association |
| Tipe MIME | text/csv | audio/midi |
Perangkat lunak dan tautan yang disarankan: csv ke midi converters
Konversi berkas csv lainnya
Konversi terbalik
Konversi ke midi
dari format lain
- mscz ke midi
- mxl ke midi
- gp5 ke midi
- gp ke midi
- musicxml ke midi
- sib ke midi
- abc ke midi
- smf ke midi
- pdf ke midi
- txt ke midi
- akai ke midi
- ascii ke midi
- bmp ke midi
- cap ke midi
- capx ke midi
- cdo ke midi
- doc ke midi
- enf ke midi
- gif ke midi
- gp3 ke midi
- gp4 ke midi
- gpx ke midi
- gtp ke midi
- h2song ke midi
- jpeg ke midi
- jpg ke midi
- mg1 ke midi
- mgu ke midi
- mscx ke midi
- nwc ke midi
- ove ke midi
- png ke midi
- sbk ke midi
- sf ke midi
- sng ke midi
- tab ke midi
- tef ke midi
- tif ke midi
- tiff ke midi
- wpp ke midi
- xml ke midi