Wow, since beginning playing with Linux desktop composition, this desktop music stuff is insane! Prithee, why in blazes does it have to be so complicated? Let's count the dialogues and windows we have to have open just to record the simplest audio file:
- Start QJackCTL. Its sole purpose is to make Jack Audio work.
- Now open Seq24 and load the song (which was saved before in MIDI format). My example song uses percussion and four instruments, and it's a very plain tune at that.
- Open Hydrogen, load the drum kit this uses.
- All the instruments are in WhySynth, so WhySynth copy #1...
- WhySynth copy #2...
- WhySynth copy #3...
- WhySynth copy #4...
- Now to play the whole song from Seq24, open the song editor window in Seq24.
- Now open... Wait, "Jack Capture" in my menu dies with "failed to open jack_capture_gui2." Forget it. Open a terminal to run jack_capture from the command line.
That's nine windows on the desktop:
Oh, and the command you see there, 'jack_capture --mp3', don't work 'cuz jack audio wasn't compiled with mp3 support. Ha ha, how stupid I was to expect that! OK, vanilla jack_capture gets it in .wav format and figure out what to do with it later (actually, it's just "ffmpeg -i file.wav file.mp3" if you don't care about quality).
One thing I've learned: Don't scroll the song editor window while it's playing. That made the first recording sound scratchy. Yes, I know, it makes no sense, but the second time I did this it worked and the only thing different was not touching the window until recording was over.
If you think that makes no sense, wait until you see this one: I was trying to set up my ancient and increasingly useless Fedora laptop to run all the fun sound toys. Except nothing worked, I had a dozen dead programs in my multimedia menu. No error messages, no crashes, nothing, just doesn't go.
I fruitlessly scoured the docs and searched the web frantically trying everything and breaking the system even worse many times. You know what the problem turned out to be? When you install Fedora, it doesn't write the hostname to /etc/hosts, and all the Jack-Audio-dependent tools' GUIs look there and won't run without knowing which computer to start on.
How stupid of me to have not thought of that first, right?
So, for Googlable future prosperity: "jack audio" "GUI" "hostname" "/etc/hosts" "seq24" "hexter" "wsynth" "xsynth" "whysynth" "DSSI" I'm leaving out amSynth (which doesn't have a Fedora package and the tarball won't compile) and Hydrogen (which runs just fine).
First clue found here on Linux Musicians' forum, way at the bottom. Just slap you IP (127.0.1.1 or whatever) into /etc/hosts, plus your $HOSTNAME (what you named the computer when you installed the system; the part that helps other computers find it on the network without memorizing a MAC address), save, reboot, everything works now.
BTW, I got 90% of all this going on the original desktop Mint system, but jack_capture just plain old doesn't install there. No, really, I have dozens of "jack_*" programs on tab in the terminal, no capture.
So, two fixes to my former hacks: (1) Can finally compose, play, record, and play back on one machine. (2) No longer need notepad to write down instrument hook-ups when saving a MIDI from Seq24, because duh, just rename each module after whatever it's hooked up to.
Oh, almost forgot, the wretched little song I recorded:
That kinda takes the fun out of figuring this stuff out, when you suck so bad at music composition in the first place. But somebody who really groks computers needs to go discover how to make this work because there's hundreds of would-be musicians out there frustrated trying to figure out what the hell an "etc-hosts" is.
But I'm still going to make my own ringtones. And perhaps some custom "on-hold" music for my home office...
Somewhere in my music writing, I remember an anecdote about Jerry Leiber and Mike Stoller, the songwriting team behind many hits by Elvis, The Coasters, and many others. Apparently when Leiber & Stoller hits were topping the charts, a music producer walked into a drum store and asked for the Leiber & Stoller drum kit. The store owner did a slack take, then responded that if he really wanted the Leiber & Stoller sound, he'd have to buy every drum in the store.
Leiber & Stoller would have loved Hydrogen.
Not only do you have dozens of drum kits at your disposal sensibly grouped by music genre, but you can download more and make your own custom kits besides. Here I am downloading the death metal drum kit, because \m/ METAL! \m/ Not that I have the skills to compose any.
The interface is pretty simple once you poke around some and read the excellent, complete manual. It will strike you as more familiar if you've already used LMMS. It's also one of the more well-behaved Linux desktop music-making apps, not conflicting with other programs that way some DSSI programs do (at least not usually). It's fairly stable, but on Mint I did get it to panic and die once when dragging and dropping instruments from two different instrument categories, while the Fedora install stayed stable. Huh.
Anyway, Hydrogen also works great as a Seq24 plug-in DSSI. Here's a cheesy little demo I composed using a full Hydrogen percussion library and a couple Hexter instruments:
As always, my demos are meant to show off the software and not my non-existent ability. I suspect that to the trained ear, my MP3 files sound the way high school kids' Powerpoint presentations look. Every gimmick thrown in just because it's there.
A couple posts ago, I cooed with joy over discovering Seq24. And last post, I pointed out SFXR (now in twilight development status) for producing simple low-fi sound effects. Now here is an app which is pretty capable at most of what SFXR does, and works as a Seq24 plugin as well.
amsynth is a cool little synthesizer desktop app all by itself. It can also be used, like Hexter, Wsynth, and xsynth, as a DSSI plugin for Seq24 modules - just start a copy of each, and set one (or more) loops to amsynth's output. And it looks cool doing it.
While AMSynth (which I've just decided to capitalize that way because it looks righter) doesn't have a full orchestra of instruments at your disposal like Hexter.so does, it is far easier to customize. To make your own instrument, just select 'new preset' from the preset menu, hit 'Ctrl-R' a few times and audition each result to hear the random sound, and stop when you find a sound close to what you want, then tweak the knobs on it (by clicking with the mouse and dragging up or down) to get it how you want it, then name it with 'rename preset' in the presets menu again, and finally click 'save' right next to the presets dropdown menu. You'll now find your new preset in the menu, and it will reload each time you start AMSynth. So this way you can build up your own personal library of sound effects.
It's also easy to copy / paste and edit presets from the plain text file. Open ".amSynth.presets" in your home directory; there's the list of all available sounds, including the ones you save. Easy to copy and share! You'll also notice that at the bottom, AMSynth seems to save a lot of 'new preset' instances, which you might want to delete here as they don't show up in the menu anyway.
Here's a more complete tutorial on AMSynth, though very outdated and using and older version.
Here's my own preset discovery, which I named 'night frogs' in my preset file:
<preset> <name> night frogs
<parameter> amp_attack 0.101708
<parameter> amp_decay 1.98257
<parameter> amp_sustain 0.28707
<parameter> amp_release 0.930455
<parameter> osc1_waveform 2
<parameter> filter_attack 0.538419
<parameter> filter_decay 1.77124
<parameter> filter_sustain 0.141512
<parameter> filter_release 0.962746
<parameter> filter_resonance 0.149043
<parameter> filter_env_amount 0.957702
<parameter> filter_cutoff 0.51926
<parameter> osc2_detune 0.0872381
<parameter> osc2_waveform 1
<parameter> master_vol 1
<parameter> lfo_freq 5.02726
<parameter> lfo_waveform 2
<parameter> osc2_range 2
<parameter> osc_mix 0.176455
<parameter> freq_mod_amount 0.810294
<parameter> filter_mod_amount 0.595398
<parameter> amp_mod_amount 0.22656
<parameter> osc_mix_mode 0
<parameter> osc1_pulsewidth 0.691587
<parameter> osc2_pulsewidth 0.576662
<parameter> reverb_roomsize 0.433333
<parameter> reverb_damp 0.473445
<parameter> reverb_wet 0.42621
<parameter> reverb_width 0.829504
<parameter> distortion_crunch 0.327175
As seems to be par for the course for FOSS audio engineering software, documentation is minimal to none, the project appears
abandoned, and is barely a fuzzy rumor at best. Even the man page is a place-holder. The closest thing to developer-provided docs is in /usr/share/doc/amsynth/README, and that's 80 terse lines of bare clues.
Update: Whoa, nelly, the AMSynth team dropped by the comments to let us know they're live 'n' kicking, and there's going to be a 1.4 release with over 1000 sounds! Also drops this link, with demos you have to check out.
I've also discovered that AMSynth will export directly to .wav file, for just making sound effects and music accents like you would in SFXR. Nifty side feature.
Here's that 'night frogs' preset in action as part of this cruddy little attempt at an ambient noise track:
And while I'm dumping MP3s, here's a couple more I have monkeyed out while playing with Seq24:
Asphalt_Savanna - Supposed to be a hip-hop backing track.
peanut_butter_jam - Yet another self-indulgence of techno blasphemy.
Once again, be advised that I don't know music composition from my arse from my elbow. But if you find these useful, Creative Commons for your next game, video, or whatnot. And once again, I'm doing this not to pursue a career as a musician, but just so that when I need audio for future projects, I don't want to have to live in terror of the RIAA mafia for the rest of my life. Just five minutes of fidgeting produces my own track to do with what I please, and all those scary copyright phantoms just disappear in a puff of smoke. That's a good feeling.
By the by, here's the Wikipedia entry on synthesizers, which has some explanation of the sound audio jargon you wade into using programs like AMSynth. And here's further resources at the Linux musician's Wiki, hurray, they exist!
SFXR was once one of the coolest little sound toys out there. It generates retro 8-bit sound effects - at random, with a bunch of sliders and buttons to play with. If you're familiar with my last post exploring MIDI music production (and the techno-flavored files I was producing) you'll see where this is going: Adding old-skool lo-fi sound effects to music tracks, quite probably using Audacity to monkey around with them.
Except SFXR doesn't seem to be up to speed with modern desktops. Pepperidge Farm remembers when you could just install a Debian package. No longer!
The original developer offers a round of package options - there's a .deb package (won't install, only for AMD64s), a source code tarball (which won't compile unless you have GTK+2.0, which has gone the way of the dinosaur), and a Windows executable - which sometimes works and sometimes crashes along with a side order of Cream of Stack Puke.
With sound apps, I'm right in the cargo cult. Sacrifice goat, please volcano god, don't ask questions.
But there's solutions out there. If you're purist, I discovered this GitHub project which is making SFXR into a DSSI type... thingie. Smarter people than I can go figure that out. If you're stark raving mad, there's bfxr, a port which requires Adobe Air (retch! gag! choke!). If you don't care and you just want sound effect generation already (my category), here's an online app version of that!
Configuration of the perfect water drop sound effect:
And here's the drop:
And here's a little gallery of other sound effects I've managed to squeeze out of SFXR over the years, which I'm giving away as Creative Commons door prizes:
The idea here is that you can import them into Audacity and tinker with them there, use them for sound effects in your next video game or animation, or... use them as a preset for DSSI synth plug-ins? Maybe I'll figure that out next.
Oh, by the way, I'm starting a new category here at the ol' home blog for multimedia, because it's about time I dug into this little-documented area of desktop Linux.