Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/11/2005, à 18:29

Black_pignouf

Scripteur du dimanche

Bonjour à tous,

je m'occupe d'un site dédié aux tablatures d'harmonica
http://www.grotch.tk/

et je voudrais profiter de la puissance d'Ubuntu et de l'open source pour m'aider à rajouter des tablatures.

Ce que je voudrais savoir, tout d'abord :
-comment appliquer un patch à un répertoire de sources. Dans mon cas,

patch:
http://archive.ubuntu.com/ubuntu/pool/u … -1.diff.gz

original:
http://archive.ubuntu.com/ubuntu/pool/u … rig.tar.gz

tous deux disponibles ici:
http://packages.ubuntu.com/breezy/sound/abcmidi

j'ai bien essayé avec "patch", mais il me dit que je suis bien gentil en voulant appliquer un patch à un répertoire.


-2ème point

je voudrais scripter ce "code":

appliquer à tous les fichiers .mid récents (pas plus vieux que X jours) d'un certain répertoire (ci-possible spécifié en option du script):
{
cp source_midi_numero_i.mid  repertoire_fils_nommé_source_midi_numero_i/
mftext source_midi_numero_i.mid > fichier_texte dans ce répertoire
midi2abc source_midi_numero_i.mid -> fichier_abc dans ce répertoire
abcm2ps fichier_abc_créé -> fichier_ps dans le même répertoire
ps2pdf -> fichier_pdf dans le même répertoire
rm fichier_ps

 pour chaque track j du fichier.mid, faire
 {
   midicopy -tr j fichier-track_j.mid
 }
}

Ok, c'est long et bête, et je ne veux surtout pas vous forcer à écrire ce script pour moi (quoi que... smile mais je voudrais savoir s'il existe des aides au codage de script (genre Anjuta pour C) et des références et tutos pour apprendre.

Merci beaucoup,
Eric

Dernière modification par Black_pignouf (Le 16/11/2005, à 20:06)

Hors ligne

#2 Le 17/11/2005, à 00:27

Black_pignouf

Re : Scripteur du dimanche

Aie aie aie.... j'envoie des posts tellement intéressants que je suis le seul à y répondre big_smile

voilà ce que j'ai trouvé pour l'instant...

#! /bin/bash

#create the output directory
mkdir -p ~/Documents/midi;

for midifile in `find $1 -name '*.mid'` ;

do
	basemidi=$(basename $midifile);
	#remove the .mid in the namefile
	base=$(echo $basemidi | cut -d"." -f1);

	if test -e ~/Documents/midi/$base;
	then
		echo Already converted : $base
	else
		#create the corresponding directory
		mkdir -p ~/Documents/midi/$base;
		echo $base;
		#copy the midi file
		cp $midifile ~/Documents/midi/$base/;
		newfile=~/Documents/midi/$base/$basemidi;
		#convert to abc
		midi2abc $newfile -o ~/Documents/midi/$base/$base.abc;
		#convert to ps
		abcm2ps ~/Documents/midi/$base/$base.abc -O ~/Documents/midi/$base/$base.ps;
		#convert to pdf
		ps2pdf ~/Documents/midi/$base/$base.ps ~/Documents/midi/$base/$base.pdf;
		#remove .ps
		rm ~/Documents/midi/$base/$base.ps;
		#look for the number of tracks in the midi file
		ntrks=$(mftext $newfile | grep "ntrks" | cut -d" " -f3 | cut -d"=" -f2);
		
	fi
done

C'est pas complet du tout, et je voudrais savoir comment écrire en bash:

pour i de 1 à $ntrks
...................
finpour

c'est possible? même si ntrks est une chaine de caractères?

Merci d'avance

Dernière modification par Black_pignouf (Le 17/11/2005, à 00:28)

Hors ligne

#3 Le 25/01/2006, à 19:13

severino

Re : Scripteur du dimanche

pour i de 1 à $ntrks
...................
finpour

for i in `$(seq $ntrks)`
do ..................
done

ou

for (( i=1,  i<=$ntrks, i++ ))
do ...................
done

Peut-être (?)

Hors ligne