Tools

Soundslice is Awesome

Anyone who has ever tried searching online for guitar or bass tabulature will surely agree what they find is simply crap. Difficult to read ASCII diagrams of tab on sites littered with advertising and a layout that’s ugly as hell.

This is where Soundslice.com comes in and blows everyone out of the water.

Soundslice is an online community where that tabulature is sourced by the musicians with and absolutely incredible layout. Tabulature and chord patterns for multiple instruments is provided at the bottom of the screen while video of the actual song, or musician performing the song, synched with the tabulature found at the bottom.

The old…

ascii_tab

The new…

soundslice_example_1

Electric Guitar Solo, Crazy Sweep Picking Arpeggios, Praxis Etude No. 2 | Soundslice.

Here’s a great talk from Adrian Holovaty at 37Signals: http://37signals.com/talks/soundslice

Resource: Curious Inventor

I don’t post too many entries in the “resource” category but when I came across this I was really excited. This site is chock full of easy to follow how-tos, tips, tricks, and tools that anyone in DIY audio (DIY anything actually) will find useful. I recommend adding the Curious Inventor Blog to your favorites and reading it frequently.

I also love the “Guides”

How to turn any file format into a wave

Boing Boing posted a link to this video from YouTube user r2blend. R2blend used Adobe Audition but also suggests using Audacity’s ‘import data as audio’ feature to render an executable file (and presumably other file formats) to a listenable audio format.

This is awesome and I wanted to give it a try but I don’t have Adobe Audition. I do have Audacity but it’s on the Linux boot of my only laptop so using it there doesn’t do me much good on the Windows 7 boot, where I do most if not all of my audio work.

So I decided to come up with a way to create a valid .wav file header for any file format which can be inserted with the use of a hex editor. Here’s how to do it…

.Wav file headers are incredibly straightforward and require very little calculation to generate. There are numerous sources available on the web but I find this single, 7 year old page on Stanford’s site really easy to understand.

Simplifying the info from stanford further in most cases (i won’t delve into the exceptions here) you need a 44 byte string as follows:

52 49 46 46 “RIFF”
6E E8 02 00 the file size minus 8 bytes
57 41 56 45 “WAVE”
66 6D 74 20 “fmt ”
10 00 00 00 16 for PCM.
01 00 PCM = 1
02 00 Number of channels
44 AC 00 00 sample rate (this example is 44100)
10 B1 02 00 sample rate * Num Channels * Bits per sample/8
04 00 NumChannels * BitsPerSample/8
10 00 bits per sample (this example is 16)
64 61 74 61 “data”
00 E8 02 00 Total file size minus 44 bytes

Now that you know what you need we can get started. First make a copy of the file you want to turn into a .wav and change the extension to “.wav”. I used the executable for ESET’s NOD32 64bit anti-virus software.

Right click on the file to determine the file size.

Input the file size information to my handy excel worksheet along with what sample rate you want, how many channels, and the bits per sample. Take note that you can have more than 2 channels…

Open the file you are converting to a working .wav file in your favorite hex editor. I use HxD which is more than sufficient for any of my needs.

Paste the copied 44 byte hex string…

Save it and open it in your favorite audio software and voila! You have audio, where previously there was none.

and as a treat, a look at what happens when you change the channels from one to eight using the same source…

And an example of the audio…
Eset_Nod32_64bit

USB Power For Your Car

My friend Larry referred me to this great idea on Instructables from user Rosenberger31… a DIY usb power outlet for your car.   There’s no need to repeat the details here as Instructables stands alone as one of the best DIY sites out there.   I will say this though, I’d love to see this in a Lotus Exige S 260 instead of a Prius.

A USB power outlet on it’s own may not make music but it will make it a lot easier to hook up a few of these and pipe them into your auxilary in.

Sound Forge Batch Export Script

I frequently use Sound Forge to edit large wave files into smaller samples and clips that I then use in software samplers, drum machines, or set aside for further editing, When you’re only creating two or three clips, highlighting, copying, pasting, saving, renaming isn’t a big deal. Recently though while working on a project I found myself I need of creating dozens of clips from a single file… and this had to be done for a hundred files.

Sound Forge scripting to the rescue.

Sound Forge comes with some great built in scripts. For the task above I found the script named “Save Regions as Files” particularly useful. At first anyway. The existing script still required me to name the file and select the file location. This is a minor detail but when you have to repeat this process over 100 times it can be extremely frustrating. With a little help from the Sound Forge scripting SDK I came up with the following modification to the original script that will export all regions to the original file’s directory without any prompting.

