summaryrefslogtreecommitdiff
path: root/README.org
diff options
context:
space:
mode:
authorJustin Worthe <justin.worthe@gmail.com>2016-10-09 17:09:25 +0200
committerJustin Worthe <justin.worthe@gmail.com>2016-10-09 17:09:25 +0200
commit4032d5d567b21271069f1d6d85019788f33d5b3c (patch)
tree5c25e5f47fc8d46d5f291102396c4a4842e2d9e1 /README.org
parent432ca58cbe4a6cf8799c8fe8e73f2b8f5815497b (diff)
Updated documentation
Diffstat (limited to 'README.org')
-rw-r--r--README.org49
1 files changed, 44 insertions, 5 deletions
diff --git a/README.org b/README.org
index 68c40a5..a4f3a31 100644
--- a/README.org
+++ b/README.org
@@ -11,20 +11,59 @@ The other goal of this project is to give me a platform for learning
Rust, and various other technologies that I do not get to touch in my
day to day work.
+* Getting started
+
+This is a Rust project. The latest version of the Rust compiler and
+Cargo are available from your system's package manager, or from
+https://www.rust-lang.org/.
+
+To compile the project
+src_sh{cargo build}
+
+To compile and run
+src_sh{cargo run}
+
+To compile and run unit tests. Use this as the CI build command if
+setting up a CI server.
+src_sh{cargo test}
+
+* Project structure
+
+** File Structure
+
+- Dependencies are declared in ~Cargo.toml~
+- The project main function for the project executable is in
+ ~src/main.rs~. This should only be an entry point. Any actual
+ functionality should be part of the library build.
+- The other files to be included in the build are declared in
+ ~src/lib.rs~.
+- Unit tests are kept in the same files as the units they are testing.
+- The main function will launch the GUI in ~src/gui.rs~. From here,
+ the GUI can call out to the other parts of the library as required.
+
+** General Architectural Guidelines
+
+- Try to keep functions pure when possible. If not possible, try to
+ isolate the impure parts.
+- Split functionality into files based on their logical separation of
+ concerns. Try to keep mathematical processing separate from
+ presentation logic, so that the processing can be reused
+ independently.
+
* Tasks
** Project setup
-*** TODO Cargo build process
+*** DONE Cargo build process
- This is probably already in place, since it's 'just use Cargo', but
it needs to be in the docs mentioned below.
-*** TODO Getting started docs
+*** DONE Getting started docs
- For myself two months later. This doubles as revision exercise on
how a Rust project can be laid out.
-*** TODO CI build
+*** DONE CI build
- it's only me on the project, so manually triggered with a script and
not actually on a CI server is fine. This is probably just 'use
Cargo test', but again, formalize and in the docs above.
** Audio interfaces
-*** TODO Read the list of microphones.
+*** DONE Read the list of microphones.
*** TODO Start listening on a selected microphone, and let other plugins process the signal.
- There needs to be able to be multiple of these, and those listening
need to be able to be turned on and off independently.
@@ -34,7 +73,7 @@ day to day work.
- During playback, it would be cool if the other plugins can be
pointed at the sound being played back.
** GUI
-*** TODO Opens a window with a drop down of available microphones
+*** DONE Opens a window with a drop down of available microphones
*** TODO Real-time updating graph of frequency spectrum
*** TODO Real-time updating graphical representation of fundamental frequency
*** TODO Recording and playback controls