Ubuntu is composed of many software packages, the vast majority of which are distributed under a free software license. The only exceptions are some proprietary hardware drivers.The main license used is the GNU General Public License (GNU GPL) which, along with the GNU Lesser General Public License (GNU LGPL), explicitly declares that users are free to run, copy, distribute, study, change, develop and improve the software. On the other hand, there is also proprietary software available that can run on Ubuntu. Ubuntu focuses on usability, security and stability. The Ubiquity installer allows Ubuntu to be installed to the hard disk from within the Live CD environment, without the need for restarting the computer prior to installation. Ubuntu also emphasizes accessibility and internationalization to reach as many people as possible.
Custom Search

JAMin is the JACK Audio Connection Kit (JACK) Audio Mastering interface.

Sunday, November 27, 2011

jamin_logo_3419JAMin is the JACK Audio Connection Kit (JACK) Audio Mastering interface. 

JAMin is an open source application designed to perform professional audio mastering of stereo input streams. 

It uses LADSPA for digital signal processing (DSP). JAMin is licensed under the GPL.
JAMin features:
    Linear filters
    JACK I/O
    30 band graphic EQ
    1023 band hand drawn EQ with parametric controls
    Spectrum analyser
    3 band peak compressor
    Lookahead brickwall limiter
    Multiband stereo processing
    Presets and scenes
    Loudness maximiser


Installing from scratch

Prerequisite software

pkgconfig, automake, autoconf
Important note: all of the instructions in this document assume that you are logged in as root. If not, you won't be able to install the needed libraries or programs. Before you start building anything you will need the latest of a few development packages. Pkgconfig is available from freedesktop.org. Just to make things much easier we're going to install all of these packages in /usr. If you understand ldconfig and the LD_LIBRARY_PATH environment variable you can install wherever you want but installing in /usr avoids much unpleasantness. The sequences of commands used to build and install these packages will look almost identical from package to package but don't become complacent, there are a few changes. The command sequences make the assumption that you are in the directory containing the tarballs. Here is the installation sequence for pkgconfig: 

tar -xvzf pkgconfig*.tar.gz
cd pkgconfig*
./configure --prefix=/usr
make
make install
cd ..        

In addition to pkgconfig you will need a newer version of autoconf and automake. You can get these at http://www.gnu.org/directory/autoconf.html and http://www.gnu.org/directory/automake.html respectively. To build and install do the following:

tar -xvzf autoconf-*.tar.gz
cd autoconf-*
./configure --prefix=/usr
make
make install
cd ..
tar -xvzf automake-*.tar.gz
cd automake-*
./configure --prefix=/usr
make
make install
cd ..        
ALSA
ALSA is available at http://www.alsa-project.org. You want to get the latest stable release. Get all 5 packages   driver, library, utilities, tools, and OSS compatibility. The easiest way to build and install these is to put them all in a single directory. I made a directory called /disk2/sound and I will use that for all subsequent examples. I would suggest that if you download a new version of either JACK, JAM, or ALSA that you download new versions of the other two packages as well. This is because JACK is dependent on ALSA and JAMin is dependent on JACK. When you download the ALSA packages they will be in tar and bzip2 compressed format. Since you will probably be downloading these occasionally due to changes in JACK, JAMin, or ALSA you might want to make a script to build the packages. The following is the script that I made to configure and build the ALSA packages:


clear
echo
echo
echo "Making ALSA drivers"
echo
echo
bzip2 -d alsa-driver*.tar.bz2 2>/dev/null
tar -xvf alsa-driver*.tar
cd alsa-driver-*
./configure --with-isapnp=no --with-cards=ens1371,emu10k1,ice1712 --with-sequencer=yes
make
make install
./snddevices
chmod 666 /dev/dsp* /dev/mixer* /dev/sequencer* /dev/midi*
cd ..
find . -name alsa-driver\* -a -type d -exec rm -rf {} \;
cat >~/.asoundrc <<EOF
pcm.ice1712 {
type hw
card 0
}

ctl.ice1712 {
type hw
card 0
}
EOF

echo
echo
echo "Making ALSA libraries"
echo
echo
bzip2 -d alsa-lib*.tar.bz2 2>/dev/null
tar -xvf alsa-lib*.tar
cd alsa-lib*
./configure
make
make install
cd ..
find . -name alsa-lib\* -a -type d -exec rm -rf {} \;


