# Electronic music production on NetBSD I like to make dance music on NetBSD. Here's a brief overview of some of the tools I use. ## Audacity Audacity is very basic software for manipulating sound waveforms. You quite possibly don't want to make an entire project in it, but there's several situations where I find it very useful: * recording samples * manipulation of samples (e.g. adjusting tempo and pitch to match your project) * mastering of the final recording (e.g. limiting, amplification, fading out or applying effects to the entire waveform, etc.) Audacity is unfortunately quite a problematic project upstream and as a result is quite unstable when running on NetBSD. I've found that setting ``` export GDK_SYNCHRONIZE=1 ``` in the environment gets rid of some really annoying crashes when working on waveforms. ## LMMS LMMS is my favorite open source Digital Audio Workstation (DAW). Its primary function is arranging tracks, stacking effects, and so on. It kind of mimics the interface of FL Studio (a proprietary tool, previously known as Fruity Loops), which I also like because it's very simple and accessible. LMMS is very portable and stable, and works really well on NetBSD. LMMS supports running Windows VSTs (for example, for synth plugins), apparently through WINE, but I haven't got this to work. Instead I primarily use native plugins, especially built-in synths like TripleOscillator, which is surprisingly powerful. ZynAddSubFx is also very powerful, but has a somewhat less intuitive user interface. It can also apply LADSPA plugins for effects like filtering, delay, reverb, chorus, amplification, bit crushing, compression, etc, etc. LADSPA effect plugins generally have a very simple user interface consisting of a few knobs. The native LMMS effect plugin Equalizer is a great example of what can be accomplished beyond this. Future releases of LMMS will have LV2 plugin support, allowing for more advanced plugin UIs. This is really exciting. I'm interested in eventually trying LV2 synths like amsynth. ## JACK JACK is really popular for professional audio work on Linux, but I don't see much advantage to using it on NetBSD except for compatibility - maybe it's useful for live musicians who want to do things like apply effects. It can't be any lower latency than the kernel's audio mixer, by nature. The JACK output for Audacity provides slightly better latency, but this is probably a programming error on my part (I wrote the NetBSD sound output code for both). ## The native mixer - audio(4) During production work I set the NetBSD kernel mixer to run at 44.1 KHz, the sample rate of CDs (and my projects). It's about the limit of what the human ear can percieve, but 48 KHz is usually the default for synchronization with video. I set it to 44.1 KHz for accuracy, to ensure accurate reproduction by removing resampling artifacts (the resampler in the kernel isn't the smartest thing in the universe, although many programs will also do resampling in userspace before output). ``` # audiocfg set 0 p slinear_le 16 2 44100 ```