The example above is named “Test_Wave_Export.wav”. When running the script the 6 regions are automatically saved in the same directory as the source file in incremental format without any additional prompting. A huge time saver.

Test_Wave_Export-01.wav
Test_Wave_Export-02.wav
Test_Wave_Export-03.wav…

Once the script is saved in the Sound Forge Script folder you can make an icon and add the script directly on your toolbar for easy access. This script uses JScript

——————————————————-

import System;
import System.IO;
import System.Windows.Forms;
import SoundForge;

//Run with a file that contains regions
//Iterates through the regions, renders to format of your choice and
//saves the rendered file to the same directory as the source file
//Scan the file for MODIFY HERE to see how to quickly customize for your own use

public class EntryPoint {

public function CleanForFilename(szName)
{
szName = szName.Replace(“:”,”;”);
szName = szName.Replace(“?”,”!”);
szName = szName.Replace(“*”,”+”);
szName = szName.Replace(“/”,”|”);
szName = szName.Replace(“\\”,”|”);
if (szName.IndexOfAny(Path.InvalidPathChars) >= 0)
{
for (var ch in Path.InvalidPathChars)
szName = szName.Replace(ch.ToString(),”_”);
}
return szName;
}

public function Begin(app : IScriptableApp) {

//MODIFY HERE———————————————–
var szType = “.wav”; //choose any valid extension: .avi .wav .w64 .mpg .mp3 .wma .mov .rm .aif .ogg .raw .au .dig .ivc .vox .pca
var vPreset = “DaveTemplate”; //put the name of the template between the quotes, or leave blank to pop the Template chooser.
var FileFullName = app.CurrentFile.Filename; //obtain the full path and filename of the current file
var szDir = FileFullName.substring( 0, FileFullName.lastIndexOf(“\\”) ); //Set the directory to that of the source file.
var file = app.CurrentFile;

if (null == file)
{
app.SetStatusText(“open a file loser!”);
return;
}

//make sure the directory exists
Directory.CreateDirectory(szDir);

var rend : ISfRenderer = null;
if (szType.StartsWith(“.”))
rend = app.FindRenderer(null, szType);
else
rend = app.FindRenderer(szType, null);

if (null == rend)
{
app.SetStatusText(“Renderer not found. Script stopped.”);
DPF(“renderer for {0} not found.”, szType);
return;
}

var template = null;
if (vPreset != “”)
template = rend.GetTemplate(vPreset);
else
template = rend.ChooseTemplate(null, vPreset);
if (null == template)
{
app.SetStatusText(“Template not found. Script stopped.”);
return;
}

var szBase = file.Window.Title;
szBase = szBase.substring(0,szBase.length – 4);

for (var mk in file.Markers)
{
if (mk.Length <= 0)
continue;

var szName = String.Format(“{0}-{1}.{2}”, szBase, mk.Name, rend.Extension);

szName = CleanForFilename(szName);

var szFullName = Path.Combine(szDir, szName);
if (File.Exists(szFullName))
File.Delete(szFullName);

var range : SfAudioSelection = new SfAudioSelection(mk.Start, mk.Length);
file.RenderAs(szFullName, rend.Guid, template, range, RenderOptions(“RenderOnly”));
}

var status : SfStatus = app.WaitForDoneOrCancel();
DPF(“Done -{0}”, status);
}

public function FromSoundForge(app : IScriptableApp) {
ForgeApp = app;
app.SetStatusText(String.Format(“Script ‘{0}’ is running.”, Script.Name));
Begin(app);
app.SetStatusText(String.Format(“Script ‘{0}’ is done.”, Script.Name));
}
public var ForgeApp : IScriptableApp = null;
public function DPF(sz) { ForgeApp.OutputText(sz);}
public function DPF(sz,o) { ForgeApp.OutputText(System.String.Format(sz,o)); }
public function DPF(sz,o,o2) { ForgeApp.OutputText(System.String.Format(sz,o,o2)); }

public function DPF(sz,o,o2,o3) { ForgeApp.OutputText(System.String.Format(sz,o,o2,o3)); }

} // class EntryPoint

Audio Test & Development Box

I frequently work on projects in the living room in front of the TV while sitting on the couch soldering away hunched over a disarray of wires, parts, wires, speakers, cords, breadboards, and tools. Whenever I want to work from the couch I have to go into the studio and make 15 trips up and down the stairs, cables, toolbox, parts boxes, soldering iron, etc. It’s always a major hassle. Then, when I’ve finally completed mocking something up on the breadboard and I want to test it I need speakers, headphones, a sound source and I have to connect it all with alligator clips. It’s really inefficient and makes me less apt to start a project because all I can think about is the huge mess it’s going to make.

