AKAI MPC 1000 시퀀스 파일 명령줄 유틸리티
나는 종종 음악을 연습할 때 또는 빨리 따라 연주할 곡을 원할 때 백킹 트랙이나 드럼 루프용 플레이어로 MPC 1000을 사용합니다. 나는 일반적으로 선택한 DAW에서 드럼 루프를 만든 다음 여러 WAV 파일을 다른 속도로 내보냅니다. 그런 다음 해당 파일을 MPC에 복사하고 각 wav 파일에 대해 하나의 시퀀스를 저장합니다. 다음에 연습하거나 즉흥 연주를 하고 싶을 때 시퀀스 폴더와 wav 파일을 빠르게 로드하기만 하면 여러 속도 사이를 쉽게 전환할 수 있습니다.
MPC 자체에서 모든 시퀀스를 생성하는 것은 매우 지루한 작업이므로 이 도구를 작성했습니다. 이제 MPC에서 하나의 "템플릿 시퀀스"를 생성하고 이를 컴퓨터에 복사한 다음 여기에서 여러 개의(이름이 바뀐) 파일을 생성하면 됩니다. 그런 다음 도구를 사용하여 시퀀스 파일의 메타 정보를 표시하고 AUDIO 트랙의 파일 이름을 바꾸거나 시퀀스 BPM을 바꾸는 등의 반복적인 작업을 수행할 수 있습니다.
JJOS를 실행하는 MPC 1000에서 생성된 시퀀스 파일용으로 작성했지만 이 도구가 MPC 2500의 파일에서도 작동할 것이라고 가정하고 두 파일이 동일한 형식을 공유한다고 생각합니다. 아마도 MPC 500의 제품도 작동할 것입니다. 확실하지는 않습니다. 해당 MPC 모델 파일 사용에 대한 테스트 및 피드백에 감사드립니다.
OS에 Python을 설치하는 데 신경쓰지 않고 최신 개발 버전을 실행하는 데 관심이 없다면 릴리스 v1.2부터 사용할 수 있는 자체 포함 실행 파일을 사용하세요: https://github.com/JOJ0/ mpc1k-seq/릴리스/태그/v1.2
seq.exe
다운로드하세요.seq
(최신 MacOS 버전이 작동할지 확실하지 않습니다. 문제가 있으면 다시 보고해 주세요.) 시스템의 어느 곳에서나 seq
실행하려면 다음을 검색하는 위치에 복사하십시오.
Windows 탐색기를 사용하여 seq.exe 파일을 c:windowssystem32에 복사합니다.
이것은 더러운 해킹입니다. 이 작업을 수행하고 싶지 않거나 해당 작업을 수행할 권한이 없는 경우 명령 프롬프트에서 언제든지 seq.exe가 저장된 위치로 "cd"하고 거기에서 실행할 수 있습니다. :-)
seq가 저장된 디렉토리 내에 있는지 확인하십시오. 사용자에게 관리자 권한이 있어야 합니다. 다음 명령을 실행할 때 비밀번호를 묻는 메시지가 표시됩니다.
sudo cp seq /usr/local/bin/
다음 장의 단계를 따르십시오!
위에 설명된 대로 실행 파일을 사용하는 경우 이 장을 건너뛰십시오.
우선, python --version
사용하여 시스템에 이미 Python 버전이 있는지 확인하세요.
Python 2.7.x가 필요합니다.
github 저장소를 복제하고 디렉터리로 이동합니다.
git clone https://github.com/JOJ0/mpc1k-seq.git
cd mpc1k-seq
여기에서 msi 설치 프로그램을 다운로드하세요.
복제된 repo 디렉터리를 시스템 %path% 변수에 추가하여 도구를 설치합니다.
또는 이미 시스템 검색 경로에 있는 경로에 빠르고 간단하게 복사하세요.
copy seq.py c:windowssystem32
Mac OS X 10.11 "El Capitan"에는 Python 2.7.6이 사전 설치되어 제공됩니다. Python 2.7.6은 유틸리티가 개발되고 테스트된 버전입니다. OX X 10.8에는 Python 2.6이 있었는데 아마도 작동할 것입니다. 10.9 이상에는 모두 2.7.x가 있으므로 괜찮습니다.
위의 항목이 없으면 여기에서 최신 2.7 패키지를 설치하거나 homebrew를 사용하여 다운로드하세요.
도구를 설치하다
cp seq.py /usr/local/bin/
아마도 이미 실행 중인 Python 버전이 있을 것입니다! 위와 같이 확인해보세요!
일부 최신 Linux 배포판은 이미 기본적으로 Python 3.x를 사용하므로 python2 패키지를 설치해야 합니다.
데비안 기반 시스템
apt install python2.7
Redhat 기반
yum install python27
그리고 이 Python 버전을 사용하도록 스크립트의 첫 번째 줄을 설정합니다(예: #!/usr/bin/python2.7
).
마지막으로 도구를 설치하십시오
cp seq.py /usr/local/bin/
개발 버전을 사용하는 경우 seq 대신 seq.py를 실행해야 합니다. 또한 Windows seq.exe는 .exe 종료 없이 실행될 수 있습니다. MacOS 실행 파일은 seq라고 불리며 파일 끝이 없습니다.
이 유틸리티는 UNIX 스타일 명령줄 유틸리티로 제공되므로 일반적인 --help 또는 -h 옵션을 사용하여 실행할 때 모든 기능을 보여줍니다.
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
현재 디렉토리에 있는 모든 seq 파일의 메타 정보를 표시합니다.
seq .
파일 이름에 64 또는 512가 있는 모든 seq 파일의 정보 표시(일반적으로 BPM 값)
seq -b "64 512" .
또한 값을 16진수로 표시합니다.
seq -b "64 512" -x .
문자열 검색
seq -b "64 512" -x -s "FunkBG" .
SEARCHTERM의 첫 번째 항목을 REPLACETERM으로 바꿉니다(SEARCHTERM의 다음 인스턴스를 바꾸려면 스크립트를 다시 실행).
FIXME - "replacecount"는 향후 릴리스에서 구성 가능
seq -b "64 512" -x -s "FunkBG" -r "Blues01" .
파일 이름에 80( -b "80"
또는 --filter "80"
이 있는 현재 디렉터리( .
)의 모든 .SEQ 파일을 표시하고 파일에서 "FunkBG"
라는 용어를 검색합니다.
일반적으로 이는 오디오 트랙에서 wav 파일 이름을 검색하고 바꾸려는 경우 유용하지만 아마도 (바이너리) seq의 MPC "프로그램 파일"(.PGM) 이름을 바꾸는 데 사용할 수도 있습니다. 파일.
명령줄과 그 결과를 살펴보겠습니다.
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!
출력의 첫 번째 섹션에는 버전, 막대 수 및 시퀀스의 BPM과 같은 파일 헤더에 저장된 메타 정보가 표시됩니다.
"헤더 끝" 표시 뒤에는 검색어 "FunkBG"가 발견되었으며 이는 AUDIO 트랙에 있는 wav 파일 이름의 시작일 가능성이 높습니다.
seq 파일에 구성된 wav 파일 이름의 일부를 바꾸고 싶다고 가정해 보겠습니다. 이상하게도 wav 파일의 이름은 서로 다른 위치에 두 개의 8바이트 청크로 저장됩니다. 스크립트는 wav 파일 이름의 일부를 찾았는지 아니면 다른 것(pgm 파일 이름이나 다른 문자열 등)을 찾았는지 알아내는 데 도움을 주려고 합니다.
다음은 해당 문자열을 대체할 수 있는 가능성입니다.
--replace (-r)
는 가장 간단한 교체 형식으로 SEARCHTERM을 찾은 위치에 REPLACETERM을 배치합니다. REPLACETERM이 SEARCHTERM보다 길면 나머지 부분을 덮어씁니다.
--correct-wav (-w)
는 wav 파일의 이름이 wav 파일과 정확히 동일할 때 사용하는 옵션입니다(물론 파일 끝 부분은 제외). 제가 가장 많이 사용하는 옵션입니다. github 저장소의 seq 파일 예의 경우 wav 및 seq 파일 이름이 이미 동일하므로 현재 이 옵션은 그다지 유용하지 않습니다.
--correct-wav-bpm (-p)
SEARCHTERM에 BPM 값을 나타내는 숫자가 포함된 경우에만 의미가 있습니다. 다른 예를 통해 보여드리겠습니다.
각 옵션에는 대체할 항목이 정확히 명시되어 있으므로 옵션 중 하나에 만족하면 스크립트를 다시 실행하고 추가로 대체 옵션을 명령줄에 추가하면 됩니다.
예를 들어, "FunkBG"를 "PunkBG"로 간단히 바꾸려고 하기 때문에 -r
사용할 옵션으로 선택한 경우 명령과 결과 출력은 다음과 같습니다.
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 ...
이제 FunkBG를 다시 검색하면 확실히 더 이상 찾을 수 없습니다.
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가 발견되고 위의 첫 번째 검색과 유사한 옵션이 제공됩니다 .
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!
이것이 제가 실제로 이 스크립트를 작성한 사용 사례입니다. 위의 예에서 Funk를 Punk로 대체한 파일을 복사하고 이름을 바꾸겠습니다. 원하는 대로 복사/이름 바꾸기를 수행할 수 있습니다. 예를 들어 iOS X Finder에는 멋진 대량 이름 바꾸기 도구가 내장되어 있습니다. 지금은 명령줄에서 직접 수행합니다.
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
이제 우리는 3개의 "펑크 시퀀스 파일" 모두에서 wav 파일 이름을 파일 이름과 동일하게 설정하고 싶습니다. 먼저 Punk를 검색하고 무엇을 가지고 있는지 확인합니다. 아마도 이 폴더에 다른 seq 파일이 있을 수 있으므로 특히 --filter (-b)
옵션을 사용하여 3개 파일을 선택합니다.
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!
3개 파일의 출력을 면밀히 조사하면 다음과 같은 유용한 가능성을 찾을 수 있습니다.
--correct-bpm (-c)
파일 2와 3(사본)의 시퀀스 BPM을 수정할 수 있습니다.--correct-wav (-w)
AUDIO 트랙 wav 파일의 이름을 seq 파일 이름과 동일하게 바꿀 수 있습니다. 또한 파일 2와 3(사본)에도 있습니다. 이제 -w
및 -c
옵션을 사용하면 다음과 같은 출력이 표시됩니다.
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 ...
마지막 확인 결과 wav 파일 이름과 BPM도 수정되었음을 알 수 있습니다.
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... --corright-wav-bpm 사용 방법 예