Table of contents
AudibleCards
For this week's Creative Code challenge by @sableRaph: "Tarot Cards ",
Audible Cards is coded in Sonic Pi by mapping the 22 cards in the Major Arcana to a particular sound. What you are hearing is the sound of a bunch of cards being read at the same time. Audio contains sped up versions and a reverse version of the main audio.
The deck used for this is https://en.wikipedia.org/wiki/Rider%E2%80%93Waite_Tarot
Poem
If the Cards had a heart
How would they speak,
Conduct their Interactions,
How will they take part,
in the conversations?
Will they be confident or meek?
Audio
Sound Mappings of the Cards
The Fool = ambi_piano
The Magician = ambi_dark_woosh
The High = Priestess elec_bell
The Empress = drum_bass_hard
The Emperor = drum_bass_soft
The Hierophant = bd_boom
The Lovers = glitch_perc4
The Chariot = loop_amen_full
Strength = loop_amen
The Hermit = guit_e_slide
Wheel of Fortune = glitch_bass_g
Justice = tabla_na
The Hanged Man = loop_drone_g_97
Death = drum_snare_soft
Temperance = bd_tek
The Devil l= oop_perc1
The Tower = ambi_drone
The Star = ambi_choir
The Moon = mehackit_robot5
The Sun = sn_dolf
Judgement = tabla_tun1
The World = ambi_swoosh
SonicPi Code
#Numbering System based on https://en.wikipedia.org/wiki/Rider%E2%80%93Waite_Tarot for the Major Arcana
#sounds will be mapped to the MajorArcana index value in groups of 3
cards = "The Fool, The Magician, The High Priestess, The Empress, The Emperor, The Hierophant, The Lovers, The Chariot, Strength, The Hermit, Wheel of Fortune, Justice, The Hanged Man, Death, Temperance, The Devil, The Tower, The Star, The Moon, The Sun, Judgement, The World"
MajorArcana = cards.split(",") #split the cards by the name
#appending the sound
sounds = [:ambi_piano,:ambi_dark_woosh,:elec_bell,:drum_bass_hard,:drum_bass_soft,:bd_boom,:glitch_perc4,:loop_amen_full, :loop_amen,:guit_e_slide,:glitch_bass_g,:tabla_na,:loop_drone_g_97,:drum_snare_soft,:bd_tek, :loop_perc1,:ambi_drone,:ambi_choir,:mehackit_robot5,:sn_dolf,:tabla_tun1,:ambi_swoosh]
#the sounds array
#mapping the two arrays into an hash
SoundsToCard = Hash[MajorArcana.zip(sounds)]
#prints the mapping
puts SoundsToCard
#plays the card
puts SoundsToCard[MajorArcana[0]] #this will upon the fool and play the piano
def reads(looping,bpming,effects, num1,num2,num3)
#seed generator that goes with time
use_random_seed Math.cbrt(Time.now.to_i)
live_loop looping do
use_bpm bpming.choose
with_fx effects.choose , mix: 0.65 do
#triple read
with_fx :echo, decay: 3 do
sample SoundsToCard[MajorArcana[rrand_i(0,21)]], rate: num1 / 3, beat_stretch: dice(num2), sustain: 4
end
with_fx :vowel ,voice: dice(3) + 1 do
sample SoundsToCard[MajorArcana[rrand_i(0,21)]], rate: num1 + 5, beat_stretch: dice(num2/4), sustain: 5
end
with_fx [:whammy,:wobble].tick, mix: rrand(0.1,0.85) do
sample SoundsToCard[MajorArcana[rrand_i(0,21)]], rate: (num1 + 3) / 4,beat_stretch: dice(num2/6), sustain: 6
end
end
sleep [0.5,1,2,4,8,12,16].choose
end
end
def readsets1()
reads(:read1,[120,240,180,30,15],[:flanger,:whammy,:reverb], 3,6,2)
reads(:read2,[90,45, 15,9, 110,300],[:ping_pong,:gverb,:ixi_techno], 3,9,2)
end
def readsets2()
reads(:read3,[200,150,50,100,75],[:flanger,:whammy,:reverb], 13,16,12)
reads(:read4,[10,20,30,40,50,60,70],[:ping_pong,:gverb,:ixi_techno], 13,19,12)
end
readsets1()
readsets2()