Instagram filter used: Willow
Tearing of fast action on NVIDIA
So with a brand new setup that includes a GLX/Geforce 1070 graphic card (will I ever be able to abuse all that GPU power?) I was somehow dissapointed to find non-uniform flickering, in other words the fast movement of things on screen was tearing. I didn’t prioritize this problem yet, but today I took time to look into it, and the following recipe solved it:
To avoid tearing, there’s a “workaround” – there are two options that seemingly need to be enabled in Xorg/nvidia driver: TripleBuffering and ForceCompositionPipeline (or ForceFullCompositionPipeline). My /etc/X11/xorg.com
now contains the following in the “Screen” section:
1 2 |
Option "TripleBuffer" "1" Option "metamodes" "HDMI-0: 1920x1080_60 +0+0 { ForceCompositionPipeline = On }, DVI-D-0: 1920x1080_60 +1920+0 { ForceCompositionPipeline = On }" |
To find out what is your screens layout, you can do
1 |
xrandr | grep " connect" |
Also, if you want to fix tearing temporarily without changing any configuration files, use this command with something like that:
1 |
nvidia-settings --assign CurrentMetaMode="DVI-I-1: 1920x1200 { ForceCompositionPipeline = On }" |
Supposedly forcing composition pipeline is causing some degradation in quality/speed in games.
Sources:
https://devtalk.nvidia.com/default/topic/543305/linux/screen-video-tearing-gtx6xx-7xx-kepler-9xx-maxwell-in-almost-all-applications-including-desktop/1
http://http.download.nvidia.com/XFree86/Linux-x86/325.15/README/configtwinview.html
https://forums.freebsd.org/threads/52311/#post-312833
https://forums.freebsd.org/threads/52311/#post-325927
http://us.download.nvidia.com/XFree86/Linux-x86_64/319.32/README/xconfigoptions.html
instagram: An important design decision
Learning SuperCollider patterns: legato, sustain and using pairs
Yesterday I had problems understanding why does a SynthDef and it’s Synth instance complain when it’s envelope duration is shorter than duration \dur
. The following code will produce FAILURE IN SERVER /n_set Node 1067 not found
complaints in the post window.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// an example of undefined sustain resulting in FAILURE IN SERVER ( // define a simple synth SynthDef(\bip, { |out=0, freq=440, gate=1, amp=0.3| var sig, env; env = Env.linen(0.01, 1, 0.1); sig = Pulse.ar(freq, 0.3) * EnvGen.kr(env, gate, doneAction:2); Out.ar(out, sig * amp); }).add; ) ( // define a simple pattern Pbind( \instrument, \bip, \degree, Pseq([0, 2, 3], inf), \dur, Pseq([1, 2], inf) ).play; ) |
The sound will be generated fine, but the problem is that the doneAction and sustain value in Env.linen result in the Synth instance being freed before Pbind does it. So when Pbind does tries to free it, it’s already gone, it doesn’t exist anymore.
I asked nice SC people on SC FB group and the answer led me to understand that there’s a good use of\sustain
parameter in Pbind, which deals with exactly that. So to properly control sustain time, an example shows how it can be done:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
( SynthDef(\beeps, { arg amp = 0.8, gate = 1, sustain = 1, release = 0.3, freq = 440; var sig, env; env = Env.linen(attackTime:0.01, sustainTime: sustain, releaseTime: release); sig = Pulse.ar([freq,freq*0.001], 0.5) * amp * EnvGen.kr(env, gate, doneAction:2); Out.ar(0, sig * amp); }).add ) ( Pdef(\beepsin, Pbind( \instrument, \beeps, [\degree, \dur], Pseq([[0, 0.5], [2, 0.1], [3, 0.1], [2, 0.1], [5, 1], [Rest, Rest]], inf), //\sustain, 0.1, //\legato, 0.05, \release, 0.1, \amp, 0.1 )); ) Pdef(\beepsin).play; |
It seems like the most important part is that the SynthDef has a sustain argument. Pbind will calculate sustain from \dur
so that it doesn’t even have to be defined in the Pbind.
There’s a nice thing used above, which I was looking for a while – how to defined note and it’s duration in pairs instead of on separate lines for each parameter: [\degree, \dur]
and what follows is a list of pairs.
instagram: A new release via Kamizdat is coming out today
instagram: Acid lines on delay, fifths and more
Interface Fractures IF4Q
Interface Fractures is a series of audiovisual explorations Luka Prinčič has been developing in collaboration with the Slovenian Cinematheque since 2013. The series’ cinema-sound episodes share the same method and format: an immersive situation in the darkness of the cinema, the use of digital and open source tools for generating image and sound, a dichotomy between fixed composition and improvisation in time, a tendency for abstraction out of which fragments of the concrete arise, and playing with the synchronisation of sound and image. Although the creation process includes an examination of the contemporary human condition, conventional narration is not so important in the created performances and remains in the background. Interface Fractures is thus a fragmented excursion into abstract sound and the moving picture. Their synthetic integration emerges from the process of searching for fractures and subjectivities in a seeming impenetrability of polished and polarised interfaces – mediated, inter-machinic, interhuman.
Collaborators
Author: Luka Prinčič
Support
Production: Emanat – (emanat.si/en/production/luka-princic–interface-fractures-if4q)
Co-production: Slovenska kinoteka
Financial support: City Municipality Ljubljana, Ministry of Culture RS
Technical
Technical rider -> https://goo.gl/VAIHtq
Events
, MENT, Pritličje, Ljubljana, SI
Video
linux: auto-login
There’s couple of ways how to setup auto-login on linux. This one is geeky and not very user-friendly, but might come handy to somebody. This is on Ubuntu Linux 14.04.1/trusty with graphical login/desktop manager (lightdm) disabled.
install mingetty
1 |
$ sudo apt-get install mingetty |
edit /etc/init/tty1.conf
so that it looks like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# tty1 - getty # # This service maintains a getty on tty1 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[2345] and ( not-container or container CONTAINER=lxc or container CONTAINER=lxc-libvirt) stop on runlevel [!2345] respawn #exec /sbin/getty -8 38400 tty1 exec /sbin/mingetty --autologin <YOUR USERNAME HERE> tty1 |
The most important part are the last three lines. Change username to what you have.
Edit your ~/.profile and add at the bottom:
1 2 3 |
if [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then startx fi |
Reboot and you should end up in your X session.
Sources:
askubuntu.com/quest…unning-upstart
https://wiki.archlinux.org/index.php/Xinit
instagram: a little plan
instagram: December – such a suckoh
supercollider: easy beats with patterns
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
///////////////// some easy beats, yo! ( // somekind of highhat - enveloped whitenoise SynthDef(\highhat, { | amp,freq,release | var env, sig; env = Env.perc(0.001,release); sig = WhiteNoise.ar(EnvGen.kr(env, doneAction: 2)); sig = HPF.ar(sig, freq:freq); sig = Splay.ar(sig); sig = sig * amp; Out.ar(0,sig); }).add; // bass kick SynthDef(\kicker, { var sig, env; env = Env.perc(0.01, 2, 1); sig = LFPar.ar( freq:50, mul: EnvGen.kr(env, doneAction: 2) ) * 10; sig = Splay.ar(sig.distort * 0.5); Out.ar(0, sig); }).add; ~oscBridge = NetAddr.new("127.0.0.1", 12000); h = Pbind( \dur, Pseq([ 4, 4, 4, 4, 2, 2, 4, 4, 2, 1, 1 ], inf), \instrument, \highhat, \amp, Pseq([ 1, 0.9, 1, 0.5, 1, 0.9, 0.2, 0.9, 1, 0.6, 1 ], inf), \freq, Pseq([9000,8000,7000,1000], inf), \release, Pseq([0.07, 0.09, 0.06, 0.2, 1], inf), ).play(quant:32); k = Pbind( \instrument, \kicker, \dur, 32 ).play(quant:32); TempoClock.default.tempo = 100/6; ) //////////////////////////////////////////////////////////////////////////// |
minor random bliss in two
Learning Patterns in SuperCollider, here’s a little lullaby:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
( SynthDef(\param, { arg freq = 100, sustain, amp; var sig; sig = LFPar.ar(freq: freq, mul: EnvGen.kr(Env.perc(0, sustain, 0.5), doneAction:2) * amp); sig = Splay.ar(sig); Out.ar(0, sig); }).add; e = Pbind( \midinote, Prout({ var tone0, tone1, tone2, interval, freq0, delta; loop { tone0 = rrand(0,11); interval = rrand(2,4); tone1 = Scale.minor(\pythagorean).at(tone0) + [0,12,24].choose + 0.07; tone2 = Scale.minor(\pythagorean).at(tone0 + interval) + [0,12,24].choose; freq0 = [tone1,tone2]+48; postln(freq0); freq0.yield; } }), \dur, Prand([1,2,4,8,12,16,4,6,8], inf), \instrument, \param, \amp, 0.5, \sustain, 1, ).play(quant:1); // returns an EventStream TempoClock.default.tempo = 200/60; ) |