Table of Contents
Assorted Linux Scripts, Tools, Tips and Utilities
.
.
wav file to specimen bank (sampler format) script
- see here: wav2specimen
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)
aj-snapshot - Store ALSA and JACK connections state
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 (?)
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
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
convert DV files to DVD compliant
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
.
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
.
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
posssibly other options
- kdenlive
- ardour3 + video patch
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.