The Conditional Orchestra
The Conditional Orchestra is a web app that converts the weather data of a given location into music. The location can either be where you are now or a place of your choice. The music is generated by taking different aspects of the weather, which are mostly pieces of numeric data, and applying them to a large range of musical facets such as instrument type, pitch, volume and duration.
Comments, suggestions and feedback welcome. Please DM me on Twitter.
Run (in this directory):
This ensures the all the node packages are installed. Follow the NPM guide to install new packages.
Before running any of the standard tasks be sure to run
gulp templates which will precompile the handlebars template ready for use in the app.
Gulp is used to bundle the app. It runs in two modes:
production. To run in development mode run
to run in production mode simply add the production flag
Gulp will create, clean and manage the
Styles and scripts will be processed and watched for changes. Scripts will be linted.
Notes on tools
This is registered in an inline script on the index page and refers to a file that is minfied and copied to the root when the Gulp task
script is run.
The appliction is expected to work in all modern browsers. In browsers that don't support Web Audio, such as IE11 (and below) the app will not run and present an error message. On some devices the audio playback may glitch. In most cases this is due to the device processor not being fast enough to handle the real-time calculations. It is recommended that the app be used on the most powerful device possible.
See the modules audio-getters.js, coords-form.js and audio-visual.js for most of the app logic
master. Develop's updates include installation of darkskyjs-lite
Write unit tests for coords-form, audio-visual, audio-getters and audio-helpers
Consider using windy.com map rather than text input
Consider reducing the max number of pad notes (for performance and sonic overcrowding purposes). If implementing thisx, consider making a second longNote that uses a note from within the scale but beyond the highest index of the numPadNotes
Harp could be something other than humidity - humidity should be evoked by noise
Consider using a state manager and one master sound object
Create 'Add to home screen' button
Refactor the display fns so that they're chained
After stop fade out is louder than normal playback, firefox only - caused by the filter not being applied.
Sequencer onStep only counts the steps in one single pass rather than the loop. No longer relevant
- sketch.random (number)
- sketch.random (index in array)
. ├── dist (created and managed by Gulp) ├── audio ├── fonts ├── img ├── node_modules (created and managed by NPM) ├── src │ ├── scripts │ └── styles ├── .jscsrc ├── .jshintrc ├── favicon.ico ├── gulpfile.js │ ├── tasks │ ├── utilities │ ├── config.js │ └── index.js ├── humans.txt ├── index.html ├── package.json ├── README.md └── releasenotes.md