So I decided to put everything I need into one self contained box; an audio test and development box. Below is a description of the parts and procedure I used to put it together. If you’re in a similar situation hopefully this will give you some inspiration to come up with a solution that works for you.

If you want to see all the project photos in high resolution you can find them on Flickr here: Audio Test Box Images

Initially I needed to build a box. I looked through all my scrap wood and it was all ¾” plywood which would be way to heavy. The smaller pieces were odd shaped and unusable. I looked at everything from cookie tins to shoeboxes and didn’t like anything I was coming up with. I checked Wal-Mart for something I could get cheap and hack into what I needed but I didn’t find anything there. Then I went to Hobby Lobby because I remembered they had some project boxes for putting flower displays in. After looking through the whole store though I found the perfect box. It’s a miniature “child’s desk” with a top that lifts up. It was exactly what I was looking for, I just didn’t know it. Best of all, it was only $15. You can find them here: Wooden Child’s Lap Desk

What I wanted was a box which had a variable DC power supply, an AC jack, an amplifier, speakers, an audio source, an AC outlet for the soldering iron, a place to put some tools or parts, a quick way to hook up audio ins/outs and DC voltage, and room for multiple breadboards.

Most of it I was able to find around the house. Here are the guts from a pair of old busted up (but functional) computer speakers. These had been lying around for years. But even if I didn’t have them I see them all the time at Goodwill for a couple of bucks. It was a bit of a pain to crack these open. Most of them are manufactured so you can’t service them so you have to break the seal on the plastic to get to the guts. I just used a screwdriver and pried the crap out of it until it snapped. Dirty but easy.

The DC power supply I used was one I had purchased a couple of years ago for a project. It’s a Meanwell Switching Power Supply that I picked up at Fry’s. Fry’s is one of the last few national stores that still carry electronic components. It’s convenient if you need something right away… just hop in the car and get what you need… but be prepared to pay a premium. Anyway, this is the power supply:   Meanwell Switching DC power Supply I’ve used this power supply dozens of times and it’s great. AC in, DC V+ and V- out with a neutral earth ground. The voltage is adjustable from 10 to 15V DC which covers just about anything I’ll ever do.

Skipping ahead, I started drilling and cutting openings for the parts. Depending on what you’re using for parts and a box you might have to do something different but this worked well for what I was doing. The two speakers in the bac and the AC cord jack on the front right corner so I could comfortably plug it in. I used two tools to cut the holes. The circles were cut with a Dremel tool and the rectangular hole I used a chisel. The wood on this Hobby Lobby box was really soft so chiseling out a hole only took about 10 minutes. One word on chisels… never use them for anything other than wood, store them safely, and keep them oiled. Nothing worse than a fucked up chisel.

The speakers fit perfectly in the back corners of the box. I really couldn’t have built something better than what I bought at Hobby Lobby. And like I said, the wood was really soft so I was able to screw in the speakers directly into the wood using the screws used in the original plastic enclosure. This was much easier than sifting through bins of spare parts finding something to fit. Screwing in the AC jack was equally simple.

Next I installed the amplifier section of the computer speakers. I wanted to use the original DC power supply that came with the speakers so I wasn’t running it off of the supply I’d be using for a project. I simply screwed in the transformer directly into the wood. Now, this probably isn’t the safest way to go about this. The wires are exposed, and there’s no heat sink so do this at your own risk. Next I needed to attach the amplifier to the box. I didn’t have any standoffs that were the right size and the mounting holes were in awkward positions. I decided to make my own brackets. I frequently make brackets for projects using ½” brass strips. You can find these at pretty much any art supply store or train/model hobby store. They’re cheap, really strong, easy to bend, and easy to cut with a Dremel. A couple cuts, bends, and holes drilled and I was set up. I used mounting screws and nuts to adjust the height and stabilize the front of the circuit board

So when soldering it’s important to keep a wet sponge near by to occasionally wipe the tip. I made my own little portable holder that I’ve used for years now. I love Pillsbury’s Flaky Supreme cinnamon buns. When you’re done baking them you slather on that super sugary frosting and they’re delicious. I keep the plastic containers that the frosting comes in and wash it out, cut two plain old sponges in circles and plop them in the plastic container. Add water. It’s just the right size and stays wet for a day or so. Only problem is that it slips and slides all over the place which can be a hassle.

So, to keep the sponge from sliding all over the place and keep it at arms length I chiseled out a circular depression in the top of the box which the plastic container can rest in. Again, the wood is soft on these boxes so it didn’t take long at all. Just took a little patience so that I didn’t slip and chisel out a huge piece of wood.

