Autechno An automated, learning techno music generator Scott "Jerry" Lawrence 17 February 1999 0.0 Index 1.0 Project description 2.0 Elements of the system 2.1 Synthesizer 2.2 Music Tracker 2.3 Genetic Algorithm Controller (GAC) 2.4 User Interface (UI) A.0 Glossary of Terms 1.0 Project description: Autechno is an automatic techno generator. It will learn from the listener what sounds good, and what doesn't, so eventually, it will be able to play music that the listener likes, unassisted. "Techno" is a fairly broad term. It covers many genres of music from Ambient music like Tangerine Dream and Brian Eno up to Trance from The Orb, through Acid Techno as heard at raves. The user should be able to select from different techno music styles and chord sets to produce music that they are in the mood to hear. 2.0 Elements of the system: 2.1 Synthesizer This should be a multi-voice sample player, of at least 32 voices. It should handle all voice processing. Think of this as a midi tone box with a lot of extra features. It will have a "plug-in" system for all voice processing. It will also have the ability to output data to plugins for differing output methods. controlling input ---> sound generation ---> plugin processing ---> output Example Sound Generation sources: sample playback (looped) sample playback (one-shot) FM tone generator Roland 303 simulator Roland 808/909 simulator line-level in speech synthesizer Example Processing plug-ins: volume pan tremolo vibrato apreggio tonal filter reverb / echo chorus pitch bend noise cancellation/generation filter Example Output plug-ins: Audio Output Device (Soundblaster, /dev/audio, etc.) Waveform Data file (.Wav, .Au, etc.) MP3 Encoder / Streamer Real Audio Encoder / Streamer Visualization controller (Cthugha, spectrum displays, etc) 2.2 Music Tracker This is the part of the system that organizes the data from the GAC into synthesizable elements. This will generate Protracker/FastTracker mod files to be output to a file, or sent to the Synthesizer as described above. It is this section that makes the ultimate decision about which samples to use. The GAC might tell this that it wants "Slow strings" or "Distorted kick drum", and the Tracker will figure out which sound patches to tell the Synthesizer to play. It will also organize whether it will talk to the internal Synthesizer or an external MIDI controlled device. 2.3 Genetic Algorithm Controller (GAC) This is the "brains" of the system. It will generate music patterns which it will send to the Tracker. It will also take input from the listener through the User Interface. It will store the like/dislike information in a database called a "Personality File", which can be snapshotted and sent to other listeners. 2.4 User Interface (UI) This is what the listener sees on their screen. This can be command line utilities to interface to the engine, or a graphical interface. The former will allow for changes in the music based on time to occur. The latter will allow the listener to see the current state of the system, and to modify it while the music plays. There should be controls in the interface for: Music Quality: This is the main feedback that the user has with the engine. This, in its minimal form, should consist of three buttons: [ I like this ] [ I dislike this] and [I don't dislike it, but i don't want to hear it now] Sparseness: This controls the density of tones in a pattern. There will be seperate controls for each of the following; Drumkit, Lead, Backing, Bass. By adjusting these, the listener will be able to have complete control of the system. For example, Ambient music would be very sparse, while Jungle techno would not. Tempo: The speed (beats per minute) that the music plays at. Tone Speed: How fast the instruments are. This basically describes the attack speed of the instruments. Aggressive: How rapidly it will change from one pattern to another Very high aggressiveness will end up with chaotic sounding music, very low aggressiveness will sound extremely repeditive. A.0 Glossary of Terms: Appregio A method for playing multiple notes simultaneously by rapidly switching between the notes to be played. Attack The first part of a volume envelope. This is how quickly the instrument gets to full volume once it is triggered Bar The time between major beats in a song. Voice In a synthesizer, this is where one tone will play. Only one tone can play at any time in any channel. This is an internal definition, and would be considered to be at the hardware level on a sound card. Think of this as a person. one person has one voice. They can't do more than that simultaneously with any other voice they can do. In the MIDI world, a synthesizer can have 64 voices, but only output from 16 midi channels. Channel An external definition of where a tone can play. Multiple tones can be played simultaneously in a Channel, internally using multiple voices. Many voices can play out through a single channel. Chord A method for playing multiple notes simultaneously by playng the desired notes in seperate channels. Decay The third part of a volume envelops. This is how quickly the instrument gets back down to zero volume. Instrument A collection of Patches with controlling data (Volume envelope, Panning envelope, etc), sometimes also called "a tone". Listener The end user. This is the person sitting in their couch running the program. They will use the UI to communicate preferences and feedback to the system. Patch A single sound sample set of a single instrument played at a specific tone. Pattern A series of timed notes assembled in a block. This can be any multiple or divisor of a "bar" Pitch-Bend To modify a playing instrument by changing its sample rate while it is playing. Sample Rate the rate at which "samples" will be played back through the synthesizer per second. This is measured in kHz. CDs have a sample rate of 44.1 kHz. Slow sound An instrument with a very long attack on its volume envelope Sustain The second part of a volume envelope. This is the volume that an instrument remains at while the note still plays Tremolo To vary the volume over time. Take a volume knob and turn it up and down rapidly. User See listener. Vibrato To vary the pitch/sample rate over time. Take a record player and switch it from 45 to 33 rapidly.