echo
echo
echo "Making ALSA OSS compatibility"
echo
echo
bzip2 -d alsa-oss*.tar.bz2 2>/dev/null
tar -xvf alsa-oss*.tar
cd alsa-oss*
./configure --disable-alsatest
make
make install
cd ..
find . -name alsa-oss\* -a -type d -exec rm -rf {} \;


echo
echo
echo "Making ALSA tools"
echo
echo
bzip2 -d alsa-tools*.tar.bz2 2>/dev/null
tar -xvf alsa-tools*.tar
cd alsa-tools*
cd envy24*
./configure --disable-alsatest
make
make install
cd ../as10k1
./configure
make
make install
cd ../..
find . -name alsa-tools\* -a -type d -exec rm -rf {} \;


echo
echo
echo "Making ALSA utilities"
echo
echo
bzip2 -d alsa-utils*.tar.bz2
tar -xvf alsa-utils*.tar
cd alsa-utils*
./configure --disable-alsatest
make
make install
cd ..
find . -name alsa-utils\* -a -type d -exec rm -rf {} \;                

Kind of "wordy" isn't it? Oh well, I've always been a bit anal retentive anyway. Let's take a look at what's going on here. First, there is an implicit assumption in this script. You must be in the directory where your bzip2 compressed ALSA packages were downloaded. In my case that was /disk2/sound. Pay close attention to the ./configure line for the driver. You'll note that I am only setting up for three cards — Soundblaster PCI Live, Ensoniq AudioPCI, and the DSP24 (ice1712 just like the Delta 1010 and EWS88MT). I don't have any ISA cards and I wanted sequencer support. If you just want to compile for all possible cards leave out the --with-cards option. You need to do the ./snddevice to make the devices in the /proc/asound directory. I made a simple ~/.asoundrc file for the ice1712. Your system will be different depending on the card (or cards) you are using. The name for the pcm and ctl devices in ~/.asoundrc must match the driver id from modules.conf.

You need to read the INSTALL file in the alsa-driver-... directory (which I deleted in the above script) to get a good idea of how to configure ALSA. The following is what I added to my /etc/modules.conf file to configure my DSP24 card:


alias char-major-116 snd
alias char-major-14 soundcore

# ALSA portion
alias snd-card-0 snd-ice1712

# OSS/Free portion
alias sound-slot-0 ice1712

# OSS/Free portion - card #0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss        

