From df878ebab26ca805ccc319164f8bc9f266bc2bcc Mon Sep 17 00:00:00 2001 From: Francesco Luzzana Date: Mon, 26 Dec 2022 16:35:33 +0100 Subject: [PATCH] init --- .gitignore | 2 + README.md | 51 +++ Seq.vl | 1006 ++++++++++++++++++++++++++++++++++++++++++++++ cover.png | Bin 0 -> 70679 bytes requirements.txt | 1 + seq.csv | 7 + seq.py | 42 ++ 7 files changed, 1109 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 Seq.vl create mode 100644 cover.png create mode 100644 requirements.txt create mode 100644 seq.csv create mode 100644 seq.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8bc348e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +venv/ +__pycache__ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e299f38 --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# Seq + +![cover made with libre office calc](cover.png) + +An open ended CSV sequencer. It only takes care of looping through a .csv file, row by row, and send the contents of each one to a client with OSC. + +In this way all the command logic is up to the user, and the sequencer can be prototyped on the go. + +There is no restriction in the number or lenght of columns. + +Tested with a VVVV client with different modes: + +- frequency + `440` + enter the frequency for a basic oscillator + +- frequency + waveform + `s400`, `t600`, `n700` + first character is the waveform (sine, tri, noise, pulse), the rest is the frequency + +- midi + `m064`, `m148` + m stands for midi, first digit is the midi channel, the rest is the note + ![](2022-12-26-16-26-40.png) + +## Install + +To install create a virtual environemnt and then install the requirements from the `requirements.txt` file. + +`python3 -m venv venv` + +`source venv/bin/activate` + +`pip install -r requirements.txt` + +## Run + +To run the sequencer run + +`python seq.py` + +It will read the contents of the `seq.csv` file and forward them on a OSC client running on the local ip `127.0.0.1`, on the port `1337` + +Note that you can edit live the `seq.csv` file with a software like LibreOffice Calc, or directly as a text file. + +ATM the main loop of the sequencer reload the file at every step. Not really efficient! But for small files should not be a problem. + +## Next steps + +- Use env files to set ports and osc address +- bpm as command line arguments diff --git a/Seq.vl b/Seq.vl new file mode 100644 index 0000000..8dbbdcf --- /dev/null +++ b/Seq.vl @@ -0,0 +1,1006 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Toggle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + s + t + n + r + m + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Toggle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + High + + + + + + + + + + + High + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cover.png b/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..053224e97406a6430301ab56873c863ff2eb2014 GIT binary patch literal 70679 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 Sk3L-j{}f~&$&^Vw@%vxKN$Riw literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a065ec5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +python-osc==1.8.0 diff --git a/seq.csv b/seq.csv new file mode 100644 index 0000000..f7bc011 --- /dev/null +++ b/seq.csv @@ -0,0 +1,7 @@ +Track 1,Track 2,Track 3,Track 4 +m064\0.1,,, +,,, +m098,,, +,,, +,,, +M064\2,,, diff --git a/seq.py b/seq.py new file mode 100644 index 0000000..e4a3363 --- /dev/null +++ b/seq.py @@ -0,0 +1,42 @@ +import csv +import time +from pythonosc.udp_client import SimpleUDPClient + +class Loop: + + index = 0 + + def __init__(self, seq: list, bpm: int, ip="127.0.0.1", port=1337): + self.seq = seq + self.bpm = bpm + self.client = SimpleUDPClient(ip, port) + + def read(self): + with open('seq.csv', newline='') as f: + self.seq = [step for step in csv.DictReader(f)] + + + def process(self, step): + commands = [command for command in step.values()] + self.client.send_message('/seq', commands) + for key, value in step.items(): + print(value, end=' ') + print('') + + def main(self): + while True: + self.read() + try: + self.process(self.seq[self.index]) + except IndexError: + self.index = 0 + self.process(self.seq[self.index]) + self.index = self.index + 1 if self.index < len(self.seq) - 1 else 0 + time.sleep(60/self.bpm/4) + + +if __name__ == "__main__": + with open('seq.csv', newline='') as f: + sequence = [step for step in csv.DictReader(f)] + loop = Loop(sequence, 120) + loop.main() \ No newline at end of file