The ABCenatrix

The ABCenatrix is a viewer, manager, and editor for tunebooks in ABC musical notation.


(Jump straight to Installation)

Why not use an existing program?

I wrote the ABCenatrix because there were few simple, usable tools to handle ABC tunebooks available for Linux. EasyABC, one of the best, has not been maintained in some time, and I was unable to make it work fully. Besides, its layout mixes functions for editing and viewing tunes, making it ideal for neither. Most of the others handle ABC only as a sideline, or else have disappeared completely or succumbed to bitrot.

Capabilities:

Requirements:

Screenshots:

Here are a few pictures of the ABCenatrix in action:

Viewing a tunebook

Viewing tunebook

Creating a filter

Creating a filter

Editing a tune

Editing a tune

Installation:

Jump to:

Linux

I've given the commands for Debian-based distributions, e.g. Ubuntu and derivatives, Linux Mint, etc. Other distributions offer similar packages through their package managers.

1. Install python and other dependencies

This is probably done for you already by your distribution, but it might be best to use Python 3, which some distributions don't have by default. You'll also need PySide, which provides the GUI1. Then, the ABCenatrix uses abcm2ps and abcmidi behind the scenes, as they represent years of refinement and are as up-to-date as any ABC tooling. Finally, you'll need pip, which you will use to install the last couple dependencies. As root, do:

apt-get install python3 python3-pyside abcm2ps abcmidi python3-pip

2. Install dependencies not available from package manager

The ABCenatrix uses PyGame and Mido to play and read MIDI output, but you can't get them from the package manager, probably. Instead, become root and issue:

pip3 install pygame mido

3. Finally, install the ABCenatrix

Download a tarball of the latest release. As a normal user, issue:

tar -xvf path/to/abcenatrix.tgz

(Obviously, you will need to use the path to your downloaded file, not the bogus one above.)

Change directory into the directory created by that command (usually cd abcenatrix). Then become root and issue:

python3 setup.py install

If all goes according to plan, the ABCenatrix will be installed.

Running

You can run it by issuing abcenatrix from the command line or by a menu entry that should be created for you.

Windows

The ABCenatrix works on Windows, except for scaling the tune display. (Give me a moment on that.) I wouldn't call the process installation, exactly, but here's how you acquire working prerequisites and get the program running. (I'm working on a clean installation on Windows, but at least this way you can help shake out any bugs.)

1. Install python

Install the latest release in the Python 2.7.x branch from the Python website; it's 2.7.14 at the time of writing. When you get to what features will be installed, tell it to add Python to your PATH.

2. Install pip

Download the get-pip.py script. Open a cmd window, cd to where you have it saved, and run it:

python get-pip.py

3. Install other dependencies

Once you have pip, use it to install the Python dependencies for the ABCenatrix:

pip install pyside pygame mido

4. Get git

Download git (a source control tool) from here. Run the installer.

5. Get the latest version of The ABCenatrix

Open a cmd window and issue:

git clone https://github.com/JasonFruit/abcenatrix

Then, cd into the resulting abcenatrix directory, and issue:

mkdir tools

Keep this cmd window open.

6. Get abcm2ps and abcmidi

Download the .zip file of abctools for Windows from here; at the time of writing, the version is abctools-win-20171121.zip. Extract the zip file to the tools directory you just created.

7. Running

In the cmd window from step 5, type python abcenatrix. It should start up and run normally. Please report bugs at the ABCenatrix's Github page so I can do better at supporting it on Windows.

Source

The best way to get the source is to download a tarball of the latest release. It should always be fairly clean and reasonably up-to-date.

The source code for the latest development version can be got from https://github.com/JasonFruit/abcenatrix. I try not to commit code that's actually broken, but new features may be in rudimentary form and not quite fit for public consumption; please be cautious about using code newer than the release tarball above.


Footnotes

1 Despite what it says on their website, don't try to install PySide on Linux using pip; I've never gotten it to work. Not even once.

My Recipe for Sriracha Sauce

Ingredients

Instructions

Chop chiles and smash garlic.

Combine chiles, garlic, salt, and vinegars. Simmer 1/2 hour or until peppers are softened.

Add sugar and cool. When cool, blend thoroughly.

Let sit out two days to ferment slightly. Bottle and refrigerate.

Makes about 1 quart.

Notes

This recipe can be canned or frozen, but I hardly see the point. It won't last that long.

Slaughtering Animals

We slaughter animals for food. On our land, we raise chickens, rabbits, and goats, and in addition to eggs and milk, we use them for meat, slaughtering them ourselves. We've done chickens and rabbits for several years now, and we just slaughtered and butchered our first young goat.

There's a lot of information on the internet about how to kill and clean an animal, and I don't intend to give much of that here. What I hope to get across is a sense of why we raise and process our own meat, and what it's like when it goes wrong — because it can go wrong, against all intentions and preparation.

Why We Raise Animals for Meat

We raise and butcher meat animals for several reasons. First, it's important to us that the animals we eat not suffer, either when they're alive or in their death. We've seen some farms that are perfect: well-kept animals in sizable spaces with plentiful food; we've also seen scrawny animals in cramped quarters without any comfortable place to rest. We can make sure that our animals are more like the former. I'm also certain that most slaughterhouse workers are conscientious and skilled, but there are no doubt some that aren't; I can know that I'm careful to cause the least suffering possible when I kill an animal. Finally, when we kill an animal and prepare its meat ourselves, we're forced to morally confront where our food comes from; if we're not willing to do that — to see an animal walking, eating our grass, and trusting us for sustenance and shelter, and still be able to eat its meat — should we be eating meat at all?

Beyond those humane reasons, there are practical considerations. A primary one is that the meat is, frankly, incomparable; you'll never find meat so flavorful and dense in a supermarket. It's much easier to properly sear meat that isn't injected with 15% of its weight in salt water, for example, and a few scraps of chicken left on the bones after butchering is enough to make the richest broth I've ever tasted. We appreciate the pleasure of having animals around the place; there's nothing we enjoy more than watching the goat kids running around chasing after one another, or holding a soft rabbit, or scooting a chicken to get to the eggs underneath her. Having animals and knowing how to process them helps us be prepared for an uncertain future, as well; if hard times were to come, we will be equipped and able to provide meat for our family, which would be a great blessing. Carefully managed, our small herd and flock could be the core of future comfort. And it's just plain good for a person's mind to learn new things, especially when they involve providing for your needs from the world around you.

Our children, learn a lot from raising and slaughtering animals. They see how to care for an animal; they learn about birth, care and feeding, milking, and breeding them. They see clearly where food comes from, and they are conscious of what meat production entails. They watch and help with the butchering, and learn what the different organs are and what they do, and ask a lot of interesting questions.

Notice something I didn't mention: raising our own meat isn't saving us any money. It's much more costly than buying meat at ALDI (which we love) or Walmart. Maybe if we were buying meat of equal quality, or if we were growing alfalfa and corn on every spare inch of land we own, the price might be more competitive, but as it is, we could easily eat for less. For us, the contribution raising animals for meat makes to our life is worth the extra cost.

How We Kill an Animal

Here's where I give a few details on how I kill various kinds of animal for meat. If you're uncomfortable reading this, you can skip it, and you should probably skip eating meat, too.

General Remarks

First, I always kill an animal where the others of its kind can't see. I don't know for sure if it makes them anxious, but I'd rather not risk it. Second, you always want to make sure to bleed the animal as soon as you kill it, or it doesn't bleed out completely, and the meat tastes and looks wrong. Finally, I always pray before I kill an animal, out of gratitude for the food and for assistance in being humane, and I think it's a good practice that helps retain perspective on the process.

Chickens

Chickens are built to be eaten, like walking meatballs. They can't fly away, so they're easy to catch. If you hold one by its feet with its body extended down, it stops struggling and just waits. And they are easy to kill quickly and humanely: you hold them with one hand as I've just described, grasp the head with the other, bend it backward gently until it reaches the end of its range of motion, and then forcefully straighten the arm holding the head, extending the neck past its range of motion until the head separates internally from the neck. If you go a little farther, the skin and muscle holding the head on will separate, too, and with the head off the chicken will bleed out thoroughly, which improves the meat. I've never had a failure with this method, and even a tough rooster that we've let mature too long or an old hen past her prime is killed immediately. (Yes, a chicken's body continues to move for some time after the head is removed; the wings flap and the talons scratch aimlessly but forcefully, leaving scars on the arm of anyone careless enough to release their grip, e.g. me — but the bird is dead.)

