From d98293667b3bea6b460bb3c1f959b80bc96e429a Mon Sep 17 00:00:00 2001 From: Navan Chauhan Date: Tue, 10 Mar 2020 20:45:47 +0530 Subject: [PATCH] Added VHSStyler --- README.md | 42 ++++++++--- VaporSong.py | 182 --------------------------------------------- assets/in-vhs.jpg | Bin 0 -> 25779 bytes assets/out-vhs.jpg | Bin 0 -> 45078 bytes main.py | 18 ++++- 5 files changed, 48 insertions(+), 194 deletions(-) delete mode 100644 VaporSong.py create mode 100644 assets/in-vhs.jpg create mode 100644 assets/out-vhs.jpg diff --git a/README.md b/README.md index 5095da4..0fea756 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # vaporwave generator 旺育栄 + A vaporwave music (+art, +video soon, I promise) generator bodged together using code from various sources. Runs on Python3 ``` -usage: main.py [-h] [-M] [-V] [-i INPUT] +usage: main.py [-h] [-M] [-P] [-V] [-i INPUT] This program takes YouTube URL or title of a song and converts it into vaporwave @@ -10,13 +11,26 @@ vaporwave optional arguments: -h, --help show this help message and exit -M, --music generate v a p o r w a v e music + -P, --picture generate VHS Style image -V, --version show program version -i INPUT, --input INPUT - input url + ``` If the program gives an error for sox, try running `ulimit -n 999'` +## Demo + +### M U S I C + +Linking to Bandcamp soon + +### V H S I M A G E + +![]("assets/in-vhs.jpg") + +![]("assets/out-vhs.jpg") + ## Installation This was tested on macOS Catalina ( so should work on almost all macOS versions). @@ -43,28 +57,38 @@ pip install -r requirements.txt ## Usage -### YouTube URL +### M U S I C + +#### YouTube URL ``` python3 main.py -M -i ``` -### Song Title +#### Song Title ``` python3 main.py -M -i Song Title ``` +### V H S I M A G E S + +`python3 main.py -P -i "image.jpg"` + ## Bugs This project is a result of bodging and therefore has tons of bugs which need to be ironed out ## To-Do -[ ] Move away from using os.system calls, and use Python modules instead ( Looking at you, Sox and aubio) -[ ] Clean the Code -[ ] Add Artwork Generator -[ ] Add Video Generator +[] Move away from using os.system calls, and use Python modules instead ( Looking at you, Sox and aubio) +[] Clean the Code +[] Add Artwork Generator +[x] VHS Picture Styler ( Added in v1.5 ) +[] Add Video Generator +[] Add Custom Date to VHS Styler ## Credits @WJLiddy His repo `Macintech` forms the base code for the music generator -@felipecustodio Using his repo `virtualdreamsbot` YouTube DL code ( Hopefully I will be able to integrate this project as a Telegram Bot) \ No newline at end of file +@felipecustodio Using his repo `virtualdreamsbot` YouTube DL code ( Hopefully I will be able to integrate this project as a Telegram Bot) + +@Ragex04 His repo `VHS_BingImages` forms the base code for the VHS Image Styler \ No newline at end of file diff --git a/VaporSong.py b/VaporSong.py deleted file mode 100644 index bb75646..0000000 --- a/VaporSong.py +++ /dev/null @@ -1,182 +0,0 @@ -import os -import subprocess -import re -from random import randint - -import logzero -from logzero import logger -from logzero import setup_logger - -CONFIDENCE_THRESH = 0.02 - -class VaporSong: - - # Slows down Track - - def slow_down(src, rate, dest): - cmd = "sox -G -D " + src + " " + dest + " speed " + str(rate) - os.system(cmd) - return dest - - # Adds Reverb - - def reverbize(src, dest): - cmd = "sox -G -D " + src + " " + dest + " reverb 100 fade 5 -0 7" # idk what this does tbh, https://stackoverflow.com/a/57767238/8386344 - os.system(cmd) - return dest - - - # Crops "src" from "start" plus "start + dur" and return it in "dest" - def crop(src,dest,start,dur): - cmd = "sox " + src + " " + dest + " trim " + " " + str(start) + " " + str(dur) - os.system(cmd) - - - # Randomly crops a part of the song of at most max_sec_len. - def random_crop(src, max_sec_len, dest): - out = subprocess.check_output(["soxi","-D",src]).rstrip() - f_len = int(float(out)) - if (f_len <= max_sec_len): - os.system("cp " + src + " " + dest) - return - else: - start_region = f_len - max_sec_len - start = randint(0,start_region) - VaporSong.crop(src,dest,start,max_sec_len) - - - # Given a file, returns a list of [beats, confidence], executable based on audibo's test-beattracking.c - # TODO: Move away from executable and use aubio's Python module - def fetchbeats(src): - beat_matrix = [] - if os.name == 'posix': - beats = subprocess.check_output(["noah", "get-beats",src]).rstrip() - else: - beats = subprocess.check_output(["get-beats",src]).rstrip() - beats_ary = beats.splitlines() - for i in beats_ary: - record = i.split() - record[0] = float(record[0])/1000.0 - record[1] = float(record[1]) - beat_matrix.append(record) - return beat_matrix - - # Splits an audio file into beats according to beat_matrix list - - def split_beat(src,beat_matrix): - split_files = [] - for i in range(0,len(beat_matrix)-1): - - if(beat_matrix[i][1] > CONFIDENCE_THRESH): - dur = (beat_matrix[i+1][0] - beat_matrix[i][0]) - out = src.split(".")[0]+str(i)+".wav" - VaporSong.crop(src,out,beat_matrix[i][0],dur) - split_files.append(out) - return split_files - - # Combines a list of sections - - def combine(sections,dest): - tocomb = [] - tocomb.append("sox") - tocomb.append("-G") - for section in sections: - for sample in section: - tocomb.append(sample) - tocomb.append(dest) - tmpFileLimit = len(tocomb) + 256 # in case the program messes up, it does not actually frick up your system - n = str(tmpFileLimit) - #logger.info("Setting file limit to ", n) - os.system("ulimit -n " + n) - subprocess.check_output(tocomb) - return dest - - # Arbitrarily groups beats into lists of 4, 6, 8, or 9, perfect for looping. - - def generate_sections(ary): - sections = [] - beats = [4,6,8,9] - index = 0 - while(index != len(ary)): - current_beat = beats[randint(0,len(beats)-1)] - new_section = [] - while((current_beat != 0) and (index != len(ary))): - new_section.append(ary[index]) - current_beat -= 1 - index += 1 - sections.append(new_section) - return sections - - - # given a list of sections, selects some of them and duplicates them, perfect for that vaporwave looping effect - def dup_sections(sections): - new_section = [] - for section in sections: - new_section.append(section) - if(randint(0,1) == 0): - new_section.append(section) - return new_section - - # a passage is a list of sections. This takes some sections and groups them into passages. - - def make_passages(sections): - passages = [] - index = 0 - while(index != len(sections)): - passage_len = randint(1,4) - passage = [] - while(index != len(sections) and passage_len > 0): - passage.append(sections[index]) - index += 1 - passage_len -= 1 - passages.append(passage) - return passages - - # Given all of our passages, picks some of them and inserts them into a list some number of times. - - def reorder_passages(passages): - new_passages = [] - passage_count = randint(5,12) - while(passage_count != 0): - passage = passages[randint(0,len(passages)-1)] - passage_count -= 1 - dup = randint(1,4) - while(dup != 0): - dup -= 1 - new_passages.append(passage) - return new_passages - - # converts a list of passages to a list of sections. - - def flatten(passages): - sections = [] - for passage in passages: - for section in passage: - sections.append(section) - return sections - - # It's all coming together - - def vaporize_song(fname, title): - logger.info("Slowing down the music") - VaporSong.slow_down(fname, 0.7, "beats/out.wav") - #logger.info("Cropping") - #VaporSong.random_crop("beats/out.wav",150,"beats/outcrop.wav") - logger.info("Doing Beat Analysis") - bm = VaporSong.fetchbeats("beats/out.wav") - logger.info("Split into beats") - splitd = VaporSong.split_beat("beats/out.wav",bm) - #group beats to sections - logger.info("Divide into sections") - sections = VaporSong.generate_sections(splitd) - logger.info("Duping Sections") - sdup = VaporSong.dup_sections(sections) - # group sections into passages - paslist = VaporSong.make_passages(sdup) - # reorder packages - pasloop = VaporSong.reorder_passages(paslist) - sectionflat = VaporSong.flatten(pasloop) - logger.info("Mastering & Reverbing") - VaporSong.combine(sectionflat,"beats/out_norev.wav") - VaporSong.reverbize("beats/out_norev.wav","./" + (re.sub(r"\W+|_", " ", title)).replace(" ","_") + ".wav") - logger.info("Generated V A P O R W A V E") diff --git a/assets/in-vhs.jpg b/assets/in-vhs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bcafb08fb1e8d11f79a2b760b101f03f6beefbf GIT binary patch literal 25779 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 literal 0 HcmV?d00001 diff --git a/assets/out-vhs.jpg b/assets/out-vhs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9637d5c06be38b64b264caee067ea963053ffb15 GIT binary patch literal 45078 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 Uvpn>VE9$3ibb`JS*^jaR0ag7Zc>n+a literal 0 HcmV?d00001 diff --git a/main.py b/main.py index de93106..50a0d90 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,5 @@ -from VaporSong import VaporSong +from src.VaporSong import VaporSong +from src.VHSImage import generateVHSStyle import os import sys import youtube_dl @@ -18,20 +19,28 @@ text = 'This program takes YouTube URL or title of a song and converts it into v parser = argparse.ArgumentParser(description = text) parser.add_argument("-M", "--music", help="generate v a p o r w a v e music", action="store_true") +parser.add_argument("-P", "--picture", help="generate VHS Style image", action="store_true") parser.add_argument("-V", "--version", help="show program version", action="store_true") -parser.add_argument("-i", "--input", help="input url") +parser.add_argument("-i", "--input") + args = parser.parse_args() +music = False +picture = False + if args.version: print("vaporwave generator 旺育栄", version) exit if args.music: music = True +elif args.picture: + picture = True if args.input: query = args.input else: - query = input("Enter target song's name or YouTube URL: ") + parser.print_help() + exit MAX_DURATION = 600 # In-case the program finds a compilation youtube_urls = ('youtube.com', 'https://www.youtube.com/', 'http://www.youtube.com/', 'http://youtu.be/', 'https://youtu.be/', 'youtu.be') @@ -149,3 +158,6 @@ for s in sys.argv: if music: name, title = download_file(query) gen_vapor(name, title) +elif picture: + generateVHSStyle(query,"out.jpg") + \ No newline at end of file