-
Notifications
You must be signed in to change notification settings - Fork 1
/
contribute.html
363 lines (324 loc) · 17.7 KB
/
contribute.html
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content= "text/html; charset=utf-8">
<link type="text/css" href="main.css" rel="stylesheet">
<title>Contributing To ZynAddSubFX</title>
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="lighter.css">
<style>
h2 { clear:both; }
hr { clear:both; }
h4 { text-decoration: underline; }
.soft {color:#01ae9c; }
.semi {color:#f3ad06; }
.hard {color:red; }
.softi {
width: 240px;
float:left;
background:#98dbd4;
padding:20px;
background-clip: content-box;
}
.semii {
width:240px;
float:left;
background:#f3cf79;
padding:20px;
background-clip: content-box;
}
.hardi {
width:240px;
float:left;
background:#ffc6b1;
padding:20px;
background-clip: content-box;
}
</style>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-72903778-1', 'auto');
ga('send', 'pageview');
var trackContrib = function(action) {
ga('send', 'event', action);
return false;
}
</script>
</head>
<body>
<nav class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand nav-link" href="/"></a>
</div> <!-- /.navbar-header -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="/">About</a></li>
<li><a href="zyn-fusion.html">Zyn-Fusion</a></li>
<li><a href="download.html">Download</a></li>
<li><a href="support.html">Support</a></li>
<li><a href="roadmap.html">Roadmap</a></li>
<li class="active"><a href="contribute.html">Contribute</a></li>
</ul>
</div> <!-- /.navbar-collapse -->
</div> <!-- /.container -->
</nav> <!-- /.navbar -->
<center><div align="left" id="content">
Are you interested in contributing to the ZynAddSubFX project?
There are a variety of ways that you can assist the project and many
different skills that can be learned while contributing. You can lend
a hand with <span class=soft>non-technical community
interaction roles</span>,
<span class=semi>semi-technical roles involving knowledge of synthesis
and/or basic programming techniques</span>, or
<span class=hard>advanced programming implementation
challenges/DSP design improvement roles</span>.
The roles listed here are ordered coarsely by complexity, but don't
let that deter you from trying out something which you want to
learn, everyone has to start somewhere.
<hr/><hr/>
<h2 class=soft>Community Engagement</h2>
<img src="nouns/noun_Community_168639.png"
alt=""
class=softi />
<p>
Open source isn't just about throwing software out in the open, but it's about
the collaboration of multiple individuals to create something that would be
difficult to build with just one individual. Community outreach efforts
help introduce new contributors and new users.
If you're interested in trying to get new individuals interested in
contributing and making things run more smoothly for existing contributors,
then it would be great to have some assistance.
For example, creating pages like the one you're reading can be used to gain
new interest or writing summaries about new features.</p>
<h4>How to get started</h4>
<p>
There's no one right approach to how to build a community, so the first step
should be a discussion.
I'd recommend proposing an idea via IRC (#zynaddsubfx on irc.libera.chat) or the community
<a onclick="trackContrib('contrib-ml')" href= "http://lists.sourceforge.net/mailman/listinfo/zynaddsubfx-user">mailing list</a>
to get the dialog started.
</p>
<h2 class=soft>Multi-Platform Testing</h2>
<img src="nouns/noun_testing_1914762.png"
alt="testing by QualityIcons from the Noun Project"
class=softi />
<p>
ZynAddSubFX (and Zyn-Fusion) run on Linux, OSX, Window, and BSD with platforms
ranging between x86, x86_64, ARM, etc. So, there's a lot of different places
where bugs can creep in.
It's difficult to keep track of where errors can occur, when they have been
introduced, and when they have been fixed.
If you're interested in helping test a particular platform regularly, then
please chime in to help make Zyn more stable, performant, and fun to use on your
platform of choice.
If you are familiar with debugging tools on your platform, that's a plus, but
not strictly required.
</p>
<h2 class=soft>Bug Reporting and Managment</h2>
<img src="nouns/noun_Bug_564413.png"
alt="Bug by Hea Poh Lin from the Noun Project"
class=softi />
<p>ZynAddSubFX has a large community across multiple websites. As such it can
be tricky to keep track of all bugs, feature requests, and support requests.
If you're interested in lending a hand towards the organization of these
issues it would be appreciated.
No technical experience needed.</p>
<h4>How to get started</h4>
<p>
If you're interested in helping to report bugs, tag them, respond to inquires,
and organize them so other contributors can efficiently navigate them, please
inquire on the IRC channel for zyn (#zynaddsubfx on irc.libera.chat).
</p>
<hr/><hr/>
<h2 class=semi>Documentation</h2>
<img src="nouns/noun_documentation_884660.png"
alt="documentation by shashank singh from the Noun Project"
class=semii />
<p>Open source documentation doesn't always cover the topics you're looking
for quite in enough depth or breath and Zyn is no exception. Features are
constantly getting added and the interface has recently undergone a major
overhaul. As such there are plenty of gaps which need filling.
While Zyn does have a spread of existing documentation, new efforts are being
focused on a new user focused manual available at <a
href=https://github.com/zynaddsubfx/user-manual>https://github.com/zynaddsubfx/user-manual</a>
.
</p>
<p>
The goal is to provide users with something that goes beyond what the features
are in Zyn and to talk about how to use them to solve practical sound design
challenges.
The overall architecting of this work is being lead by unfa, but there is a
huge amount of work involved in going from the provided outline to a full and
easy to follow guide through ZynAddSubFX.</p>
<h4>How to get started?</h4>
<p>I'd recommend reading through the current outline on github and seeing what
gaps exist. Old documentation can be ported over fairly simply as long as it
fits the new flow though the document, so both beginner technical writers as
well as advanced zyn users should feel comfortable taking steps to make the
manual a more complete guide. </p>
<!--
<h2 class=soft>Translations</h2>
<img src="nouns/noun_Language_1485724.png"
alt=""
width=220px
style="float:left"/>
<p>While the infrastructure in Zyn-Fusion is still just beginning to support
translations to different languages, it is a target of the application.
Translations can help make synthesis more approachable and help in these
efforts would be appreciated.</p>-->
<h2 class=semi>User Interface Programming and Refinement</h2>
<img src="nouns/noun_synth_203861.png"
alt=""
class=semii />
<p>
Looking to leave a visual mark on the synth?
The Zyn UI is a large one with many places which can be improved by new
contributors.
Since synthesizer interfaces have unique requirements (see LAC 2018
presentation on MRuby-Zest), Zyn does not use a traditional user interface
toolkit, but uses one where the majority of code is in Ruby.
As long as you're familiar with Ruby or another high level scripting language,
it should not be too difficult to pick up.
</p>
<h4>How to get started</h4>
<p>
To start out, the MRuby-Zest user interface improvements is based off the
designs provided by <a href="mockup-2016/index.html">a set of mockups by
Budislav</a> <a href="https://www.behance.net/gallery/38595019/Zyn-UIUX-Design-Concept-Fusion">(current
profile)</a>.
You can look at the mockups to understand how the current implementation
deviates from the original design and you can find issues on the user
interface on <a href="https://github.com/zynaddsubfx/zyn-fusion-issues/">the
github issue tracker</a>.
For more hands on guidance don't feel afraid to join the IRC
channel(#zynaddsubfx on irc.libera.chat), use the
<a onclick="trackContrib('contrib-ml')" href= "http://lists.sourceforge.net/mailman/listinfo/zynaddsubfx-user">mailing list</a>
, or start discussions on relevant issue threads.
</p>
<h2 class=semi>General Programming</h2>
<img src="nouns/noun_programming_1677970.png"
alt=""
class=semii />
<p style="float:none">
Like most open source projects the Zyn team loves to see interested developers help out.
Within ZynAddSubFX you'll see a mixture of C, C++, and Ruby (for the UI).
For many tasks you'll only need basic knowledge of any one language to get
started.
</p>
<h4>How to get started</h4>
<p>
If you're interested in helping out coding we recommend checking out the issue trackers for
<a onclick="trackContrib('contrib-bugs')" href="https://sourceforge.net/p/zynaddsubfx/bugs/">bugs</a>,
<a onclick="trackContrib('contrib-features')" href="https://sourceforge.net/p/zynaddsubfx/feature-requests/">features</a>, and
<a onclick="trackContrib('contrib-patches')" href="https://sourceforge.net/p/zynaddsubfx/patches/">patches</a>.
There you should be able to find some issues marked 'beginner'.
These issues should involve relatively few different source files and ideally
it should be possible to finish them in a single sitting.
Resulting changes should be contributed back through either the patch tracker
or via a git pull request.
</p>
<p>
If you're trying to figure out more details, please feel free to hop onto the
<a onclick="trackContrib('contrib-ml')" href= "http://lists.sourceforge.net/mailman/listinfo/zynaddsubfx-user">mailing list</a>
or into the community IRC channel (#zynaddsubfx on irc.libera.chat) to talk with other
contributors.
</p>
<h2 class=semi>Instrument Design and Refinement</h2>
<img src="nouns/noun_Keyboard_933062.png"
alt="Keyboard by Olivier Guillard from the Noun Project"
class=semii />
<p>People are always looking for new instruments to experiment with.
For a one-off instrument <a onclick="trackContrib('contrib-ma')" href="https://musical-artifacts.com/">musical
artifacts</a> hosts individual instruments for a variety of open source
synths and effects. For larger collections of patches they can be shared via
the
<a onclick="trackContrib('contrib-ml')" href= "http://lists.sourceforge.net/mailman/listinfo/zynaddsubfx-user">mailing list</a>.
</p>
<hr/><hr/>
<h2 class=hard>Digital Signal Processing</h2>
<img src="nouns/noun_Fourier%20transformation_221517.png"
alt="Fourier transformation by Aenne Brielmann from the Noun Project"
class=hardi />
<p>
Are you interested in the math behind the music?
In order to synthesize audio as well as manipulate existing audio streams
ZynAddSubFX involves a fair amount of signal processing.
The DSP involved varies from Fourier transforms, to filter banks, to simple
waveform generation.
If you want to help improve the current DSP under the hood or just generally
learn about what happens in the domain of realtime audio, then contributing on
this front should be a fun exercise.
</p>
<h4>How to get started</h4>
<p>
Ideally to approach DSP level problems you should have some basic level of
familiarity with C++, a prototyping language (Python/Julia/MATLAB/R), and some
experience with vector mathematics, but there will be opportunities to learn
when getting started.
If you have a particular idea in mind, then check the feature trackers to see
if there is prior work on your particular idea.
Otherwise, try joining the
<a onclick="trackContrib('contrib-ml')" href= "http://lists.sourceforge.net/mailman/listinfo/zynaddsubfx-user">mailing list</a>
and IRC channel (#zynaddsubfx on irc.libera.chat) and get the conversation started.
</p>
<h2 class=hard>Realtime System Level Programming</h2>
<img src="nouns/noun_programming_1677970.png"
alt=""
class=hardi />
<p>
Do you want to understand how audio can be produced in a multi-threaded
low latency context reliably?
Do you want to write optimized mathematical routines, lock-free threading
communication mechanisms, draw out diagrams walking through asynchronous
program execution, or write embedded code?</p>
<p>Well, within low latency audio processing tools, you'll see some of all of
these concepts.
Creating reliable low-latency, high throughput code which is easy for users
to control is <b>hard</b>.
It involves a lot of pencil and paper work to establish designs and a fair
amount of programming time to implement the designs in ways that they're hard
to mistakenly break.
</p>
<h4>How to get started</h4>
<p>
Ideally if you want to get into this level you'll have a strong grasp of low
level machine implementation details, such as cache behavior, x86 memory
reordering, lock free primitives, the general C/C++ memory model, JACK,
assembly, and programming constraints on small embedded devices.
If you want to be involved in this role it's a natural extension of general
programming.
To get started there will need to be some direct discussion between yourself
an other long term developers.
</p>
<hr><hr>
<h2>Donations</h2>
<p>
Any donations are appreciated and they're currently accepted by two
developers.
The project was started in March 2002 by <a onclick="trackContrib('outbound-pn')" href="http://www.paulnasca.com">Nasca Octavian Paul</a>.
He began to write ZynAddSubFX in order to create a synthesizer
which could produce beautiful sounds, while being freely available to
anybody who needs it.
Since 2009, ZynAddSubFX has been lead by <a onclick="trackContrib('outbound-fc')" href="http://fundamental-code.com">Mark McCurry</a>.
In these few years some major architectural changes have been brought about
which culminated in the 3.0.0 UI rewrite release.</p>
<center>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<p>Mark McCurry (active maintainer):
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
">
<input onclick="trackContrib('donate-mc')" type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</p>
</form>
</center>
<p>
</p>
</div></center>
</body>
</html>