Skip to content

Timemachine to non-timeline script #2

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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