-
Notifications
You must be signed in to change notification settings - Fork 0
/
paisley.jl
233 lines (169 loc) · 3.79 KB
/
paisley.jl
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
module Paisley
include("shelves.jl")
"Integer within range?"
function bounds(span::Int)
local bin::Bool = (35 < span < 61)
return bin
end
"Default string."
function tacit()
local mute::String = repeat("__ ", 12)
return mute
end
"Validate key signature."
function sentinel(yarn::String)
local rex::Regex = r"^([ijkn]+\d+)+([lm]\d+)?[o-z]*$"
local bin::Bool = occursin(rex, lowercase(yarn))
return bin
end
"Format and print menu of signatures."
function catalog(things::Vector{Symbol})
local sorted::Vector{Symbol} = sort(things)
local cycles::UInt16 = 0
local column::UInt16 = 7
println()
for (numb::UInt16, sign::Symbol) in enumerate(sorted)
if numb % column == 0
print(string("\t", sign, "\n"))
else
print(string("\t", sign))
end
cycles = numb
end
if cycles % column != 0
println()
end
return nothing
end
"Replacement of characters."
function transmute!(cord::String)
local span::UInt16 = length(cord)
local line::String = lowercase(cord)
if Shelves.trust
for (old::Char, new::Char) in Shelves.duets
line = replace(line, old => new)
end
end
return line
end
"Permutation of selected string."
function pegasus(seal::Symbol, nth::Int)
try
local wire::String = get(Shelves.codex, seal, tacit())
if bounds(length(wire))
local cord::String = string(wire[nth:end], wire[1:nth + 1])
if Shelves.latch
return transmute!(cord)
else
return cord
end
else
return tacit()
end
catch anomaly
@warn anomaly
end
end
"Tune string to C natural."
function hermit(seal::Symbol)
return pegasus(seal, 1)::String
end
"Tune string to D natural."
function jovian(seal::Symbol)
return pegasus(seal, 7)::String
end
"Tune string to E natural."
function copper(seal::Symbol)
return pegasus(seal, 13)::String
end
"Tune string to F natural."
function saturn(seal::Symbol)
return pegasus(seal, 16)::String
end
"Tune string to F sharp."
function gemini(seal::Symbol)
return pegasus(seal, 19)::String
end
"Tune string to G natural."
function helios(seal::Symbol)
return pegasus(seal, 22)::String
end
"Tune string to A natural."
function silver(seal::Symbol)
return pegasus(seal, 28)::String
end
"Tune string to A sharp."
function aquari(seal::Symbol)
return pegasus(seal, 31)::String
end
"Tune string to B natural."
function vulcan(seal::Symbol)
return pegasus(seal, 34)::String
end
"Unison tuning."
function unison(seal::Symbol)
local slips::NTuple{2, String}
local ingot::String = hermit(seal)
slips = (ingot, ingot)
return slips
end
"Augmented fourths tuning."
function bfbfb(seal::Symbol)
local slips::NTuple{5, String}
local fn::String = saturn(seal)
local bn::String = vulcan(seal)
slips = (bn, fn, bn, fn, bn)
return slips
end
"Perfect fifths tuning."
function cgdae(seal::Symbol)
local slips::NTuple{5, String}
slips = (
copper(seal),
silver(seal),
jovian(seal),
helios(seal),
hermit(seal),
)
return slips
end
"Guitar Standard tuning."
function eadgbe(seal::Symbol)
local slips::NTuple{6, String}
local ingot::String = copper(seal)
slips = (
ingot,
vulcan(seal),
helios(seal),
jovian(seal),
silver(seal),
ingot,
)
return slips
end
"Major thirds tuning."
function fkbjdn(seal::Symbol)
local slips::NTuple{6, String}
local dn::String = jovian(seal)
local fk::String = gemini(seal)
local bj::String = aquari(seal)
slips = reverse((fk, bj, dn, fk, bj, dn))
return slips
end
"Perfect fourths tuning."
function dragon(seal::Symbol)
local slips::NTuple{9, String}
slips = (
aquari(seal),
saturn(seal),
hermit(seal),
helios(seal),
jovian(seal),
silver(seal),
copper(seal),
vulcan(seal),
gemini(seal),
)
return slips
end
end # Paisley