#!/bin/bash

#Argument $1 es la longitud en bits de cada mostra
#Argument $1 es el nombre a passar a binari 


ZERO=2000
ONE=5000
SEPARATION=7000
NEWFILE=12000
echo "--------NEW WAV FILE --------"
#echo "Binary Digits $1, Number Generating $1.wav"
#echo "Number to Generate $1.wav"
BIN=$(echo "obase=2; $1" | bc)

BIN_L=${#BIN}
#MSB0=$(expr $1 - $BIN_L)

#if [ $MSB0 -lt 0 ]
#	then
#		echo "ERROR"
#		exit
#fi
#
#echo "Binary: $BIN Length: $BIN_L ZEROS: $MSB0"
#if [ $MSB0 -gt 0 ] 
#	then
#		for i in $(seq $MSB0) 
#			do
#			NUM_STR=$(echo $NUM_STR 0)
#	done
#fi

for i in $(seq $BIN_L)
	do
	k=$(expr $i - 1)
	NUM_STR=$(echo $NUM_STR ${BIN:$k:1})
done

echo "String moduladora: $NUM_STR"

rm $1.raw

#88200
SIZE_M=8820

./sgen -f -o TEMP.raw -b 16 -1 -s 44100 sin $NEWFILE
dd if=TEMP.raw of=TEMP10.raw count=$SIZE_M bs=1 2> /dev/null
cat TEMP10.raw >> $1.raw
rm TEMP.raw TEMP10.raw
#La resta es fan seguides amb l'opcio d'append
#for i in ${NUM_STR:2}
for i in $NUM_STR
	do
		./sgen -a -o TEMP.raw -b 16 -1 -s 44100 sin $SEPARATION 
		dd if=TEMP.raw of=TEMP10.raw count=$SIZE_M bs=1 2> /dev/null
		cat TEMP10.raw >> $1.raw
		rm TEMP.raw TEMP10.raw
		
		if [ $i = 0 ]
			then
			./sgen -a -o TEMP.raw -b 16 -1 -s 44100 sin $ZERO 
			dd if=TEMP.raw of=TEMP10.raw count=$SIZE_M bs=1 2> /dev/null
			cat TEMP10.raw >> $1.raw
			rm TEMP.raw TEMP10.raw
			
			echo ZERO
		else
			echo ONE
			./sgen -a -o TEMP.raw -b 16 -1 -s 44100 sin $ONE 
			dd if=TEMP.raw of=TEMP10.raw count=$SIZE_M bs=1 2> /dev/null
			cat TEMP10.raw >> $1.raw
			rm TEMP.raw TEMP10.raw
			
		fi
	
done

#The input is in raw format, 44100 sample, 1 channel, 16bit (word), s (linear encoding)
sox -r 44100 -c 1 -w -s $1.raw -r 44100 -c 1 -w -s $1.wav
rm $1.raw
lame $1.wav
rm $1.wav
#./sgen -a -o ../../1K.wav -b 16 -1 -s 44100 sin 100
