[Ardour-Users] 4-channel stereo

Alex Lopez aliksandr at gmail.com
Sat May 21 04:28:42 PDT 2016


# Splits all WAV files inside all folders under current directory into 
mono files

for f in */*.WAV; do sox $f ${f%.WAV}-l.WAV remix 1; sox $f 
${f%.WAV}-r.WAV remix 2; done

On 05/21/2016 01:08 PM, Ralf Mardorf wrote:
> On Sat, 21 May 2016 12:15:42 +0200, Alex Rodriguez Lopez wrote:
>> The way I do it, I split them before hand using sox (very handy command
>> line utility), so then you would have 4mono files you can use one per
>> channel in ardour. Its even fairly easy to write a script that will
>> split to mono all files of a certain extension in a folder using Sox.
> I'm using a script to split stereo files based on ffmpeg and added it as
> tool to spacefm, so just selecting a file and a shortcut is needed. This
> could be done using sox or ffmpeg with any number of channels.
>
> Perhaps not a beautiful script, but it does the job ;).
>
> $ cat /usr/local/bin/s2m
> #!/bin/dash
>
> version="2016-04-28"
>
> usage()
> {
>    cat<<EOF
>
>    s2m version $version rocketmouse
>
>    stereo.wav > mono.wav:
>      s2m input_file.wav
>    stereo.wav > left.wav:
>      s2l input_file.wav
>    stereo.wav > right.wav:
>      s2r input_file.wav
>    stereo.wav > dual {left,right}.wav:
>      s2d input_file.wav
>    stereo.wav > all {mono,left,right}.wav:
>      s2a input_file.wav
>
> EOF
>    exit $1
> }
>
> outfile()
> {
>    outfile="$(echo "$infile" | sed 's/\(.*\).wav/\1_'$1.$suffix/I)"
>    if [ -f "$outfile" ]; then
>      echo "$outfile already exists"
>      usage 1
>    fi
> }
>
> ex2file()
> {
>    outfile $1
>    echo "Export to $outfile"
>    case $1 in
>      mono)
>        ffmpeg -i "$infile" -ac 1 "$outfile"
>      ;;
>      left)
>        ffmpeg -i "$infile" -map_channel 0.0.0 "$outfile"
>      ;;
>      right)
>        ffmpeg -i "$infile" -map_channel 0.0.1 "$outfile"
>      ;;
>    esac
> }
>
> case $1 in
>    -h|--help)
>      usage 0
>    ;;
> esac
>
> infile="$1"
> if [ ! -f "$infile" ]; then
>    echo "No file $infile"
>    usage 1
> fi
>
> num_ch=$(exiftool "$infile" | grep -v "File Name" | grep -v "Directory" | grep "Num Channels" | cut -d: -f2 | sed s/\ //)
> plural=""
> if [ "$num_ch" = "" ]; then
>    num_ch="No"
> else
>    if [ "$num_ch" -ge "2" ]; then
>      plural="s"
>    fi
> fi
> if [ "$num_ch" != "2" ]; then
>    echo "$num_ch channel$plural, not a stereo file"
>    usage 1
> fi
>
> suffix=$(echo "$infile" | rev | cut -d. -f1 | rev)
> if [ "$(echo "$suffix" | tr [:upper:] [:lower:])" != "wav" ]; then
>    echo "Suffix is \"$suffix\", must be \"wav\", case sensitivity is not required"
>    usage 1
> fi
>
> case $(basename $0) in
>    s2m)
>      ex2file mono
>    ;;
>    s2l)
>      ex2file left
>    ;;
>    s2r)
>      ex2file right
>    ;;
>    s2d)
>      outfile right
>      ex2file left
>      ex2file right
>    ;;
>    s2a)
>      outfile left
>      outfile right
>      ex2file mono
>      ex2file left
>      ex2file right
>    ;;
> esac
>
> exit




More information about the Ardour-Users mailing list