Electronic Music & Tool Building Entry: Techno Date: Wed Apr 21 02:01:00 EDT 2010 Found a bunch of goodies on Youtube: - Starfish Pool - Unit Moebius - Hardfloor - Damon Wild & Morph - Joey Beltram Entry: Getting Pure Data back up and running Date: Wed Apr 21 12:40:07 EDT 2010 It's been a while. Currently debian squeeze has Miller's latest version: Get:1 http://ftp.debian.org squeeze/main puredata 0.42.5-3 [1673kB] ( I'm not sure if this is the community version or Miller's though.. ) First, setting up jack. At this time it's possible to run it as non-root. Update /etc/security/limits.conf as suggested: @audio - rtprio 100 @audio - nice -10 @audio - memlock unlimited After starting "jack -d alsa", I get this: JACK: unable to mlock() port buffers: Cannot allocate memory JACK: unable to mlock() port buffers: Cannot allocate memory To start pd with jack, apparently it needs the number of channels: pd -jack -channels 2 Works good enough for now. What I need next is a way around the "array" type: i.e. allow an array to be an external memory object, i.e. a shared memory segment. Let's put that aside. The most important thing is to make an interface for re-loadable C code. Something that can load a new code library in the background and switch it with a running instance in real-time. Entry: Music without melody? Date: Wed Apr 21 20:40:07 EDT 2010 There is only harmony. [1] http://www.slate.com/id/2250793/ Entry: Distortion Date: Fri Apr 23 17:59:23 EDT 2010 Polynomial composition instead of oversampling and filtering? f(x) = x(x-1) g(x) = x(x-1) (f * g)(x) = g(x)(g(x)-1) = x(x-1)(x(x-1)-1) = ...(x^2-x-1) Entry: I want one Date: Sat Apr 24 10:48:25 EDT 2010 Thinking back to the years of playing with synths, I think I was stuck between two extremes: on one hand wanting to just play and not be bothered with an iterative edit process, on the other hand wanting to understand some musical style and be accepted/confirmed in it. Entry: BCR2000 Date: Sat Apr 24 10:54:00 EDT 2010 [1] http://bc2000.pingdynasty.com/index.php/Introduction_to_BCL Entry: No more sequencers Date: Sat Apr 24 11:38:09 EDT 2010 I'd like to stay with loops, but move away from sequencers, apart from creating raw material. I'd like to get more into the geometry of loops. It seems that what I'm looking for is more about user interface design than DSP per se. The overall architecture is going to be what determines the ultimate sound. This means: - database of sounds (with search?) - sample display? - `basic codec' I.e. standardize the effects that can be used, such that sounds can be encoded in raw material + operation. One thing is clear: Pd is not what I want. Pd is great for sound design and clean-slate approach, but I really want 1. language control: abstractions and combinators (something that Pd really misses), and 2. better handling of loops, i.e. sample loops as functions. So, these are the ground rules: * phase 1: database of sounds, all treated as loops (pre-edit them). later in the implementation, replace them by "virtual loops" ala ableton live. * a loop is a function from angle -> time. parameterization of this manifold should be abstract, ala [1]. * write the whole thing in haskell, but allow for abstract interpretation to compile subsets (the sound generators & processors) to C. Question: is a loop the same as a periodic sound? A loop is a sort of metaloop. Actually, it's a projected torus (basis of the dynwav model). Anyways, let's leave that to later. Problem: where to put the AI? I.e. scaffold the whole deal in Haskell, including array references and subsampling? Should work fine, as there is no mutation going on. So, first: a beat chopper. [1] entry:../math/20090620-152527 Entry: Process Based Music Date: Sat Apr 24 14:15:46 EDT 2010 Maybe that's the most important thing to remember. Given a limited number of options and tools, make something that ``sounds about right''. I need a production tag: FNCMP or funcon. The process: function composition. Entry: Step 1 : cut up a sample Date: Sat Apr 24 16:32:57 EDT 2010 Ingredients: sample array, `needle' function + way to playback. Entry: NRPN BCR2000 Date: Sat Apr 24 18:06:35 EDT 2010 NRPN is encoded as: CC 99 PARAM MSB 89 PARAM LSB 6 VAL MSB 38 VAL LSB This works very well. The B-Control Rotary knobs are accelerated for fine scales. Entry: Samples really suck Date: Tue Apr 27 19:33:53 EDT 2010 I like loops, but I don't like samples. Maybe it's because I like polyrythm and a bit more synth-like unpredictability.. Also, samples are a real pain to manipulate, edit, ... That never really worked for me. Another thing: once you have a loop as a sample and you pitch it up/down, it looses its character. It becomes ordinary or something.. Difficult to express.. So, back to synth-only? How then to capture these modulation-based rhythms? Looks like I digged myself a hole again.. Let's make that the real objective this time; not to do that. The real point seems to be to keep the parameter space simple and keep the configuration manifold smooth, so you can walk around in it. I.e. if there are not too many degrees of freedom, an instrument is born. Too much freedom is no good. So: only cycles. In pd, simple: only phasor~ objects, both for tone and rhythm (modulation). No events. Working title: no events - only cycles Something to think about: - build network, - find some pot motion that works well - abstract the motion into an oscillation Entry: Tone beats Date: Sat May 1 20:10:55 EDT 2010 The beats from slightly detuned perfect intervals seem to be more natural or beatiful than constructed ones. I.e. beats are one kind of allowed inharminic rhythm. Is it possible to shift between the two? Have beats be synchronous to the main rhythm? Entry: Jazz & 7th chords Date: Sat Jun 19 19:44:53 CEST 2010 Some of the things I learned about scales and chords recently. 1. Where do the basic chords come from? From the diatonic scale: T T s T T T s C D E F G A B C' 1 2 3 4 5 6 7 8 It's simplest to do this on the (piano) keyboard, using the white keys only (key of C major). Transposition to other keys give rise to more sharp/flat (black) notes in the scale. This is largely a technical issue (and imho a disadvantage of music notation when equal temperament is used..) Western music is largely based on these 12 tone intervals. Here they are annotated with their occurence in the diatonic scale: m2 Semitone s M2 Whole tone T m3 Minor third Ts, sT M3 Major third TT 4 Perfect forth TTs, TsT, sTT b5 Tritone TTT, sTTs 5 Perfect fifth TTTs, TTsT, TsTT, sTTT m6 Minor sixth M6 Major sixth m7 Minor seventh M7 Major seventh One of the most remarkable properties of the diatonic scale is that it contains a large number of perfect fifths: only the one starting at the 7th contains a flat fifth (B-F' or 7-11). The same goes for their inversions the perfect forths. Chords can now be built by stacking two major and minor 3rds (= third and fifth) Building them directly from the diatonic scale gives: C Dm Em F G Am Bdim Three major/minor chords containing a major/minor third, and one chord with a minor third and a flat fifth: a diminished triad. Triads stack root + interval Major M3 m3 M3, 5 Minor m3 M3 m3, 5 Diminished m3 m3 m3, b5 2. What about jazz? Use quads by adding a 7th. 7th chords are 3 3rd intervals on top of each other, or a 3, 5 and 7 from the root. The most important components in a 7th chord are the 3 and 7, which are called the color tones. They are a 5th apart. It's often OK to leave out the 1 or 5 if the harmonic context is clear enough. A 7th chord can also be though of as a triad extended with a bass note. I.e. with a clear bass note C context, an Em chord sounds like a Cmaj7 chord. ( Music is inherently ambiguous! ) There are more possible combinations for 7th chords. There are 5 with perfect fifths: root intervals ex third stack name ------------------------------------------------- 1 3 5 7 Cmaj7 M3 m3 M3 Major seventh 1 b3 5 b7 Cm7 m3 M3 m3 Minor seventh 1 3 5 b7 C7 M3 m3 m3 Dominant seventh Lowering the 5th and 7th gives 3 more with flat fifths: 1 b3 b5 b7 Cm7b5 m3 m3 M3 Half diminished seventh 1 b3 b5 bb7 m3 m3 m3 1 3 b5 b7 M3 2 M3 The first 4 come from the diatonic scale by stacking thirds: Cmaj7 Dm7 Em7 Fmaj7 G7 Am7 Bm7b5 The other 2 do not occur on the diatonic scale. So, a 7th chord is: - bass note + 5th (color interval), stacked at 3rd - stack of 4 3rds - two thirds, separated by a fifth 3. Progressions In western music the cadence V-I is an important base for many chord progressions. The II-V-I in jazz is two 5ths down (4th up = 5th down). I don't have a very clear picture here, but it seems to boil down to progressions within a key (i.e. that stay in the same scale) and those that modulate to a different key. [1] http://en.wikipedia.org/wiki/Musical_mode Entry: Scales & Keyboards Date: Fri Jul 30 16:38:15 CEST 2010 For reference: The HN thread[1] and some other links [2][3][4]. [1] http://news.ycombinator.com/item?id=1559838 [2] http://en.wikipedia.org/wiki/Janko_keyboard [3] http://en.wikipedia.org/wiki/Solfege [4] http://www.youtube.com/watch?v=82xaEGgiiRs [5] http://www.c-thru-music.com/cgi/?page=layout_cshapes Entry: 1, m3, 4 Date: Fri Jan 7 17:24:55 EST 2011 The "Ambient music chord"? Minor suspended? No[2], suspended is removed 3rd, repaced with 2nd or 4th. Chord names never made sense to me. I have my own copy of [1] now, so that's another multi-year project right there. [1] isbn://9781883217044 [2] http://en.wikipedia.org/wiki/Suspended_chord Entry: Cool post on HN Date: Sun Oct 2 22:10:20 EDT 2011 Follow links! So what's behind this? It seems to be mostly phase modulation of a sawtooth wave. The | operator is sort of like a distorted summation. One of the lines in the 2nd video in [2] sounds like aphex twin. This one: (t | (t>>9 | t>>7)) * t & (t>>11 | t>>9) [1] http://news.ycombinator.com/item?id=3063359 [2] http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html Entry: asdf Date: Tue Nov 15 17:42:54 EST 2011 I'm thinking about making music again... At least I'm listeing to music again.. Something went wrong in the last couple of years, brain shifted towards a different kind of aestetic.. I got interested in programming. I'm listening to two kinds of music: guitar and electronic. Both have a different sentiment to them. Guitar is usually more about people. The electronic isn't. Wether I want to listen to either depends on whether I'm pissed off by someone or not :) Anyway. Music. Interface. The thing is that, while I have all this technology available to make music, I still don't feel that I can make something that comes from within. Actually I can, when I make it severely limited, minimal.. Maybe that's the path to go then. So, interface. Trouble with these spurrs of motivation is that some kind of incremental approach needs to be happening after an initial convoluted hacking session... How to get there? Maybe I should just continue what I'm doing.. Get my damn DSP compiler code into Pd. Entry: Cycles Date: Tue Nov 15 18:35:04 EST 2011 So, I'm looking for loops on a manifold, or maybe non-loops for variation. The trick is to write down the update equation / evaluation and to find a good mapping. The path of incremental update might be most useful as I imagine this can generate more interesting trajectories than simple wave-shaping.. The core problems there are evaluation of elementary functions and constructions of derivatives (through autodiff). Entry: My loops Date: Thu Nov 17 16:50:54 EST 2011 I got tons of unprocessed techno recordings that might be repurposed for making new tracks. It would be nice to find a good way to index them. i.e. perform beat matching etc. It's about 8G of FLAC. The whole won't fit into memory. It would fit in compressed form though. I tried mixxx again and I get depressed by the overall messy feel of that program. Maybe I'm being an ass, but I really can't get it to work after a couple of minutes; that shouldn't be.. This looks pretty much like a dead end. I have no thinking substrate. I need a way to think about "context" in a music file, and based on that context, derive things like BPM, current 4 beat window, ... Let that be the seed idea: represent context in a music file, and perform computations on it.