Skip to content

Timemachine to non-timeline script #2

@nico202

Description

@nico202

Hi guys
I wrote a fast and simple bash script that takes timemachine recordings and create a non-timeline (https://github.com/original-male/non) session out of it.
It depends on sox.
It is my first version, and has not used it in real life yet. However, it seems to be working well.
I needed this because recording with timemachine is extra fast and automatic, but I didn't how to open the recordings (that for me are usually 6-8 channels). I used to use audacity, but it is slow, and non-jack-aware.

The code:

#!/bin/bash
#Setting
SESSIONNAME=Session
NOW=`LANG=en_US date +'%c'`
SAMPLE="44100"
TEMPO=120

for INPUT in $@
do
    echo "Working on $INPUT"
    SESSION="$SESSIONNAME"_"$INPUT"
    CHANNELS=`soxi "$INPUT" | grep Channels| grep -o '[0-9]*'`
    mkdir $SESSION
    mkdir $SESSION/sources
    #INFO
    echo "created by" > $SESSION/info
    echo "Non-Timeline 1.2.0" >> $SESSION/info
    echo "created on" >> $SESSION/info
    echo "$NOW" >> $SESSION/info
    echo "version" >> $SESSION/info
    echo "2" >> $SESSION/info
    echo "sample rate" >> $SESSION/info
    echo "$SAMPLE" >> $SESSION/info
    #OPTIONS
    echo "Settings" > $SESSION/options
    echo "  Follow Playhead" >> $SESSION/options
    echo "      true" >> $SESSION/options
    echo "  Center Playhead" >> $SESSION/options
    echo "      true" >> $SESSION/options
    echo "  Snap to" >> $SESSION/options
    echo "      Bars" >> $SESSION/options
    echo "  Magnetic snap" >> $SESSION/options
    echo "      true" >> $SESSION/options
    echo "  Capture Format" >> $SESSION/options
    echo "      Wav 24" >> $SESSION/options
    echo "  Playback Latency Compensation" >> $SESSION/options
    echo "      true" >> $SESSION/options
    #SNAPSHOT + HISTORY
    echo "{" > $SESSION/history
    echo "  Tempo_Point 0x1 create :start 0 :tempo $TEMPO.000000" >> $SESSION/history
    echo "  Time_Point 0x2 create :start 0 :beats_per_bar 4 :beat_type 4" >> $SESSION/history
    COUNT=2
    ROW=0
    for ((NUMBER=1;NUMBER<=$CHANNELS;NUMBER++)); do
        COUNT=`expr $COUNT + 1`
        HEX=`echo "obase=16; $COUNT" | bc`
        NEXT=`expr $COUNT + 1`
        HEXNEXT=`echo "obase=16; $NEXT" | bc`
        echo "0x$HEX set :height 1 :inputs 1 :outputs 1 :show-all-takes 0 :overlay-controls 0 :armed 0 :mute 0 :solo 0 :row $ROW" >> $SESSION/unjournaled
        ROW=`expr $ROW + 1`
        echo "  Track 0x$HEX create :name \"Channel.$NUMBER\" :sequence 0x$HEXNEXT :selected 0 :color `shuf -i 1000000000-9999999999 -n 1`"  >> $SESSION/history
        REF="$HEX"
        COUNT=`expr $COUNT + 1`
        HEX=`echo "obase=16; $COUNT" | bc`
        SEQ=$HEX
        echo "  Audio_Sequence 0x$HEX create :track 0x$REF :name \"$NOW\"" >> $SESSION/history
        OUT=$SESSION/sources/"Channel.$NUMBER.wav"
        sox ./$INPUT ./$DIR/$OUT remix $NUMBER
        LENGHT=`soxi $OUT | grep samples| cut -d \  -f 11`
        COUNT=`expr $COUNT + 1`
        HEX=`echo "obase=16; $COUNT" | bc`
        echo "  Audio_Region 0x$HEX create :source \"Channel.$NUMBER.wav\" :gain 1.000000 :fade-in-type 1 :fade-in-duration 256 :fade-out-type 1 :fade-out-duration 256 :color 152 :length $LENGHT :start 0 :sequence 0x$SEQ :selected 0 :offset 0 :loop 0" >> $SESSION/history
    done
    echo "}" >> $SESSION/history
    cp $SESSION/history $SESSION/snapshot
#   mv $SESSION ../$SESSION
#   cd ..
#   rm  -r $DIR
done

Hope someone will find this useful as I do

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions