X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=helpers%2F__init__.py;h=2339b9ba7852318d043abf45373a3a38f089089c;hb=1b4b78f5b6df7182ac066fcc26a7b4f0e8586a47;hp=0f819e793653744983f99702daef11df9a51af60;hpb=98ff43054fe94f333e2deda2906cd62593ded1d8;p=perso%2FImmae%2FProjets%2FPython%2FMusicSampler.git diff --git a/helpers/__init__.py b/helpers/__init__.py index 0f819e7..2339b9b 100644 --- a/helpers/__init__.py +++ b/helpers/__init__.py @@ -1,6 +1,15 @@ # -*- coding: utf-8 -*- +import argparse import sys import os +import math + +class Config: + def __init__(self, **kwargs): + for arg in kwargs: + setattr(self, arg, kwargs[arg]) + +config = Config(yml_file="config.yml") def path(): if getattr(sys, 'frozen', False): @@ -9,6 +18,42 @@ def path(): path = os.path.dirname(os.path.realpath(__file__)) return path + "/../" +def parse_args(): + argv = sys.argv[1:] + sys.argv = sys.argv[:1] + if "--" in argv: + index = argv.index("--") + kivy_args = argv[index+1:] + argv = argv[:index] + + sys.argv.extend(kivy_args) + + parser = argparse.ArgumentParser(description="A Music Sampler application.") + parser.add_argument("-c", "--config", + default="config.yml", + required=False, + help="Config file to load") + parser.add_argument("-V", "--version", + action="version", + help="Displays the current version and exits. Only use in bundled package", + version=show_version()) + parser.add_argument('--', + dest="args", + help="Kivy arguments. All arguments after this are interpreted by Kivy. Pass \"-- --help\" to get Kivy's usage.") + args = parser.parse_args(argv) + + config.yml_file = args.config + +def show_version(): + if getattr(sys, 'frozen', False): + with open(path() + ".pyinstaller_commit", "r") as f: + return f.read() + else: + return "option '-v' can only be used in bundled package" + +def yml_file(): + return config.yml_file + def duration_to_min_sec(duration): minutes = int(duration / 60) seconds = int(duration) % 60 @@ -16,3 +61,10 @@ def duration_to_min_sec(duration): return "{:2}:{:0>2}".format(minutes, seconds) else: return "{}:{:0>2}".format(minutes, seconds) + +def gain(volume, old_volume = None): + if old_volume is None: + return 20 * math.log10(volume / 100) + else: + return [20 * math.log10(max(volume, 0.1) / max(old_volume, 0.1)), max(volume, 0)] +