Saturday, January 25, 2014

Xmonad - Random Background at Interval

Make a file randombackgroundatinterval:

while x=0;do find $1 | grep 'jpg\|png' | shuf | head -n 1 | xargs -i xloadimage -border black -onroot -fullscreen '{}'; sleep $2; done

run it with the top directory for images and how often you want them to change.

./randombackgroundatinterval /home/<YOUR USER NAME>/Pictures 3

Would pick a random jpg or png from the /home/<YOUR USER NAME>/Pictures directory, and its subs and display a new one every three seconds.

Tuesday, January 7, 2014


Current script for starting Music

echo "Spawning jackd -d alsa"
jackd -d alsa &
echo "Waiting For Jack to Wake Up...."
sleep 3
echo "Spawning a2jmidid -e"
a2jmidid -e &
sleep 3
echo "Spawning qjacktl"
qjackctl &
echo "Spawning qsynth"
qsynth &
echo "Finished"

Current script for Starting Midi listener

from bottle import run, route, request
import alsaseq     
from time import sleep

alsaseq.client('WebMIDI', 1,1, False)#
IP = ""
VOICE = 127

notes = []

def save_note(note, duration, channel):

def play_note(note, duration, channel):   
    alsaseq.output( (6, 1, 0, 1, (5, 0), (0, 0), (0, 0), (channel,
int(note), 127, 0, int(duration))) )

def playback():
    for note in notes:

def midiclear():
    notes[:] = []

def midiplayback():

def midi():
        note = int(request.query['note'])
        duration = int(request.query['duration'])
        channel = int(request.query['channel'])
        save_note(note, duration, channel)
        play_note(note, duration, channel)
        return {"data":{"note":note,"duration":duration,"status":alsaseq.status()}}

run(host=IP, port=8080)

Current html page:
    <script src="js/jquery-1.9.1.js"></script>
    <script src="js/jquery-ui-1.10.3.custom.js"></script>
    <link href="css/sunny/jquery-ui-1.10.3.custom.css" rel="stylesheet">
    <meta name='viewport' content='width=device-width, initial-scale=1.0, user-scalable=no'>
    <script type="text/javascript" src="midi.js"></script>
        div.normal,div.upper,div.lower,#playback,#clear,#channel,#channel_up,#channel_down {height:60px;width:80px;position:
text-align: center;
display: table-cell;}

        div.lower {background-color:blue}
        div.upper {background-color:green}
        div.bnote {background-color:black; color:white}

        div.pinky.lower {top:140px}
        div.pinky.normal {top:80px}
        div.pinky.upper {top:20px}

        div.ring.lower, div.middle.lower {top:120px}
        div.ring.normal, div.middle.normal {top:60px}
        div.ring.upper , div.middle.upper  {top:0px}

        div.pointer.lower {top:130px}
        div.pointer.normal {top:70px}
        div.pointer.upper  {top:10px}

        div.thumb.lower {top:420px}
        div.thumb.normal {top:360px}
        div.thumb.upper  {top:300px}

        div.b  {left:900px} {left:800px}
        div.a {left:700px} {left:600px}
        div.g {left:620px}
        div.fs {left:520px}
        div.e {left:300px}
        div.f {left:400px}
        div.ds {left:300px}
        div.d {left:200px}
        div.cs {left:100px}
        div.c {left:0px}


        <div class='lower pinky c' id='c3' ></div>
        <div class='normal pinky c' id='c4' ><p>C</p></div>
        <div class='upper pinky c' id='c5' ></div>

        <div class='lower ring cs' id='cs3' ></div>
        <div class='normal ring cs bnote' id='cs4' ><p>C#</p></div>
        <div class='upper ring cs' id='cs5' ></div>   

        <div class='lower middle d' id='d3' ></div>
        <div class='normal middle d' id='d4' ><p>D</p></div>
        <div class='upper middle d' id='d5' ></div>   

        <div class='lower pointer ds' id='ds3' ></div>
        <div class='normal pointer ds bnote' id='ds4' ><p>D#</p></div>
        <div class='upper pointer ds' id='ds5' ></div>   

        <div class='lower thumb e' id='e3' ></div>
        <div class='normal thumb e' id='e4' ><p>E</p></div>
        <div class='upper thumb e' id='e5' ></div>   

        <div class='lower thumb f' id='f3' ></div>
        <div class='normal thumb f' id='f4' ><p>F</p></div>
        <div class='upper thumb f' id='f5' ></div>   

        <div class='lower thumb fs' id='fs3' ></div>
        <div class='normal thumb fs bnote' id='fs4' ><p>F#</p></div>
        <div class='upper thumb fs' id='fs5' ></div>   

        <div class='lower thumb g' id='g3' ></div>
        <div class='normal thumb g' id='g4' ><p>G</p></div>
        <div class='upper thumb g' id='g5' ></div>   

        <div class='lower pointer gs' id='gs3' ></div>
        <div class='normal pointer gs bnote' id='gs4' ><p>G#</p></div>
        <div class='upper pointer gs' id='gs5' ></div>   

        <div class='lower middle a' id='a3' ></div>
        <div class='normal middle a' id='a4' ><p>A</p></div>
        <div class='upper middle a' id='a5' ></div>   

        <div class='lower ring as' id='as3' ></div>
        <div class='normal ring as bnote' id='as4' ><p>A#</p></div>
        <div class='upper ring as' id='as5' ></div>   

        <div class='lower pinky b' id='b3' ></div>
        <div class='normal pinky b' id='b4' ><p>B</p></div>
        <div class='upper pinky b' id='b5' ></div>   

        <div id='playback'><p>Playback</p></div>
        <div id='clear'><p>Clear</p></div>
        <div id='channel'><p id='channel_label'> 0 </p></div>
        <div id='channel_up'><p>+</p></div>
        <div id='channel_down'><p>-</p></div>

Current Javascript:
    var ip = "", channel = 0, channel_label;
    function update_channel(){
    function up_channel(){
            channel += 1;
    function down_channel(){
            channel -= 1;
    function play_note(note){
        $.get("http://"+ip+"/midi?note="+note+"&duration=100&channel="+channel, function(){});   
        var offset = 12,i = 0, notes =[
        channel_label = $("#channel_label");
        $("#channel_up").click(function(){ up_channel();        });
        $("#channel_down").click(function(){ down_channel();        });
            var item = 60+i, note = notes[ni];

Screen shot: