un utilitaire de ligne de commande de fichier de séquence AKAI MPC 1000
J'utilise souvent mon MPC 1000 comme lecteur pour des pistes d'accompagnement ou des boucles de batterie lorsque je pratique de la musique ou que je veux simplement jouer rapidement quelque chose. Je crée généralement une boucle de batterie dans la DAW de mon choix, puis j'exporte plusieurs fichiers wav à différentes vitesses. Je copierais ensuite ces fichiers sur mon MPC et enregistrerais une séquence pour chaque fichier wav. La prochaine fois que je veux m'entraîner ou jouer, il me suffira de charger rapidement un dossier de séquences et de fichiers wav et je pourrai facilement basculer entre plusieurs vitesses.
Créer toutes les séquences sur la MPC elle-même est une tâche très fastidieuse, c'est pourquoi j'ai écrit cet outil. Il ne me reste plus qu'à créer une "séquence modèle" sur le MPC, à la copier sur l'ordinateur et à en créer plusieurs fichiers (renommés). Je laisse ensuite l'outil m'aider à afficher les méta informations des fichiers de séquence et à effectuer des tâches répétitives comme remplacer le nom du fichier dans les pistes AUDIO ou remplacer le BPM des séquences.
Bien que je l'ai écrit pour les fichiers de séquence créés à partir du MPC 1000 exécutant JJOS, je suppose que l'outil fonctionnerait également avec les fichiers du MPC 2500, je pense qu'ils partagent le même format. Peut-être que celui du MPC 500 fonctionnerait aussi, je n'en suis pas sûr. J'apprécierais certainement tous les tests et commentaires sur l'utilisation de ces fichiers de modèles MPC.
Si vous ne souhaitez pas vous soucier d'installer Python sur votre système d'exploitation et que vous n'êtes pas intéressé par l'exécution de la dernière version de développement, utilisez simplement les exécutables autonomes disponibles depuis la version v1.2 : https://github.com/JOJ0/ mpc1k-seq/releases/tag/v1.2
seq.exe
seq
de téléchargement (vous ne savez pas si les versions plus récentes de MacOS fonctionneront, veuillez signaler tout problème) Pour pouvoir exécuter seq
depuis n'importe où sur votre système, copiez-le à l'endroit recherché :
Utilisez l'Explorateur Windows pour copier le fichier seq.exe dans c:windowssystem32
Notez qu’il s’agit d’un sale hack. Si vous ne voulez pas faire cela ou n'avez pas les privilèges pour le faire, sur votre invite de commande, vous pouvez toujours simplement "cd" à l'endroit où seq.exe est enregistré et l'exécuter à partir de là :-)
Assurez-vous que vous résidez dans le répertoire où seq est enregistré. Votre utilisateur doit disposer des privilèges d'administrateur. Votre mot de passe vous sera demandé lors de l'exécution de la commande suivante :
sudo cp seq /usr/local/bin/
Veuillez simplement suivre les étapes du chapitre suivant !
ignorez ce chapitre si vous utilisez les exécutables comme décrit ci-dessus
Tout d'abord, vérifiez si vous avez déjà une version Python sur votre système avec python --version
Vous avez besoin de Python 2.7.x
Clonez le dépôt github et accédez au répertoire.
git clone https://github.com/JOJ0/mpc1k-seq.git
cd mpc1k-seq
Téléchargez un programme d'installation msi ici
installez l'outil en ajoutant le répertoire du dépôt cloné à la variable système %path%,
ou copiez-le simplement rapidement et salement dans un chemin qui se trouve déjà dans le chemin de recherche du système
copy seq.py c:windowssystem32
Mac OS X 10.11 "El Capitan" est livré avec Python 2.7.6 préinstallé, qui est la version sur laquelle l'utilitaire a été développé et avec lequel il est testé. OX X 10.8 avait Python 2.6, qui fonctionnerait probablement aussi. 10.9 et plus récents ont tous 2.7.x, ce qui devrait convenir.
Si vous ne disposez pas de ce qui précède, installez le dernier package 2.7 à partir d'ici ou utilisez homebrew pour l'obtenir.
installer l'outil
cp seq.py /usr/local/bin/
Vous disposez probablement déjà d’une version Python en cours d’exécution ! Vérifiez comme décrit ci-dessus !
Certaines distributions Linux modernes utilisent déjà Python 3.x par défaut, vous devrez installer un package python2
Systèmes basés sur Debian
apt install python2.7
Basé sur Redhat
yum install python27
et définissez la première ligne du script pour utiliser cette version de python (par exemple #!/usr/bin/python2.7
)
enfin, installez l'outil
cp seq.py /usr/local/bin/
Si vous utilisez la version de développement, vous devrez exécuter seq.py au lieu de seq. Notez en outre que Windows seq.exe peut être exécuté sans la terminaison .exe. L'exécutable MacOS s'appelle simplement seq et n'a pas de fin de fichier
L'utilitaire se présente sous la forme d'un utilitaire de ligne de commande de style UNIX et, en tant que tel, montre toutes ses capacités lorsqu'il est exécuté avec les options typiques --help ou -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
afficher simplement les méta-informations de tous les fichiers séq dans le répertoire actuel
seq .
afficher les informations de tous les fichiers séq dont le nom de fichier contient 64 ou 512 (généralement des valeurs BPM)
seq -b "64 512" .
afficher également les valeurs en hexadécimal
seq -b "64 512" -x .
rechercher une chaîne
seq -b "64 512" -x -s "FunkBG" .
remplacez la première occurrence de SEARCHTERM par REPLACETERM (exécutez à nouveau le script pour remplacer la prochaine instance de SEARCHTERM)
FIXME - "replacecount" peut être configurable dans les prochaines versions
seq -b "64 512" -x -s "FunkBG" -r "Blues01" .
Afficher tous les fichiers .SEQ du répertoire actuel ( .
) dont le nom de fichier contient 80 ( -b "80"
ou --filter "80"
et recherchez le terme "FunkBG"
dans le fichier
Habituellement, cela est utile si nous souhaitons rechercher et remplacer le nom d'un fichier wav dans une piste audio, mais nous pourrions probablement aussi l'utiliser pour remplacer le nom d'un "fichier programme" MPC (.PGM) quelque part dans la séquence (binaire). déposer.
Jetons un coup d'œil à la ligne de commande et à son résultat :
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!
La première section de la sortie nous montre les méta-informations enregistrées dans l'en-tête des fichiers comme la version, le nombre de mesures et le BPM de la séquence.
Après le marqueur "Fin de l'en-tête", nous voyons que notre terme de recherche "FunkBG" a été trouvé et il s'agit très probablement du début du nom d'un fichier wav dans une piste AUDIO.
Supposons que nous souhaitions remplacer une partie du nom des fichiers wav configuré dans le fichier seq. Curieusement, le nom d'un fichier wav est enregistré en deux morceaux de 8 octets à des endroits différents. Le script essaie de nous aider à découvrir s'il vient de trouver une partie d'un nom de fichier wav ou quelque chose d'autre (comme un nom de fichier pgm ou une autre chaîne).
Voici ensuite nos possibilités pour remplacer cette chaîne :
--replace (-r)
est la forme de remplacement la plus simple, elle place simplement le REPLACETERM à la position où il a trouvé SEARCHTERM. Si REPLACETERM est plus long que SEARCHTERM, il écrasera la partie restante.
--correct-wav (-w)
est l'option à utiliser lorsque nos fichiers wav portent exactement le même nom que nos fichiers wav (sauf la fin du fichier bien sûr). C'est l'option que j'utilise le plus. Dans le cas de l'exemple de fichier seq du dépôt github, les noms de fichiers wav et seq étaient déjà identiques, donc cette option n'est actuellement pas très utile.
--correct-wav-bpm (-p)
n'a de sens que lorsque SEARCHTERM contient des nombres qui représentent les valeurs BPM. Je vais le montrer dans un autre exemple.
Chacune des options indique exactement ce qu'elle remplacerait, donc si nous sommes satisfaits de l'une d'entre elles, nous réexécutons simplement le script et ajoutons en outre l'option de remplacement à la ligne de commande.
Par exemple, si nous choisissons -r
comme option à utiliser, parce que nous voulons simplement remplacer "FunkBG" par "PunkBG", voici la commande et son résultat :
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 ...
Si nous cherchons à nouveau FunkBG, nous ne le trouverons certainement plus :
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 serait plutôt trouvé et nous aurions des options similaires à celles de notre première recherche ci-dessus :
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!
C'est le cas d'utilisation pour lequel j'ai écrit ce script. Prenons le fichier de l'exemple ci-dessus où nous avions remplacé Funk par Punk, mais copions-les et renommez -les. Vous pouvez effectuer la copie/renommer comme vous le souhaitez, par exemple, iOS X Finder dispose d'un bel outil de renommage de masse intégré. Je le fais directement sur la ligne de commande maintenant, pendant qu'on y est :
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, maintenant nous aimerions définir le nom des fichiers wav dans les 3 "fichiers de séquence punk" de la même manière que le nom de fichier. Nous recherchons d’abord Punk et voyons ce que nous avons. Il y a probablement d'autres fichiers seq dans ce dossier, nous sélectionnons donc particulièrement nos 3 fichiers avec l'option --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!
Si nous examinons attentivement la sortie des 3 fichiers, nous trouverons ces possibilités utiles
--correct-bpm (-c)
pourrait corriger le BPM de la séquence dans les fichiers 2 et 3 (les copies)--correct-wav (-w)
pourrait remplacer le nom du fichier wav des pistes AUDIO afin qu'il soit égal au nom des fichiers séq. Également dans les dossiers 2 et 3 (les copies) Si nous utilisions maintenant les options -w
et -c
, nous obtenions le résultat suivant :
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 ...
Une dernière vérification nous montre que le nom du fichier wav ainsi que le BPM ont été corrigés :
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... exemple d'utilisation de --correct-wav-bpm