Finished Version 1.0. Guide for installation will be available soon

This commit is contained in:
janis
2022-02-27 13:48:51 +01:00
commit 523c11281c
8 changed files with 378 additions and 0 deletions

80
midi_converter.py Normal file
View File

@@ -0,0 +1,80 @@
from kivy.uix.screenmanager import ScreenManager
from kivymd.uix.screen import MDScreen
from kivy.uix.popup import Popup
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from kivy.uix.label import Label
from kivymd.app import MDApp
from mido import MidiFile
import os
import backend.midi_management
import backend.csv_parsers
import time
class HomeScreen(MDScreen):
pass
class FileChooserScreen(MDScreen):
loadfile = ObjectProperty(None)
def load(self, path, filename):
try:
self.path = os.path.join(path, filename[0])
try:
self.mid = MidiFile(self.path, clip=True)
backend.csv_parsers.CsvWrite().write_str("./backend/temp.csv", [self.path])
self.tracks = []
for self.track in self.mid.tracks:
self.tracks.append(str(self.track))
self.tracks.pop(0)
if len(self.tracks) > 1:
screen_manager.get_screen("Track").ids.track_spinner.values = self.tracks
screen_manager.current = "Track"
screen_manager.transition.direction = "up"
else:
screen_manager.current = "Home"
screen_manager.transition.direction = "right"
except:
self.popup_fe = Popup(title="FileError", content=Label(text="Please select a MIDI-File!"),
size_hint=(0.4, 0.4), auto_dismiss=True)
self.popup_fe.open()
except:
self.popup_foldererror = Popup(title="FileError", content=Label(text="Only MIDI-Files allowed, not folder"),
size_hint=(0.4, 0.4), auto_dismiss=True)
self.popup_foldererror.open()
class TrackChooseScreen(MDScreen):
def extract(self):
self.chosen_track = self.ids.track_spinner.text
if self.chosen_track == "Select a track":
self.popup_ns = Popup(title="NoSelectionError", content=Label(text="Please select a Track!"),
size_hint=(0.4, 0.4), auto_dismiss=True)
self.popup_ns.open()
else:
self.path = backend.csv_parsers.CsvRead().importing("./backend/temp.csv").pop(0)
self.path_transmit = self.path.pop(0)
backend.midi_management.MidiManagement().analyse_track(str(self.path_transmit), self.chosen_track)
screen_manager.get_screen("Home").ids.infobox.text = "The command has been copied to the clipboard"
screen_manager.current = "Home"
screen_manager.transition.direction = "right"
class MidiConverter(MDApp):
global screen_manager
screen_manager = ScreenManager()
def build(self):
self.title = "Midi-Microbit-Converter"
self.theme_cls.primary_palette = "Blue"
self.theme_cls.accent_palette = "BlueGray"
screen_manager.add_widget(Builder.load_file("./gui/gui.kv"))
screen_manager.add_widget(Builder.load_file("./gui/filechooser.kv"))
screen_manager.add_widget(Builder.load_file("./gui/loading_screen.kv"))
return screen_manager
MidiConverter().run()