Table of Contents

Assorted Linux Scripts, Tools, Tips and Utilities

.

.

wav file to specimen bank (sampler format) script


lscp2rgd - linuxsampler to rosegarden instrument


midi to hydrogen


SFZ (sound-bank-definition) to Hydrogen (drumkit xml-file)


script: create a hydrogen drumkit from wav files

thanks to Thijs van Severen

Hydrogen drumkit creator script - note: filenames have to follow a rule


Instrument mapping (Hydrogen Manual)


GM (general midi) mapping


aj-snapshot - Store ALSA and JACK connections state

http://aj-snapshot.sourceforge.net/

.

Download songs of an *.m3u File (mp3 collection)

Make a directory and then do this:

wget -O - http://djcj.org/audio/lam/lam-tracks-2010/lam10.m3u | while read i; do wget -c "$i"; done

(by Ken Restivo - 16. Mai 2011 22:06 - @lau-ml)

.

make a *.wav swing (?)

http://all-day-breakfast.com/m/swing.sh

Comparable (?) examples

(by Chris Cannam - 2. Juni 2010 16:41 - @lau-ml )

.

jackctl - jack control python script

http://www.akjmusic.com/software/

http://www.akjmusic.com/software/jackctl20110317.py

(by Aaron Krister Johnson, 28. Mai 2010 18:16 - @lau-ml)

.

a python script for making seamless loops in samples by cross fading

It uses sox and ecasound for processing and should work with wav, aiff and flac (maybe more).

planned (?): libsndfile support.

http://atte.dk/files/xfade_loop

(by Atte André Jensen, 11. Juni 2010 11:02 - @ lau-ml )

.

convert a Hydrogen drumkit into a SF2 soundfont

http://code.google.com/p/hydro2sf2/

.

conversion examples with mplayer / mencoder

wav to mp3

for F in *.aac; do
  mplayer -ao pcm:file=$F.wav $F
  lame -h $F.wav $F.mp3;
done

(by Julien Claassen , 25. Dezember 2010 02:37 - @ lau-ml )

.

  #!/bin/bash
  # flac_to_mp3
  for f in *.mp3; do lame -v "$f"; done

(James Morris,22. September 2010 11:20)

$ find . -name "*flac" -exec lame -V0 {} \;

(Roger, 22. September 2010 12:52)

Using MEncoder to create DVD-compliant files

http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html

.

convert DV files to DVD compliant

http://florin.myip.org/soft/conv-dvd/

.

convert sound files with libsndfile

convert all FLAC files in a directory to OGA format (vorbis-encoded stream in ogg-container)


Note: There is a simple and excellent GUI tool available for audio conversion: SoundConverter
It is included in the ubuntu repository.


#!/bin/bash
 
## UPDATE: sndfile-convert -vorbis  normalizes the sound to 0 DB !
## there are no options to control that, or compression rate.
## so rather use "oggenc" instead !
## there is also a py-script called "dir2ogg" in ubuntu
 
# initial code by Emanuel Rumpf 2012-04
# any re-use and modification permitted
 
# convert all FLAC files in a directory to OGA format 
# (compressed, vorbis-encoded stream in ogg-container)
#
# USAGE:
# first install libsndfile - in ubuntu:
# sudo   apt-get install   libsndfile1 sndfile-programs sndfile-tools
# 
# copy this script to the files directory, make it executable
# edit config options below if necessary, run it
 
# TODO: allow file-names with spaces
 
 
# CONFIGURE HERE
 
# select file extension:
EXT_OLD=".flac"
EXT_NEW=".oga"
 
# select directory for new vfiles
OUT_DIR="./oggs/"
 
# add -vorbis parameter to sndfile-convert call
CONVERT_OPT="-vorbis"
 
 
# CODE START
 
mkdir -p "$OUT_DIR"
 
# apply to all flac files in current directory
FILES=*${EXT_OLD}
 
for f in $FILES
do
 
  fn=`basename "$f" $EXT_OLD`
  fn="${OUT_DIR}${fn}${EXT_NEW}"
 
  comm="sndfile-convert $CONVERT_OPT $f $fn "
  echo "--> $comm "
  $comm
  echo ""
 
done



# There is a possilbe alternative, with "find" and -exec statement
#
# warning: this is not verbose  and  can take some time !


# for all files in current directory (.)  execute libsndfile-convert
#
find . -name "*.flac" -exec sndfile-convert -vorbis '{}' '{}'.oga \;

.

conversion examples with sox

convert a .wav file to raw PCM - here 8bit (-b 8) signed integer (-e signed), stereo (-c 2):

sox INFILE.wav -t raw -r 48k -e signed -b  8 -c 2 OUTFILE.raw

convert raw CD digital audio (16-bit, signed-integer) to floating point wav:

sox input.cdda -e float output1.wav

generate (-n = NULL input) a .wav file with a 3 second sine-sweep:

sox -n OUTFILE.wav synth 3 sine 300-3300 gain -5

The format-options must be given before the filename for which they're intended. If unspecified they are read from the file header (if possible):

Synopsis:

sox [global-options] [format-options] infile1 \ 
    [[format-options] infile2] ... \
    [format-options] outfile \
    [effect [effect-options]] ...
    

Common encoding-types for -e: signed, unsigned, float. see man sox for a complete reference.

conversion examples with ecasound

FIXME

.

move regions, markers, temi in an Ardour session

