Add instrument argument

This commit is contained in:
augustin64 2024-04-17 11:05:06 +02:00
parent bb4a9485df
commit 2d8cd7fd79
4 changed files with 46 additions and 13 deletions

View File

@ -18,5 +18,5 @@ file 363.png
where duration is in seconds where duration is in seconds
```bash ```bash
ffmpeg -f concat -i concat.txt -vf "fps=25,format=yuv420p" -vsync vfr output.webm ffmpeg -y -f concat -i concat.txt -vf "fps=25,format=yuv420p" -vsync vfr output.webm
``` ```

View File

@ -2,7 +2,7 @@
IN=$1 IN=$1
[[ $IN ]]|| IN="concat.txt" [[ $IN ]]|| IN="concat.txt"
FILES=$(cat $IN | grep file | awk '{print $2}') FILES=$(cat $IN | grep file | awk '{print $2}' | uniq)
echo $FILES echo $FILES

View File

@ -53,12 +53,20 @@ def separate_instruments(input_midi_path, output_folder):
return outputs return outputs
def change_instrument(input, output): def change_instrument(input, output, instrument=None):
s = music21.converter.parse(input) s = music21.converter.parse(input)
if instrument is None:
instrument = music21.instrument.Piano()
i=0
for el in s.recurse(): for el in s.recurse():
if 'Instrument' in el.classes: # or 'Piano' if 'Instrument' in el.classes: # or 'Piano'
el.activeSite.replace(el, music21.instrument.Piano()) try:
el.activeSite.replace(el, instrument)
except music21.exceptions21.StreamException:
i+=1
print(f"caught StreamException [{i}]")
s.write('midi', output) s.write('midi', output)
@ -74,7 +82,7 @@ def create_audios(files, dest="out"):
print(f"Converted {basename(el)}.mp3") print(f"Converted {basename(el)}.mp3")
def __main__(SCORE, OUT): def __main__(SCORE, OUT, instrument=None):
os.makedirs(OUT, exist_ok=True) os.makedirs(OUT, exist_ok=True)
if SCORE.split(".")[-1] == "mscz": if SCORE.split(".")[-1] == "mscz":
@ -90,7 +98,7 @@ def __main__(SCORE, OUT):
midi_files = separate_instruments(MIDI_SCORE, OUT) midi_files = separate_instruments(MIDI_SCORE, OUT)
for file in midi_files: for file in midi_files:
change_instrument(file, file) change_instrument(file, file, instrument=instrument)
print("=== Creating audios ===") print("=== Creating audios ===")
create_audios(midi_files, OUT) create_audios(midi_files, OUT)
@ -102,8 +110,21 @@ def __main__(SCORE, OUT):
if __name__ == "__main__": if __name__ == "__main__":
if len(sys.argv) < 3: if len(sys.argv) != 3 and not (len(sys.argv) == 5 and sys.argv[3] == "--instrument"):
print(f"Usage: {sys.argv[0]} <file.mscz> <out/>") print(f"Usage: {sys.argv[0]} <file.mscz> <out/>")
exit(1) exit(1)
__main__(sys.argv[1], sys.argv[2]) instrument=None
if len(sys.argv) > 3:
match sys.argv[4]:
case "piano":
instrument = music21.instrument.Piano()
case "organ":
instrument = music21.instrument.Organ()
case "flute":
instrument = music21.instrument.Flute()
case _:
print("Invalid instrument '", sys.argv[4], "'")
exit(1)
__main__(sys.argv[1], sys.argv[2], instrument=instrument)

View File

@ -3,7 +3,15 @@
AUDIOS=out AUDIOS=out
BASE_NAME="instrument_" BASE_NAME="instrument_"
BASE_OUT_NAME="combined_" BASE_OUT_NAME="combined_"
VOLUME_2="0.1" VOLUME_2="0.3"
ADDITIONAL=$1
usage () {
echo "Usage: $0 <soliste.mp3>"
exit 1
}
[[ $ADDITIONAL ]] || usage
combine () { combine () {
@ -23,7 +31,11 @@ output_file () {
echo "${AUDIOS}/${BASE_OUT_NAME}$1.mp3" echo "${AUDIOS}/${BASE_OUT_NAME}$1.mp3"
} }
combine "$(input_file 1)" "$(input_file 3)" "$(output_file 1)" additional () {
combine "$(input_file 2)" "$(input_file 3)" "$(output_file 2)" echo $ADDITIONAL
combine "$(input_file 3)" "$(input_file 1)" "$(output_file 3)" }
combine "$(input_file 4)" "$(input_file 1)" "$(output_file 4)"
combine "$(input_file 1)" "$(additional 3)" "$(output_file 1)"
combine "$(input_file 2)" "$(additional 3)" "$(output_file 2)"
combine "$(input_file 3)" "$(additional 1)" "$(output_file 3)"
combine "$(input_file 4)" "$(additional 1)" "$(output_file 4)"