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
Building CS-16 is exactly like how you'd build any other Playdate game (in this case, the command is `pdc src/ CS-16.pdx`).
6
+
7
+
However, I personally use [`just`](https://github.com/casey/just) to make things a little faster! If you install `just` or already have it installed, the default `just` recipe will build CS-16 and open it in the Playdate Simulator, presuming `PlaydateSimulator` is in `$PATH`.
8
+
9
+
> note: the `just` recipes are only compatible with Linux or MacOS. the `justfile` may need to be modified if you are on Windows.
10
+
11
+
> also, if you end up taking a look at the code, sorry in advance if it's a mess XD
12
+
13
+
## visualizers
14
+
15
+
### format
16
+
A CS-16 visualizer at its core is just a function that gets called every playdate.update() loop, so you can do pretty much whatever you want with it!
17
+
18
+
In order for it to be recognized by CS-16, your visualizer code must be either a standalone `.lua` file, or be in a folder by the same name as one of the `.lua` files.
19
+
20
+
CS-16 requires that a visualizer returns a table with the name of the visualizer, as well as the function that will be called every update. When it is called, CS-16 will pass in a key-value table containing many values which you may find useful when creating a visualizer.
21
+
22
+
Here's the code for one of my visualizers, called "bumper", as an example:
23
+
24
+
```lua
25
+
localfunctionbumperUpdate(data)
26
+
ifdata.beatthen
27
+
pd.display.setOffset(0, 3)
28
+
elseifmath.floor(data.step) %8==2then
29
+
pd.display.setOffset(0, 1)
30
+
else
31
+
pd.display.setOffset(0, 0)
32
+
end
33
+
end
34
+
35
+
return {"bumper", bumperUpdate}
36
+
```
37
+
38
+
### building and importing
39
+
Currently, there is no way to directly load Lua code from the Playdate's Data/ directory (most likely for security reasons), so you'll have to rebuild CS-16 with your custom visualizers in the source code.
40
+
41
+
To do this, clone this repository with `git clone https://github.com/nanobot567/CS-16`. Then, navigate to the `src/` directory, and create a new folder named `visualizers` if it doesn't already exist. Here, simply paste your .lua files (or the folder containing your .lua file) and rebuild CS-16 with `pdc src/ CS-16.pdx` (or if you have [`just`](https://github.com/casey/just) installed, `just`).
| playing | boolean | true if pattern is currently playing |
52
+
| beat | boolean | true if current step is a beat |
53
+
| tracks | object table | table of `playdate.sound.track`s in the pattern |
54
+
| trackNames | string table | table of the names of the tracks |
55
+
| userTrackNames | string table | table of user-defined track names. if a name has not been set, the value at that track's index will be an empty string ("") |
56
+
| trackSwings | number table | table of swing values for each track |
57
+
| mutedTracks | boolean table | mutedTracks[trackNumber] returns true if the track is currently muted |
58
+
| instruments | object table | table of `playdate.sound.instrument`s |
59
+
| instrumentADSRs | number table table | nested tables contain the attack, decay, sustain and release values in that order for each track |
60
+
| instrumentLegatos | boolean table | legato status for each track |
61
+
| instrumentParams | number table table | tables within contain parameter 1 and 2 values for square wave tracks and TE synth tracks (phase, digital, vosim) |
62
+
| instrumentTransposes | number table | contains the transposition value of each track |
63
+
| settings | key-value table | contains the user's settings. refer to your own `settings.json` file if you don't know what the key to a setting may be! |
Copy file name to clipboardExpand all lines: MANUAL.md
+85-8Lines changed: 85 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,10 @@
1
1
# CS-16 manual
2
2
3
-
In CS-16, there are three main screens, each of which will be explored in this manual:
3
+
In CS-16, there are four main screens, each of which will be explored in this manual:
4
4
1.`pattern`
5
5
2.`track`
6
-
3.`song`
6
+
3.`fx`
7
+
4.`song`
7
8
8
9
You can swap between these screens by pressing `B` until the text shown says `screen`, and then cranking. This "crank mode" menu will be accessed often as you use CS-16.
9
10
@@ -33,7 +34,7 @@ To make placing down and editing notes at intervals easier, there is an option i
33
34
34
35

35
36
36
-
To edit the pitch of the note, cycle through the crank mode menu until you reach `pitch`, then crank like you did for `note status`. Changing the track, velocity, and note length are done this same way.
37
+
To edit the pitch of the note, cycle through the crank mode menu until you reach `pitch`, then crank like you did for `note status`. Changing the track, velocity, note length, and swing are done this same way.
37
38
38
39
You can start or stop the sequence by pressing A.
39
40
@@ -43,6 +44,8 @@ If you would like to input notes in real time, there is a `record` function in C
43
44
44
45
While in record mode, the `A`, `B`, `up`, `down`, `left`, and `right` buttons are mapped to tracks in the song. When pressed, a note is placed at that step in the corresponding track. If quantization is enabled (not 1), then each note you place will be quantized to the nearest multiple of the quantization value.
45
46
47
+
> swing is applied when you press `stop record`.
48
+
46
49

47
50
48
51
### track
@@ -58,6 +61,16 @@ In the system menu, there are two options, `copy` and `cpy mode`. To copy a trac
58
61
59
62

60
63
64
+
#### renaming tracks
65
+
66
+
To rename one of your tracks, hover over the track you would like to rename, enter the system menu and select `rename`.
67
+
68
+
To remove your custom track name, enter the `rename` keyboard, delete all of the characters, and press `OK`.
69
+
70
+
> note: there is a 10-character limit.
71
+
72
+

73
+
61
74
#### instrument editor
62
75
63
76
To edit an instrument, select the track you want in the list. It will be marked with the number and the instrument type. Instrument types can be any of the following:
@@ -99,21 +112,76 @@ Within the file picker, you can enter folders or select a file using `A`, and ex
99
112
100
113
If you have already selected a sample, however, there will be an extra option in the list: `edit sample`. In the `edit sample` screen, you can trim your samples. Pressing `left` or `right` changes the selected side, and pressing `up` or `down` changes the interval at which you trim the sample using the crank.
101
114
102
-
If you are editing a sample that was recorded with the Playdate's microphone, you will see a waveform above the start and end frame locations.
115
+
If you are editing a sample that was recorded with the Playdate's microphone and you have enabled `settings / sampling / save waveforms`, you will see a waveform above the start and end frame locations.
103
116
104
117

105
118
106
119
> note: double and triple check your sample before you save it! when you trim it you cannot revert to the original sound.
107
120
121
+
### fx
122
+
123
+

124
+
125
+
In the `fx` screen, you can apply punch-in effects to your pattern. Currently there are four effects (ordered clockwise, starting from the top):
126
+
127
+
1.`TAPE`: high-pass and low-pass filters
128
+
2.`BTC`: bitcrush
129
+
3.`WTR`: low-pass filter
130
+
4.`OVD`: overdrive
131
+
132
+
While in this screen, press A to activate or deactivate punch-in. The word `ACTV!` will appear at the center of the screen when it's activated. Once activated, the d-pad buttons enable the corresponding effect when pressed, and disable when not.
133
+
134
+
It is possible to "lock" your button presses! Enable the effects you would like to lock, then switch the crank mode to `lock effect`. Crank clockwise until you see a "lock" icon appear in the bottom left of your screen. To unlock effects, either crank counter-clockwise to unlock all of them, or press the corresponding d-pad button when punch-in is active.
135
+
136
+
If you would like to change an effect intensity (signified by the decimal number next to the effect), first ensure that punch-in is deactivated. Then, change the crank mode to `effect intensity` and press the d-pad button according to the effect you would like to modify. You'll know you're good to go when there's a box around the effect text. Now just crank until you reach your desired value! Intensities range from 0 (off) to 1 (full effect).
137
+
138
+
> note: this can be done while an effect is applied, allowing for some pretty fun live performance stuff!
139
+
108
140
### song
109
141
110
-

142
+

111
143
112
144
In the `song` screen, you can view and modify your song's global options, such as the tempo and pattern length (these can be modified via the crank). Your song name and author name is displayed at the top.
113
145
114
146
> IMPORTANT NOTE! currently, the tempo can only be changed by intervals of 7.5 because of a bug in Playdate OS. as soon as a fix is implemented, this message will be deleted.
115
147
116
-
Here you can also save and load your songs via the Playdate OS menu. In the menu, you can access and change CS-16 settings, such as dark mode, crank sensitivity, and the name used to sign your saved songs.
148
+
Here you can also save and load your songs via the Playdate OS menu. If you select `load`, you can also perform file operations on your songs, such as renaming, deleting, and cloning. You can press `right` to view file metadata as well.
149
+
150
+

151
+
152
+
In the system menu, you can also access and change CS-16 settings, such as dark mode, crank sensitivity, and the name used to sign your saved songs. A full list of settings is below.
153
+
154
+
-`general/`
155
+
- `author` (text value, default anonymous)
156
+
- `output` (audio output. can be auto, speaker, headset, or speaker and headset)
157
+
- `crank speed`
158
+
- `credits`
159
+
-`behavior/`
160
+
- `play on load` (play pattern immediately on song load)
161
+
- `stop if sampling` (stop the pattern if you are currently sampling audio)
162
+
- `tempo edit stop` (stop the pattern when tempo is modified)
163
+
- `save .wav samples` (alongside .pda audio, save .wav files when sampling)
164
+
- `crank docked screen` (which screen appears when the crank is docked. `none` disables changing the screen)
165
+
-`recording/` (as in tapping in a pattern)
166
+
- (button) `button track` (when record is active, this button will correspond to this track)
167
+
- `quantization` (quantize recording, can be either off [1], every 16th note [2], or every 8th note [4])
168
+
-`sampling/`
169
+
- `sample format` (16 bit or 8 bit)
170
+
- `save waveforms` (save waveform images along with audio)
171
+
-`ui/`
172
+
- `dark mode`
173
+
- `visualizer` (song screen visualizer options)
174
+
- `sine wave` (sine wave where tempo is proportional to frequency and pattern length is proportional to amplitude)
175
+
- `notes` (displays track active statuses)
176
+
- `stars` (purely decorational, but looks pretty awesome lol)
177
+
- `--- external ---` (below this are custom visualizers)
178
+
- `show number / total` (display current crank mode number out of total)
- `show log screens` (display log screens, causes some moderate slowdown at the cost of coolness)
183
+
- `fx screen vfx` (when an effect is active, apply the corresponding screen visual effect as well)
184
+
- `50fps` (50fps refresh rate)
117
185
118
186
## other information
119
187
@@ -141,13 +209,22 @@ To manage your songs:
141
209
2. navigate to `Data/user.*****.com.nano.cs16/songs/`
142
210
3. add, copy, delete, or rename your songs, then eject your playdate when you are done.
143
211
212
+
> if you are sharing your songs on the internet, you can set your author name in `settings / general`!!
213
+
144
214
### ways to improve performance
145
215
146
216
All of these are things you can do to improve CS-16's performance and reduce frame drops.
147
217
148
-
- In `settings/ui/`...
149
-
- Disable `visualizer`.
218
+
- In `settings / ui /`...
219
+
- Disable all `visualizer` elements.
150
220
- Disable `show note names`.
151
221
- Disable `animate scrn move`.
222
+
- Disable `fx screen vfx`.
152
223
- Enable `50fps`.
153
224
- Use lower quality samples (ex. lower bitrate)
225
+
226
+
### custom visualizers
227
+
228
+
I have a few custom visualizers in this repository under `visualizers` (and maybe you'll find another one on the internet somewhere??? idk haha). To import these into CS-16, check out the visualizer `building / importing` section in the [DEV document](DEV.md).
229
+
230
+
> note: by default, imported visualizers are disabled. head to `settings / ui / visualizers` to enable them.
0 commit comments