EVR.include("account/form/Form.js");
EVR.Account = function(evr)
{
   EVR.Pop_Up.call(this, evr.field, ACCOUNT_WIDTH, ACCOUNT_HEIGHT);
   this.evr = evr;
   this.forms = new EVR.Account.Form.Forms(this);
   this.set_color(ACCOUNT_BACKGROUND);
   this.add_cancel_button();
   this.forms.append();
}
EVR.Account.prototype = new EVR.Pop_Up;
EVR.Account.prototype.add_cancel_button = function()
{
   var element = document.createElement("button");
   var current = this;
   element.innerHTML = ACCOUNT_BUTTON_TEXT;
   element.onclick =
      function() {
	 current.evr.unload_account();
      };
   this.element.appendChild(element);
   this.button = element;
}
EVR.Account.prototype.append = function()
{
   EVR.Pop_Up.prototype.append.call(this);
   var button = this.button;
   setTimeout(function() { button.focus() }, 100);
}
EVR.Account.prototype.remove = function()
{
   EVR.Pop_Up.prototype.remove.call(this);
   this.forms.reset();
}
EVR.Account.prototype.toString = function()
{
   return "[object EVR.Account]";
}
<?php
namespace account;
require_once "get_user_path.php";
require_once "add_account.php";
$GLOBALS["HASH_FILE_NAME"] = "hash";
$GLOBALS["EMAIL_ADDRESS_FILE_NAME"] = "email";
$GLOBALS["ADDRESSES_FILE_NAME"] = "addresses";
$GLOBALS["GHOSTS_DIRECTORY"] = "ghosts/";
function add_user_account($name, $password, $email_address)
{
   $root = create_directory(find_users_root(), $name);
   store_password($root, $password);
   store_email_address($root, $email_address);
   create_addresses_file($root);
   copy_history_file($root);
   copy_expert_file($root);
   copy_progress_file($root);
   copy_ghost_directory($root);
}
function store_password($root, $password)
{
   $path = create_file($root, $GLOBALS["HASH_FILE_NAME"]);
   $hash = hash_password($password);
   file_put_contents($path, $hash . "\n");
}
function hash_password($password)
{
   return crypt($password, generate_salt());
}
function generate_salt()
{
   return chr(rand(65, 90)) . rand(0, 9);
}
function store_email_address($root, $email_address)
{
   $path = create_file($root, $GLOBALS["EMAIL_ADDRESS_FILE_NAME"]);
   file_put_contents($path, $email_address . "\n");
}
function create_addresses_file($root)
{
   create_file($root, $GLOBALS["ADDRESSES_FILE_NAME"]);
}
function copy_source($name, $root)
{
   $source = get_user_path() . $name;
   if (is_dir($source))
   {
      $destination = $root . $name;
      mkdir($destination);
      chmod($destination, $GLOBALS["DIRECTORY_PERMISSIONS"]);
      foreach (scandir($source) as $file_name)
      {
         if ($file_name[0] != ".")
         {
            $path = $destination . $file_name;
            copy_and_set_permissions($source . $file_name, $path);
         }
      }
   }
   else if (file_exists($source))
   {
      copy_and_set_permissions($source, $root . $name);
   }
}
function copy_and_set_permissions($source, $destination)
{
   copy($source, $destination);
   chmod($destination, $GLOBALS["FILE_PERMISSIONS"]);
}
function copy_history_file($root)
{
   copy_source($GLOBALS["HISTORY_FILE_NAME"], $root);
}
function copy_expert_file($root)
{
   copy_source($GLOBALS["EXPERT_FILE_NAME"], $root);
}
function copy_progress_file($root)
{
   copy_source($GLOBALS["PROGRESS_FILE_NAME"], $root);
}
function copy_ghost_directory($root)
{
   copy_source($GLOBALS["GHOSTS_DIRECTORY"], $root);
}
<?php
namespace account;
require_once "get_user_path.php";
$GLOBALS["CODE_FILE_NAME"] = "code";
function verify_temporary_credentials($id, $code)
{
   $path = find_temp_users_root() . $id . "/";
   if (is_dir($path))
   {
      if (match_codes($path, $code))
      {
         return true;
      }
   }
   return false;
}
function match_codes($root, $submitted_code)
{
   $existing_code = trim(file_get_contents($root . $GLOBALS["CODE_FILE_NAME"]));
   return $submitted_code == $existing_code;
}
<?php
namespace account;
$GLOBALS["FILE_PERMISSIONS"] = 0660;
$GLOBALS["DIRECTORY_PERMISSIONS"] = 0770;
$GLOBALS["HISTORY_FILE_NAME"] = "history.gz";
$GLOBALS["EXPERT_FILE_NAME"] = "expert";
$GLOBALS["PROGRESS_FILE_NAME"] = "progress";
function create_file($root, $name)
{
   $path = $root . $name;
   touch($path);
   chmod($path, $GLOBALS["FILE_PERMISSIONS"]);
   return $path;
}
function create_directory($root, $name)
{
   $saved = umask(0);
   $path = "$root$name/";
   mkdir($path, $GLOBALS["DIRECTORY_PERMISSIONS"]);
   umask($saved);
   return $path;
}
function create_history_file($root)
{
   create_file($root, $GLOBALS["HISTORY_FILE_NAME"]);
}
function create_expert_file($root)
{
   create_file($root, $GLOBALS["EXPERT_FILE_NAME"]);
}
function initialize_progress_file($root)
{
   $path = create_file($root, $GLOBALS["PROGRESS_FILE_NAME"]);
   file_put_contents($path, "0\n");
}
<?php
namespace account;
require_once "get_user_path.php";
function user_exists($name)
{
   return strlen($name) && is_dir(build_user_path($name));
}
<?php
namespace account;
require_once "get_user_path.php";
require_once "add_account.php";
$GLOBALS["ID_LENGTH"] = 7;
$GLOBALS["CODE_LENGTH"] = 10;
$GLOBALS["FILE_PERMISSIONS"] = 0660;
$GLOBALS["CODE_FILE_NAME"] = "code";
$GLOBALS["PROGRESS_FILE_NAME"] = "progress";
$GLOBALS["HISTORY_FILE_NAME"] = "history.gz";
$GLOBALS["EXPERT_FILE_NAME"] = "expert";
function add_temporary_account()
{
   $temp_path = find_temp_users_root();
   $id = build_id($temp_path);
   $root = create_directory($temp_path, $id);
   $code = store_code($root);
   initialize_progress_file($root);
   create_history_file($root);
   create_expert_file($root);
   add_temporary_cookie($id, $code);
   return $id;
}
function build_id($root)
{
   if (!is_dir($root))
   {
      mkdir($root, 0770);
   }
   $ids = scandir($root);
   $next = intval($ids[count($ids) - 1]) + 1;
   return str_pad($next, $GLOBALS["ID_LENGTH"], "0", STR_PAD_LEFT);
}
function store_code($root)
{
   $code = generate_code();
   $path = create_file($root, $GLOBALS["CODE_FILE_NAME"]);
   file_put_contents($path, $code . "\n");
   return $code;
}
function generate_code()
{
   $code = "";
   for ($ii = 0; $ii < $GLOBALS["CODE_LENGTH"]; $ii++)
   {
      $code .= chr(rand(65, 90));
   }
   return $code;
}
function add_temporary_cookie($id, $code)
{
   $expiration = time() + 30 * 24 * 60 * 60;
   $path = "/";
   setcookie("id", $id, $expiration, $path);
   setcookie("code", $code, $expiration, $path);
}
216.73.216.176
216.73.216.176
216.73.216.176
 
