obs_deck 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/exe/obs_deck +5 -0
- data/lib/decks/unique_phrases_deck.txt +199 -0
- data/lib/decks/user_deck.txt +0 -0
- data/lib/obs_deck/modules/my_methods.rb +63 -0
- data/lib/obs_deck/oblique_strategies.rb +44 -0
- data/lib/obs_deck/version.rb +5 -0
- data/lib/obs_deck.rb +21 -0
- metadata +67 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4ff22ef1885b441381f07ae30f4ca57c6330246cc924cac9f4b016d0388b0698
|
4
|
+
data.tar.gz: c9433789e62c2a97b27ce6961fc0ce858f742549033b3505fc14fca5c051e62f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6e2490cf9d50bb594118478c909b3b1f7ee60df5da3d0de2b534d37c4c2f5de90f405a7934de561e3dc7a54a0c00eea7b05281a3176c9618c84545366c41b4d6
|
7
|
+
data.tar.gz: 03d181f2963d2220eb240f652135fc116d7423d43a59cc9e508fa76db3e90ec774b0d14b3a8652d2a902cdbbce650e62462c64f56bafd4f9b65efcea8c21b068
|
data/exe/obs_deck
ADDED
@@ -0,0 +1,199 @@
|
|
1
|
+
Abandon normal instruments
|
2
|
+
Accept advice
|
3
|
+
Accretion
|
4
|
+
A line has two sides
|
5
|
+
Allow an easement (an easement is the abandonment of a stricture)
|
6
|
+
Are there sections? Consider transitions
|
7
|
+
Ask people to work against their better judgement
|
8
|
+
Ask your body
|
9
|
+
Assemble some of the instruments in a group and treat the group
|
10
|
+
Balance the consistency principle with the inconsistency principle
|
11
|
+
Be dirty
|
12
|
+
Breathe more deeply
|
13
|
+
Bridges -build -burn
|
14
|
+
Cascades
|
15
|
+
Change instrument roles
|
16
|
+
Change nothing and continue with immaculate consistency
|
17
|
+
Children's voices -speaking -singing
|
18
|
+
Cluster analysis
|
19
|
+
Consider different fading systems
|
20
|
+
Consult other sources -promising -unpromising
|
21
|
+
Convert a melodic element into a rhythmic element
|
22
|
+
Courage!
|
23
|
+
Cut a vital connection
|
24
|
+
Decorate, decorate
|
25
|
+
Define an area as 'safe' and use it as an anchor
|
26
|
+
Destroy -nothing -the most important thing
|
27
|
+
Discard an axiom
|
28
|
+
Disconnect from desire
|
29
|
+
Discover the recipes you are using and abandon them
|
30
|
+
Distorting time
|
31
|
+
Do nothing for as long as possible
|
32
|
+
Don't be afraid of things because they're easy to do
|
33
|
+
Don't be frightened of cliches
|
34
|
+
Don't be frightened to display your talents
|
35
|
+
Don't break the silence
|
36
|
+
Don't stress one thing more than another
|
37
|
+
Do something boring
|
38
|
+
Do the washing up
|
39
|
+
Do the words need changing?
|
40
|
+
Do we need holes?
|
41
|
+
Emphasise differences
|
42
|
+
Emphasise repetitions
|
43
|
+
Emphasise the flaws
|
44
|
+
Feedback recordings into an acoustic situation
|
45
|
+
Fill every beat with something
|
46
|
+
Get your neck massaged
|
47
|
+
Ghost echoes
|
48
|
+
Give the game away
|
49
|
+
Give way to your worst impulse
|
50
|
+
Go slowly all the way round the outside
|
51
|
+
Honor thy error as a hidden intention
|
52
|
+
How would you have done it?
|
53
|
+
Humanise something free of error
|
54
|
+
Imagine the music as a moving chain or caterpillar
|
55
|
+
Imagine the music as a set of disconnected events
|
56
|
+
Infinitesimal gradations
|
57
|
+
Into the impossible
|
58
|
+
Is it finished?
|
59
|
+
Is the tuning appropriate?
|
60
|
+
Just carry on
|
61
|
+
Left channel, right channel, centre channel
|
62
|
+
Listen in total darkness, or in a very large room, very quietly
|
63
|
+
Listen to the quiet voice
|
64
|
+
Look at a very small object, look at its centre
|
65
|
+
Look at the order in which you do things
|
66
|
+
Look closely at the most embarrassing details and amplify them
|
67
|
+
Lowest common denominator check -single beat -single note -single riff
|
68
|
+
Make a blank valuable by putting it in an exquisite frame
|
69
|
+
Make an exhaustive list of everything you might do and do the last thing on the list
|
70
|
+
Make a sudden, destructive unpredictable action; incorporate
|
71
|
+
Mechanicalise something idiosyncratic
|
72
|
+
Mute and continue
|
73
|
+
Only one element of each kind
|
74
|
+
(Organic) machinery
|
75
|
+
Overtly resist change
|
76
|
+
Put in earplugs
|
77
|
+
Remove ambiguities and convert to specifics
|
78
|
+
Remove specifics and convert to ambiguities
|
79
|
+
Repetition is a form of change
|
80
|
+
Reverse
|
81
|
+
Short circuit (example; a man eating peas with the idea that they will improve his virility shovels them straight into his lap)
|
82
|
+
Shut the door and listen from outside
|
83
|
+
Simple subtraction
|
84
|
+
Spectrum analysis
|
85
|
+
Take a break
|
86
|
+
Take away the elements in order of apparent non-importance
|
87
|
+
Tape your mouth (given by Ritva Saarikko)
|
88
|
+
The inconsistency principle
|
89
|
+
The tape is now the music
|
90
|
+
Think of the radio
|
91
|
+
Tidy up
|
92
|
+
Trust in the you of now
|
93
|
+
Turn it upside down
|
94
|
+
Twist the spine
|
95
|
+
Use an old idea
|
96
|
+
Use an unacceptable colour
|
97
|
+
Use fewer notes
|
98
|
+
Use filters
|
99
|
+
Use 'unqualified' people
|
100
|
+
Water
|
101
|
+
What are you really thinking about just now? Incorporate
|
102
|
+
What is the reality of the situation?
|
103
|
+
What mistakes did you make last time?
|
104
|
+
What would your closest friend do?
|
105
|
+
What wouldn't you do?
|
106
|
+
Work at a different speed
|
107
|
+
You are an engineer
|
108
|
+
You can only make one dot at a time
|
109
|
+
You don't have to be ashamed of using your own ideas
|
110
|
+
Always first steps
|
111
|
+
Always give yourself credit for having more than personality (given by Arto Lindsay)
|
112
|
+
A very small object -Its centre
|
113
|
+
Be extravagant
|
114
|
+
Disciplined self-indulgence
|
115
|
+
Don't stress *on* thing more than another (sic)
|
116
|
+
Feed the recording back out of the medium
|
117
|
+
Go outside. Shut the door.
|
118
|
+
Idiot glee (?)
|
119
|
+
Imagine the piece as a set of disconnected events
|
120
|
+
In total darkness, or in a very large room, very quietly
|
121
|
+
Is the tuning intonation correct?
|
122
|
+
It is quite possible (after all)
|
123
|
+
Lost in useless territory
|
124
|
+
Lowest common denominator
|
125
|
+
Not building a wall but making a brick
|
126
|
+
Question the heroic approach
|
127
|
+
Revaluation (a warm feeling)
|
128
|
+
Simply a matter of work
|
129
|
+
State the problem in words as simply as possible
|
130
|
+
The most important thing is the thing most easily forgotten
|
131
|
+
Towards the insignificant
|
132
|
+
What are the sections sections of? Imagine a caterpillar moving
|
133
|
+
What are you really thinking about just now?
|
134
|
+
Assemble some of the elements in a group and treat the group
|
135
|
+
Be less critical more often
|
136
|
+
Children -speaking -singing
|
137
|
+
From nothing to more than nothing
|
138
|
+
Go to an extreme, move back to a more comfortable place
|
139
|
+
Intentions -nobility of -humility of -credibility of
|
140
|
+
Is the intonation correct?
|
141
|
+
Once the search is in progress, something will be found
|
142
|
+
Only a part, not the whole
|
143
|
+
Retrace your steps
|
144
|
+
State the problem in words as clearly as possible
|
145
|
+
Abandon desire
|
146
|
+
Abandon normal instructions
|
147
|
+
Adding on
|
148
|
+
Always the first steps
|
149
|
+
Be less critical
|
150
|
+
Change ambiguities to specifics
|
151
|
+
Change nothing and continue consistently
|
152
|
+
Change specifics to ambiguities
|
153
|
+
Consider transitions
|
154
|
+
Discover your formulas and abandon them
|
155
|
+
Display your talent
|
156
|
+
Distort time
|
157
|
+
Don't avoid what is easy
|
158
|
+
Do something sudden, destructive and unpredictable
|
159
|
+
Do the last thing first
|
160
|
+
Emphasize differences
|
161
|
+
Emphasize the flaws
|
162
|
+
Faced with a choice, do both (from Dieter Rot)
|
163
|
+
Find a safe part and use it as an anchor
|
164
|
+
Go to an extreme, come part way back
|
165
|
+
How would someone else do it?
|
166
|
+
Is something missing?
|
167
|
+
Is the style right?
|
168
|
+
It is simply a matter or work
|
169
|
+
Magnify the most difficult details
|
170
|
+
Make it more sensual
|
171
|
+
Make what's perfect more human
|
172
|
+
Move towards the unimportant
|
173
|
+
Not building a wall; making a brick
|
174
|
+
Once the search has begun, something will be found
|
175
|
+
Openly resist change
|
176
|
+
Pae White's non-blank graphic metacard
|
177
|
+
Question the heroic
|
178
|
+
Remember quiet evenings
|
179
|
+
Remove a restriction
|
180
|
+
Simple Subtraction
|
181
|
+
Slow preparation, fast execution
|
182
|
+
State the problem as clearly as possible
|
183
|
+
Take away the important parts
|
184
|
+
The most easily forgotten thing is the most important
|
185
|
+
Think - inside the work -outside the work
|
186
|
+
Try faking it (from Stewart Brand)
|
187
|
+
Use cliches
|
188
|
+
Use something nearby as a model
|
189
|
+
Use your own ideas
|
190
|
+
Voice your suspicions
|
191
|
+
What context would look right?
|
192
|
+
What is the simplest solution?
|
193
|
+
What to increase? What to reduce? What to maintain?
|
194
|
+
What were you really thinking about just now?
|
195
|
+
When is it for?
|
196
|
+
Where is the edge?
|
197
|
+
Which parts can be grouped?
|
198
|
+
Would anyone want it?
|
199
|
+
Your mistake was a hidden intention
|
File without changes
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module MyMethods
|
2
|
+
def self.create_card(card_sample, max_width = 60)
|
3
|
+
|
4
|
+
if card_sample == "Pae White's non-blank graphic metacard"
|
5
|
+
card =
|
6
|
+
<<~HEREDOC
|
7
|
+
–––––––––––––––––––––––––––––––––––––––––––––––––––
|
8
|
+
| |
|
9
|
+
| |
|
10
|
+
| |
|
11
|
+
| |
|
12
|
+
| |
|
13
|
+
| |
|
14
|
+
–––––––––––––––––––––––––––––––––––––––––––––––––––
|
15
|
+
Pae White's non-blank graphic metacard
|
16
|
+
HEREDOC
|
17
|
+
else
|
18
|
+
|
19
|
+
# Split the card sample into words
|
20
|
+
words = card_sample.split(' ')
|
21
|
+
lines = []
|
22
|
+
current_line = ""
|
23
|
+
|
24
|
+
# Build lines based on max width
|
25
|
+
words.each do |word|
|
26
|
+
if (current_line + word).length <= max_width
|
27
|
+
current_line += "#{word} "
|
28
|
+
else
|
29
|
+
lines << current_line.strip
|
30
|
+
current_line = "#{word} "
|
31
|
+
end
|
32
|
+
end
|
33
|
+
lines << current_line.strip unless current_line.empty?
|
34
|
+
|
35
|
+
# Determine the width of the card based on the longest line
|
36
|
+
# Kinda unnecessary
|
37
|
+
#card_width = [max_width, lines.map(&:length).max].max
|
38
|
+
card_width = max_width
|
39
|
+
|
40
|
+
# Create the card with dynamic borders
|
41
|
+
border = "–" * (card_width + 4)
|
42
|
+
card = "#{border}\n"
|
43
|
+
card += "| #{' ' * card_width} |\n"
|
44
|
+
|
45
|
+
lines.each do |line|
|
46
|
+
# Calculate padding for centering
|
47
|
+
padding = (card_width - line.length) / 2
|
48
|
+
# Centered line with spaces on both sides
|
49
|
+
centered_line = ' ' * padding + line
|
50
|
+
|
51
|
+
# Add centered line to card
|
52
|
+
card += "| #{centered_line.ljust(card_width)} |\n"
|
53
|
+
|
54
|
+
# Add blank line after each text line
|
55
|
+
card += "| #{' ' * card_width} |\n"
|
56
|
+
end
|
57
|
+
|
58
|
+
card += border
|
59
|
+
|
60
|
+
card
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
class ObliqueStrategies
|
2
|
+
class Error < StandardError; end
|
3
|
+
|
4
|
+
STRATEGY_DIR = File.join(File.absolute_path(__dir__), '..', 'decks')
|
5
|
+
USER_DECK = File.join(File.absolute_path(__dir__), '..', 'decks', 'user_deck.txt')
|
6
|
+
|
7
|
+
def initialize(path: STRATEGY_DIR)
|
8
|
+
@deck = load_decks
|
9
|
+
end
|
10
|
+
|
11
|
+
def load_decks
|
12
|
+
Dir.glob(File.join(STRATEGY_DIR, '*.txt')).flat_map do |file|
|
13
|
+
File.readlines(file).map(&:chomp).map(&:strip)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def info
|
18
|
+
puts "Total number of cards in the deck: #{load_decks.size}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_a_card(path: USER_DECK)
|
22
|
+
puts "Add your card or press Ctrl+C if you reconsider."
|
23
|
+
prompt = gets.chomp
|
24
|
+
File.open(path, 'a') { |f| f << "#{prompt}\n" }
|
25
|
+
end
|
26
|
+
|
27
|
+
def card
|
28
|
+
@deck.sample
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def self.add_a_card(path: USER_DECK)
|
34
|
+
new.add_a_card(path: path)
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.card
|
38
|
+
new.card
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.info
|
42
|
+
new.info
|
43
|
+
end
|
44
|
+
end
|
data/lib/obs_deck.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "obs_deck/version"
|
4
|
+
|
5
|
+
module ObsDeck
|
6
|
+
class Error < StandardError; end
|
7
|
+
require "tty-prompt"
|
8
|
+
|
9
|
+
require_relative 'obs_deck/modules/my_methods'
|
10
|
+
require_relative 'obs_deck/oblique_strategies'
|
11
|
+
|
12
|
+
def self.start_menu
|
13
|
+
prompt = TTY::Prompt.new
|
14
|
+
prompt.select("menu") do |menu|
|
15
|
+
menu.choice 'deck', -> { puts MyMethods.create_card(ObliqueStrategies.card) }
|
16
|
+
menu.choice 'add a card', -> { ObliqueStrategies.add_a_card }
|
17
|
+
menu.choice 'info', -> { ObliqueStrategies.info }
|
18
|
+
menu.choice 'exit', -> { exit }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: obs_deck
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- audiosupp
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-10-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: tty-prompt
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.23.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.23.1
|
27
|
+
description: I wanted to create the Oblique Strategies gem myself because I'm learning,
|
28
|
+
and now I have created it.
|
29
|
+
email: leaveitblank@mail.com
|
30
|
+
executables:
|
31
|
+
- obs_deck
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- exe/obs_deck
|
36
|
+
- lib/decks/unique_phrases_deck.txt
|
37
|
+
- lib/decks/user_deck.txt
|
38
|
+
- lib/obs_deck.rb
|
39
|
+
- lib/obs_deck/modules/my_methods.rb
|
40
|
+
- lib/obs_deck/oblique_strategies.rb
|
41
|
+
- lib/obs_deck/version.rb
|
42
|
+
homepage: https://github.com/audiosupp/obs-deck/
|
43
|
+
licenses:
|
44
|
+
- MIT
|
45
|
+
metadata:
|
46
|
+
homepage_uri: https://github.com/audiosupp/obs-deck/
|
47
|
+
source_code_uri: https://github.com/audiosupp/obs-deck/
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 3.0.0
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirements: []
|
63
|
+
rubygems_version: 3.5.21
|
64
|
+
signing_key:
|
65
|
+
specification_version: 4
|
66
|
+
summary: Oblique Strategies in the Terminal CLI.
|
67
|
+
test_files: []
|