Next I wanted a built in outlet for my soldering iron so I didn’t need to keep an extra power strip handy just to use one outlet. I went to home depot and bought a wall jack with only one outlet. In this instance I bought a safety outlet. I figured since I’m mounting the outlet directly to wood, with no switch, or fuse the least I could do is get a safety outlet. I’d suggest putting in a power switch and fuse if you try this. Chiseling out this hole took a bit longer and the wood needed to be notched out so the outlet would sit correctly. Also, because of limited space on the side panel I had to trim off the ends of the mounting brackets (not shown in this picture). The Dremel saves the day again.

Skipping ahead, here’s the AC wired up. I stripped out the heavy gauge wire from an old busted power strip and trimmed it to size. I added some heat shrink tube for color coding. The wires on the end of the AC input jack needed to be soldered but on the other ends I crimped on some spade tongues so I could connect/disconnect the wires quickly and easily if needed. I did this for all the AC lines. The wiring is pretty simple. White and black or the power inputs and the center is ground. I go from the input to the outlet to the power supply. Not visible in this picture is the AC power going to the amplifier in a similar fashion.

I had to drill a number of holes on the lid of the box so I could mount binding posts, switches, and jacks. Because the wood was ½” thick I needed a small hole on one side and a large hole on the other to fit the body of the component. Drilling the small hole is easy. Just choose the size that matches the width of the threaded mount on the component. To make a larger hole that sinks in to the correct depth I use an old trick. Measure the depth you need up the drill bit from the tip and then wrap a bunch of masking tape around the drill. Now drill your larger hole over the smaller hole and only go as deep as the tape. I tend to add a lot of tape so in case I push to hard the tape actually stops the drill so I don’t go all the way through the wood and ruin the hole.

Here I mounted three binding posts across the top of the box for DC power. I simply drill holes and screwed the plastic posts into the holes. The wood is soft so they took really well. I did have to tweak the size a bit with a round wood file but that was minimal. Because you can’t get in under the top of the box it’s necessary to solder the connection wire to the bottom of the binding post before you screw it in. I made sure to use heat shrink given the proximity to the DC & AC power wires.

Here are all the binding posts jacks, and switches installed followed by an image of the underside of the lid. All jacks were wrapped in heat shrink tubing. I tidied up the wire using staples from a staple gun. Instead of using the staple gun though I gently pushed the staples in with needle nose pliers so as not to knick the wires. After I had put this all together and tested it I was having a hell of a time getting the audio out to work right. The wiring wasn’t at all complicated so I had no idea what was wrong. I should have known though… one of my switches I bought at Radio Shack. So besides being completely ripped off by having to pay $3.99 for a $0.20 switch, I also got totally hosed because their parts are worthless shit.

These last two are the finished box (for now). You can clearly see I can fit around four or five breadboards vertically on the top of the lid if need be and all my ins and outs are in easy reach. The lid opens up and provides enough extra space to keep the AC power cable, a soldering iron, the sponges, some solder, needle nose, a pencil, or whatever. On the second picture if you look inside you’ll see a little RCA .mp3 player. I bought this at Wal-Mart for 30 bucks. It’s 2GB mp3 player/flash drive that runs on 1AAA battery. What I’ve done is load up 25 clips of various types of instruments or sounds. Guitars, vocals, drums, bass, synths, full songs, etc. This way when I’m testing an audio circuit I’m working on I can listen to how instrumentation actually sounds running through it. And when I’m done I can grab it and go. I used to have an iPod and lost it… which I was OK with because iTunes irritated the crap out of me. This thing was super cheap, has plenty of storage for what I need, and all you need to do to add .mp3s is drag and drop.


And last but not least, here’s a poorly drawn diagram of the entire operation. I’ve set it up so that either an internal or external audio source can feed the development circuit via the internal .mp3 player or an auxiliary stereo ¼” jack. Just connect the input binding posts to the circuit you’re working on (left, right, gnd). If your not working on a stereo set up I’ve added a mono/stereo switch which merges left and right and sends it to the ‘left’ binding post. Second you can easily hear the impact your circuit has on audio I’ve added a bypass switch so you can toggle between your circuit and direct audio out. Third, when the audio exits your development circuit it feeds into the binding posts on the right which subsequently feed the internal amplifier and speakers. Should you prefer to send the signal out to an external amp (or whatever) you can do so via a second stereo ¼” output jack. If the signal from your development circuit is mono, there is a stereo mono switch that sends the mono signal (connected at the L binding post) and feeds it to both the L & R inputs of the internal amplifier. I’ve tried to draw it out so it makes more sense than I’ve written it here. Of course, if you have questions just leave a comment or email me.

Click for Hi Res