Ejemplo n.º 1
0
    def getSections(self):
        def sect():
            self.refreshTable()
            self.thresh = self.envAr.mean()
            self.sectList = []
            self.difAr = np.zeros(self.envAr.shape)
            '''division en sections'''
            for i in range(self.envAr.size):
                x = self.envAr[i] - self.envAr[i - 1]
                self.difAr[i] = x
                if x > self.thresh:
                    self.sectList.append(i)
            self.sectMean = np.float(np.mean(self.difAr))
            self.sectAr = np.split(self.envAr, self.sectList)
            '''suppression des sections > self.length pour plus de densite'''
            if self.length > self.sectMean:
                for i in reversed(range(len(self.sectAr))):
                    if self.sectAr[i].size > self.length:
                        del self.sectAr[i]
            else:
                for i in reversed(range(len(self.sectAr))):
                    if self.sectAr[i].size < self.length:
                        del self.sectAr[i]

        self.pat = sect()
        self.pat = pyo.Pattern(sect, self.dur).play()
        return self.sectAr
Ejemplo n.º 2
0
    def __init__(self):
        self._ticks: int = 0

        self.pulse_0: PulseChannel = PulseChannel()
        self.pulse_1: PulseChannel = PulseChannel()
        self.triangle: TriangleChannel = TriangleChannel()
        self.noise: NoiseChannel = NoiseChannel()
        self.pattern: pyo.Pattern = pyo.Pattern(self.clock, time=0.004)
Ejemplo n.º 3
0
    def play(self):
        def call():
            self.refreshTable()
            self.datar[:] = self.envAr

        self.pat = call()
        self.pat = pyo.Pattern(call, self.refreshRate).play()
        self.mul = pyo.TableRead(self.tab, 1 / self.dur, 1, 3).play()
        return self.mul
Ejemplo n.º 4
0
    def play(self):
        def hist():
            self.refreshTable()
            self.hist, self.bin = np.histogram(self.envAr,
                                               density=True,
                                               bins=self.nbin)
            self.hist = np.round(self.hist, 8)
            self.hist = self.hist / self.hist.sum()
            self.bins = self.bin[0:self.nbin]

        self.pat = hist()
        self.pat = pyo.Pattern(hist, self.refreshRate).play()

        def call():
            randHist = np.float(np.random.choice(self.bins, p=self.hist))
            self.datar[:] = randHist

        self.patHist = pyo.Pattern(call, 1 / self.res).play()
        self.mul = pyo.TableRead(self.tab, 1 / self.dur, 1, 3).play()
        return self.mul
Ejemplo n.º 5
0
    def play(self):
        def call():
            self.avList = []
            self.refreshTable()
            self.envarMo = self.envAr
            for i in range(self.envarMo.size):
                x = i + self.period
                self.avList.append(self.envarMo[x - self.period:x].mean())
            self.datar[:] = np.asarray(self.avList)

        self.pat = pyo.Pattern(call, self.refreshRate).play()
        self.mul = pyo.TableRead(self.tab, 1 / self.dur, 1, 3).play()
        return self.mul
Ejemplo n.º 6
0
    def analysis(self):
        self.pitchList = []
        self.pitch = pyo.Yin(self.read)
        s.setStartOffset(self.table.getDur())

        self.x = 0

        def pitchFunc():
            self.x += 1
            if self.x <= 5:
                self.pitchList.append(round(self.pitch.get()))

        self.pitchPat = pyo.Pattern(pitchFunc, .1).play()
        return self.pitchList
Ejemplo n.º 7
0
    def play(self):
        self.devList = []

        def deviation():
            self.devList.clear()
            self.refreshTable()
            for i in range(self.envAr.size):
                x = self.envAr[i] - self.envAr[i - 1]
                self.devList.append(x)
            self.mul += pyo.Choice(self.devList, self.res)

        self.pat = deviation()
        self.pat = pyo.Pattern(deviation, self.refreshRate).play()

        return self.mul
Ejemplo n.º 8
0
    def play(self):
        self.sectOG = self.sect = self.getSections()
        self.sectDum = np.concatenate(self.sect)
        time = np.size(self.sectDum) / self.dur

        def call():
            self.refreshTable()
            self.sect = self.getSections()
            self.sect = np.random.permutation(self.sect)
            self.sect = np.concatenate(self.sect)
            self.sect = np.resize(self.sect, self.datar.shape)
            self.datar[:] = np.asarray(self.sect)
            self.sect = self.sectOG

        self.patSect = call()
        self.patSect = pyo.Pattern(call, self.refreshRate).play()
        self.mul = pyo.TableRead(self.tab, 1 / self.dur, 1, 3).play()
        return self.mul
