import Text.Read import Data.Maybe import Sound.Tidal.Chords import TemperatureData import HumidityData import BatteryData d1 $ s "bd" getNum value scalar = fromInteger $ round $ (maybe 0.0 id (readMaybe value :: Maybe Float)) * scalar sliceList start end list = take (end - start + 1) (drop start list) let temperatureScalar = 10 temperaturePattern = scale "major" (fromList (map (\x -> getNum x temperatureScalar) (map (\x -> snd x) (take 10 temperaturedata))) |- 150) temperature = fast 4 $ n ("x(3,5)" |> temperaturePattern + "['maj | 'min]" )# s "superpiano" # room 0.5 in d1 $ temperature let batteryScalar = 5 battery = n ("x(3,5)" |> batteryPattern + "['maj | 'min]" )# s "jvbass" # room 0.5 in d2 $ battery batteryScalar = 5 batteryPattern = scale "major" (fromList (map (\x -> getNum x batteryScalar) (map (\x -> snd x) (sliceList 500 510 batterydata))) |- 150) battery = n ("x(3,5)" |> batteryPattern + "['maj | 'min]" ) queryArc battery (Arc 0 2) queryArc temperature (Arc 0 2.5) d1 $ fast 10 $ append (n (fromList (map (\x -> fromInteger (round ((getFloat x)*10))) (map (\x -> snd x) (take 100 temperaturedata))))) ("~!10") # s "jvbass" # room 0.5 # delay 0.7 d2 $ fast 10 $ n (fromList (map (\x -> fromInteger (round ((getFloat x)*5))) (map (\x -> snd x) (take 100 humiditydata)))) # s "arpy" # room 0.5 # delay 0.7 d1 $ trigger $ s "" d1 $ n ( run 10) # s "v" :t map (\x -> getMaybeFloat (snd x)) (take 100 temperaturedata) queryArc (n("c'maj f4'maj'ii g4'maj'i c'maj")) (Arc 0 1) scaleTable chordTable