This should be about the same for any single card. Just change the card type. There's a lot more specific information to be garnered by checking for your specific soundcard in the ALSA Soundcard Matrix. If you want to do things the easy way you can try the alsaconf utility. The only problem with that is that there isn't a full list of sound cards. In my case I can use the M-Audio Delta 1010 setup because I happen to know that it uses the same chipset as mine. I didn't have any problem doing it by hand though so it's up to you.
The GIMP Toolkit
GTK is the GIMP Tool Kit. GIMP is the GNU Image Manipulation Package (GNU is GNU's Not Unix;). Acronym hell. At any rate, in order to use JAM (don't worry, we'll get there eventually) you need version 2 of GTK+. GTK+ has it's own list of prerequisites.
Glib
Directly from www.gtk.org — "GLib is the low-level core library that forms the basis of GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system." Download the latest and do the following:

tar -xvzf glib*.tar.gz
cd glib*
./configure --prefix=/usr
make
make install
cd ..               
Pango
Again from www.gtk.org — "Pango is a library for layout and rendering of text, with an emphasis on internationalization. It forms the core of text and font handling for GTK+-2.0."




tar -xvzf pango*.tar.gz
cd pango*
./configure --prefix=/usr
make
make install
cd ..        
ATK
Once more, from www.gtk.org — "The ATK library provides a set of interfaces for accessibility. By supporting the ATK interfaces, an application or toolkit can be used with such tools as screen readers, magnifiers, and alternative input devices."


tar -xvzf atk*.tar.gz
cd atk*
./configure --prefix=/usr
make
make install
cd ..    
GTK+
One more time — "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites."


tar -xvzf gtk+*.tar.gz
cd gtk+*
./configure --prefix=/usr
make
make install
cd ..    
libsndfile
The latest version of libsndfile is available from Erik de Castro Lopo's page at http://www.zip.com.au/~erikd/libsndfile. Download and do this:


tar -xvzf libsndfile*.tar.gz
cd libsndfile*
./configure --prefix=/usr
make
make install
cd ..    
FFTW
FFTW is the "Fastest Fourier Transform in the West". The FFTW package is available from http://www.fftw.org. Download version 3.X and do this:


tar -xvzf fftw-3*.tar.gz
cd fftw-3*
./configure --prefix=/usr --enable-shared --enable-float
make
make install
cd ..    


If you miss the --enable-float JAM won't build properly.
LADSPA
LADSPA stands for Linux Audio Developer's Simple Plugin API. It is available at http://www.ladspa.org. You will want to download the LADSPA SDK instead of just the LADSPA header file.


tar -xvzf ladspa_sdk.tar.gz
cd ladspa_sdk/src
make
make install
cd ..
rm -rf ladspa_sdk    


This will also install some plugins in /usr/local/lib/ladspa.
SWH plugins
You will need Steve Harris' SWH plugins. Get them from http://plugin.org.uk/. Here's the command sequence:


tar -xvzf swh-plugins-*.tar.gz
cd swh-plugins-*
./configure
make install
cd ..    


Note that these get installed in /usr/local.
JACK
The JACK Audio Connection Kit is the glue that holds professional Linux audio applications together. JACK is a low latency audio server that provides a means of allowing multiple applications to use a system's sound hardware at the same time. It will also allow them to share audio among themselves. JACK is a requirement for JAMin. JACK is available from http://jackit.sourceforge.net.


tar -xvzf jack-audio-connection-kit-*.tar.gz
cd jack-audio-connection-kit-*
./configure --prefix=/usr --enable-optimize
make
make install    

Again, I'm installing in /usr. In versions of JACK later than 0.70.4 you can possibly get some xrun relief by doing this:


mkdir /mnt/ramfs
cat >>/etc/fstab <<EOF
none       /mnt/ramfs      tmpfs      defaults  0 0
EOF    

Then add --with-default-tmpdir=/mnt/ramfs to the JACK configure line when you build it. This may help with xruns, especially if your /tmp directory is on a reiserfs partition. The jury is still out on ext2/3.

JAMin

Downloading JAMin
JAMin is available as a tarball from http://sourceforge.net/projects/jamin. JAMin is a rapidly changing beast. Because of this you may want to get the JAMin software from CVS. If you decide to use CVS here are the commands to download JAMin:

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jamin login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jamin co jamin        

When you are prompted for a password simply press Enter.
Building and installing JAMin
After downloading the tarball:


tar -xvzf jamin-*.tar.gz
cd jamin-*
./configure
make
make install        

If you downloaded from CVS do the following:


cd jamin
sh autogen.sh
./configure
make
make install        

Notice that we didn't specify --prefix=/usr on the ./configure line. This is because JAMin is a program and it only needs to be in your path to run. You can put it in /usr if you want. Just remember to be consistent — do it the same way every time.
Configuring JAMin
JAMin has a single configuration file — jamin_ui. This file can be used to define GTK user interface customization. It is not required. There is an example loaded into ${prefix}/share/jamin/examples/jamin_ui when you do the make install. To customize that file, copy it to ~/.jamin/jamin_ui and make changes.

Here are some screenshots of JAMin in action:



jamin

jamin1

jamin2

jamin3

jamin4

Adserver           610x250
If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog: 

rss_trappola

Easy GIT is a single-file wrapper script for git, designed to make git easy to learn and use.

Saturday, November 26, 2011

What is Easy Git (eg)?

easygitIn short, Easy GIT is a single-file wrapper script for git, designed to make git easy to learn and use. (If you are not familiar with what git is, this page will make no sense to you.) In more detail:

  • eg focuses on documentation and examples
  • eg removes obstacles to "getting" git
    • eg removes many principle-of-least-surprise violations that catch git newbies unaware
    • eg provides subcommands that are a natural extension of capabilities users know from cvs/svn (eg also takes care to make sure the modifications to its subcommands are easily discoverable and error-avoiding for existing git users as well!)
  • eg makes git easy to learn and use
    • easily learnable - I claim you can learn git faster by first using eg than by starting with git directly
    • interchangable - You can switch between using eg and using git as often as you'd like. I do it all the same on the same repositories.
    • fully capable - Unlike other wrappers for git, eg does not remove or limit any capabilities of git in order to simplify it; it just tries to layer concepts and present the capabilities in a more orderly fashion.
    • compatible - eg is essentially command-line backwards compatible to git; those familiar with git can start using eg by simply replacing "git" with "eg" in their commands.
  • eg is biased towards luring existing svn users, due to the projects I work on and svn's large installed base
easygit_mac
Existing Git users.

EasyGit is designed to make git easier to use and learn, not to extend git's functionality. Because of this, you won't find new capabilities in EasyGit. However, you don't need retraining either; eg is mostly backward compatible with git, and any incompatibilities can be discovered naturally and innocuosly during normal workflow (well, except for the eg push default -- see below). All you need to do is replace 'git' with 'eg' in your commands.

The two biggest shockers for existing git users are the changes in defaults to diff (which include both staged and unstaged changes by default) and push (which pushes the current branch instead of matching refs by default). The latter is potentially problmatic, as it could result in pushing changes the user didn't want. However, the current git default is equally bad for many new users. The only safe thing for both sets is probably to require users to specify what to push in all cases; however, that seems pretty annoying for lots of very basic setups. I guess the push default of eg is my one big ugly incompatibility with git.

Those curious about the precise differences between eg and git and the rationale for these changes, can read my verbose explanations.

Documentation.

EasyGit's documentation is meant as built-in help; however, you can view it online.

There's also a (pdf) presentation, An Introduction to (Easy) Git (more of a capability overview than a tutorial, though example commands are shown).

Download/Install

Three easy steps:

  • Install git >= 1.5.4 (eg is just a wrapper, which simply passes its arguments on to git except in specific important cases).
  • Download a copy of eg
  • Place the eg script somewhere in your path
If you aren't one of those "shoot first and ask questions later" types, just fire off an 'eg help' to get oriented. You may also find the (easy) git for svn users page helpful.
Development

You can follow development of eg by cloning a copy. Use either

git clone git://gitorious.org/eg/mainline.git eg
or
eg clone git://gitorious.org/eg/mainline.git eg
Other similar projects

I feel that Easy Git is different from the others in the field in its combination of goals (a) it focuses on trying to be easy to learn for former cvs/svn users, (b) it tries to serve as a training tool for core git rather than trying to replace core git entirely, (c) it tries to remain backward compatible to core git (so that users already familiar with git don't need any new training and to make it easier for core git to adopt changes in eg), and (d) it's only a single file script to make it easier to try out.

There are some other interesting alternatives out there that decided to concentrate on different goals, including:

  • yap (announcement), by Steven Walter

    A porcelain that concentrates on making git easier for those interacting with subversion repositories; particularly trying to reduce the impedance mismatch that exists between the very different workflows typically used with native git repositories versus git-svn ones.

  • pyrite, by Govind Salinas

    A porcelain focusing on providing a Mercurial-like user interface.

  • yyhelp, by Tim Janik

    A single file bash script serving as a minimal porcelain. Emphasis on minimal; it's a very short file with no documentation that I could find.

  • vng, by Thomas Zander

    A porcelain focusing on providing a darcs-like user interface.

Google

Custom Search

Adserver           610x250

If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog:

rss_trappola

My Favorites

Finance

Logo IWBank gif120x60 banner 9

Antipixel & Counters

Dr.5z5 Open Feed Directory BlogESfera Directorio de Blogs Hispanos - Agrega tu Blog BlogItalia.it - La directory italiana dei blog Software blogs Computers blogs Il Bloggatore Add to Technorati Favorites diigo it Peru Blogs Programming Blogs - Blog Catalog Blog Directory AddThis Social Bookmark Button Find the best blogs at Blogs.com. website counter
Social Bookmarking
Add to: Mr. Wong Add to: Webnews Add to: Icio Add to: Oneview Add to: Linkarena Add to: Favoriten Add to: Seekxl Add to: Kledy.de Add to: Social Bookmarking Tool Add to: BoniTrust Add to: Power Oldie Add to: Bookmarks.cc Add to: Favit Add to: Newskick Add to: Newsider Add to: Linksilo Add to: Readster Add to: Folkd Add to: Yigg Add to: Digg Add to: Del.icio.us Add to: Reddit Add to: Jumptags Add to: Upchuckr Add to: Simpy Add to: StumbleUpon Add to: Slashdot Add to: Netscape Add to: Furl Add to: Yahoo Add to: Spurl Add to: Google Add to: Blinklist Add to: Blogmarks Add to: Diigo Add to: Technorati Add to: Newsvine Add to: Blinkbits Add to: Ma.Gnolia Add to: Smarking Add to: Netvouz Information

Recent Posts