utilitas baris perintah file urutan AKAI MPC 1000
Saya sering menggunakan MPC 1000 sebagai pemutar untuk backing track atau loop drum saat berlatih musik atau sekadar ingin sesuatu untuk dimainkan. Saya biasanya membuat loop drum di DAW pilihan saya dan kemudian mengekspor beberapa file wav dengan kecepatan berbeda. Saya kemudian akan menyalin file-file itu ke MPC saya dan menyimpan satu urutan untuk setiap file wav. Lain kali saya ingin berlatih atau nge-jam, saya hanya perlu memuat folder berisi file sequence dan wav dengan cepat dan dapat dengan mudah beralih di antara beberapa kecepatan.
Membuat semua sequence pada MPC itu sendiri adalah tugas yang sangat membosankan, itu sebabnya saya menulis alat ini. Saya sekarang hanya perlu membuat satu "urutan template" di MPC, menyalinnya ke komputer, dan membuat beberapa file (berganti nama) darinya. Saya kemudian membiarkan alat tersebut membantu saya menampilkan informasi meta dari file urutan dan melakukan tugas berulang seperti mengganti nama file di trek AUDIO atau mengganti BPM urutan.
Meskipun saya menulisnya untuk file urutan yang dibuat dari MPC 1000 yang menjalankan JJOS, saya berasumsi alat tersebut akan bekerja dengan file MPC 2500 juga, menurut saya formatnya sama. Mungkin juga yang dari MPC 500 bisa berfungsi, saya tidak yakin. Saya sangat menghargai pengujian dan masukan apa pun tentang penggunaan file model MPC tersebut.
Jika Anda tidak ingin repot menginstal Python di OS Anda, dan tidak tertarik menjalankan versi pengembangan terbaru, cukup gunakan executable mandiri yang tersedia sejak rilis v1.2: https://github.com/JOJ0/ mpc1k-seq/rilis/tag/v1.2
seq.exe
seq
pengunduhan MacOS X 10.13 (tidak yakin apakah versi MacOS yang lebih baru dapat berfungsi, harap laporkan kembali jika ada masalah) Untuk dapat menjalankan seq
dari mana saja di sistem Anda, salin ke tempat yang dicari:
Gunakan Windows Explorer untuk menyalin file seq.exe ke c:windowssystem32
Perhatikan bahwa ini adalah peretasan kotor. Jika Anda tidak ingin melakukan ini atau tidak memiliki hak istimewa untuk melakukannya, pada command prompt Anda selalu dapat "cd" ke tempat seq.exe disimpan dan menjalankannya dari sana :-)
Pastikan Anda berada di dalam direktori tempat seq disimpan. Pengguna Anda harus memiliki hak istimewa admin. Anda akan dimintai kata sandi saat menjalankan perintah berikut:
sudo cp seq /usr/local/bin/
Silakan ikuti saja langkah-langkah pada bab berikut!
lewati bab ini jika Anda menggunakan executable seperti dijelaskan di atas
Pertama-tama, periksa apakah Anda sudah memiliki versi Python di sistem Anda dengan python --version
Anda memerlukan Python 2.7.x
Kloning repo github dan masuk ke direktori.
git clone https://github.com/JOJ0/mpc1k-seq.git
cd mpc1k-seq
Unduh penginstal msi di sini
instal alat dengan menambahkan direktori repo yang dikloning ke variabel %path% sistem,
atau cukup salin dengan cepat dan kotor ke jalur yang sudah ada di jalur pencarian sistem
copy seq.py c:windowssystem32
Mac OS X 10.11 "El Capitan" dikirimkan dengan Python 2.7.6 pra-instal, yang merupakan versi utilitas yang dikembangkan dan diuji. OX X 10.8 memiliki Python 2.6, yang mungkin juga bisa berfungsi. 10.9 dan yang lebih baru semuanya memiliki 2.7.x, yang seharusnya baik-baik saja.
Jika Anda belum memiliki paket di atas, instal paket 2.7 terbaru dari sini atau gunakan homebrew untuk mendapatkannya.
memasang alat tersebut
cp seq.py /usr/local/bin/
Kemungkinan besar Anda sudah menjalankan versi Python! Periksa seperti dijelaskan di atas!
Beberapa Distribusi Linux modern sudah menggunakan Python 3.x secara default, Anda harus menginstal paket python2
Sistem berbasis Debian
apt install python2.7
Berbasis Redhat
yum install python27
dan atur baris pertama skrip untuk menggunakan versi python ini (misalnya #!/usr/bin/python2.7
)
terakhir, instal alat tersebut
cp seq.py /usr/local/bin/
Jika Anda menggunakan versi pengembangan, Anda harus menjalankan seq.py alih-alih seq. Perhatikan lebih lanjut bahwa seq.exe Windows dapat dijalankan tanpa akhiran .exe. Eksekusi MacOS hanya disebut seq dan tidak memiliki akhiran file
Utilitas ini hadir sebagai utilitas baris perintah bergaya UNIX dan dengan demikian menunjukkan semua kemampuannya ketika dijalankan dengan opsi --help atau -h yang umum:
seq -h
usage: seq [-h] [--search SEARCHTERM] [--replace REPLACETERM]
[--correct-wav] [--correct-wav-bpm] [--filter BPM_LIST]
[--correct-bpm] [--hex] [--verbose]
path
positional arguments:
path path of *.SEQ files to be processed
optional arguments:
-h, --help show this help message and exit
--search SEARCHTERM, -s SEARCHTERM
search for given string in file contents
--replace REPLACETERM, -r REPLACETERM
replace SEARCHTERM with REPLACETERM
--correct-wav, -w sets basename of .SEQ file to the place where
SEARCHTERM is found. Use this if your seq and wav
files are named identically
--correct-wav-bpm, -p
replace BPM in found SEARCHTERM with BPM found in
filename
--filter BPM_LIST, --bpm BPM_LIST, -b BPM_LIST
historically was used as a space seperated BPM list
but actually it is a simple filter: only filenames
containing one of the strings in the list, will be
processed
--correct-bpm, -c set BPM to the same as in filename
--correct-length, -l set the sequences looplength (bars) to the same as in
filename. Assumes value in filename is marked with
trailing "b" (eg 8b)
--hex, -x show hex values next to decimal and strings
--verbose, -v also show border markers and not yet studied header
information
cukup tampilkan informasi meta dari semua file seq di direktori saat ini
seq .
tampilkan info semua file seq yang memiliki nama file 64 atau 512 (biasanya nilai BPM)
seq -b "64 512" .
juga menampilkan nilai dalam hex
seq -b "64 512" -x .
mencari string
seq -b "64 512" -x -s "FunkBG" .
ganti kemunculan pertama SEARCHTERM dengan REPLACETERM (jalankan skrip lagi untuk mengganti kejadian SEARCHTERM berikutnya)
FIXME - "replacecount" mungkin dapat dikonfigurasi di rilis mendatang
seq -b "64 512" -x -s "FunkBG" -r "Blues01" .
Tampilkan semua file .SEQ di direktori saat ini ( .
) yang memiliki 80 di nama file ( -b "80"
atau --filter "80"
dan cari istilah "FunkBG"
di file
Biasanya ini berguna jika kita ingin mencari dan mengganti nama file wav di trek audio, tapi kita mungkin juga bisa menggunakannya untuk mengganti nama "file program" MPC (.PGM) di suatu tempat di urutan (biner) mengajukan.
Mari kita lihat baris perintah dan hasilnya:
seq -b "80" -s FunkBG .
* PATH used: .
* searching for "FunkBG" (after End of header)
* bpm_list (filter_list): ['80']
############### FunkBG_080_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "FunkBG_0"
and this would be the second half: "80_8bar"
** REPLACE OPTIONS: ********************************
** --replace simply replaces FunkBG with REPLACETERM.
** --correct-wav (-w) puts this files basename at found terms position,
** it would replace "FunkBG_0" with "FunkBG_0",
** and "80_8bar" with "80_8bar".
** --correct-wav-bpm (-p) just replaces the bpm part in the found term,
?? didn't find a possible bpm value in given term (FunkBG),
?? use underscores or dashes as seperating characters!
** it would replace "FunkBG" with "FunkBG".
** If this all looks like crap, don't do it! Existing files will be OVERWRITTEN!
Bagian pertama dari output menunjukkan kepada kita informasi meta yang disimpan di header file seperti versi, jumlah bilah, dan BPM urutan.
Setelah penanda "End of header" kita melihat bahwa istilah pencarian kita "FunkBG" ditemukan dan kemungkinan besar itu adalah awal dari nama file wav dalam trek AUDIO.
Anggaplah kita ingin mengganti sebagian nama file wav yang dikonfigurasi ke dalam file seq. Anehnya, nama file wav disimpan dalam dua potongan 8 Byte di tempat berbeda. Skrip ini mencoba membantu kami mencari tahu apakah skrip tersebut hanya menemukan bagian dari nama file wav atau sesuatu yang lain (seperti nama file pgm atau string lainnya).
Berikutnya adalah kemungkinan kita untuk mengganti string itu:
--replace (-r)
adalah bentuk penggantian yang paling sederhana, hanya menempatkan REPLACETERM pada posisi ditemukannya SEARCHTERM. Jika REPLACETERM lebih panjang dari SEARCHTERM maka bagian sisanya akan ditimpa.
--correct-wav (-w)
adalah opsi untuk digunakan ketika file wav kita diberi nama yang sama persis dengan file wav kita (kecuali tentu saja akhiran file). Ini adalah opsi yang paling sering saya gunakan. Dalam kasus contoh file seq dari repo github, nama file wav dan seq sudah sama, jadi opsi ini saat ini tidak terlalu berguna.
--correct-wav-bpm (-p)
hanya masuk akal jika SEARCHTERM berisi angka yang mewakili nilai BPM. Saya akan menunjukkannya dalam contoh lain.
Masing-masing opsi dengan tepat menyatakan apa yang akan mereka gantikan, jadi jika kami puas dengan salah satu opsi tersebut, kami cukup menjalankan ulang skrip dan menambahkan opsi ganti ke baris perintah.
Sebagai contoh, jika kita memilih -r
sebagai pilihan yang akan digunakan, karena kita hanya ingin mengganti "FunkBG" dengan "PunkBG", ini akan menjadi perintah dan output yang dihasilkan:
seq -b "80" -s FunkBG -r "PunkBG" .
* PATH used: .
* searching for "FunkBG" (after End of header)
* replace is enabled! REPLACETERM is "PunkBG"
* bpm_list (filter_list): ['80']
############### FunkBG_080_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "FunkBG_0"
and this would be the second half: "80_8bar"
!!! replacing FIRST occurence of "FunkBG" with "PunkBG",
!!! and overwriting ./FunkBG_080_8bar.SEQ ...
Jika sekarang kita mencari FunkBG lagi, pasti kita tidak akan menemukannya lagi:
seq -b "80" -s "FunkBG" .
* PATH used: .
* searching for "FunkBG" (after End of header)
* bpm_list (filter_list): ['80']
############### FunkBG_080_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
################## End of header ###################
your SEARCHTERM "FunkBG" was not found!
Punk malah akan ditemukan dan kami akan memiliki opsi serupa seperti pencarian pertama kami di atas:
seq -b "80" -s "Punk" .
* PATH used: .
* searching for "Punk" (after End of header)
* bpm_list (filter_list): ['80']
############### FunkBG_080_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 4 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "80_8bar"
** REPLACE OPTIONS: ********************************
** --replace simply replaces Punk with REPLACETERM.
** --correct-wav (-w) puts this files basename at found terms position,
** it would replace "PunkBG_0" with "FunkBG_0",
** and "80_8bar" with "80_8bar".
** --correct-wav-bpm (-p) just replaces the bpm part in the found term,
?? didn't find a possible bpm value in given term (Punk),
?? use underscores or dashes as seperating characters!
** it would replace "Punk" with "Punk".
** If this all looks like crap, don't do it! Existing files will be OVERWRITTEN!
Ini adalah kasus penggunaan yang sebenarnya saya tulis untuk skrip ini. Mari kita ambil file dari contoh di atas di mana kita mengganti Funk dengan Punk, tapi mari kita salin dan ganti namanya. Anda dapat melakukan penyalinan/penggantian nama sesuka Anda, misalnya iOS X Finder memiliki alat penggantian nama massal yang bagus. Saya melakukannya langsung pada baris perintah sekarang, sementara kita melakukannya:
cp FunkBG_080_8bar.SEQ PunkBG_080_8bar.SEQ
cp FunkBG_080_8bar.SEQ PunkBG_090_8bar.SEQ
cp FunkBG_080_8bar.SEQ PunkBG_100_8bar.SEQ
Ok sekarang kita ingin mengatur nama file wav di ketiga "file urutan Punk" agar sama dengan nama file. Kami pertama-tama mencari Punk dan melihat apa yang kami miliki. Mungkin ada file seq lain di folder ini jadi kami secara khusus memilih 3 file kami dengan opsi --filter (-b)
:
seq --filter Punk -s "PunkBG" .
* PATH used: .
* searching for "PunkBG" (after End of header)
* bpm_list (filter_list): ['Punk']
############### PunkBG_080_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "80_8bar"
** REPLACE OPTIONS: ********************************
** --replace simply replaces PunkBG with REPLACETERM.
** --correct-wav (-w) puts this files basename at found terms position,
** it would replace "PunkBG_0" with "PunkBG_0",
** and "80_8bar" with "80_8bar".
** --correct-wav-bpm (-p) just replaces the bpm part in the found term,
?? didn't find a possible bpm value in given term (PunkBG),
?? use underscores or dashes as seperating characters!
** it would replace "PunkBG" with "PunkBG".
** If this all looks like crap, don't do it! Existing files will be OVERWRITTEN!
############### PunkBG_090_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
bpm in filename is different! correct with -c
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "80_8bar"
** REPLACE OPTIONS: ********************************
** --replace simply replaces PunkBG with REPLACETERM.
** --correct-wav (-w) puts this files basename at found terms position,
** it would replace "PunkBG_0" with "PunkBG_0",
** and "80_8bar" with "90_8bar".
** --correct-wav-bpm (-p) just replaces the bpm part in the found term,
?? didn't find a possible bpm value in given term (PunkBG),
?? use underscores or dashes as seperating characters!
** it would replace "PunkBG" with "PunkBG".
** If this all looks like crap, don't do it! Existing files will be OVERWRITTEN!
############### PunkBG_100_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
bpm in filename is different! correct with -c
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "80_8bar"
** REPLACE OPTIONS: ********************************
** --replace simply replaces PunkBG with REPLACETERM.
** --correct-wav (-w) puts this files basename at found terms position,
** it would replace "PunkBG_0" with "PunkBG_1",
** and "80_8bar" with "00_8bar".
** --correct-wav-bpm (-p) just replaces the bpm part in the found term,
?? didn't find a possible bpm value in given term (PunkBG),
?? use underscores or dashes as seperating characters!
** it would replace "PunkBG" with "PunkBG".
** If this all looks like crap, don't do it! Existing files will be OVERWRITTEN!
Jika kita memeriksa dengan cermat keluaran untuk 3 file tersebut, kita akan menemukan kemungkinan-kemungkinan berguna ini
--correct-bpm (-c)
dapat memperbaiki BPM urutan di file 2 dan 3 (salinannya)--correct-wav (-w)
dapat menggantikan nama file wav track AUDIO sehingga sama dengan nama file seq. Juga di file 2 dan 3 (salinannya) Jika sekarang kita menggunakan opsi -w
dan -c
, kita mendapatkan output berikut:
seq --filter Punk -s "PunkBG" -w -c
* PATH used: .
* searching for "PunkBG" (after End of header)
* bpm_list (filter_list): ['Punk']
* correct-bpm is enabled!
* correct-wav is enabled!
############### PunkBG_080_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "80_8bar"
-> found underscore seperated bpm value in given term: 80
!!! putting "PunkBG_0" where "PunkBG_0",
!!! putting "80_8bar" where "80_8bar",
!!! replacing bpm value,
!!! and overwriting ./PunkBG_080_8bar.SEQ ...
############### PunkBG_090_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
bpm in filename is different! This will be fixed now!
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "80_8bar"
-> found underscore seperated bpm value in given term: 90
!!! putting "PunkBG_0" where "PunkBG_0",
!!! putting "90_8bar" where "80_8bar",
!!! replacing bpm value,
!!! and overwriting ./PunkBG_090_8bar.SEQ ...
############### PunkBG_100_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
bpm in filename is different! This will be fixed now!
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "80_8bar"
-> found underscore seperated bpm value in given term: 100
!!! putting "PunkBG_1" where "PunkBG_0",
!!! putting "00_8bar" where "80_8bar",
!!! replacing bpm value,
!!! and overwriting ./PunkBG_100_8bar.SEQ ...
Pemeriksaan terakhir menunjukkan kepada kita bahwa nama file wav dan juga BPM telah diperbaiki:
seq --filter Punk -s "PunkBG" .
* PATH used: .
* searching for "PunkBG" (after End of header)
* bpm_list (filter_list): ['Punk']
############### PunkBG_080_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 80
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "80_8bar"
** REPLACE OPTIONS: ********************************
** --replace simply replaces PunkBG with REPLACETERM.
** --correct-wav (-w) puts this files basename at found terms position,
** it would replace "PunkBG_0" with "PunkBG_0",
** and "80_8bar" with "80_8bar".
** --correct-wav-bpm (-p) just replaces the bpm part in the found term,
?? didn't find a possible bpm value in given term (PunkBG),
?? use underscores or dashes as seperating characters!
** it would replace "PunkBG" with "PunkBG".
** If this all looks like crap, don't do it! Existing files will be OVERWRITTEN!
############### PunkBG_090_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 90
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_0"
and this would be the second half: "90_8bar"
** REPLACE OPTIONS: ********************************
** --replace simply replaces PunkBG with REPLACETERM.
** --correct-wav (-w) puts this files basename at found terms position,
** it would replace "PunkBG_0" with "PunkBG_0",
** and "90_8bar" with "90_8bar".
** --correct-wav-bpm (-p) just replaces the bpm part in the found term,
?? didn't find a possible bpm value in given term (PunkBG),
?? use underscores or dashes as seperating characters!
** it would replace "PunkBG" with "PunkBG".
** If this all looks like crap, don't do it! Existing files will be OVERWRITTEN!
############### PunkBG_100_8bar.SEQ ################
4:20 version: MPC1000 SEQ 4.40
28:30 bars: 8
32:34 bpm: 100
################## End of header ###################
Found first occurence of SEARCHTERM at index 7168, it's 6 chars long
If SEARCHTERM is the START of a wav filename in an AUDIO track,
this would be the first half: "PunkBG_1"
and this would be the second half: "00_8bar"
** REPLACE OPTIONS: ********************************
** --replace simply replaces PunkBG with REPLACETERM.
** --correct-wav (-w) puts this files basename at found terms position,
** it would replace "PunkBG_1" with "PunkBG_1",
** and "00_8bar" with "00_8bar".
** --correct-wav-bpm (-p) just replaces the bpm part in the found term,
?? didn't find a possible bpm value in given term (PunkBG),
?? use underscores or dashes as seperating characters!
** it would replace "PunkBG" with "PunkBG".
** If this all looks like crap, don't do it! Existing files will be OVERWRITTEN!
FIXME... contoh cara menggunakan --benar-wav-bpm