forked from dedan/sound-evolution
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspecs.tex
136 lines (99 loc) · 3.68 KB
/
specs.tex
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
%
% Specifications
%
% sound evolution project
%
\documentclass[a4paper,12pt,oneside]{article}
\usepackage[utf8x]{inputenc}
\begin{document}
\begin{titlepage}
\begin{center}
{\huge\bf Sound Evolution} \\
\Large
Specifications \\
\vfill
\normalsize
\today \\
\vspace{5em}
Duncan Blythe \\
Mirko Dietrich \\
Stephan Gabler \\
Matthias Gloel \\
Rafael Schultze-Kraft \\
\vspace{2em}
Bernstein Center for Computational Neuroscience Berlin
\end{center}
\end{titlepage}
\tableofcontents
\newpage
\section{Introduction}
The aim of the project is to develop a framework of programs and
libraries that evolve sound or music fragments based upon on a
user-driven fitness function.
\section{System overview}
Sound files are automatically produced by the software using a
description language. An interpreter transforms sound description into
wave data. This language forms the sound genes. A single sound
fragment is described by a sequence of this sound language.
Two sounds can mate by recombining their genes. New sounds evolve
using two basic operations:
\begin{itemize}
\item \textbf{Cross-over:} Recombine existing genes
\item \textbf{Mutation:} Randomly alter individual genes
\end{itemize}
Candidates for recombination are selected using a fitness
function. Since it is difficult to evaluate the esthetics of music
automatically we aim for a human-driven fitness function. That means
users can listen to sound fragments and select candidates based on
their choice.
The first generation of sounds can be either randomly generated or a
reasonable set of default individuals should be provided.
\section{Design considerations}
\subsection{Dependencies}
We don't have to reinvent the wheel. Several aspects of the software
can be accomplished by external libraries and programs. Doing so saves
us development resources. We can rely on tested software and focus on
our own project features.
\subsubsection*{Description language}
Sound fragments consist of a sequence of descriptive elements. These
are subject to mutation and recombination. These operations should
always yield syntactic correct representations. A language could
consist of one part defining a set of instruments and another part of
describing a sequence of occurences of notes or similar.
\subsubsection*{Interpreter and synthesizer}
An interpretor translates a sound description into audio data that can
be saved e.g. as a WAV or AIFF file. For doing so it has to parse the
description language and finally synthesize audio using a software
sound library.
\subsection{General constraints}
\subsubsection*{Fitness function}
The fitness function is user dependent. This means the amount of
cycles may be limited by the human.
\subsection{User interface}
Command line tools can be used to interact on sound description
fragments.
\subsection{Development methods}
\subsubsection*{Programming languages}
The software will be implemented using the Python programming
language. Other libraries may use other programming languages but
should provide Python bindings whenever neccessary.
\subsubsection*{Developing tools}
A version control system will be used to track development. GitHub is
providing hosting and project management services:
\begin{itemize}
\item Git version control
\item Wiki
\item Issue tracker
\end{itemize}
\section{Prospects}
\subsection{Web-based frontend}
Ideally a web-based frontend can be provided to reach an amount of
users providing feedback for the fitness function. The system could
implement the following features:
\begin{itemize}
\item Create new sound fragments (either random or from default)
\item Evolve fragments
\item Sound gallery
\item Rating
\end{itemize}
\end{document}