mirror of
https://gitlab.dit.htwk-leipzig.de/computermusik-ws23/data-composition.git
synced 2025-07-04 14:21:45 +02:00
Update
This commit is contained in:
126
configs/BootTidal.hs
Normal file
126
configs/BootTidal.hs
Normal file
@ -0,0 +1,126 @@
|
||||
:set -XOverloadedStrings
|
||||
:set -XExtendedDefaultRules
|
||||
:set prompt ""
|
||||
|
||||
import Sound.Tidal.Context
|
||||
|
||||
import System.IO (hSetEncoding, stdout, utf8)
|
||||
hSetEncoding stdout utf8
|
||||
|
||||
-- Expose otherwise hidden modules
|
||||
:set -package vector
|
||||
:set -package bytestring
|
||||
:set -package random
|
||||
|
||||
-- Load all the Modules i need for data transformation, plotting and other stuff.
|
||||
import Text.Read
|
||||
import Data.Maybe
|
||||
import Graphics.Gnuplot.Simple
|
||||
import qualified Graphics.Gnuplot.Terminal.QT as QT
|
||||
import System.Random
|
||||
|
||||
|
||||
-- Have Chords available all the time
|
||||
import Sound.Tidal.Chords
|
||||
|
||||
|
||||
-- Load Data
|
||||
:cd /home/phillip/Projekte/HTWK/Computermusik/data-composition/datamodules
|
||||
:l TemperatureData HumidityData BatteryData
|
||||
|
||||
-- Load Data. This currently is pinned to my setup.
|
||||
import TemperatureData
|
||||
import HumidityData
|
||||
import BatteryData
|
||||
|
||||
|
||||
-- Normal Tidal Startup from here on
|
||||
tidal <- startTidal (superdirtTarget {oLatency = 0.05, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cVerbose = True, cFrameTimespan = 1/20})
|
||||
|
||||
:{
|
||||
let only = (hush >>)
|
||||
p = streamReplace tidal
|
||||
hush = streamHush tidal
|
||||
panic = do hush
|
||||
once $ sound "superpanic"
|
||||
list = streamList tidal
|
||||
mute = streamMute tidal
|
||||
unmute = streamUnmute tidal
|
||||
unmuteAll = streamUnmuteAll tidal
|
||||
unsoloAll = streamUnsoloAll tidal
|
||||
solo = streamSolo tidal
|
||||
unsolo = streamUnsolo tidal
|
||||
once = streamOnce tidal
|
||||
first = streamFirst tidal
|
||||
asap = once
|
||||
nudgeAll = streamNudgeAll tidal
|
||||
all = streamAll tidal
|
||||
resetCycles = streamResetCycles tidal
|
||||
setCycle = streamSetCycle tidal
|
||||
setcps = asap . cps
|
||||
getcps = streamGetcps tidal
|
||||
getnow = streamGetnow tidal
|
||||
xfade i = transition tidal True (Sound.Tidal.Transition.xfadeIn 4) i
|
||||
xfadeIn i t = transition tidal True (Sound.Tidal.Transition.xfadeIn t) i
|
||||
histpan i t = transition tidal True (Sound.Tidal.Transition.histpan t) i
|
||||
wait i t = transition tidal True (Sound.Tidal.Transition.wait t) i
|
||||
waitT i f t = transition tidal True (Sound.Tidal.Transition.waitT f t) i
|
||||
jump i = transition tidal True (Sound.Tidal.Transition.jump) i
|
||||
jumpIn i t = transition tidal True (Sound.Tidal.Transition.jumpIn t) i
|
||||
jumpIn' i t = transition tidal True (Sound.Tidal.Transition.jumpIn' t) i
|
||||
jumpMod i t = transition tidal True (Sound.Tidal.Transition.jumpMod t) i
|
||||
jumpMod' i t p = transition tidal True (Sound.Tidal.Transition.jumpMod' t p) i
|
||||
mortal i lifespan release = transition tidal True (Sound.Tidal.Transition.mortal lifespan release) i
|
||||
interpolate i = transition tidal True (Sound.Tidal.Transition.interpolate) i
|
||||
interpolateIn i t = transition tidal True (Sound.Tidal.Transition.interpolateIn t) i
|
||||
clutch i = transition tidal True (Sound.Tidal.Transition.clutch) i
|
||||
clutchIn i t = transition tidal True (Sound.Tidal.Transition.clutchIn t) i
|
||||
anticipate i = transition tidal True (Sound.Tidal.Transition.anticipate) i
|
||||
anticipateIn i t = transition tidal True (Sound.Tidal.Transition.anticipateIn t) i
|
||||
forId i t = transition tidal False (Sound.Tidal.Transition.mortalOverlay t) i
|
||||
d1 = p 1 . (|< orbit 0)
|
||||
d2 = p 2 . (|< orbit 1)
|
||||
d3 = p 3 . (|< orbit 2)
|
||||
d4 = p 4 . (|< orbit 3)
|
||||
d5 = p 5 . (|< orbit 4)
|
||||
d6 = p 6 . (|< orbit 5)
|
||||
d7 = p 7 . (|< orbit 6)
|
||||
d8 = p 8 . (|< orbit 7)
|
||||
d9 = p 9 . (|< orbit 8)
|
||||
d10 = p 10 . (|< orbit 9)
|
||||
d11 = p 11 . (|< orbit 10)
|
||||
d12 = p 12 . (|< orbit 11)
|
||||
d13 = p 13
|
||||
d14 = p 14
|
||||
d15 = p 15
|
||||
d16 = p 16
|
||||
:}
|
||||
|
||||
:{
|
||||
let getState = streamGet tidal
|
||||
setI = streamSetI tidal
|
||||
setF = streamSetF tidal
|
||||
setS = streamSetS tidal
|
||||
setR = streamSetR tidal
|
||||
setB = streamSetB tidal
|
||||
:}
|
||||
|
||||
|
||||
-- Custom Functions
|
||||
:{
|
||||
let getRawValueList tableData = map (\x -> snd x) tableData
|
||||
getRawLabelList tableData = map (\x -> fst x) tableData
|
||||
makePlottableList list = zip [0..] list
|
||||
plotPlainList list = plotListStyle [] (defaultStyle {plotType = LinesPoints, lineSpec = CustomStyle [LineTitle "Numerical Value", LineWidth 3, PointType 7, PointSize 3]}) $ makePlottableList list
|
||||
getNum value scalar = fromInteger $ round $ (maybe 0.0 id (readMaybe value :: Maybe Float)) * scalar
|
||||
listToNum list = map (\x -> getNum x 1) list
|
||||
sliceAt start length list = take length (drop start list)
|
||||
normalize max list = map (\x -> fromIntegral ( round ( max * ( x / (maximum list))))) list
|
||||
normalizeAt zero max list = map (\x -> fromIntegral ( round ( max * ((x - zero)/ (maximum (map (\y -> y - zero) list)))))) list
|
||||
scaleBetween low high max list = map (\x -> fromIntegral ( round (max * ((x - low)/ (high - low))))) list
|
||||
:}
|
||||
|
||||
:set prompt "tidal> "
|
||||
:set prompt-cont ""
|
||||
|
||||
default (Pattern String, Integer, Double)
|
54
configs/superdirt_startup.scd
Normal file
54
configs/superdirt_startup.scd
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
This is an example startup file.
|
||||
If you want to modify it, best copy it elsewhere to keep the git repository clean.
|
||||
|
||||
You can then load it by calling
|
||||
"path/to/my/superdirt_startup.scd".load
|
||||
from the supercollider startup file
|
||||
|
||||
The supercollider startup file is to be found in
|
||||
Platform.userAppSupportDir +/+ "startup.scd",
|
||||
or via the menu File > Open startup file
|
||||
*/
|
||||
|
||||
|
||||
(
|
||||
s.reboot { // server options are only updated on reboot
|
||||
// configure the sound server: here you could add hardware specific options
|
||||
// see http://doc.sccode.org/Classes/ServerOptions.html
|
||||
s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples
|
||||
s.options.memSize = 8192 * 32; // increase this if you get "alloc failed" messages
|
||||
s.options.numWireBufs = 64; // increase this if you get "exceeded number of interconnect buffers" messages
|
||||
s.options.maxNodes = 1024 * 32; // increase this if you are getting drop outs and the message "too many nodes"
|
||||
s.options.numOutputBusChannels = 2; // set this to your hardware output channel size, if necessary
|
||||
s.options.numInputBusChannels = 2; // set this to your hardware output channel size, if necessary
|
||||
// boot the server and start SuperDirt
|
||||
s.waitForBoot {
|
||||
~dirt.stop; // stop any old ones, avoid duplicate dirt (if it is nil, this won't do anything)
|
||||
~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels
|
||||
~dirt.loadSoundFiles(thisProcess.nowExecutingPath.dirname +/+ "../samples/*"); // load custom samples
|
||||
~dirt.loadSoundFiles; // load samples (path containing a wildcard can be passed in)
|
||||
s.sync; // wait for samples to be read
|
||||
~dirt.start(57120, 0 ! 12); // start listening on port 57120, create two busses each sending audio to channel 0
|
||||
|
||||
// optional, needed for convenient access from sclang:
|
||||
(
|
||||
~d1 = ~dirt.orbits[0]; ~d2 = ~dirt.orbits[1]; ~d3 = ~dirt.orbits[2];
|
||||
~d4 = ~dirt.orbits[3]; ~d5 = ~dirt.orbits[4]; ~d6 = ~dirt.orbits[5];
|
||||
~d7 = ~dirt.orbits[6]; ~d8 = ~dirt.orbits[7]; ~d9 = ~dirt.orbits[8];
|
||||
~d10 = ~dirt.orbits[9]; ~d11 = ~dirt.orbits[10]; ~d12 = ~dirt.orbits[11];
|
||||
);
|
||||
|
||||
// directly below here, in your own copy of this file, you could add further code that you want to call on startup
|
||||
// this makes sure the server and ~dirt are running
|
||||
// you can keep this separate and make it easier to switch between setups
|
||||
// by using "path/to/my/file.scd".load and if necessary commenting out different load statements
|
||||
// ...
|
||||
|
||||
};
|
||||
|
||||
s.latency = 0.3; // increase this if you get "late" messages
|
||||
|
||||
|
||||
};
|
||||
);
|
Reference in New Issue
Block a user