Rabbits

Rabbits can be killed just like a chicken, but I'll never do it again. I had my one real failure in humanely slaughtering an animal trying to break a rabbit's neck, and I felt awful about it. The first batch I killed were young and tender, and were no more difficult than a chicken, maybe even easier. The second time, the rabbit was old, large, and muscular, and its neck was thick and strong. I had to try two times, and I definitely injured the poor rabbit the first time, so it had several seconds of pain before I could adjust my grip and complete the job. That wasn't an experience I'd like to repeat; I'm not ashamed to admit that I was pretty upset over it.

Since then, I've used a .22 bullet through the back of the rabbit's head to kill it. I have a narrow cage I put in the grass, and usually give the rabbit something tasty to nibble at to keep its attention. I get behind it, line up to go through the head just above the base of the skull in a way that should exit about between the eyes, and fire. Next, I part the fur on the neck under the chin and cut the rabbit's head off with a sharp knife. I then hold the animal up by its hind feet until it ceases bleeding.

Goats

I've only just killed my first goat, but the technique was similar to a rabbit. The differences were that I had to tether the goat by a leash, I used a heavier caliber bullet, and that I used an ax to separate the spine after cutting the flesh of the neck with a sharp knife. I'm very comfortable saying that the goat felt no pain: death was clearly immediate. With a larger goat, I would not be able to easily hold it up while it bled out; I'd probably have to use a pre-prepared rope and hooks.

A Note on Kosher and Halal Slaughter

I'm aware of observant Jewish and Muslim slaughter, where a trained person of good character prays and then rapidly draws a long, straight, sharp knife across the animal's throat, which is represented as causing instant unconsciousness and quick death with optimum bleeding. I'm not qualified to evaluate the claim of quick, painless death by that method, though I doubt it. Even if it is true, I don't feel able to emulate the success of a trained shochet, because I don't own a knife long enough to make such a swift, deep cut, and if I got one, my sharpening skills aren't up to it keeping the edge sharp and straight. If I did have a properly sharpened long knife, my facilities aren't equipped to immobilize an animal while I line up for the cut. I just don't see it as a realistic, practical method of humane slaughter for me, and I question whether it's a good method at all. If I were choosing a way to be killed, I'd certainly rather that someone shoot me in the back of the head than slit my throat.