You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+39-23
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,13 @@
1
1
2
2
# [][app]
3
3
4
-
[Wavey][app] is a simple web-based digital audio workstation (DAW), **currently in alpha**.
4
+
[Wavey][app] is a simple web-based digital audio workstation (DAW), **currently in pre-alpha**.
5
5
6
6
### Features
7
7
8
8
* Drag and drop audio files or record from a microphone.\*\*\*
9
9
* Always saved locally, including persistent undo/redo with the selection state; saves *while* you're recording\*\*
10
-
* Plays while recording so you can record along with previous tracks
10
+
* Plays while recording so you can record along with previous tracks\*\*
11
11
* Lets you edit while playing or recording; you can even delete the recording while recording and undo to keep recording
12
12
* Several themes, including light and dark [elementary OS][] themes via [elementary.css][], and some retro themes
13
13
* Fully scalable graphics, from the icons to the waveforms
@@ -50,7 +50,8 @@ with the caveat(s) that you have to have it enabled and your mic(s) set up befor
50
50
51
51
* Projects should be able to contain separate, distinct timelines;
52
52
some DAWs have "takes", maybe something like that is what I want.
53
-
Ableton Live does something fairly reasonable.
53
+
Ableton Live does something fairly reasonable from what I remember.
54
+
(Although it was difficult to get it to actually record anything.)
54
55
55
56
* Nonlinear undo.
56
57
If you hit undo a bunch, then do something, normally the data is instantly lost.
@@ -66,12 +67,15 @@ and an expanded view to edit the notes, but still inline in the track.
66
67
(I've made a basic collapsed notes view component but haven't made a way to actually create it in the editor,
67
68
i.e. no way to record/import/create MIDI data.)
68
69
69
-
* Effects! I'm holding off on adding gain and panning because
70
-
I think if the effects UI is good enough, they should be able to simply be effects,
71
-
and I don't want to just immitate the status quo UI and end up with something that's "good enough" but not as good as it could be.
72
-
Gain/panning may warrant special treatment such as being added by default to the effects chain,
70
+
* Effects!
71
+
Adding gain and panning would be easy,
72
+
but I don't want to immitate the status quo UI
73
+
and end up with something that's "good enough" but not as good as it could be.
74
+
I think if the effects UI is good enough, they should be able to be treated the same as any other effects.
75
+
Gain and panning may warrant special treatment
76
+
such as being added by default to the effects chain (or graph?),
73
77
but they probably shouldn't be separate from it.
74
-
After all you'll want to be able to automate them just the same.
78
+
You'll at least want to be able to automate them just the same.
75
79
76
80
* Plugins
77
81
(e.g. instrument interfaces like
@@ -80,30 +84,32 @@ After all you'll want to be able to automate them just the same.
80
84
effects,
81
85
synthesizers (voices),
82
86
algorithmic synthesis like [HTML5 Bytebeat](http://greggman.com/downloads/examples/html5bytebeat/html5bytebeat.html),
83
-
themes,
84
-
extra file formats)
87
+
extra file formats,
88
+
and themes)
85
89
86
-
* Desktop app, *ideally native* rather than web-based (but web-based for starters)
90
+
* Desktop app
87
91
88
-
* Interoperability with Audacity? (exporting/importing project files)
92
+
* Interoperability with other audio editors? (project file import/export)
89
93
90
94
* Whatever replaces Web Intents, probably the [Web Share API](https://github.com/WICG/web-share) and [Web Share Target API](https://github.com/WICG/web-share-target)
91
95
92
-
* Internationalization
93
-
94
96
95
-
### TODO
97
+
### The Less Exciting To-Do List
96
98
97
99
* Document loading indicator
98
100
* Fix losing chunks when recording
99
101
* Decouple the rendering rate of recorded audio from the size of chunks saved
100
102
(maybe even have a tiered saving system where chunks are merged to improve load times)
101
103
* Fix pasting across non-consecutive tracks
102
-
* Maybe make the mute buttons clearer by making the iconography (not not) not negative;
103
-
would it be awkward to still call them mute buttons or have the hover text say mute/unmute?
104
-
* Mouse-relative zooming (preferably performant and smoothly animated)
104
+
(or just pasting in general? <kbd>^A^X^V</kbd> doesn't work at all when there's one track;
105
+
and it appears to clear the cursor, but pasting still doesn't work (at that point it should create a new track))
106
+
* Maybe make the mute buttons clearer by making the iconography *not negative*;
107
+
(would it be awkward to still call them mute buttons or have the hover text say mute/unmute?)
108
+
* Mouse-relative zooming (preferably performant and smoothly animated; currently zooming is slow)
109
+
* Lossless compression for audio storage
105
110
* Storage management (handle running out of storage, handle multiple editors loaded for the same document, allow data purging, estimate max recording time)
106
111
* Improve accessibility
112
+
* Internationalization
107
113
108
114
109
115
### Contributing
@@ -112,11 +118,21 @@ Contributions and criticism welcome.
112
118
[Open up an issue][new issue] to discuss features, problems, or improvements!
113
119
114
120
This project is built with [CoffeeScript][], [React][], and [ReactScript][].
115
-
116
-
[Fork and clone the repository](https://guides.github.com/activities/forking/) and then
117
-
with [Node.js](https://nodejs.org/en/),
118
-
open up a command line and enter
119
-
`npm install` and `npm run dev`
121
+
(I'm eating my own dogfood with ReactScript,
122
+
but I'd prefer [JSX with CoffeeScript 2](http://coffeescript.org/v2/#jsx),
123
+
or to switch to ES6+ in the future)
124
+
125
+
*[Fork and clone the repository](https://guides.github.com/activities/forking/).
126
+
* Install [Node.js](https://nodejs.org/en/) if you don't have it.
127
+
* Open up a command line.
128
+
* Enter `npm i` to install.
129
+
* Enter `npm run dev`
130
+
to start up a task that watches the source and builds the project.
131
+
It also generates a service worker.
132
+
* You'll also need a dev server.
133
+
You could use a plain HTTP server such as `python -m SimpleHTTPServer`
134
+
but I prefer [Live Server](https://github.com/tapio/live-server) which you can insall with `npm i live-server -g`
135
+
and then use by running `live-server` in a separate command line tab/window/instance.
0 commit comments