Ejemplo n.º 9
0
    def play(self):
        def call():
            self.refreshTable()
            self.envList = self.envAr.tolist()
            self.envLen = len(self.envList)
            self.tempEnv = []
            self.playedEnv = []

            for val in self.envList:
                self.tempEnv.append(val)
            for i in range(self.order):
                self.tempEnv.append(self.envList[i])
            self.playedEnv = self.envList[self.envLen - self.order:]

            self.newVal = 0
            self.condition = False
            self.probTable = []
            self.markEnv = []

            for val in range(self.envLen):
                for i in range(len(self.tempEnv) - self.order):
                    for iord in range(self.order):
                        if self.playedEnv[len(self.playedEnv) -
                                          (iord + 1)] != self.tempEnv[
                                              (self.order - 1) + i - iord]:
                            self.condition = False
                            break
                        else:
                            self.condition = True
                    if self.condition:
                        self.probTable.append(self.tempEnv[i + self.order])

                self.newVal = self.probTable[random.randint(
                    0, (len(self.probTable) - 1))]
                self.markEnv.append(self.newVal)
                self.playedEnv.append(self.newVal)

            self.markEnv = np.asarray(self.markEnv)
            self.datar[:] = np.asarray(self.markEnv)

        self.pat = call()
        self.pat = pyo.Pattern(call, self.refreshRate).play()
        self.mul = pyo.TableRead(self.tab, 1 / self.dur, 1, 3).play()
        return self.mul
Ejemplo n.º 10
0
    def playback2(self):
        print('pb2')
        fade = pyo.Fader(fadein=.1, fadeout=0.1, dur=10).play()
        glissando = pyo.SigTo(value=200, time=0.1, init=200)
        sinewave = pyo.SineLoop(
            freq=[glissando, glissando * 4 / 5, glissando * 4 / 3],
            feedback=.2,
            mul=fade)
        panner = pyo.Pan(sinewave,
                         outs=2,
                         pan=random.random(),
                         spread=random.random()).out()

        def pick_new_freq():
            glissando.value = pyo.Choice(choice=self.message_translation,
                                         freq=[1, 3])

        pattern = pyo.Pattern(function=pick_new_freq, time=[.25, 1]).play()
        time.sleep(fade.dur + .05)
Ejemplo n.º 11
0
    def playback2(self):
        print('pb2')
        fader = pyo.Fader(fadein=0.2, fadeout=0.2, dur=5, mul=.2)
        table = pyo.HarmTable([1, 2, 2, 5, 9])
        glissando = pyo.SigTo(value=self.message_translation[0],
                              time=0.1,
                              init=self.message_translation[0])
        osc = pyo.Osc(
            table=table,
            freq=[glissando / 2, (glissando - 1) / 2, (glissando + 100) / 2],
            mul=fader)
        panner = pyo.Pan(osc,
                         outs=2,
                         pan=random.random(),
                         spread=random.random()).out()

        def pat():
            freq = random.choice(self.message_translation)
            glissando.value = freq

        p = pyo.Pattern(pat, [self.message_length, .25, .75]).play()
        fader.play()
        time.sleep(fader.dur + .05)
        osc.stop()
Ejemplo n.º 12
0
    SIGNAL.mul = FADER

    # red & bold printing
    print(
        "\033[91m",
        "\033[1m",
        "\n",
    )

    def _loop() -> None:
        speaker = next(_speaker_cycle)
        print(
            "SPEAKER: ",
            "{}".format(speaker + 1),
            sep="",
            end="\r",
            flush=True,
        )
        SIGNAL.out(speaker, dur=TIME)
        FADER.play(dur=TIME)

    LOOP = pyo.Pattern(_loop, TIME + 0.075)
    LOOP.play()

    # starting server & gui
    SERVER.start()
    SERVER.gui(locals(), title="test-speaker", exit=False)

    # -----exiting
    subprocess.run("performance_off.sh", shell=True, stdout=subprocess.DEVNULL)
Ejemplo n.º 13
0
    pulse_ctr += 1
    if pulse_ctr >= len(_PULSE_REG0):
        pulse_ctr = 0


if __name__ == '__main__':
    server = pyo.Server(48000, nchnls=1).boot()

    apu = APU()

    # DEBUG
    # test = pyo.LFO(freq=200, type=2, mul=0.5).out()

    # 240 Hz clock
    pattern = pyo.Pattern(function=apu.clock, time=0.004).play()

    # Period = $3F8 -> Frequency should be 110 Hz
    apu.pulse_0.write_reg0(0x30)
    # apu.pulse_0.write_reg1(0x00)
    apu.pulse_0.write_reg2(0x20)
    apu.pulse_0.write_reg3(0x01)

    apu.triangle.write_reg0(0xFF)
    apu.triangle.write_reg2(0xFB)
    apu.triangle.write_reg3(0xF1)

    apu.noise.write_reg0(0x3F)
    apu.noise.write_reg2(0x04)
    apu.noise.write_reg3(0x01)
Ejemplo n.º 14
0
s = PyoServer()

m = pin.SimpleBeep()

s.start()

n = Note(550, 0.9, 0.4)
m.play(n)


class TT(object):
    def __init__(self, scale, instr):
        x0 = list(scale.notes)
        x1 = list(scale.notes)
        shuffle(x0)
        shuffle(x1)
        notes = [scale.notes[i] for j in zip(x0, x1) for i in j]
        self.notes = itertools.cycle(notes)
        self.instr = instr

    def __call__(self):
        freq = self.notes.next()
        self.instr.play(Note(freq, 0, 0))


tt = TT(scale, m)

p = pyo.Pattern(tt, 0.2)
p.play()