Steve.Savitzky.net / Tools /

[..] [files]

Unlike most other directories on this website, where the HEADER.html file is hidden from casual browsing by an index.html file, this directory deliberately leaves HEADER.html out where you can see it. Whenever I have control over a programming project, I make its directory tree look like a website -- you will always find a HEADER.html file like this one, in every subdirectory. The Apache web server puts a HEADER.html file, if you have one, at the top of a directory listing. (It puts README.html at the bottom, after the file list.) With a little tweaking you can get similar behavior with plain-text HEADER and README, but you can't always count on having enough control over a hosted website's configuration.

This particular directory contains tools for working on website- and music-related projects: the tools used on this website and the projects you find here. (Source code for other, unrelated open-source projects can be found in ../Src/.)

Annotated Contents

Directories

TeX/
LaTeX styles for formatting FilkTeX (".flk") files, plus the tools for translating them into HTML (flktran.pl) and generating index pages (index.pl). These are all showing their age, and need to be given an honorable retirement. In particular the LaTeX styles need to be updated for LaTeX 5e, and indexing needs to be done using TrackInfo.pl.
include
Files to be included in compilations or inserted into source code and documentation. Mostly contains various forms of license notice, in a format suitable for use with either boilermaker.pl or replace-template-file.pl.
scripts
Short scripts and fragments, mostly one-shot mass fixups. Customize as needed.

Makefile templates

album.make
Makefile template for "Album" subdirectories. Has targets for things like burning CD-Rs and managing track lists. Has since acquired everything it needs to replace the old concert.make, so it can now handle audio files in any reasonable location, though ./Tracks is preferable. Builds a stand-alone web "album" in ./Rips.
publish.make
Makefile template for working directories that have to be "published" to a web staging directory. Relies on having a symlink called PUBDIR someplace up the tree that points to the web directory.
track-depends.make
Used in the mytracks.make files automagically generated by album.make to handle the shifting set of dependencies that result from always using the most recently-exported .wav file in a track directory.

Scripts

Music Metadata:
These are all used for extracting various kinds of metadata from lyrics, tracks, and track notes.
Setlist.cgi
This is the CGI script I use to make HTML setlists and tracklists. It should only be used inside the firewall -- if you let a search engine spider it, you end up with a combinatorial explosion that blows your site's bandwidth to smithereens. I've been there, and you've been warned. At some point I'll do a drag&drop version in Javascript, which will be both faster for users and safer for search engines.
TrackInfo.pl
Extract and format track information. Gets song metadata from the appropriate .flk files (basically LaTeX with a lot of custom macros), and track metadata from whichever .wav file is most appropriate.
list-tracks
List either all known tracks, or a specific set of tracks (e.g. the ones in an album's track list), in a format that makes it easy to keep (cough) track of recording progress. Most of the information comes out of a file called notes in the track directory. With the "-i" option, it lists key, meter, tempo, and style; these are useful when you're trying not to put excessively-similar tracks together. Otherwise it appends the last line of notes that starts in column 1; by convention this describes the most recent useable take. In a very real sense, this command produces a compact "status/to-do" list for an album.
File Updating:
These are all used for updating existing files; because they are used in Makefiles, it's essential that they not modify a file that is already up to date.
boilermaker.pl
Insert license boilerplate, in the form of a comment, into any of several different kinds of files. Understands hashmark, C, TeX, Lisp, and *ML comments. Note that what it inserts into HTML is a comment: it does not insert a license notice that can be read in a browser. Use replace-template-file.pl for that.
replace-template-file.pl
Uses a template file to replace a matching section in one or more files. Currently used primarily for updating album song lists.
Hacks:
Assorted hacks. These would deserve their own directory if there were more of them.
twitter.lsp
A program in Nyquist lisp used to generate fake modem tones for Vampire Megabyte.

Other Files

to.do
The to-do list for this directory. You can probably find some in other directories if you look. The format is trivial: an open circle (lowercase "o") is something that's not finished yet; a filled circle (asterisk) is finished. "~" indicates something I've decided not to do, and "?" indicates something I'm dithering about. Eventually finished items move to a "done" section or, when they start getting moldy, a separate file.

Copyright © 2005 HyperSpace Express
$Id: HEADER.html,v 1.12 2007-12-19 17:38:19 steve Exp $
      Name                    Last modified      Size  Description
Parent Directory - CVS/ 20-Jan-2008 10:04 - GPL.txt 15-Jun-2006 15:01 18K LGPL.txt 13-May-2005 12:01 26K Makefile 16-Jul-2007 23:16 583 README 02-Mar-2006 15:21 230 Setlist.cgi 20-May-2007 10:44 20K TeX/ 05-Jul-2008 18:47 - TrackInfo.pl 05-Jul-2008 12:14 30K album.make 30-May-2008 09:23 16K boilermaker.pl 20-May-2007 10:57 7.3K concert.make 14-Feb-2008 06:34 5.6K include/ 22-May-2007 07:29 - list-tracks 05-Jan-2008 18:47 2.1K mkdir.log 02-Mar-2006 16:54 62 preorder.cgi 19-Dec-2007 09:38 8.8K publish.make 14-Feb-2008 06:29 2.3K put.bak 01-Jul-2008 22:18 24 put.log 01-Jul-2008 22:18 3.6K replace-template-fil..> 16-Jul-2007 23:19 4.1K scripts/ 06-Jul-2008 08:11 - to.do 06-Jul-2008 08:23 11K track-depends.make 20-May-2007 10:44 1.4K track.make 20-May-2007 10:44 2.3K twitter.lsp 16-Jul-2007 23:20 1.7K
README for /Steve.Savitzky.net/Tools
$Id: README.html,v 1.1 2006-05-22 02:16:31 steve Exp $
(As mentioned above, if you have a README or README.html file in a directory, Apache will put it below the index. Very handy.)