User:Fabien Labeyrie/Wifi Orchestra: Difference between revisions

From XPUB & Lens-Based wiki
No edit summary
No edit summary
 
(25 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Unstandingstill DJ ==
[[Category:prototyping]]
[[Category:2011_P1.01]]
__NOTOC__
__NOEDITSECTION__


'''Description'''
<div style="width: 600px; font-family:Arial">
Connected people are always physically revolving around us, and we mostly don't interact with them. The following lines of codes offer the possibility to play music with those people, using their Wifi MAC adress as a notation ressource.   
==<span style="color:#0B0080">Wifi Orchestra</span>==
<hr style="height:5px; margin-top:-15px; background-color:#FFF">
<br />


The result is an collective music played with strangers, as anonymous as the people that usually dance in a club.  
While people are allowed to go online anywhere and contacting the other end of the world anytime thanks to wireless connexion, they don't really interact with internet users physically revolving around them.


The following lines of code get anyone nearby participating in a never-ending concert, where the connexion data of everyone are mixed together in cyber jam session.
<br />


'''Structure'''
==<div style="margin-top:30px">How does it work ?</div>==
<hr style="height:5px; margin-top:-15px; background-color:#FFF">


*We are checking the wifi connexions around.  
=====Technologies involved=====
*We convert the MAC adress value into a following of numbers.  
[http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29 Bash scripting] / [http://www.undef.org.uk/code/midge/ Midge]
*This is then converted into music notes.
<br />


'''Source'''
=====Steps=====
<div style="margin-left:-55px; margin-top:10px;">
# &nbsp;&nbsp;&nbsp;&nbsp;We are checking the wifi connexions around.
# &nbsp;&nbsp;&nbsp;&nbsp;After getting the data, the MAC adresses are combined together resulting a series of numbers.
# &nbsp;&nbsp;&nbsp;&nbsp;Those numbers are then converted into music notes, based on a pentatonic scale.
</div>
<br />


This is the list of connexion around :  
==<div style="margin-top:30px">Source code</div>==
<hr style="height:5px; margin-top:-15px; background-color:#FFF">
 
All of this is launched by a single line in the shell :
<source lang="bash">
sudo iwlist eth1 scan | sed -f convertAdress.sed | bash dispatchNotes.sh
</source>
<br />
 
But there is some under cover coding behind that. <br />
We need first to scan the waves around with ''iwlist scan wlan0''.
Here comes the list of connexions around :  


<source lang="text">
<source lang="text">
Line 40: Line 65:
                     ESSID:"ThomsonAC6D8D"
                     ESSID:"ThomsonAC6D8D"
                     Protocol:IEEE 802.11bg
                     Protocol:IEEE 802.11bg
                     Mode:Master
                     ...
                    Frequency:2.437 GHz (Channel 6)
</source>
                    Encryption key:on
 
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
<br/ >
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
We are then using a ''sed'' script in order to keep the relevant informations only, in other words the numbers from each connexion's address.
                              48 Mb/s; 54 Mb/s
   
                    Quality=67/100  Signal level=-60 dBm 
[''convertAdress.sed'']
                    IE: WPA Version 1
 
                        Group Cipher : TKIP
<source lang="bash">
                        Pairwise Ciphers (2) : CCMP TKIP
# This will only output the addresses lines
                        Authentication Suites (1) : PSK
/Address/!d
                    IE: IEEE 802.11i/WPA2 Version 1
 
                        Group Cipher : TKIP
# This will keep the numbers only
                        Pairwise Ciphers (2) : CCMP TKIP
s/[^0123456789]//g
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 692ms ago
          Cell 03 - Address: 00:18:F6:EB:08:9E
                    ESSID:"jacobpieter"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=33/100  Signal level=-80 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 216ms ago
          Cell 04 - Address: 00:24:FE:01:01:6E
                    ESSID:"FRITZ!Box Fon WLAN 7170"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=61/100 Signal level=-64 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 224ms ago
          Cell 05 - Address: 00:23:F8:B8:80:48
                    ESSID:"ADSL-WiFi"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.442 GHz (Channel 7)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 22 Mb/s; 24 Mb/s
                              36 Mb/s; 48 Mb/s; 54 Mb/s
                    Quality=37/100  Signal level=-78 dBm 
                    Extra: Last beacon: 1644ms ago
          Cell 06 - Address: 00:23:AB:BF:F9:60
                    ESSID:"eduroam"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:6 Mb/s; 9 Mb/s; 11 Mb/s; 12 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Quality=80/100  Signal level=-49 dBm 
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (2) : 802.1x Proprietary
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (2) : 802.1x Proprietary
                    Extra: Last beacon: 100ms ago
          Cell 07 - Address: 00:23:AB:BF:6C:80
                    ESSID:"eduroam"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:6 Mb/s; 9 Mb/s; 11 Mb/s; 12 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Quality=73/100  Signal level=-55 dBm 
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (2) : 802.1x Proprietary
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (2) : 802.1x Proprietary
                    Extra: Last beacon: 1588ms ago
          Cell 08 - Address: 00:1F:33:B6:C4:6A
                    ESSID:"NETGEAR"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=58/100  Signal level=-66 dBm 
                    Extra: Last beacon: 100ms ago
          Cell 09 - Address: 00:0C:F6:47:67:8E
                    ESSID:"Sitecom47678E"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 11 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=44/100  Signal level=-74 dBm 
                    Extra: Last beacon: 612ms ago
          Cell 10 - Address: 00:14:C1:24:69:12
                    ESSID:"00ROBOTICS"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.472 GHz (Channel 13)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 9 Mb/s; 11 Mb/s
                              6 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=42/100  Signal level=-75 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                      Preauthentication Supported
                    Extra: Last beacon: 492ms ago
          Cell 11 - Address: 02:1E:69:EA:6B:E3
                    ESSID:"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=48/100  Signal level=-72 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 220ms ago
          Cell 12 - Address: 00:23:F8:1E:18:26
                    ESSID:"ADSL-WiFi"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.442 GHz (Channel 7)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 22 Mb/s; 24 Mb/s
                              36 Mb/s; 48 Mb/s; 54 Mb/s
                    Quality=29/100  Signal level=-82 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                      Preauthentication Supported
                    Extra: Last beacon: 2656ms ago
          Cell 13 - Address: 00:23:54:A8:32:3C
                    ESSID:"Tele2-1"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=33/100  Signal level=-80 dBm 
                    Extra: Last beacon: 4524ms ago
          Cell 14 - Address: 00:01:E3:C0:91:52
                    ESSID:"SX551C09152"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 9 Mb/s; 11 Mb/s
                              6 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=50/100  Signal level=-71 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                      Preauthentication Supported
                    Extra: Last beacon: 96ms ago
          Cell 15 - Address: 48:5B:39:71:B9:E9
                    ESSID:"Tele-modem"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=61/100  Signal level=-64 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 116ms ago
          Cell 16 - Address: 00:25:9C:F9:D7:34
                    ESSID:"CasaEu"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=35/100  Signal level=-79 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : TKIP CCMP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                      Preauthentication Supported
                    Extra: Last beacon: 748ms ago
          Cell 17 - Address: 00:23:AC:58:01:80
                    ESSID:"eduroam"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:6 Mb/s; 9 Mb/s; 11 Mb/s; 12 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Quality=44/100  Signal level=-74 dBm 
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (2) : 802.1x Proprietary
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (2) : 802.1x Proprietary
                    Extra: Last beacon: 720ms ago
          Cell 18 - Address: 00:1E:69:EA:6B:E2
                    ESSID:"UPC008552"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=48/100  Signal level=-72 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 220ms ago
          Cell 19 - Address: B4:82:FE:8D:2A:9A
                    ESSID:"Thomson8D2A9A"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.412 GHz (Channel 1)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=65/100  Signal level=-61 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 6188ms ago
          Cell 20 - Address: 00:06:5A:80:F8:53
                    ESSID:"Rotterdam Draadloos"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.457 GHz (Channel 10)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 9 Mb/s; 11 Mb/s
                              6 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=33/100  Signal level=-80 dBm 
                    Extra: Last beacon: 6512ms ago
          Cell 21 - Address: 00:06:5A:40:F8:53
                    ESSID:""
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.457 GHz (Channel 10)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 9 Mb/s; 11 Mb/s
                              6 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=33/100  Signal level=-80 dBm 
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 14392ms ago
          Cell 22 - Address: 00:24:B2:53:4E:3C
                    ESSID:"NorthernLightsX"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.422 GHz (Channel 3)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=62/100  Signal level=-63 dBm 
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 6676ms ago


# Each number is then converted into note
s/00//g
s/0/c /g
s/1/c /g
s/2/e- /g
s/3/e- /g
s/4/f /g
s/5/f /g
s/6/g /g
s/7/g /g
s/8/b- /g
s/9/b- /g
</source>
</source>


'''Output example'''
<br />
Next is to [http://en.wikipedia.org/wiki/Pipeline_%28software%29 pipe] the result in a shell script which already contains the essential Midge language structure to play sound.
 
[''dispatchNotes.sh'']
 
<source lang="bash">
# The cat stuff is a trick to make bash avoid this part
cat <<END
 


[[File:sortieDJ.ogg]]
@head {
    \$time_sig 3/4
    \$tempo 45
}
@body {
    @channel 1 {
        \$patch 99
        \$octave 4
        \$length 24
\$reverb 100
%repeat 100 {
END


'''Code'''
# This part will be interpreted by bash which will look for the notes
iAdd="0"
while read line;
do
if (("$iAdd" == "0" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "1" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "2" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "3" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "4" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "5" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "6" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "7" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "8" )); then
echo $line
iAdd=$[$iAdd + 1]
elif (("$iAdd" == "9" )); then
echo $line
iAdd=$[$iAdd + 1]


[wrapper.sh]
else
iAdd="-1"
fi
done 


<source lang="bash">
Contenu du script
</source>


[filter.sed]
cat <<END
}
}


''Comment''
}


<source lang="bash">
END
Contenu du bash
</source>
</source>
<br />


[run.sh]
==<div style="margin-top:30px">Output</div>==
<hr style="height:5px; margin-top:-15px; background-color:#FFF">


''Comment''
[[File:sortieDJ.ogg]]
<br />


<source lang="bash">
==<div style="margin-top:30px">Work in progress</div>==
Contenu du base
<hr style="height:5px; margin-top:-15px; background-color:#FFF">
</source>
 
For now we are only dealing with the ''MAC adresses'', but we could go further by dealing with the ''name'' of the connexions and the ''signal strength''. Those new data would be use to determine the tempo of the music and the instruments. Each person connected would then be taken as a new musical line.
 
</div>

Latest revision as of 22:58, 6 April 2011



Wifi Orchestra



While people are allowed to go online anywhere and contacting the other end of the world anytime thanks to wireless connexion, they don't really interact with internet users physically revolving around them.

The following lines of code get anyone nearby participating in a never-ending concert, where the connexion data of everyone are mixed together in cyber jam session.

How does it work ?


Technologies involved

Bash scripting / Midge

Steps
  1.     We are checking the wifi connexions around.
  2.     After getting the data, the MAC adresses are combined together resulting a series of numbers.
  3.     Those numbers are then converted into music notes, based on a pentatonic scale.


Source code


All of this is launched by a single line in the shell :

sudo iwlist eth1 scan | sed -f convertAdress.sed | bash dispatchNotes.sh


But there is some under cover coding behind that.
We need first to scan the waves around with iwlist scan wlan0. Here comes the list of connexions around :

eth1      Scan completed :
          Cell 01 - Address: 00:23:AB:BF:FB:C0
                    ESSID:"eduroam"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Encryption key:on
                    Bit Rates:6 Mb/s; 9 Mb/s; 11 Mb/s; 12 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Quality=76/100  Signal level=-53 dBm  
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (2) : 802.1x Proprietary
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (2) : 802.1x Proprietary
                    Extra: Last beacon: 728ms ago
          Cell 02 - Address: 00:18:F6:F5:97:4F
                    ESSID:"ThomsonAC6D8D"
                    Protocol:IEEE 802.11bg
                    ...


We are then using a sed script in order to keep the relevant informations only, in other words the numbers from each connexion's address.

[convertAdress.sed]

# This will only output the addresses lines
/Address/!d

# This will keep the numbers only
s/[^0123456789]//g

# Each number is then converted into note
s/00//g 
s/0/c /g
s/1/c /g
s/2/e- /g
s/3/e- /g
s/4/f /g
s/5/f /g
s/6/g /g
s/7/g /g
s/8/b- /g
s/9/b- /g


Next is to pipe the result in a shell script which already contains the essential Midge language structure to play sound.

[dispatchNotes.sh]

# The cat stuff is a trick to make bash avoid this part
cat <<END


@head {
    \$time_sig 3/4
    \$tempo 45
}
@body {
 
    @channel 1 {
        \$patch 99
        \$octave 4
        \$length 24
	\$reverb 100
	%repeat 100 {
END

# This part will be interpreted by bash which will look for the notes
iAdd="0"
while read line; 
do 
	if (("$iAdd" == "0" )); then
		 echo $line
		iAdd=$[$iAdd + 1] 
	elif (("$iAdd" == "1" )); then
		echo $line
		iAdd=$[$iAdd + 1] 
	elif (("$iAdd" == "2" )); then
		echo $line
		iAdd=$[$iAdd + 1]
	elif (("$iAdd" == "3" )); then
		echo $line 
		iAdd=$[$iAdd + 1]
	elif (("$iAdd" == "4" )); then
		echo $line
		iAdd=$[$iAdd + 1]
	elif (("$iAdd" == "5" )); then
		echo $line
		iAdd=$[$iAdd + 1]
	elif (("$iAdd" == "6" )); then
		echo $line
		iAdd=$[$iAdd + 1]
	elif (("$iAdd" == "7" )); then
		echo $line
		iAdd=$[$iAdd + 1]
	elif (("$iAdd" == "8" )); then
		echo $line
		iAdd=$[$iAdd + 1]
	elif (("$iAdd" == "9" )); then
		echo $line
		iAdd=$[$iAdd + 1]

	else 
		iAdd="-1"
	fi
done   	


cat <<END
	}
}

}

END


Output


File:SortieDJ.ogg

Work in progress


For now we are only dealing with the MAC adresses, but we could go further by dealing with the name of the connexions and the signal strength. Those new data would be use to determine the tempo of the music and the instruments. Each person connected would then be taken as a new musical line.