The Sample Curation Problem
A on-going problem of mine: how does one efficiently manage
curate a large database of
My compositions up to this point in time have been largely vacant of samples for this reason. I do have sample collections, I always find myself overwhelmed when it comes to choosing a sample. How do I know when I have found the "right" sample? And what happens if I find a good sample, but I don't have a use for it? I don't have a good system in place, so sample selection for me comes down to either random selection, panick-y random trial and error, or just what is most convenient (first one selected, selection from a arbitrarily limited subset, etc).
A Potential Solution
The premise is to think of a sample library like a zettelkasten.
Sample Curation Actions
Outlined below are the actions needed for a successful sample curation system, with some implemented solutions.
you gotta hear it! and you gotta hear lots of them.
I currently use monolith for my interactive audio needs. Being able to build something on top of that could save me from re-implementing mundane stuff, and it could also be an interesting way to hook into my composition environment.
There's still the issue of interface, which I don't think
monolith addresses right now. noice has been
my go-to interface, with a few modifications.
noicereduces the task of listening to files down to a few
keystrokes and is quite ergonomic to use.
Browse refers to the ability to effortlessly navigate,
listen, and discover a collection of samples. This will
probably be one of the last of the actions I'll address.
The easiest way to accomplish this is with a filesystem and
a good filebrowser. In my aging fork of noice,
ncurses based filebrowser,
one is able to navigate a file tree
and play wav files using only a few keystrokes. For what
it is, it works pretty well. But static file tree
structures are rigid. Still, it is a good start.
bitmap interface instead could provide
a more helpful interface for browsing. Even a
1bitgraphics buffer could be useful in things like visualizing
waveforms. As it just so happens, I have a btprnt that probably could
be a good start. An interactive backend would still need
to be writen, which is where bitwrite may
come in. This project is a ways off though.
Annotation is about writing stuff down. Both long and
short-form writing is needed.
Short-term annotations need to be quick and painless. The same transactional cost one gets from tooting from mastodon.
Long-form writing should be done in a format that makes it easy to do edits and rewrites. A text file with some kind of markup should do the trick.
For long-form writing, there's
weewiki. weewiki strengths include the org markup syntax and the
links. High-level ideas can be encapsulated in this format,
which can lead to thoughtful ways to organize and curate
A meaningful way to store and organize samples and metadata.
sqlar library has always been attractive for
me because the SQLite format makes it easy to build
structures on top of it. Also, I personally like having
everything self-contained. There are performance trade-offs,
but it's a cost I'm willing to pay at this personal scale.
Query refers to being able to find sampels given some sort
of parametric constraints.
SQLite comes in handy yet again. Weewiki, Zet, and Crate are all built on top of SQLite, so they all can leverage the SQLite query language, which has proven to be quite powerful even in the initial stages I'm currently at.
Updates about this page from the zet will be dynamically generated below:
2021-11-10 10:45:45: (sqlar) and sqlarfs have been pretty convenient in my (sample_curation) workflow efforts. The idea of everything belong to one centralized thing is very grounding from a creative point of view.
2021-01-09 14:38:19: some rewriting of (sample_curation) done.
2021-01-09 13:14:18: getting the hang of managing external harddrives in a workflow. All this time and I just avoided the problem by not using samples and synthesizing everything.
2020-12-23 10:08:23: the (sqlar) loadwav utility has been reworked slightly so that it reads from a sqlite handle rather than a filename. It's necessary to deal with a runt quirk, but I also think of it as a smarter step forward.
2020-12-20 17:26:42: picking a sample at random from a library is a totally valid approach to sample curation. So, I added a shuffle feature to the (zet) which picks N random elements that match a pattern. This general thing can then be used with (crate) to choose random samples from a folder.
2020-12-19 10:23:04: some good stuff is happening with the weewiki zet page wrt sample curation. will have to update the (sample_curation) page soon.