aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 6ddaf360348885fae84a48ec0de78a2de0762cdc (plain)
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
53
random241
=========

Python scripts for harvesting entropy from a random number generator (with an Americium 241 sample mounted over a webcam sensor as its source).
This repository also features an OSC enabled SuperCollider [random241.scd](https://raw2.github.com/davezerave/random241/master/SuperCollider/random241.scd) script that can interface with it and a rudimental python script [read_gpio.py](https://raw2.github.com/davezerave/random241/master/remote_control/read_gpio.py) (made for BeagleBone Black) that can be used to further modify effects on the generated sounds in a live setup.

Requirements:
-------------

For the [entropy_harvester](https://github.com/davezerave/random241/tree/master/entropy_harvester) you'll need the following packages and dependencies installed (names may vary depending on your distribution!):
- python2
- python2-numpy
- python2-pyliblo
- opencv
- liblo

For the [SuperCollider](https://github.com/davezerave/random241/tree/master/SuperCollider) script you'll need [SuperCollider](http://supercollider.github.io/) installed (duh!).

For the [remote_control](https://github.com/davezerave/random241/tree/master/remote_control) you'll need the following:
- python2
- python2-pyliblo
- [AdaFruit_BBIO](https://github.com/adafruit/adafruit-beaglebone-io-python)
- liblo

If you want to build your own random number generator from scratch, you can follow my little [howto guide](https://github.com/davezerave/random241/tree/master/howto) (it's far from being perfect though).

Features:
-----

As this is an ongoing project and was executed primarily within the boundaries of my course work for [Audiovisual Programming - Embedded Systems](https://github.com/redFrik/udk10-Embedded_Systems) led by Fredrik Olofsson at UDK Berlin in 2013/ 2014, bugs can be expected (especially if you set up your own device!) and the reporting of those is very welcome!

Currently the list of features for the [entropy_harvester](https://github.com/davezerave/random241/tree/master/entropy_harvester) is as follows:
- Grabbing of bright areas (aka regions of interest in pixels) above a certain threshold from a webcam
- Calculation of mean x/y values from regions of interest and conversion to float range
- Sending of time, x and y values via OSC to predefined host and port

The [SuperCollider](https://github.com/davezerave/random241/tree/master/SuperCollider) script is able to:
- Receive OSC messages for the creation of SynthDefs with certain pitch, amplitude, length and loop time, according to coordinates and time sent.
- Receive OSC messages for manipulation of post processing SynthDefs (FreeVerb for now).
- Ignore OSC messages after a certain amount of SynthDefs created.
- Release (all) SynthDefs after a certain amount of SynthDefs is reached.

The [remote_control](https://github.com/davezerave/random241/tree/master/remote_control) script is able to:
- Read GPIO data from BeagleBone Black (P9_39-42 for now)
- Send sensor data as OSC message to predefined host and port

TODOs:
------
- Externalization of settings for [remote_control](https://github.com/davezerave/random241/tree/master/remote_control) and [entropy_harvester](https://github.com/davezerave/random241/tree/master/entropy_harvester)
- Further settings and advancements in sound for the SuperCollider script
- Performance enhancements for entropy_harvester using different search algorithm (maybe even switch to C++)
- Detection of false positives (pixel errors) on wacky cameras