WCCC_Tarot

WCCC_Tarot

Sonifying the Card Reading

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

IllestPreacha · AudibleCards

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()