AN Experiment 2018 Test 2 - noise position
for this Animation Nodes experiment I used the vector noise to change the position of objects
you can download the blend file here but be aware that this has been created with a development version of - so some nodes might change a bit until the final release
AN Experiment 2018 Test 1- curly noise
I finally managed to fix all my python and cython version missmatch errors and started experimenting with a animation nodes 2.1 development branch - this is my first experiment using the vector noise node and the curly noise setup described in the brilliant blender.stackexchange.com answer by omar Ahmad
you can download the blend file here but be aware that the 2.1 branch of the Animation Node Addon is currently under heavy development so maybe the examples here won't work out of the box with a final version.
creating midifiles using ruby
I have been experimenting with randomly generated drum patterns lately and found out pretty soon, that a totally random generated pattern isn't exacly what I was after, I wanted a pattern generator where I can specify propabilities for each drum hit to occure. So I wrote a ruby script using midilib that generates midi files containing patterns, which I can then import into bitwig and loop and arrange for my tracks.
Midilib is a nifty little ruby library that allows you to read or write midifiles. For my purpose I used the library to write the files.
the library can be installed using gem
gem install midilib
A midifile contains sequences, sequences contain tracks and tracks contain midi events. These events can be any midi event like noteOn, noteOf, controlChange, programChange, ... For each midiEvent in a track the delta time to the last event is stored.
in midi lib you can specify a time_from_start value and lets midilib recalculate the delta values before saving the track.
So here is a ruby script that generates a hihat pattern (channel 1, midi note 44 in my kit), where the notes are placed on a 16th grid with a random chance between 20% and 50%.
require 'midilib/sequence'
require 'midilib/consts'
include MIDI
seq = Sequence.new()
track = Track.new(seq)
seq.tracks << track
track.events << Tempo.new(Tempo.bpm_to_mpq(110))
track.events << MetaEvent.new(META_SEQ_NAME, 'Test Pattern')
track = Track.new(seq)
seq.tracks << track
track.name = 'Loop1'
s = 0
l = seq.note_to_delta('16th')
e = Random.rand(0.2..0.5)
16.times do
if ( Random.rand < e ) then
on = NoteOn.new(0,44,127,0)
on.time_from_start = s
off = NoteOff.new(0,44,127,0)
off.time_from_start = s + l
track.events << on
track.events << off
end
s += l
end
track.recalc_delta_from_times
File.open('pattern3.mid', 'wb') { |file| seq.write(file) }
read more ...processing sound visualizer
I made a visualizer for my track Walk in the rain using processing. I used a stereo autocorrelation function to generate the line drawing using the minim framework and added a glsl shader to create the lens distortion effect.
SuperCollider drumsample generator
I noticed that my Volca Sample in my homestudio din't quite get the attantion and love it deserved so I desided to create a new sample pack for it. I wanted some fresh electronic samples so I wrote some SuperCollider scripts to create random drum Samples. I created a script for bassdrum, snare, hihats, clap, crash, tom and a metallic 'ding' sound - which I named 'Ding' because I could not come up with a more clever name. Each of the script generates 64 samples. I then chose 100 and organized them into sound banks and uploaded them to my Volca Sample.
Samples 00 to 19 are bass drums, 20 to 29 are clap samples, 30 to 39 is a crash, 40 to 49 is 'ding', 50 to 69 is closed and open hihats, 70 to 89 are snares and 90 to 99 are my tom samples. I'm not 100% satisfied by the ordering yet maybe I move the snare samples after the bassdrums and the hihats to the end of the list - the current ordering is created mainly for alphabetical reasons :-) but I really like the organisation in banks of 10.
To simplify things further I also created 10 empty patterns - the first one places bd-00 on slot 1, bd-10 on slot 2, sn-70 on slot 3, sn-80 on slot 4, ...
the second pattern places bd-01 on slot 1, bd-11 on slot 2, sn-71 on slot 3, sn-81 on slot 4, ... and so on. This way I can switch between the drumkits pretty fast. Since I mainly use my volca sample as a midi device, I usually don't need the patterns for anything else.
click here to listen to a track I made using this samples
If you want to create your own set of samples here are the supercollider scripts I used with a short description. If you create something nice with them please share a link in the comments.
Bassdrum
For the Bassdrum I combined a short noise burst with a bandpass filter sweep and a Sinewave with a linear pitch envelope.
SynthDef.new("bd", {
arg n=0.8, nl = 0.02, start=110, end=1, l1=0.1, l2=0.3, exp=1.7;
var boom;
e = pow(Line.ar(0.9,0,l2),exp);
boom = BBandPass.ar(WhiteNoise.ar(),freq:Line.ar(100,10,nl))*Line.ar(1,0,nl)*n+
SinOsc.ar(Line.ar(start, end, l1))*e;
Out.ar(0,[boom,boom])
}).add;
{
64.do{
Synth.new("bd", ["n":rrand(0.8,0),"nl",rrand(0.03,0), "start",rrand(100.0,50.0),"end",rrand(100,10), "l1", rrand(0.1,0), "l2", rrand(0.8,0.1),"exp", rrand(1,4)]);
1.6.wait;
}
}.fork()
read more ...Volca Sample SuperCollider Drum Set
I generated some random drum samples using supercollider and selected 100 samples as my new main drum kit for the volca sample. This is the first track I used my new drum sounds one. The volca sample gets a little help from the volca beats kick drum. The Bass sound is from the MiniNova, The synth track is from the Blofeld.
purple blocks
I made a new short blender animation - just for fun. I used a displace modifier on a subdivided cube and animated the texture using an empty as a control object. I moved, turned and scaled the empty for five frames and then paused for 20. I then used a remesh modifier to turn the noisy mess of a mesh back into a bunch of cubes.
I like the jumpy animation - maybe I use it in a music video some time.
you can download the blend file here