September 13, 2013

from array import array
from time import sleep

import pygame
from pygame.mixer import Sound, get_init, pre_init

class Note(Sound):

    def __init__(self, frequency, volume=.1):
        self.frequency = frequency
        Sound.__init__(self, self.build_samples())
        self.set_volume(volume)

    def build_samples(self):
        period = int(round(get_init()[0] / self.frequency))
        samples = array("h", [0] * period)
        amplitude = 2 ** (abs(get_init()[1]) - 1) - 1
        for time in xrange(period):
            if time < period / 2:
                samples[time] = amplitude
            else:
                samples[time] = -amplitude
        return samples

if __name__ == "__main__":
    pre_init(44100, -16, 1, 1024)
    pygame.init()
    Note(440).play(-1)
    sleep(5)

This program generates and plays a 440 Hz tone for 5 seconds. It can be extended to generate the spectrum of notes with a frequency table or the frequency formula. Because the rewards in Send are idealized ocean waves, they can also be represented as tones. Each level has a tone in its goal and a tone based on where the player's disc lands. Both play at the end of a level, sounding harmonic for a close shot and discordant for a near miss. The game can dynamically create these tones using the program as a basis.

I'm also building an algorithmically generated song: Silk Routes (Scissored). Here is an example of how it sounds so far.