A script to slide every regions, markers, tempi, meters, automations, and so on in an Ardour session.

“Actually, it's not really a solution, as one can move only ALL REGIONS,…”

by Aurélien

announce mail

Download (tar.gz ?)

.

spaces to underscores

#! /bin/bash
#
# spaces2underscores.sh
 
echo
echo "This command changes all spaces in file names into underscores"
echo "  for ALL FILES IN THIS DIRECTORY !"
echo "  Type ENTER to continue or ^C to quit"
 
read dummy
 
for f in *; do
 oldname=`echo $f |sed 's/ /~/g'`
 newname=`echo $f |sed 's/ /_/g'`
 if [ $oldname != $newname ]
 then
   echo mv $f $newname
   mv "$f" $newname
 fi
done

(Marc Groenewegen, 25. September 2010 08:49 )

.

.

Extract Audio from Video and recombine

(help by Robin Gareus @lau-ml)

with ffmpeg

#extract audio
ffmpeg -i orig_video.wmv audio_out.wav

#replace audio
ffmpeg \
 -i orig_video.wmv \
 -i new_audio.wav \
 -vcodec copy \
 -map 0.0 -map 1.0 \
 new_video.wmv
Details:  The "map" may be different depending on the .wmv file.
run `ffprobe` to see which is the video-track in the .wmv file
usually this is "0.0".
   Stream #0.0: Video:...
   Stream #0.1: Audio: ..
and "1.0" corresponds to the 2nd input file - your new audio.

You may want to add "-acodec wmav2" and "-ar 128k" options for 128kbit/s
Windows Media Audio 2 or whatever audio-codec/quality your want. `ffmpeg
-codecs | grep "EA"` gives you a list of available codecs for Encoding
Audio.

BTW. Ardour3 with videotimeline patch can do all this for you. import,extract,re-encode using ffmpeg.

Thanks. It is 0:0 and 0:1 and -b:a=192k I found, but I have some sync problems after recombining tho. Any other ideas?

My gut feeling is to blame ffmpeg's WMV muxer (it may not be able to mux a bit-exact copy of the original video with your new soundtrack).

Try using '-sameq' instead of '-vcodec copy' (re-encode the video with
same quality rather than a bit-exact copy - this often solves muxing
issues but will cause a small loss of either video quality or increased
bandwidth).

and also try a different output format eg. 'new_video.avi' or '..mov' instead of 'new_video.wmv'.

you may need both, this should work:
 'ffmpeg -i vid.wmv -i aud.wav -sameq -map 0.0 -map 1.0 output.avi'


with mencoder

http://savvyadmin.com/extract-audio-from-video-files-to-wav-using-mplayer/


posssibly other options




JACKdbus - Desktop integration - backend-switching



save and restore irq process priorities


#!/bin/bash
#
# rtirq_power: save and restore irq process priorities
#
# This script is called when a change in power status happens, when
# suspending it saves a list of all irq process priorities, when
# resuming it changes the priorities of the proper irq processes
# to the saved values
#
# Copyright (c) 2012 Fernando Lopez-Lezcano
#
#   This program is free software; you can redistribute it and/or
#   modify it under the terms of the GNU General Public License
#   as published by the Free Software Foundation; either version 2
#   of the License, or (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License along
#   with this program; if not, write to the Free Software Foundation, Inc.,
#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
. "${PM_FUNCTIONS}"
 
case $1 in
    hibernate|suspend)
	/bin/ps -eo rtprio=,comm= --sort -rtprio | /bin/egrep ' irq/[0-9]*' | savestate rtirq
        ;;
    thaw|resume)
	restorestate rtirq | while read IRQPRIO IRQCOMM ; do
	    if [ -n "${IRQPRIO}" -a -n "${IRQCOMM}" ] ; then
		IRQPID=`/bin/ps -e -o pid,comm | grep " ${IRQCOMM}" | awk '{print $1}'`
		if [ -n "${IRQPID}" ] ; then
		    PRIO=`/bin/ps -p ${IRQPID} -o rtprio=`
		    if [ ${PRIO} -ne ${IRQPRIO} ] ; then
			/usr/bin/chrt -f -p ${IRQPRIO} ${IRQPID}
		    fi
		fi
	    fi
	done
        ;;
    *) exit $NA
        ;;
esac


.

<quote>

A first try at using a pm-utils script. This script saves the priority state of all irq* processes and restores them after a resume. It only restores the priority for processes that still exist after the resume, and will do nothing for new processes (ie: you plugin a usb card while the computer is sleeping). That would be taken care by my previously posted udev script which would change priority of newly inserted soundcards. I put 05rtirq it in /etc/pm/sleep.d/ directory… it seems to be working fine in my laptop.

</quote>




Tips


use a proper python shell


(by Torben Hohn, 28. September 2010 01:16 )
ipython is there for quite some time.

and i recently discovered bpython

this is where the fun starts

also help() works nicely on instances.

doctests also pretty much kick ass.
http://docs.python.org/library/doctest.html



Tip: Pianoteq - software synth - on Linux


(tip by: Edward Diehl, LAD, 2012-09-02)
I wanted to mention that Pianoteq does provide a linux VST which does work in Ardour and Qtractor. However, the default version provides 5 output channels which Ardour does not seem to like (because it expects stereo output). However, if you append “_2chan” to the plugin library name (e.g. Pianoteq.so to Pianoteq_2chan.so) , the plugin will output only 2 channels and work happily in Ardour.