Full Code of thooore/SpleeterGUI for AI

master 344a8a5aa5e4 cached
34 files
281.4 KB
78.3k tokens
69 symbols
1 requests
Download .txt
Showing preview only (300K chars total). Download the full file or copy to clipboard to get everything.
Repository: thooore/SpleeterGUI
Branch: master
Commit: 344a8a5aa5e4
Files: 34
Total size: 281.4 KB

Directory structure:
gitextract_n87oml8j/

├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── SpleeterGui/
│   ├── App.config
│   ├── Form1.Designer.cs
│   ├── Form1.cs
│   ├── Form1.resx
│   ├── Program.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   ├── Settings.settings
│   │   └── app.manifest
│   ├── SpleeterGui.csproj
│   ├── configs/
│   │   ├── 2stems.json
│   │   ├── 4stems.json
│   │   └── 5stems.json
│   ├── languages_source/
│   │   ├── arabic.xml
│   │   ├── chinese.xml
│   │   ├── english.xml
│   │   ├── french.xml
│   │   ├── german.xml
│   │   ├── hindi.xml
│   │   ├── italian.xml
│   │   ├── japanese.xml
│   │   ├── korean.xml
│   │   ├── russian.xml
│   │   ├── spanish.xml
│   │   └── tchinese.xml
│   └── packages_OLD.config
├── SpleeterGui.sln
└── ni-stem-metadata.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Mono auto generated files
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# ASP.NET Scaffolding
ScaffoldingReadMe.txt

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

# Fody - auto-generated XML schema
FodyWeavers.xsd

/obj*
/bin*


================================================
FILE: LICENSE
================================================
Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
## SpleeterGUI - Music source separation desktop app  
Windows Desktop Front end for [Spleeter](https://github.com/deezer/spleeter) - AI source separation 

***THIS IS AN UPDATED VERSION OF [SPLEETERGUI](https://github.com/boy1dr/SpleeterGui/) WITH NO INSTALLER***

## Installation
1. Download the compiled binary folder from GitHub releases and place it wherever you want.
2. Download and extract [SpleeterCore](https://github.com/thooore/SpleeterCore)
3. Start SpleeterGUI (There could be an error message showing here, continue anyway!)
4. In SpleeterGUI select ***Advanced > Set SpleeterGUI Core path*** and select the path to where you unzipped SpleeterCore (The `root_folder.txt` of SpleeterCore should be in that folder)
5. Restart SpleeterGUI


This repository is a fork of the original [SpleeterGUI](https://github.com/boy1dr/SpleeterGui/)  which can be downloaded from [here](https://makenweb.com/SpleeterGUI).

The original project was developed by by [Maken It So](https://makenweb.com).
   
---
This new version (3.0) has some additional features:
- Generate [NI Stems](https://www.native-instruments.com/en/specials/stems/) for use in programs such as [Traktor](https://www.native-instruments.com/en/catalog/traktor/dj-software/)
- Different output formats
- Auto-name output files

---

This project is a C# desktop front end for Spleeter that adds the ability to create [NI Stems](https://www.native-instruments.com/en/specials/stems/).  

![SpleeterGUI_app](./docs/Spleeter_GUI.png)  



## Examples
https://www.youtube.com/watch?v=bdNzVPLzOLE  
https://www.youtube.com/watch?v=nxJfIsus0Ig  
https://www.youtube.com/watch?v=PHGAmZhuI-c  
https://www.youtube.com/watch?v=3X5nfc2d1Rw  
https://www.youtube.com/watch?v=9KkWJHC2bz0  
https://www.youtube.com/watch?v=Mygm1sFlQXc  

This project contains the C# source code for the Graphical User Interface. The GUI is an Windows Forms Application requiring Microsoft Visual Studio to build.

The [SpleeterGUI Core](https://github.com/thooore/SpleeterCore) required to run this program contains Python 3.7 and [Spleeter](https://github.com/deezer/spleeter). It contains everything you need to get up and running.

Feel free to inspect the source code and build for yourself.

## Help, FAQ and more
Check out the [Wiki](https://github.com/thooore/SpleeterGUI/wiki) for more information.
If you encounter a problem feel free to [create an issue](https://github.com/thooore/SpleeterGUI/issues/new)!

***

Also huge thanks to the original creator [Maken It So](https://makenweb.com/) for creating such a useful program!

================================================
FILE: SpleeterGui/App.config
================================================
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="SpleeterGui.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
    <userSettings>
        <SpleeterGui.Properties.Settings>
            <setting name="output_location" serializeAs="String">
                <value />
            </setting>
            <setting name="language" serializeAs="String">
                <value>english</value>
            </setting>
            <setting name="path_python" serializeAs="String">
                <value />
            </setting>
            <setting name="duration" serializeAs="String">
                <value>600</value>
            </setting>
            <setting name="codec" serializeAs="String">
                <value>1</value>
            </setting>
            <setting name="songName" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="bitrate" serializeAs="String">
                <value>320</value>
            </setting>
            <setting name="collection_location" serializeAs="String">
                <value>Input Collection</value>
            </setting>
            <setting name="collection_out_location" serializeAs="String">
                <value>Output Collection</value>
            </setting>
        </SpleeterGui.Properties.Settings>
    </userSettings>
</configuration>


================================================
FILE: SpleeterGui/Form1.Designer.cs
================================================
namespace SpleeterGui
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.stems2 = new System.Windows.Forms.RadioButton();
            this.stems4 = new System.Windows.Forms.RadioButton();
            this.stems5 = new System.Windows.Forms.RadioButton();
            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
            this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.mnuLanguage = new System.Windows.Forms.ToolStripMenuItem();
            this.advancedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.setPythonPathToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
            this.spleeterupgradeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.helpFAQToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.checkSpleeterGUIUpdateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
            this.spleeterGithubPageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
            this.makenItSoToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
            this.btnSaveTo = new System.Windows.Forms.Button();
            this.txt_output_directory = new System.Windows.Forms.TextBox();
            this.chkFullBandwidth = new System.Windows.Forms.CheckBox();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.lblDroptext = new System.Windows.Forms.Label();
            this.lblSlogan1 = new System.Windows.Forms.Label();
            this.progressBar1 = new System.Windows.Forms.ProgressBar();
            this.lblSlogan2 = new System.Windows.Forms.Label();
            this.lblPartsTitle = new System.Windows.Forms.Label();
            this.parts_btn2 = new System.Windows.Forms.Button();
            this.parts_btn4 = new System.Windows.Forms.Button();
            this.parts_btn5 = new System.Windows.Forms.Button();
            this.parts_label = new System.Windows.Forms.Label();
            this.lblProgress = new System.Windows.Forms.Label();
            this.progress_txt = new System.Windows.Forms.Label();
            this.btnSelectFiles = new System.Windows.Forms.Button();
            this.openFileDialog2 = new System.Windows.Forms.OpenFileDialog();
            this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
            this.pnlMain = new System.Windows.Forms.Panel();
            this.panel2 = new System.Windows.Forms.Panel();
            this.lblBitrate = new System.Windows.Forms.Label();
            this.lblKbps = new System.Windows.Forms.Label();
            this.bitrate = new System.Windows.Forms.NumericUpDown();
            this.lblMaxLength = new System.Windows.Forms.Label();
            this.lblSeconds = new System.Windows.Forms.Label();
            this.chkSongName = new System.Windows.Forms.CheckBox();
            this.duration = new System.Windows.Forms.NumericUpDown();
            this.codec_label = new System.Windows.Forms.Label();
            this.cmbBox_codec = new System.Windows.Forms.ComboBox();
            this.panel3 = new System.Windows.Forms.Panel();
            this.divider = new System.Windows.Forms.Label();
            this.panel1 = new System.Windows.Forms.Panel();
            this.btn_browse_collection = new System.Windows.Forms.Button();
            this.chkUpdateCollection = new System.Windows.Forms.CheckBox();
            this.txt_collection_path = new System.Windows.Forms.TextBox();
            this.chkStemsFolder = new System.Windows.Forms.CheckBox();
            this.chkStemRemoveFiles = new System.Windows.Forms.CheckBox();
            this.pictureBox2 = new System.Windows.Forms.PictureBox();
            this.chkNIStemTwoStems = new System.Windows.Forms.CheckBox();
            this.chkNIStem = new System.Windows.Forms.CheckBox();
            this.chkRecombine = new System.Windows.Forms.CheckBox();
            this.pnlRecombine = new System.Windows.Forms.Panel();
            this.chkRPartOther = new System.Windows.Forms.CheckBox();
            this.chkRPartPiano = new System.Windows.Forms.CheckBox();
            this.chkRPartDrums = new System.Windows.Forms.CheckBox();
            this.chkRPartBass = new System.Windows.Forms.CheckBox();
            this.chkRPartVocal = new System.Windows.Forms.CheckBox();
            this.pictureBox1 = new System.Windows.Forms.PictureBox();
            this.openFileDialogCollection = new System.Windows.Forms.OpenFileDialog();
            this.btn_browse_collection_out = new System.Windows.Forms.Button();
            this.txt_collection_path_out = new System.Windows.Forms.TextBox();
            this.chkOverwriteCollection = new System.Windows.Forms.CheckBox();
            this.menuStrip1.SuspendLayout();
            this.pnlMain.SuspendLayout();
            this.panel2.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.bitrate)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.duration)).BeginInit();
            this.panel3.SuspendLayout();
            this.panel1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
            this.pnlRecombine.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
            this.SuspendLayout();
            // 
            // stems2
            // 
            this.stems2.Location = new System.Drawing.Point(0, 0);
            this.stems2.Name = "stems2";
            this.stems2.Size = new System.Drawing.Size(104, 24);
            this.stems2.TabIndex = 36;
            // 
            // stems4
            // 
            this.stems4.Location = new System.Drawing.Point(0, 0);
            this.stems4.Name = "stems4";
            this.stems4.Size = new System.Drawing.Size(104, 24);
            this.stems4.TabIndex = 35;
            // 
            // stems5
            // 
            this.stems5.Location = new System.Drawing.Point(0, 0);
            this.stems5.Name = "stems5";
            this.stems5.Size = new System.Drawing.Size(104, 24);
            this.stems5.TabIndex = 34;
            // 
            // menuStrip1
            // 
            this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.fileToolStripMenuItem,
            this.mnuLanguage,
            this.advancedToolStripMenuItem,
            this.helpToolStripMenuItem});
            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
            this.menuStrip1.Name = "menuStrip1";
            this.menuStrip1.Size = new System.Drawing.Size(522, 24);
            this.menuStrip1.TabIndex = 9;
            this.menuStrip1.Text = "menuStrip1";
            // 
            // fileToolStripMenuItem
            // 
            this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.exitToolStripMenuItem});
            this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
            this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
            this.fileToolStripMenuItem.Text = "&File";
            // 
            // exitToolStripMenuItem
            // 
            this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
            this.exitToolStripMenuItem.Size = new System.Drawing.Size(93, 22);
            this.exitToolStripMenuItem.Text = "E&xit";
            this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
            // 
            // mnuLanguage
            // 
            this.mnuLanguage.Name = "mnuLanguage";
            this.mnuLanguage.Size = new System.Drawing.Size(71, 20);
            this.mnuLanguage.Text = "Language";
            // 
            // advancedToolStripMenuItem
            // 
            this.advancedToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.setPythonPathToolStripMenuItem1,
            this.spleeterupgradeToolStripMenuItem});
            this.advancedToolStripMenuItem.Name = "advancedToolStripMenuItem";
            this.advancedToolStripMenuItem.Size = new System.Drawing.Size(72, 20);
            this.advancedToolStripMenuItem.Text = "&Advanced";
            // 
            // setPythonPathToolStripMenuItem1
            // 
            this.setPythonPathToolStripMenuItem1.Name = "setPythonPathToolStripMenuItem1";
            this.setPythonPathToolStripMenuItem1.Size = new System.Drawing.Size(209, 22);
            this.setPythonPathToolStripMenuItem1.Text = "&Set SpleeterGUI Core path";
            this.setPythonPathToolStripMenuItem1.Click += new System.EventHandler(this.setPythonPathToolStripMenuItem1_Click);
            // 
            // spleeterupgradeToolStripMenuItem
            // 
            this.spleeterupgradeToolStripMenuItem.Name = "spleeterupgradeToolStripMenuItem";
            this.spleeterupgradeToolStripMenuItem.Size = new System.Drawing.Size(209, 22);
            this.spleeterupgradeToolStripMenuItem.Text = "&Update Spleeter version";
            this.spleeterupgradeToolStripMenuItem.Click += new System.EventHandler(this.spleeterupgradeToolStripMenuItem_Click);
            // 
            // helpToolStripMenuItem
            // 
            this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.helpFAQToolStripMenuItem,
            this.checkSpleeterGUIUpdateToolStripMenuItem,
            this.toolStripMenuItem3,
            this.spleeterGithubPageToolStripMenuItem,
            this.makenItSoToolStripMenuItem1});
            this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
            this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
            this.helpToolStripMenuItem.Text = "&Help";
            // 
            // helpFAQToolStripMenuItem
            // 
            this.helpFAQToolStripMenuItem.Name = "helpFAQToolStripMenuItem";
            this.helpFAQToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
            this.helpFAQToolStripMenuItem.Text = "&Help and FAQ";
            this.helpFAQToolStripMenuItem.Click += new System.EventHandler(this.helpFAQToolStripMenuItem_Click);
            // 
            // checkSpleeterGUIUpdateToolStripMenuItem
            // 
            this.checkSpleeterGUIUpdateToolStripMenuItem.Name = "checkSpleeterGUIUpdateToolStripMenuItem";
            this.checkSpleeterGUIUpdateToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
            this.checkSpleeterGUIUpdateToolStripMenuItem.Text = "Check for SpleeterGUI &updates";
            this.checkSpleeterGUIUpdateToolStripMenuItem.Click += new System.EventHandler(this.checkSpleeterGUIUpdateToolStripMenuItem_Click);
            // 
            // toolStripMenuItem3
            // 
            this.toolStripMenuItem3.Name = "toolStripMenuItem3";
            this.toolStripMenuItem3.Size = new System.Drawing.Size(231, 6);
            // 
            // spleeterGithubPageToolStripMenuItem
            // 
            this.spleeterGithubPageToolStripMenuItem.Name = "spleeterGithubPageToolStripMenuItem";
            this.spleeterGithubPageToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
            this.spleeterGithubPageToolStripMenuItem.Text = "SpleeterGUI &GitHub page";
            this.spleeterGithubPageToolStripMenuItem.Click += new System.EventHandler(this.spleeterGithubPageToolStripMenuItem_Click);
            // 
            // makenItSoToolStripMenuItem1
            // 
            this.makenItSoToolStripMenuItem1.Name = "makenItSoToolStripMenuItem1";
            this.makenItSoToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
            this.makenItSoToolStripMenuItem1.Text = "&Maken It So GitHub";
            this.makenItSoToolStripMenuItem1.Click += new System.EventHandler(this.makenItSoToolStripMenuItem1_Click);
            // 
            // btnSaveTo
            // 
            this.btnSaveTo.AccessibleDescription = "Choose folder to save separated files to";
            this.btnSaveTo.AccessibleName = "Save to";
            this.btnSaveTo.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.btnSaveTo.Font = new System.Drawing.Font("Segoe UI", 8.25F);
            this.btnSaveTo.ForeColor = System.Drawing.Color.Black;
            this.btnSaveTo.Location = new System.Drawing.Point(15, 7);
            this.btnSaveTo.Name = "btnSaveTo";
            this.btnSaveTo.Size = new System.Drawing.Size(97, 22);
            this.btnSaveTo.TabIndex = 8;
            this.btnSaveTo.Text = "Save to";
            this.btnSaveTo.UseVisualStyleBackColor = true;
            this.btnSaveTo.Click += new System.EventHandler(this.Button2_Click);
            // 
            // txt_output_directory
            // 
            this.txt_output_directory.AccessibleDescription = "shows output directory location";
            this.txt_output_directory.AccessibleName = "output directory display";
            this.txt_output_directory.AccessibleRole = System.Windows.Forms.AccessibleRole.StaticText;
            this.txt_output_directory.Font = new System.Drawing.Font("Segoe UI", 8.25F);
            this.txt_output_directory.ForeColor = System.Drawing.Color.Black;
            this.txt_output_directory.Location = new System.Drawing.Point(118, 7);
            this.txt_output_directory.Name = "txt_output_directory";
            this.txt_output_directory.Size = new System.Drawing.Size(364, 22);
            this.txt_output_directory.TabIndex = 9;
            // 
            // chkFullBandwidth
            // 
            this.chkFullBandwidth.AccessibleDescription = "enable high quality mode (may increase noise)";
            this.chkFullBandwidth.AccessibleName = "full bandwidth";
            this.chkFullBandwidth.AccessibleRole = System.Windows.Forms.AccessibleRole.CheckButton;
            this.chkFullBandwidth.AutoSize = true;
            this.chkFullBandwidth.Checked = true;
            this.chkFullBandwidth.CheckState = System.Windows.Forms.CheckState.Checked;
            this.chkFullBandwidth.ForeColor = System.Drawing.Color.Black;
            this.chkFullBandwidth.Location = new System.Drawing.Point(14, 11);
            this.chkFullBandwidth.Name = "chkFullBandwidth";
            this.chkFullBandwidth.Size = new System.Drawing.Size(192, 17);
            this.chkFullBandwidth.TabIndex = 7;
            this.chkFullBandwidth.Text = "Full bandwidth (16kHz High quality)";
            this.chkFullBandwidth.UseVisualStyleBackColor = true;
            this.chkFullBandwidth.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
            // 
            // textBox1
            // 
            this.textBox1.AcceptsReturn = true;
            this.textBox1.AccessibleDescription = "spleeter debug output";
            this.textBox1.AccessibleName = "Console output";
            this.textBox1.AccessibleRole = System.Windows.Forms.AccessibleRole.Text;
            this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
            this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.textBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(102)))), ((int)(((byte)(204)))));
            this.textBox1.Location = new System.Drawing.Point(4, 139);
            this.textBox1.Multiline = true;
            this.textBox1.Name = "textBox1";
            this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
            this.textBox1.Size = new System.Drawing.Size(492, 229);
            this.textBox1.TabIndex = 16;
            // 
            // lblDroptext
            // 
            this.lblDroptext.AutoSize = true;
            this.lblDroptext.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblDroptext.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
            this.lblDroptext.Location = new System.Drawing.Point(43, 39);
            this.lblDroptext.Name = "lblDroptext";
            this.lblDroptext.Size = new System.Drawing.Size(412, 24);
            this.lblDroptext.TabIndex = 13;
            this.lblDroptext.Text = "Drop your music file(s) here to begin processing";
            // 
            // lblSlogan1
            // 
            this.lblSlogan1.AutoSize = true;
            this.lblSlogan1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblSlogan1.ForeColor = System.Drawing.Color.Gray;
            this.lblSlogan1.Location = new System.Drawing.Point(308, 56);
            this.lblSlogan1.Name = "lblSlogan1";
            this.lblSlogan1.Size = new System.Drawing.Size(171, 18);
            this.lblSlogan1.TabIndex = 0;
            this.lblSlogan1.Text = "Music source separation";
            // 
            // progressBar1
            // 
            this.progressBar1.AccessibleDescription = "Shows overall process completion";
            this.progressBar1.AccessibleName = "Progress Bar";
            this.progressBar1.AccessibleRole = System.Windows.Forms.AccessibleRole.ProgressBar;
            this.progressBar1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
            this.progressBar1.Location = new System.Drawing.Point(4, 116);
            this.progressBar1.Name = "progressBar1";
            this.progressBar1.Size = new System.Drawing.Size(491, 17);
            this.progressBar1.TabIndex = 11;
            // 
            // lblSlogan2
            // 
            this.lblSlogan2.AutoSize = true;
            this.lblSlogan2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblSlogan2.ForeColor = System.Drawing.Color.Gray;
            this.lblSlogan2.Location = new System.Drawing.Point(308, 75);
            this.lblSlogan2.Name = "lblSlogan2";
            this.lblSlogan2.Size = new System.Drawing.Size(174, 18);
            this.lblSlogan2.TabIndex = 1;
            this.lblSlogan2.Text = "Windows desktop bundle";
            // 
            // lblPartsTitle
            // 
            this.lblPartsTitle.AutoSize = true;
            this.lblPartsTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblPartsTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
            this.lblPartsTitle.Location = new System.Drawing.Point(19, 129);
            this.lblPartsTitle.Name = "lblPartsTitle";
            this.lblPartsTitle.Size = new System.Drawing.Size(148, 24);
            this.lblPartsTitle.TabIndex = 2;
            this.lblPartsTitle.Text = "Parts to separate";
            // 
            // parts_btn2
            // 
            this.parts_btn2.AccessibleDescription = "Separate song in 2 parts";
            this.parts_btn2.AccessibleName = "Two parts";
            this.parts_btn2.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.parts_btn2.Cursor = System.Windows.Forms.Cursors.Hand;
            this.parts_btn2.ForeColor = System.Drawing.Color.Black;
            this.parts_btn2.Location = new System.Drawing.Point(173, 127);
            this.parts_btn2.Name = "parts_btn2";
            this.parts_btn2.Size = new System.Drawing.Size(34, 29);
            this.parts_btn2.TabIndex = 3;
            this.parts_btn2.Text = "2";
            this.parts_btn2.UseVisualStyleBackColor = false;
            this.parts_btn2.Click += new System.EventHandler(this.parts_btn2_Click);
            // 
            // parts_btn4
            // 
            this.parts_btn4.AccessibleDescription = "Separate song in 4 parts";
            this.parts_btn4.AccessibleName = "four parts";
            this.parts_btn4.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.parts_btn4.Cursor = System.Windows.Forms.Cursors.Hand;
            this.parts_btn4.ForeColor = System.Drawing.Color.Black;
            this.parts_btn4.Location = new System.Drawing.Point(213, 127);
            this.parts_btn4.Name = "parts_btn4";
            this.parts_btn4.Size = new System.Drawing.Size(34, 29);
            this.parts_btn4.TabIndex = 4;
            this.parts_btn4.Text = "4";
            this.parts_btn4.UseVisualStyleBackColor = true;
            this.parts_btn4.Click += new System.EventHandler(this.parts_btn4_Click);
            // 
            // parts_btn5
            // 
            this.parts_btn5.AccessibleDescription = "Separate song in 4 parts";
            this.parts_btn5.AccessibleName = "five parts";
            this.parts_btn5.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.parts_btn5.Cursor = System.Windows.Forms.Cursors.Hand;
            this.parts_btn5.ForeColor = System.Drawing.Color.Black;
            this.parts_btn5.Location = new System.Drawing.Point(253, 127);
            this.parts_btn5.Name = "parts_btn5";
            this.parts_btn5.Size = new System.Drawing.Size(34, 29);
            this.parts_btn5.TabIndex = 5;
            this.parts_btn5.Text = "5";
            this.parts_btn5.UseVisualStyleBackColor = true;
            this.parts_btn5.Click += new System.EventHandler(this.parts_btn5_Click);
            // 
            // parts_label
            // 
            this.parts_label.AccessibleDescription = "displays separated parts names";
            this.parts_label.AccessibleName = "parts description";
            this.parts_label.AccessibleRole = System.Windows.Forms.AccessibleRole.Text;
            this.parts_label.AutoSize = true;
            this.parts_label.ForeColor = System.Drawing.Color.Black;
            this.parts_label.Location = new System.Drawing.Point(293, 135);
            this.parts_label.Name = "parts_label";
            this.parts_label.Size = new System.Drawing.Size(122, 13);
            this.parts_label.TabIndex = 6;
            this.parts_label.Text = "Vocal + Accompaniment";
            // 
            // lblProgress
            // 
            this.lblProgress.AutoSize = true;
            this.lblProgress.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblProgress.ForeColor = System.Drawing.Color.Black;
            this.lblProgress.Location = new System.Drawing.Point(1, 96);
            this.lblProgress.Name = "lblProgress";
            this.lblProgress.Size = new System.Drawing.Size(61, 17);
            this.lblProgress.TabIndex = 10;
            this.lblProgress.Text = "Progress";
            // 
            // progress_txt
            // 
            this.progress_txt.AutoSize = true;
            this.progress_txt.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.progress_txt.ForeColor = System.Drawing.Color.Black;
            this.progress_txt.Location = new System.Drawing.Point(61, 96);
            this.progress_txt.Name = "progress_txt";
            this.progress_txt.Size = new System.Drawing.Size(29, 17);
            this.progress_txt.TabIndex = 12;
            this.progress_txt.Text = "idle";
            // 
            // btnSelectFiles
            // 
            this.btnSelectFiles.AccessibleDescription = "Choose music files to begin processing";
            this.btnSelectFiles.AccessibleName = "Choose music files";
            this.btnSelectFiles.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.btnSelectFiles.ForeColor = System.Drawing.Color.Black;
            this.btnSelectFiles.Location = new System.Drawing.Point(186, 70);
            this.btnSelectFiles.Name = "btnSelectFiles";
            this.btnSelectFiles.Size = new System.Drawing.Size(124, 23);
            this.btnSelectFiles.TabIndex = 15;
            this.btnSelectFiles.Text = "Or select music file(s)";
            this.btnSelectFiles.UseVisualStyleBackColor = true;
            this.btnSelectFiles.Click += new System.EventHandler(this.button1_Click);
            // 
            // openFileDialog2
            // 
            this.openFileDialog2.Filter = "Music Files|*.mp3;*.wav;*.ogg;*.m4a;*.wma;*.flac|All files (*.*)|*.*";
            this.openFileDialog2.Multiselect = true;
            this.openFileDialog2.FileOk += new System.ComponentModel.CancelEventHandler(this.openFileDialog2_FileOk);
            // 
            // pnlMain
            // 
            this.pnlMain.Controls.Add(this.panel2);
            this.pnlMain.Controls.Add(this.panel3);
            this.pnlMain.Controls.Add(this.divider);
            this.pnlMain.Controls.Add(this.panel1);
            this.pnlMain.Location = new System.Drawing.Point(12, 182);
            this.pnlMain.Name = "pnlMain";
            this.pnlMain.Size = new System.Drawing.Size(504, 579);
            this.pnlMain.TabIndex = 37;
            // 
            // panel2
            // 
            this.panel2.Controls.Add(this.lblBitrate);
            this.panel2.Controls.Add(this.lblKbps);
            this.panel2.Controls.Add(this.bitrate);
            this.panel2.Controls.Add(this.chkFullBandwidth);
            this.panel2.Controls.Add(this.lblMaxLength);
            this.panel2.Controls.Add(this.lblSeconds);
            this.panel2.Controls.Add(this.chkSongName);
            this.panel2.Controls.Add(this.duration);
            this.panel2.Controls.Add(this.codec_label);
            this.panel2.Controls.Add(this.cmbBox_codec);
            this.panel2.Location = new System.Drawing.Point(0, 2);
            this.panel2.Name = "panel2";
            this.panel2.Size = new System.Drawing.Size(504, 88);
            this.panel2.TabIndex = 43;
            // 
            // lblBitrate
            // 
            this.lblBitrate.AutoSize = true;
            this.lblBitrate.ForeColor = System.Drawing.Color.Black;
            this.lblBitrate.Location = new System.Drawing.Point(14, 65);
            this.lblBitrate.Name = "lblBitrate";
            this.lblBitrate.Size = new System.Drawing.Size(37, 13);
            this.lblBitrate.TabIndex = 40;
            this.lblBitrate.Text = "Bitrate";
            // 
            // lblKbps
            // 
            this.lblKbps.AutoSize = true;
            this.lblKbps.Location = new System.Drawing.Point(105, 65);
            this.lblKbps.Name = "lblKbps";
            this.lblKbps.Size = new System.Drawing.Size(30, 13);
            this.lblKbps.TabIndex = 41;
            this.lblKbps.Text = "kbps";
            // 
            // bitrate
            // 
            this.bitrate.Location = new System.Drawing.Point(53, 63);
            this.bitrate.Maximum = new decimal(new int[] {
            7200,
            0,
            0,
            0});
            this.bitrate.Name = "bitrate";
            this.bitrate.Size = new System.Drawing.Size(49, 20);
            this.bitrate.TabIndex = 42;
            this.bitrate.Value = new decimal(new int[] {
            128,
            0,
            0,
            0});
            this.bitrate.ValueChanged += new System.EventHandler(this.bitrate_ValueChanged);
            // 
            // lblMaxLength
            // 
            this.lblMaxLength.AutoSize = true;
            this.lblMaxLength.ForeColor = System.Drawing.Color.Black;
            this.lblMaxLength.Location = new System.Drawing.Point(14, 38);
            this.lblMaxLength.Name = "lblMaxLength";
            this.lblMaxLength.Size = new System.Drawing.Size(109, 13);
            this.lblMaxLength.TabIndex = 17;
            this.lblMaxLength.Text = "Maximum song length";
            // 
            // lblSeconds
            // 
            this.lblSeconds.AutoSize = true;
            this.lblSeconds.Location = new System.Drawing.Point(175, 38);
            this.lblSeconds.Name = "lblSeconds";
            this.lblSeconds.Size = new System.Drawing.Size(47, 13);
            this.lblSeconds.TabIndex = 18;
            this.lblSeconds.Text = "seconds";
            // 
            // chkSongName
            // 
            this.chkSongName.AccessibleDescription = "Writes input song file name to the output files";
            this.chkSongName.AccessibleName = "Song name to output";
            this.chkSongName.AccessibleRole = System.Windows.Forms.AccessibleRole.CheckButton;
            this.chkSongName.AutoSize = true;
            this.chkSongName.Location = new System.Drawing.Point(309, 11);
            this.chkSongName.Name = "chkSongName";
            this.chkSongName.Size = new System.Drawing.Size(172, 17);
            this.chkSongName.TabIndex = 39;
            this.chkSongName.Text = "Write input name to output files";
            this.chkSongName.UseVisualStyleBackColor = true;
            this.chkSongName.CheckedChanged += new System.EventHandler(this.chkSongName_CheckedChanged);
            // 
            // duration
            // 
            this.duration.Location = new System.Drawing.Point(123, 36);
            this.duration.Maximum = new decimal(new int[] {
            7200,
            0,
            0,
            0});
            this.duration.Name = "duration";
            this.duration.Size = new System.Drawing.Size(49, 20);
            this.duration.TabIndex = 19;
            this.duration.Value = new decimal(new int[] {
            600,
            0,
            0,
            0});
            this.duration.ValueChanged += new System.EventHandler(this.duration_ValueChanged);
            // 
            // codec_label
            // 
            this.codec_label.AutoSize = true;
            this.codec_label.Location = new System.Drawing.Point(324, 38);
            this.codec_label.Name = "codec_label";
            this.codec_label.Size = new System.Drawing.Size(72, 13);
            this.codec_label.TabIndex = 21;
            this.codec_label.Text = "Output codec";
            // 
            // cmbBox_codec
            // 
            this.cmbBox_codec.AccessibleDescription = "Choose what codec you want the output to be in";
            this.cmbBox_codec.AccessibleName = "Choose codec";
            this.cmbBox_codec.AccessibleRole = System.Windows.Forms.AccessibleRole.DropList;
            this.cmbBox_codec.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cmbBox_codec.FormattingEnabled = true;
            this.cmbBox_codec.Items.AddRange(new object[] {
            "wav",
            "mp3",
            "ogg",
            "m4a",
            "wma",
            "flac"});
            this.cmbBox_codec.Location = new System.Drawing.Point(402, 35);
            this.cmbBox_codec.Name = "cmbBox_codec";
            this.cmbBox_codec.Size = new System.Drawing.Size(79, 21);
            this.cmbBox_codec.TabIndex = 20;
            this.cmbBox_codec.SelectedIndexChanged += new System.EventHandler(this.cmbBox_codec_SelectedIndexChanged);
            // 
            // panel3
            // 
            this.panel3.Controls.Add(this.txt_output_directory);
            this.panel3.Controls.Add(this.btnSaveTo);
            this.panel3.Controls.Add(this.lblDroptext);
            this.panel3.Controls.Add(this.btnSelectFiles);
            this.panel3.Controls.Add(this.textBox1);
            this.panel3.Controls.Add(this.progress_txt);
            this.panel3.Controls.Add(this.lblProgress);
            this.panel3.Controls.Add(this.progressBar1);
            this.panel3.Location = new System.Drawing.Point(0, 89);
            this.panel3.Name = "panel3";
            this.panel3.Size = new System.Drawing.Size(504, 376);
            this.panel3.TabIndex = 43;
            // 
            // divider
            // 
            this.divider.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
            this.divider.Location = new System.Drawing.Point(0, 471);
            this.divider.Name = "divider";
            this.divider.Size = new System.Drawing.Size(504, 2);
            this.divider.TabIndex = 42;
            // 
            // panel1
            // 
            this.panel1.Controls.Add(this.chkOverwriteCollection);
            this.panel1.Controls.Add(this.btn_browse_collection_out);
            this.panel1.Controls.Add(this.txt_collection_path_out);
            this.panel1.Controls.Add(this.btn_browse_collection);
            this.panel1.Controls.Add(this.chkUpdateCollection);
            this.panel1.Controls.Add(this.txt_collection_path);
            this.panel1.Controls.Add(this.chkStemsFolder);
            this.panel1.Controls.Add(this.chkStemRemoveFiles);
            this.panel1.Controls.Add(this.pictureBox2);
            this.panel1.Controls.Add(this.chkNIStemTwoStems);
            this.panel1.Controls.Add(this.chkNIStem);
            this.panel1.Location = new System.Drawing.Point(0, 476);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(504, 100);
            this.panel1.TabIndex = 41;
            // 
            // btn_browse_collection
            // 
            this.btn_browse_collection.AccessibleDescription = "Choose the collection to read from";
            this.btn_browse_collection.AccessibleName = "Browse";
            this.btn_browse_collection.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.btn_browse_collection.Font = new System.Drawing.Font("Segoe UI", 8.25F);
            this.btn_browse_collection.ForeColor = System.Drawing.Color.Black;
            this.btn_browse_collection.Location = new System.Drawing.Point(458, 54);
            this.btn_browse_collection.Name = "btn_browse_collection";
            this.btn_browse_collection.Size = new System.Drawing.Size(40, 22);
            this.btn_browse_collection.TabIndex = 17;
            this.btn_browse_collection.Text = "...";
            this.btn_browse_collection.UseVisualStyleBackColor = true;
            this.btn_browse_collection.Click += new System.EventHandler(this.btn_browse_collection_Click);
            // 
            // chkUpdateCollection
            // 
            this.chkUpdateCollection.AccessibleDescription = "Update an .nml with the data from the splitted song";
            this.chkUpdateCollection.AccessibleName = "Update Collection";
            this.chkUpdateCollection.AutoSize = true;
            this.chkUpdateCollection.Location = new System.Drawing.Point(4, 56);
            this.chkUpdateCollection.Name = "chkUpdateCollection";
            this.chkUpdateCollection.Size = new System.Drawing.Size(110, 17);
            this.chkUpdateCollection.TabIndex = 45;
            this.chkUpdateCollection.Text = "Update Collection";
            this.chkUpdateCollection.UseVisualStyleBackColor = false;
            this.chkUpdateCollection.CheckedChanged += new System.EventHandler(this.chkUpdateCollection_CheckedChanged);
            // 
            // txt_collection_path
            // 
            this.txt_collection_path.AccessibleDescription = "shows input collection location";
            this.txt_collection_path.AccessibleName = "input collection display";
            this.txt_collection_path.AccessibleRole = System.Windows.Forms.AccessibleRole.StaticText;
            this.txt_collection_path.Font = new System.Drawing.Font("Segoe UI", 8.25F);
            this.txt_collection_path.ForeColor = System.Drawing.Color.Black;
            this.txt_collection_path.Location = new System.Drawing.Point(118, 54);
            this.txt_collection_path.Name = "txt_collection_path";
            this.txt_collection_path.Size = new System.Drawing.Size(337, 22);
            this.txt_collection_path.TabIndex = 17;
            // 
            // chkStemsFolder
            // 
            this.chkStemsFolder.AutoSize = true;
            this.chkStemsFolder.Checked = true;
            this.chkStemsFolder.CheckState = System.Windows.Forms.CheckState.Checked;
            this.chkStemsFolder.Location = new System.Drawing.Point(215, 26);
            this.chkStemsFolder.Name = "chkStemsFolder";
            this.chkStemsFolder.Size = new System.Drawing.Size(129, 17);
            this.chkStemsFolder.TabIndex = 44;
            this.chkStemsFolder.Text = "Save to \'stems\' Folder";
            this.chkStemsFolder.UseVisualStyleBackColor = false;
            // 
            // chkStemRemoveFiles
            // 
            this.chkStemRemoveFiles.AccessibleDescription = "Remove intermediary files when creating NI Stems";
            this.chkStemRemoveFiles.AccessibleName = "Remove Working Files";
            this.chkStemRemoveFiles.AutoSize = true;
            this.chkStemRemoveFiles.Checked = true;
            this.chkStemRemoveFiles.CheckState = System.Windows.Forms.CheckState.Checked;
            this.chkStemRemoveFiles.Location = new System.Drawing.Point(121, 3);
            this.chkStemRemoveFiles.Name = "chkStemRemoveFiles";
            this.chkStemRemoveFiles.Size = new System.Drawing.Size(133, 17);
            this.chkStemRemoveFiles.TabIndex = 43;
            this.chkStemRemoveFiles.Text = "Remove Working Files";
            this.chkStemRemoveFiles.UseVisualStyleBackColor = true;
            // 
            // pictureBox2
            // 
            this.pictureBox2.AccessibleDescription = "NI Stem Logo";
            this.pictureBox2.AccessibleName = "NI Stem Logo";
            this.pictureBox2.AccessibleRole = System.Windows.Forms.AccessibleRole.Graphic;
            this.pictureBox2.Image = global::SpleeterGui.Properties.Resources.stems_logo_full;
            this.pictureBox2.Location = new System.Drawing.Point(346, -5);
            this.pictureBox2.Name = "pictureBox2";
            this.pictureBox2.Size = new System.Drawing.Size(155, 53);
            this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
            this.pictureBox2.TabIndex = 42;
            this.pictureBox2.TabStop = false;
            // 
            // chkNIStemTwoStems
            // 
            this.chkNIStemTwoStems.AccessibleDescription = "Runs a script that generates a Native Instruments stem file from 2 stems";
            this.chkNIStemTwoStems.AccessibleName = "Generate NI 2 Stem";
            this.chkNIStemTwoStems.AutoSize = true;
            this.chkNIStemTwoStems.Location = new System.Drawing.Point(4, 26);
            this.chkNIStemTwoStems.Name = "chkNIStemTwoStems";
            this.chkNIStemTwoStems.Size = new System.Drawing.Size(205, 17);
            this.chkNIStemTwoStems.TabIndex = 41;
            this.chkNIStemTwoStems.Text = "Generate NI Container from two stems";
            this.chkNIStemTwoStems.UseVisualStyleBackColor = true;
            this.chkNIStemTwoStems.CheckedChanged += new System.EventHandler(this.chkNIStemTwoStems_CheckedChanged);
            // 
            // chkNIStem
            // 
            this.chkNIStem.AccessibleDescription = "Runs a script that generates a Native Instruments stem file from 4 stems";
            this.chkNIStem.AccessibleName = "Generate NI Stem";
            this.chkNIStem.AutoSize = true;
            this.chkNIStem.Location = new System.Drawing.Point(4, 3);
            this.chkNIStem.Name = "chkNIStem";
            this.chkNIStem.Size = new System.Drawing.Size(111, 17);
            this.chkNIStem.TabIndex = 40;
            this.chkNIStem.Text = "Generate NI Stem";
            this.chkNIStem.UseVisualStyleBackColor = true;
            this.chkNIStem.CheckedChanged += new System.EventHandler(this.chkNIStem_CheckedChanged);
            // 
            // chkRecombine
            // 
            this.chkRecombine.AutoSize = true;
            this.chkRecombine.ForeColor = System.Drawing.Color.Black;
            this.chkRecombine.Location = new System.Drawing.Point(3, 3);
            this.chkRecombine.Name = "chkRecombine";
            this.chkRecombine.Size = new System.Drawing.Size(247, 17);
            this.chkRecombine.TabIndex = 38;
            this.chkRecombine.Text = "Recombine (Merge output parts back together)";
            this.chkRecombine.UseVisualStyleBackColor = true;
            this.chkRecombine.CheckedChanged += new System.EventHandler(this.chkRecombine_CheckedChanged);
            // 
            // pnlRecombine
            // 
            this.pnlRecombine.Controls.Add(this.chkRPartOther);
            this.pnlRecombine.Controls.Add(this.chkRecombine);
            this.pnlRecombine.Controls.Add(this.chkRPartPiano);
            this.pnlRecombine.Controls.Add(this.chkRPartDrums);
            this.pnlRecombine.Controls.Add(this.chkRPartBass);
            this.pnlRecombine.Controls.Add(this.chkRPartVocal);
            this.pnlRecombine.Location = new System.Drawing.Point(23, 162);
            this.pnlRecombine.Name = "pnlRecombine";
            this.pnlRecombine.Size = new System.Drawing.Size(493, 14);
            this.pnlRecombine.TabIndex = 39;
            // 
            // chkRPartOther
            // 
            this.chkRPartOther.AutoSize = true;
            this.chkRPartOther.ForeColor = System.Drawing.Color.Black;
            this.chkRPartOther.Location = new System.Drawing.Point(255, 26);
            this.chkRPartOther.Name = "chkRPartOther";
            this.chkRPartOther.Size = new System.Drawing.Size(52, 17);
            this.chkRPartOther.TabIndex = 5;
            this.chkRPartOther.Text = "Other";
            this.chkRPartOther.UseVisualStyleBackColor = true;
            // 
            // chkRPartPiano
            // 
            this.chkRPartPiano.AutoSize = true;
            this.chkRPartPiano.ForeColor = System.Drawing.Color.Black;
            this.chkRPartPiano.Location = new System.Drawing.Point(197, 26);
            this.chkRPartPiano.Name = "chkRPartPiano";
            this.chkRPartPiano.Size = new System.Drawing.Size(53, 17);
            this.chkRPartPiano.TabIndex = 4;
            this.chkRPartPiano.Text = "Piano";
            this.chkRPartPiano.UseVisualStyleBackColor = true;
            // 
            // chkRPartDrums
            // 
            this.chkRPartDrums.AutoSize = true;
            this.chkRPartDrums.ForeColor = System.Drawing.Color.Black;
            this.chkRPartDrums.Location = new System.Drawing.Point(136, 26);
            this.chkRPartDrums.Name = "chkRPartDrums";
            this.chkRPartDrums.Size = new System.Drawing.Size(56, 17);
            this.chkRPartDrums.TabIndex = 3;
            this.chkRPartDrums.Text = "Drums";
            this.chkRPartDrums.UseVisualStyleBackColor = true;
            // 
            // chkRPartBass
            // 
            this.chkRPartBass.AutoSize = true;
            this.chkRPartBass.ForeColor = System.Drawing.Color.Black;
            this.chkRPartBass.Location = new System.Drawing.Point(82, 26);
            this.chkRPartBass.Name = "chkRPartBass";
            this.chkRPartBass.Size = new System.Drawing.Size(49, 17);
            this.chkRPartBass.TabIndex = 2;
            this.chkRPartBass.Text = "Bass";
            this.chkRPartBass.UseVisualStyleBackColor = true;
            // 
            // chkRPartVocal
            // 
            this.chkRPartVocal.AutoSize = true;
            this.chkRPartVocal.ForeColor = System.Drawing.Color.Black;
            this.chkRPartVocal.Location = new System.Drawing.Point(24, 26);
            this.chkRPartVocal.Name = "chkRPartVocal";
            this.chkRPartVocal.Size = new System.Drawing.Size(53, 17);
            this.chkRPartVocal.TabIndex = 1;
            this.chkRPartVocal.Text = "Vocal";
            this.chkRPartVocal.UseVisualStyleBackColor = true;
            // 
            // pictureBox1
            // 
            this.pictureBox1.AccessibleDescription = "Spleeter logo";
            this.pictureBox1.AccessibleName = "Spleeter logo";
            this.pictureBox1.AccessibleRole = System.Windows.Forms.AccessibleRole.Graphic;
            this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
            this.pictureBox1.Location = new System.Drawing.Point(23, 36);
            this.pictureBox1.Name = "pictureBox1";
            this.pictureBox1.Size = new System.Drawing.Size(279, 71);
            this.pictureBox1.TabIndex = 22;
            this.pictureBox1.TabStop = false;
            // 
            // openFileDialogCollection
            // 
            this.openFileDialogCollection.Filter = "Collection|*.nml;*.xml|All files (*.*)|*.*";
            // 
            // btn_browse_collection_out
            // 
            this.btn_browse_collection_out.AccessibleDescription = "Choose the collection to write to";
            this.btn_browse_collection_out.AccessibleName = "Browse";
            this.btn_browse_collection_out.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.btn_browse_collection_out.Font = new System.Drawing.Font("Segoe UI", 8.25F);
            this.btn_browse_collection_out.ForeColor = System.Drawing.Color.Black;
            this.btn_browse_collection_out.Location = new System.Drawing.Point(458, 78);
            this.btn_browse_collection_out.Name = "btn_browse_collection_out";
            this.btn_browse_collection_out.Size = new System.Drawing.Size(40, 22);
            this.btn_browse_collection_out.TabIndex = 46;
            this.btn_browse_collection_out.Text = "...";
            this.btn_browse_collection_out.UseVisualStyleBackColor = true;
            this.btn_browse_collection_out.Click += new System.EventHandler(this.btn_browse_collection_out_Click);
            // 
            // txt_collection_path_out
            // 
            this.txt_collection_path_out.AccessibleDescription = "shows output collection location";
            this.txt_collection_path_out.AccessibleName = "output collection display";
            this.txt_collection_path_out.AccessibleRole = System.Windows.Forms.AccessibleRole.StaticText;
            this.txt_collection_path_out.Font = new System.Drawing.Font("Segoe UI", 8.25F);
            this.txt_collection_path_out.ForeColor = System.Drawing.Color.Black;
            this.txt_collection_path_out.Location = new System.Drawing.Point(118, 78);
            this.txt_collection_path_out.Name = "txt_collection_path_out";
            this.txt_collection_path_out.Size = new System.Drawing.Size(337, 22);
            this.txt_collection_path_out.TabIndex = 47;
            // 
            // chkOverwriteCollection
            // 
            this.chkOverwriteCollection.AccessibleDescription = "Create a new collection, overwriting the existing one";
            this.chkOverwriteCollection.AccessibleName = "Clear Collection";
            this.chkOverwriteCollection.AutoSize = true;
            this.chkOverwriteCollection.Location = new System.Drawing.Point(4, 80);
            this.chkOverwriteCollection.Name = "chkOverwriteCollection";
            this.chkOverwriteCollection.Size = new System.Drawing.Size(99, 17);
            this.chkOverwriteCollection.TabIndex = 48;
            this.chkOverwriteCollection.Text = "Clear Collection";
            this.chkOverwriteCollection.UseVisualStyleBackColor = false;
            // 
            // Form1
            // 
            this.AllowDrop = true;
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.Color.White;
            this.ClientSize = new System.Drawing.Size(522, 763);
            this.Controls.Add(this.pnlRecombine);
            this.Controls.Add(this.pnlMain);
            this.Controls.Add(this.parts_label);
            this.Controls.Add(this.parts_btn5);
            this.Controls.Add(this.parts_btn4);
            this.Controls.Add(this.parts_btn2);
            this.Controls.Add(this.lblPartsTitle);
            this.Controls.Add(this.lblSlogan2);
            this.Controls.Add(this.menuStrip1);
            this.Controls.Add(this.lblSlogan1);
            this.Controls.Add(this.pictureBox1);
            this.Controls.Add(this.stems5);
            this.Controls.Add(this.stems4);
            this.Controls.Add(this.stems2);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.MainMenuStrip = this.menuStrip1;
            this.Margin = new System.Windows.Forms.Padding(2);
            this.MaximizeBox = false;
            this.Name = "Form1";
            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
            this.Text = "SpleeterGUI";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.Shown += new System.EventHandler(this.Form1_Shown);
            this.menuStrip1.ResumeLayout(false);
            this.menuStrip1.PerformLayout();
            this.pnlMain.ResumeLayout(false);
            this.panel2.ResumeLayout(false);
            this.panel2.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.bitrate)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.duration)).EndInit();
            this.panel3.ResumeLayout(false);
            this.panel3.PerformLayout();
            this.panel1.ResumeLayout(false);
            this.panel1.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
            this.pnlRecombine.ResumeLayout(false);
            this.pnlRecombine.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion
        private System.Windows.Forms.RadioButton stems2;
        private System.Windows.Forms.RadioButton stems4;
        private System.Windows.Forms.RadioButton stems5;
        private System.Windows.Forms.MenuStrip menuStrip1;
        private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
        private System.Windows.Forms.Button btnSaveTo;
        private System.Windows.Forms.TextBox txt_output_directory;
        private System.Windows.Forms.CheckBox chkFullBandwidth;
        private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.ToolStripMenuItem helpFAQToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem spleeterGithubPageToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem makenItSoToolStripMenuItem1;
        private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3;
        private System.Windows.Forms.Label lblDroptext;
        private System.Windows.Forms.PictureBox pictureBox1;
        private System.Windows.Forms.Label lblSlogan1;
        private System.Windows.Forms.ProgressBar progressBar1;
        private System.Windows.Forms.Label lblSlogan2;
        private System.Windows.Forms.Label lblPartsTitle;
        private System.Windows.Forms.Button parts_btn2;
        private System.Windows.Forms.Button parts_btn4;
        private System.Windows.Forms.Button parts_btn5;
        private System.Windows.Forms.Label parts_label;
        private System.Windows.Forms.Label lblProgress;
        private System.Windows.Forms.Label progress_txt;
        private System.Windows.Forms.Button btnSelectFiles;
        private System.Windows.Forms.OpenFileDialog openFileDialog2;
        private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1;
        private System.Windows.Forms.ToolStripMenuItem checkSpleeterGUIUpdateToolStripMenuItem;
        private System.Windows.Forms.Panel pnlMain;
        private System.Windows.Forms.CheckBox chkRecombine;
        private System.Windows.Forms.Panel pnlRecombine;
        private System.Windows.Forms.CheckBox chkRPartOther;
        private System.Windows.Forms.CheckBox chkRPartPiano;
        private System.Windows.Forms.CheckBox chkRPartDrums;
        private System.Windows.Forms.CheckBox chkRPartBass;
        private System.Windows.Forms.CheckBox chkRPartVocal;
        private System.Windows.Forms.ToolStripMenuItem mnuLanguage;
        private System.Windows.Forms.ToolStripMenuItem advancedToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem setPythonPathToolStripMenuItem1;
        private System.Windows.Forms.Label lblSeconds;
        private System.Windows.Forms.Label lblMaxLength;
        private System.Windows.Forms.NumericUpDown duration;
        private System.Windows.Forms.Label codec_label;
        private System.Windows.Forms.CheckBox chkSongName;
        private System.Windows.Forms.ComboBox cmbBox_codec;
        private System.Windows.Forms.CheckBox chkNIStem;
        private System.Windows.Forms.Panel panel1;
        private System.Windows.Forms.PictureBox pictureBox2;
        private System.Windows.Forms.CheckBox chkNIStemTwoStems;
        private System.Windows.Forms.CheckBox chkStemRemoveFiles;
        private System.Windows.Forms.ToolStripMenuItem spleeterupgradeToolStripMenuItem;
        private System.Windows.Forms.CheckBox chkStemsFolder;
        private System.Windows.Forms.Label divider;
        private System.Windows.Forms.Panel panel3;
        private System.Windows.Forms.Panel panel2;
        private System.Windows.Forms.Label lblBitrate;
        private System.Windows.Forms.Label lblKbps;
        private System.Windows.Forms.NumericUpDown bitrate;
        private System.Windows.Forms.Button btn_browse_collection;
        private System.Windows.Forms.CheckBox chkUpdateCollection;
        private System.Windows.Forms.TextBox txt_collection_path;
        private System.Windows.Forms.OpenFileDialog openFileDialogCollection;
        private System.Windows.Forms.Button btn_browse_collection_out;
        private System.Windows.Forms.TextBox txt_collection_path_out;
        private System.Windows.Forms.CheckBox chkOverwriteCollection;
    }
}



================================================
FILE: SpleeterGui/Form1.cs
================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;

using System.Net;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using System.Windows.Forms;
using System.Xml;

/* TODO:
 * 
 * Fix NI-stem to be able to use different bitrates (higher than 128k)
 * 
 * 
 * Make the panels a groupbox and disable all of them when running, so the user can't screw things up (right now the user can uncheck things)
 * /\ - Changing checkbox states while the program is running crashes things, but the user has to be pretty stupid to try this
 * Refactor the Stem-building and ffmpeg stuff
 * 
 * 
 * */

namespace SpleeterGui
{
    public partial class Form1 : Form
    {
        private bool stemSyncerBackup = false;
        private string stem_count = "2";
        private string mask_extension = "average";
        private string storage = "";

        private string path_python = "";    //needs to be the SpleeterGUI folder, not python

        private string current_song = "";
        private string current_songname = "";
        private int files_remain = 0;
        private List<string> files_to_process = new List<string>();
        private Boolean run_silent = true;
        private String gui_version = "";
        IDictionary<string, string> langStr = new Dictionary<string, string>();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.AllowDrop = true;
            this.DragEnter += new DragEventHandler(Form1_DragEnter);
            this.DragDrop += new DragEventHandler(Form1_DragDrop);
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            LoadStuff();
        }

        public void LoadStuff()
        {
            //program startup - initialise things
            txt_output_directory.Text = Properties.Settings.Default.output_location;
            cmbBox_codec.SelectedIndex = Properties.Settings.Default.codec;
            chkSongName.Checked = Properties.Settings.Default.songName;
            txt_collection_path.Text = Properties.Settings.Default.collection_location;
            txt_collection_path_out.Text = Properties.Settings.Default.collection_out_location;

            if (Properties.Settings.Default.path_python == "")
            {
                path_python = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\SpleeterGUI\python";
                storage = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\SpleeterGUI";
            }
            else
            {
                path_python = Properties.Settings.Default.path_python + @"\python";
                storage = Properties.Settings.Default.path_python;
            }


            gui_version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
            String version = Assembly.GetExecutingAssembly().GetName().Version.Major.ToString() + "." + Assembly.GetExecutingAssembly().GetName().Version.Minor.ToString();
            this.Text = "SpleeterGUI " + version;



            bitrate.Value = Properties.Settings.Default.bitrate;
            duration.Value = Properties.Settings.Default.duration;

            update_checks();
            get_languages();
            update_language(Properties.Settings.Default.language);

            string txt = langStr["LoadStuff_textBox1"];
            txt = txt.Replace("[NL]", "\r\n");
            textBox1.Text = txt + "...\r\n";
            run_cmd("pip show spleeter");

            textBox1.AppendText(storage + "\r\n");
        }

        void get_languages()
        {
            //find and load language files in to menu toolstrip
            ToolStrip language_menu = new ToolStrip();
            var enviroment = System.Environment.CurrentDirectory;
            string[] fileEntries = Directory.GetFiles(enviroment + "\\languages");


            ToolStripMenuItem[] items = new ToolStripMenuItem[fileEntries.Length];
            int i = 0;
            foreach (string fileName in fileEntries)
            {
                string name = Path.GetFileName(fileName);
                XmlDataDocument xmldoc = new XmlDataDocument();
                XmlNodeList xmlnode;
                FileStream fs = new FileStream(enviroment + "\\languages\\" + name, FileMode.Open, FileAccess.Read);
                xmldoc.Load(fs);
                xmlnode = xmldoc.GetElementsByTagName("language");
                string lang_text = xmlnode[0].ChildNodes.Item(0).InnerText.Trim();

                items[i] = new ToolStripMenuItem();
                items[i].Text = lang_text + " (" + name.Replace(".xml", "") + ")";
                items[i].Tag = name.Replace(".xml", "");
                items[i].Click += new EventHandler(LanguageItemClickHandler);
                i++;
            }
            this.mnuLanguage.DropDownItems.AddRange(items);
        }

        private void LanguageItemClickHandler(object sender, EventArgs e)
        {
            //a language is chosen by the user, load it up
            ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
            update_language(clickedItem.Tag.ToString());
        }

        void update_language(string lang_name)
        {
            // Read the XML language files, iterate through menu's & controls and update labels.
            Properties.Settings.Default.language = lang_name;
            Properties.Settings.Default.Save();
            XmlDataDocument xmldoc = new XmlDataDocument();
            XmlNodeList xmlnode;
            int i = 0;
            string control_name = null;
            string control_label = null;
            var enviroment = System.Environment.CurrentDirectory;
            FileStream fs = new FileStream(enviroment + "\\languages\\" + lang_name + ".xml", FileMode.Open, FileAccess.Read);
            xmldoc.Load(fs);
            xmlnode = xmldoc.GetElementsByTagName("item");  //load control texts
            for (i = 0; i <= xmlnode.Count - 1; i++)
            {
                xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                control_label = xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                control_name = xmlnode[i].Attributes["control"].InnerText;

                Control ctn = Controls.Find(control_name, true)[0];
                ctn.Text = control_label;
            }
            xmlnode = xmldoc.GetElementsByTagName("menu");  //load menu texts
            for (i = 0; i <= xmlnode.Count - 1; i++)
            {
                xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                control_label = xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                control_name = xmlnode[i].Attributes["control"].InnerText;

                foreach (ToolStripMenuItem item in menuStrip1.Items)
                {
                    if (item.Name == control_name)
                    {
                        item.Text = control_label;
                    }
                    foreach (ToolStripMenuItem subitem in item.DropDownItems.OfType<ToolStripMenuItem>())
                    {
                        if (subitem.Name == control_name)
                        {
                            subitem.Text = control_label;
                        }
                    }
                }
            }
            xmlnode = xmldoc.GetElementsByTagName("lang");  //load all the program texts
            for (i = 0; i <= xmlnode.Count - 1; i++)
            {
                xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                control_label = xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                control_name = xmlnode[i].Attributes["control"].InnerText;
                langStr[control_name] = control_label;
            }
            progress_txt.Text = langStr["idle"];
        }

        void Form1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
        }

        void Form1_DragDrop(object sender, DragEventArgs e)
        {
            //music files have been dropped on the app, start processing them
            if (files_remain == 0)
            {
                textBox1.Text = "";
                if (txt_output_directory.Text == "")
                {
                    MessageBox.Show(langStr["output_message"]);
                    return;
                }

                string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
                files_remain = 0;
                foreach (string file in files)
                {
                    files_to_process.Add(file);
                    files_remain++;
                }
                textBox1.AppendText(langStr["starting_all"] + "\r\n");
                progressBar1.Maximum = files_remain + 1;
                progressBar1.Value = 0;
                progress_txt.Text = langStr["starting"] + "..." + files_remain + " " + langStr["songs_remaining"];
                next_song();
            }
            else
            {
                System.Media.SystemSounds.Asterisk.Play();
            }
        }

        private void checkForSpleeterError()
        {
            bool somethingWentWrong;

            if (chkSongName.Checked == true)
            {


                somethingWentWrong = (current_songname != "" &&
                ((stem_count == "2" &&
                (!File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - accompaniment." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
                ) ||
                (stem_count == "4" &&
                (!File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - bass." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - drums." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
                ) ||
                (stem_count == "5" &&
                (!File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - bass." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - drums." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - piano." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem))))));
            }
            else
            {
                somethingWentWrong = (current_songname != "" &&
                ((stem_count == "2" &&
                (!File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "accompaniment." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
                ) ||
                (stem_count == "4" &&
                (!File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "bass." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "drums." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
                ) ||
                (stem_count == "5" &&
                (!File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "bass." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "drums." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "piano." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)) ||
                !File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + "other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem))))));
            }

            if (somethingWentWrong)
            {
                spleeterError();
            }

        }

        private void spleeterError()
        {
            // Process exited but no files were created!!! Error!
            textBox1.Text += "\r\n \r\n" +
            "Error: Spleeter exited but no files were created! \r\n" +
            "==================================== \r\n" +
            "Files containing spaces at the end e.g. 'songfilename .mp3' are problematic and crash Spleeter. \r\n" +
            "Try renaming the file! \r\n";

            System.Media.SystemSounds.Exclamation.Play();
            MessageBox.Show("Error: Spleeter exited but no files were created! \n" +
                "Files containing spaces at the end e.g. 'songfilename .mp3' are problematic and crash Spleeter. \n" +
                "Try renaming the file!");


            //System.Media.SystemSounds.Exclamation.Play();
            //MessageBox.Show("Error: Spleeter exited but no files were created! \n" +
            //    "The input file somehow crashed Spleeter. This could be due to the file name. \n" +
            //    "Files containing spaces such as 'songfilename .mp3' seem to be problematic. \n" +
            //    "Try renaming the file and please create an issue on GitHub! \n" +
            //    "A log file has been generated in the output folder.");

            //generateLog();

            // Clear the song queue
            files_remain = 0;
            next_song();
        }

        private void generateLog()
        {

            string variables =
            " \n txt_output_directory.Text: \t " + txt_output_directory.Text +
            " \n current_songname: \t " + current_songname +
            " \n cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem): \t " + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + "" +
            " \n storage: \t " + storage +
            " \n path_python: \t " + path_python +
            " \n Environment.CurrentDirectory: \t " + Environment.CurrentDirectory +
            " \n (duration.Value).ToString(): \t " + (duration.Value).ToString() +
            " \n chkSongName.Checked: \t " + chkSongName.Checked +
            " \n stem_count: \t " + stem_count + "" +
            " \n files_remain: \t " + files_remain +
            " \n chkRecombine.Checked: \t " + chkRecombine.Checked +
            " \n chkFullBandwidth.Checked: \t " + chkFullBandwidth.Checked +
            " \n gui_version: \t " + gui_version +
            " \n current_song: \t " + current_song;


            using (StreamWriter outputFile = new StreamWriter(Path.Combine(txt_output_directory.Text, "_SpleeterGUI_log_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".txt")))
            {
                outputFile.WriteLine(textBox1.Text + "\n \n \n StackTrace: \n \n \n " + Environment.StackTrace + "\n \n \n variables: \n \n \n " + variables);
            }

            textBox1.Text += "\r\n A log file has been created at " + txt_output_directory.Text + "\r\n";
        }

        private void next_song()
        {
            //begins the spleeting function on the next song in the queue
            if (files_remain > 0)
            {
                run_silent = false;
                //string pyPath = storage + @"\python\python.exe";
                string pyPath = path_python + @"\python.exe";

                string filename = files_to_process[0];

                string fullBandWidth = "";
                if (chkFullBandwidth.Checked)
                {
                    fullBandWidth = "-16kHz";
                }

                progressBar1.Value = progressBar1.Value + 1;
                textBox1.AppendText(langStr["processing"] + " " + filename + "\r\n");
                progress_txt.Text = langStr["working"] + "... " + files_remain + " " + langStr["songs_remaining"];
                ProcessStartInfo processStartInfo;
                textBox1.AppendText(("-m spleeter separate -o " + (char)34 + txt_output_directory.Text + (char)34 + " -d " +
                        (duration.Value).ToString() + " -b " + (bitrate.Value).ToString() + "k -p " + (char)34 + "spleeter:" + stem_count + "stems" + fullBandWidth + (char)34 + " -c " + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) +
                        " -f " + (char)34 + "{filename}\\{filename} - {instrument}.{codec}" + (char)34 + " " + (char)34 + filename + (char)34) + "\r\n");
                if (chkNIStem.Checked == true)
                {
                    processStartInfo = new ProcessStartInfo(pyPath, @" -m spleeter separate  -o " + (char)34 + txt_output_directory.Text + (char)34 + " -d " +
                        (duration.Value).ToString() + " -b " + (bitrate.Value).ToString() + "k -p " + (char)34 + "spleeter:" + stem_count + "stems" + fullBandWidth + (char)34 + " -c " + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) +
                        " -f " + (char)34 + "{filename}\\{filename} - {instrument}.{codec}" + (char)34 + " " + (char)34 + filename + (char)34);
                }
                else if (chkSongName.Checked == true)
                {
                    processStartInfo = new ProcessStartInfo(pyPath, @" -m spleeter separate  -o " + (char)34 + txt_output_directory.Text + (char)34 + " -d " +
                        (duration.Value).ToString() + " -b " + (bitrate.Value).ToString() + "k -p " + (char)34 + "spleeter:" + stem_count + "stems" + fullBandWidth + (char)34 + " -c " + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) +
                        " -f " + (char)34 + "{filename}\\{filename} - {instrument}.{codec}" + (char)34 + " " + (char)34 + filename + (char)34);
                }
                else
                {
                    processStartInfo = new ProcessStartInfo(pyPath, @" -m spleeter separate  -o " + (char)34 + txt_output_directory.Text + (char)34 + " -d " +
                        (duration.Value).ToString() + " -b " + (bitrate.Value).ToString() + "k -p " + (char)34 + "spleeter:" + stem_count + "stems" + fullBandWidth + (char)34 + " -c " + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) +
                        " " + (char)34 + filename + (char)34);
                }
                processStartInfo.WorkingDirectory = storage;

                processStartInfo.UseShellExecute = false;
                processStartInfo.ErrorDialog = false;
                processStartInfo.RedirectStandardOutput = true;
                processStartInfo.RedirectStandardError = true;
                processStartInfo.CreateNoWindow = true;

                files_to_process.Remove(filename);

                Process process = new Process();
                process.StartInfo = processStartInfo;
                process.EnableRaisingEvents = true;
                process.Exited += new EventHandler(ProcessExited);
                process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
                process.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);
                try
                {
                    bool processStarted = process.Start();
                    process.BeginOutputReadLine();
                    process.BeginErrorReadLine();

                    current_songname = Path.GetFileNameWithoutExtension(filename);
                    current_song = filename;
                }
                catch
                {
                    //"Error: unable to find python.exe"
                    MessageBox.Show(langStr["python_not_found"] + "\n" + langStr["python_path_error_tip"]);
                }
            }
            else
            {
                current_songname = "";
                progress_txt.Text = langStr["idle"];
                textBox1.AppendText(langStr["finished"] + "\r\n");
                progressBar1.Value = progressBar1.Maximum;
                System.Media.SystemSounds.Beep.Play();
            }
        }

        private void run_cmd(String cmd)
        {
            //general function for executing python commands.
            try
            {
                ProcessStartInfo processStartInfo;
                string pyPath = path_python + @"\python.exe";

                processStartInfo = new ProcessStartInfo(pyPath, @" -W ignore -m " + cmd);
                processStartInfo.WorkingDirectory = storage;

                processStartInfo.UseShellExecute = false;
                processStartInfo.ErrorDialog = false;
                processStartInfo.RedirectStandardOutput = true;
                processStartInfo.RedirectStandardError = true;
                processStartInfo.CreateNoWindow = true;
                Process process = new Process();
                process.StartInfo = processStartInfo;
                process.EnableRaisingEvents = true;
                process.Exited += new EventHandler(ProcessExited);
                process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
                process.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);

                bool processStarted = process.Start();
                process.BeginOutputReadLine();
                process.BeginErrorReadLine();
            }
            catch
            {
                MessageBox.Show(langStr["python_not_found"] + "\n" + langStr["python_path_error_tip"]);
            }
        }
        private void run_recombine(String args)
        {
            //executes the ffmpeg comand to recombine the output stems
            ProcessStartInfo processStartInfo = new ProcessStartInfo(storage + @"\ffmpeg.exe", args);
            processStartInfo.WorkingDirectory = storage;

            processStartInfo.UseShellExecute = false;
            processStartInfo.ErrorDialog = false;
            processStartInfo.RedirectStandardOutput = true;
            processStartInfo.RedirectStandardError = true;
            processStartInfo.CreateNoWindow = true;
            Process process = new Process();
            process.StartInfo = processStartInfo;
            process.EnableRaisingEvents = true;
            process.Exited += new EventHandler(run_recombineExited);
            process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
            process.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);
            bool processStarted = process.Start();
            process.BeginOutputReadLine();
            process.BeginErrorReadLine();
        }
        void OutputHandler(object sender, DataReceivedEventArgs e)
        {
            //output handler called by run_cmd
            this.BeginInvoke(new MethodInvoker(() =>
            {
                if (!String.IsNullOrEmpty(e.Data))
                {
                    if (txt_check(e.Data))   //Please don't email Deezer about problems with this GUI app.
                    {
                        textBox1.AppendText(e.Data.TrimEnd('\r', '\n') + "\r\n");
                    }
                }
            }));
        }
        bool txt_check(string txt)  //prevent output
        {
            bool allow = true;
            if (txt.IndexOf("Author-email") != -1) { allow = false; }
            if (txt.IndexOf("Summary:") != -1) { allow = false; }
            if (txt.IndexOf("source separation library") != -1) { allow = false; }
            if (txt.IndexOf("models based on") != -1) { allow = false; }
            if (txt.IndexOf("Home-page:") != -1) { allow = false; }
            if (txt.IndexOf("Author:") != -1) { allow = false; }
            if (txt.IndexOf("License:") != -1) { allow = false; }
            if (txt.IndexOf("Location:") != -1) { allow = false; }
            if (txt.IndexOf("Requires:") != -1) { allow = false; }
            if (txt.IndexOf("Required-by:") != -1) { allow = false; }
            return allow;
        }
        void ErrorHandler(object sender, DataReceivedEventArgs e)
        {
            //handles errors from the run_cmd functions
            this.BeginInvoke(new MethodInvoker(() =>
            {
                if (!String.IsNullOrEmpty(e.Data))
                {
                    textBox1.AppendText(e.Data.TrimEnd('\r', '\n') + "\r\n");
                }
            }));
        }
        private void run_recombineExited(object sender, EventArgs e)
        {
            //cleanup function called by run_recombine
            Invoke((Action)(() =>
            {
                //do nothing
            }));
        }

        private void run_ffmpegExited(object sender, EventArgs e)
        {
            //cleanup function called by run_ffmpeg
            Invoke((Action)(() =>
            {
                if (chkNIStemTwoStems.Checked)
                {
                    run_ffmpegTwoStemMakerRunner(current_songname);
                    //This structure is really spaghetti, should be refactored
                }
                run_NIStem();
            }));
        }

        private void run_doNothingOnExit(object sender, EventArgs e)
        {
            //cleanup function
            Invoke((Action)(() =>
            {
                //do nothing
            }));
        }


        private void run_StemSyncerExited(object sender, EventArgs e)
        {
            textBox1.AppendText("\r\n" + "StemSyncer Exited" + "\r\n");
        }

        private void run_niStemExited(object sender, EventArgs e)
        {
            //cleanup function called by run_niStem
            Invoke((Action)(() =>
            {
                if (File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - mix.wav"))
                {
                    File.Delete(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - mix.wav");
                    // System.Media.SystemSounds.Beep.Play();
                }

                if (chkStemRemoveFiles.Checked == true)
                {
                    RemoveStemFiles();
                }

                if (chkUpdateCollection.Checked == true)
                {
                    textBox1.AppendText("\r\n" + "Starting StemSyncer" + "\r\n");
                    run_StemSyncer();
                }

                files_remain--;
                if (files_remain > -1)
                {
                    //start processing the next song
                    next_song();
                }
                if (files_remain < 0) files_remain = 0;

                if (!run_silent)
                {
                    textBox1.AppendText("\r\n" + langStr["run_complete"] + "\r\n");
                    System.Media.SystemSounds.Beep.Play();
                }

            }));
        }

        private void RemoveStemFiles()
        {
            textBox1.AppendText("\r\n" + "Removing working files" + "\r\n");

            if (File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
            {
                File.Delete(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem));
            }
            if (File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - mix." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
            {
                File.Delete(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - mix." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem));
            }
            if (File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
            {
                File.Delete(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem));
            }
            if (File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - bass." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
            {
                File.Delete(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - bass." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem));
            }
            if (File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - drums." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
            {
                File.Delete(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - drums." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem));
            }
            if (!Directory.EnumerateFileSystemEntries(txt_output_directory.Text + @"\" + current_songname).Any())
            {
                Directory.Delete(txt_output_directory.Text + @"\" + current_songname);
            }
            else
            {
                textBox1.AppendText("\r\n" + "Folder: \"" + txt_output_directory.Text + @"\" + current_songname + "\" is not empty! Not removing folder!" + "\r\n");
            }

        }

        private void recombineAudio()
        {
            String recomnbine_command = "";
            String codec = cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem);
            int input_count = 0;
            if (chkSongName.Checked == false)
            {
                if (chkRPartVocal.Checked) { input_count++; recomnbine_command += " -i " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\vocals." + codec + (char)34; }
                if (chkRPartBass.Checked) { input_count++; recomnbine_command += " -i " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\bass." + codec + (char)34; }
                if (chkRPartDrums.Checked) { input_count++; recomnbine_command += " -i " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\drums." + codec + (char)34; }
                if (chkRPartPiano.Checked) { input_count++; recomnbine_command += " -i " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\piano." + codec + (char)34; }
                if (chkRPartOther.Checked) { input_count++; recomnbine_command += " -i " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\other." + codec + (char)34; }
                if (recomnbine_command != "")
                {
                    String filter_a = "";
                    String filter_b = "";
                    for (int i = 0; i < input_count; i++)
                    {
                        filter_a += "[" + i + "]volume=" + input_count + "[" + ((char)97 + i) + "];";
                        filter_b += "[" + ((char)97 + i) + "]";
                    }
                    recomnbine_command = recomnbine_command + " -filter_complex " + (char)34 + filter_a + filter_b + "amix=inputs=" + input_count.ToString() +
                        ":duration =longest" + (char)34 + " -ab " + (bitrate.Value).ToString() + "k " + (char)34 + txt_output_directory.Text + @"\" + current_songname + "_recombined."
                        + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34;
                    run_recombine(recomnbine_command);
                }
            }
            else
            {
                if (chkRPartVocal.Checked)
                {
                    input_count++; recomnbine_command += " -i " + (char)34 +
txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + @" - vocals." + codec + (char)34;
                }
                if (chkRPartBass.Checked)
                {
                    input_count++; recomnbine_command += " -i " + (char)34 +
txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + @" - bass." + codec + (char)34;
                }
                if (chkRPartDrums.Checked)
                {
                    input_count++; recomnbine_command += " -i " + (char)34 +
txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + @" - drums." + codec + (char)34;
                }
                if (chkRPartPiano.Checked)
                {
                    input_count++; recomnbine_command += " -i " + (char)34 +
txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + @" - piano." + codec + (char)34;
                }
                if (chkRPartOther.Checked)
                {
                    input_count++; recomnbine_command += " -i " + (char)34 +
txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + @" - other." + codec + (char)34;
                }
                if (recomnbine_command != "")
                {
                    String filter_a = "";
                    String filter_b = "";
                    for (int i = 0; i < input_count; i++)
                    {
                        filter_a += "[" + i + "]volume=" + input_count + "[" + ((char)97 + i) + "];";
                        filter_b += "[" + ((char)97 + i) + "]";
                    }
                    recomnbine_command = recomnbine_command + " -filter_complex " + (char)34 + filter_a + filter_b + "amix=inputs=" + input_count.ToString() + ":duration =longest"
                        + (char)34 + " -ab " + (bitrate.Value).ToString() + "k " + (char)34 + txt_output_directory.Text + @"\" + current_songname + "_recombined." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34;
                    run_recombine(recomnbine_command);
                }
            }
        }

        private void ProcessExited(object sender, EventArgs e)
        {
            //called by run_cmd when thread exits after spleeting a song. runs the recombine (if enabled) and starts processing next song in queue.
            Invoke((Action)(() =>
            {
                checkForSpleeterError();

                if (chkNIStem.Checked == false && chkNIStemTwoStems.Checked == false)
                {
                    //recombine audio (if enabled)
                    if (
                                    current_songname != "" &&
                                    chkRecombine.Checked == true && (
                                    chkRPartVocal.Checked ||
                                    chkRPartBass.Checked ||
                                    chkRPartDrums.Checked ||
                                    chkRPartPiano.Checked ||
                                    chkRPartOther.Checked)
                                    )
                    {
                        recombineAudio();
                    }

                    files_remain--;
                    if (files_remain > -1)
                    {
                        //start processing the next song
                        next_song();
                    }
                    if (files_remain < 0) files_remain = 0;

                    if (!run_silent)
                    {
                        textBox1.AppendText("\r\n" + langStr["run_complete"] + "\r\n");
                        System.Media.SystemSounds.Beep.Play();
                    }
                }
                if (chkNIStem.Checked == true || chkNIStemTwoStems.Checked == true)
                // Should maybe be two different if statements if you want it to behave differently
                {
                    if (files_remain > 0)
                    {
                        NIStemRunner();

                    }
                }
            }));
        }

        private void Button2_Click(object sender, EventArgs e)
        {
            //prompt user for output folder
            var folderBrowserDialog1 = new FolderBrowserDialog();
            folderBrowserDialog1.ShowNewFolderButton = true;
            folderBrowserDialog1.Description = langStr["set_output"];
            DialogResult result = folderBrowserDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                txt_output_directory.Text = folderBrowserDialog1.SelectedPath;
                Properties.Settings.Default.output_location = txt_output_directory.Text;
                Properties.Settings.Default.Save();
            }
            else
            {
                txt_output_directory.Text = "";
            }
        }
        private void setPythonPathToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            //prompt user for python path
            var folderBrowserDialog1 = new FolderBrowserDialog();
            folderBrowserDialog1.SelectedPath = storage;
            folderBrowserDialog1.Description = langStr["set_python_path"];
            folderBrowserDialog1.ShowNewFolderButton = false;
            DialogResult result = folderBrowserDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                path_python = folderBrowserDialog1.SelectedPath;
                Properties.Settings.Default.path_python = path_python;
                Properties.Settings.Default.Save();
                LoadStuff();
            }
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        //private string get_config_string()
        //{
        //    //reads the JSON config file for the current stem mode
        //    var enviroment = System.Environment.CurrentDirectory;
        //    string readText = File.ReadAllText(enviroment + @"\configs\" + stem_count + "stems.json");
        //    if (mask_extension == "average")
        //    {
        //        readText = readText.Replace("zeros", "average");
        //    }
        //    return readText;
        //}

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            //sets the full bandwidth mode (16Khz)
            mask_extension = chkFullBandwidth.Checked ? "average" : "zeros";
        }

        private void spleeterGithubPageToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //help - opens SpleeterGUI github page in a browser window
            System.Diagnostics.Process.Start("https://github.com/thooore/SpleeterGUI");
        }

        private void makenItSoToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            //help - opens the Maken it so old SpleeterGUI github in a browser window
            System.Diagnostics.Process.Start("https://github.com/boy1dr/SpleeterGUI");
        }

        private void helpFAQToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //help - opens the SpleeterGUI help page in a browser window
            System.Diagnostics.Process.Start("https://github.com/thooore/SpleeterGUI/wiki");
        }

        private void parts_btn2_Click(object sender, EventArgs e)
        {
            //set the stem mode to 2
            parts_label.Text = langStr["vocal_accompaniment"];
            parts_btn2.UseVisualStyleBackColor = false;
            parts_btn4.UseVisualStyleBackColor = true;
            parts_btn5.UseVisualStyleBackColor = true;
            stem_count = "2";
            update_checks();
        }

        private void parts_btn4_Click(object sender, EventArgs e)
        {
            //set the stem mode to 4
            parts_label.Text = langStr["vocal_bass_drums_other"];
            parts_btn2.UseVisualStyleBackColor = true;
            parts_btn4.UseVisualStyleBackColor = false;
            parts_btn5.UseVisualStyleBackColor = true;
            stem_count = "4";
            update_checks();
        }

        private void parts_btn5_Click(object sender, EventArgs e)
        {
            //set the stem mode to 5
            parts_label.Text = langStr["vocal_bass_drums_piano_other"];
            parts_btn2.UseVisualStyleBackColor = true;
            parts_btn4.UseVisualStyleBackColor = true;
            parts_btn5.UseVisualStyleBackColor = false;
            stem_count = "5";
            update_checks();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //choose a song(s) to spleet
            if (files_remain == 0)
            {
                openFileDialog2.ShowDialog();
            }
            else
            {
                System.Media.SystemSounds.Asterisk.Play();
            }
        }

        private void openFileDialog2_FileOk(object sender, CancelEventArgs e)
        {
            //files chosen, start spleeting
            if (files_remain == 0)
            {
                if (txt_output_directory.Text == "")
                {
                    MessageBox.Show(langStr["output_message"]);
                    return;
                }
                textBox1.Text = "";
                files_remain = 0;
                foreach (String file in openFileDialog2.FileNames)
                {
                    files_to_process.Add(file);
                    files_remain++;
                }
                textBox1.AppendText(langStr["starting_all"] + "\r\n");
                progressBar1.Maximum = files_remain + 1;
                progressBar1.Value = 0;
                progress_txt.Text = langStr["starting"] + "..." + files_remain + " " + langStr["songs_remaining"];
                next_song();
            }
        }

        private void spleeterupgradeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //help - spleeter core upgrade
            run_silent = false;
            current_songname = "";
            textBox1.Text = langStr["run_update"] + "\r\n" + langStr["run_update_b"] + "\r\n\r\n";
            run_cmd("pip install --upgrade spleeter");
        }

        private void checkSpleeterGUIUpdateToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //help - check SpleeterGUI version
            try
            {
                WebRequest request = WebRequest.Create("https://raw.githubusercontent.com/thooore/SpleeterGUI/master/SpleeterGui/Properties/AssemblyInfo.cs");
                WebResponse response = request.GetResponse();
                Stream data = response.GetResponseStream();
                string html = String.Empty;
                int posStart = 0;
                int posEnd = 0;
                String version_check = "";
                using (StreamReader sr = new StreamReader(data))
                {
                    html = sr.ReadToEnd();
                }
                if (html != "")
                {
                    posStart = html.IndexOf("\n[assembly: AssemblyVersion(");
                    if (posStart > 0)
                    {
                        posStart += 29;
                        posEnd = html.IndexOf('"', posStart);
                        if (posEnd > 0)
                        {
                            version_check = html.Substring(posStart, posEnd - posStart);
                            if (version_check != "" && version_check != gui_version)
                            {
                                MessageBox.Show(langStr["version"] + " " + version_check + " " + langStr["is_available"] + "\n" + langStr["current_version"] + " " + gui_version);
                            }
                            else
                            {
                                MessageBox.Show(langStr["latest"] + " " + gui_version);
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show(langStr["unable"] + "\n" + langStr["current_version"] + " " + gui_version);
                }
            }
            catch
            {
                MessageBox.Show(langStr["unable"] + "\n" + langStr["current_version"] + " " + gui_version);
            }
        }

        private void chkRecombine_CheckedChanged(object sender, EventArgs e)
        {
            update_checks();
        }

        private void update_checks()
        {
            //update the user interface based on the chosen stem count
            chkRPartVocal.Checked = false;
            chkRPartBass.Checked = false;
            chkRPartDrums.Checked = false;
            chkRPartPiano.Checked = false;
            chkRPartOther.Checked = false;

            //          || chkSongName.Checked == true
            if (stem_count == "2" || chkNIStem.Checked == true)
            {
                chkRecombine.Checked = false;
                chkRecombine.Enabled = false;
                pnlRecombine.Height = 20;
                pnlMain.Location = new Point(12, 182);
                this.Height = 802;
                // Project height default in Designer: 667 (before)
                // this.Height = 677;
            }
            else
            {
                chkRecombine.Enabled = true;

                if (chkRecombine.Checked)
                {
                    pnlRecombine.Height = 50;
                    pnlMain.Location = new Point(12, 202);
                    this.Height = 822;
                    // this.Height = 697; (before)
                }
                else
                {
                    pnlRecombine.Height = 20;
                    pnlMain.Location = new Point(12, 182);
                    this.Height = 802;
                    // this.Height = 677; (before)

                    chkRPartVocal.Checked = false;
                    chkRPartBass.Checked = false;
                    chkRPartDrums.Checked = false;
                    chkRPartPiano.Checked = false;
                    chkRPartOther.Checked = false;
                }
                switch (stem_count)
                {
                    case "4":
                        chkRPartVocal.Enabled = true;
                        chkRPartBass.Enabled = true;
                        chkRPartDrums.Enabled = true;
                        chkRPartPiano.Enabled = false;
                        chkRPartOther.Enabled = true;
                        break;
                    case "5":
                        chkRPartVocal.Enabled = true;
                        chkRPartBass.Enabled = true;
                        chkRPartDrums.Enabled = true;
                        chkRPartPiano.Enabled = true;
                        chkRPartOther.Enabled = true;
                        break;
                }
            }
            if (chkUpdateCollection.Checked && (chkNIStem.Checked || chkNIStemTwoStems.Checked))
            {
                chkOverwriteCollection.Enabled = true;
            }
            else
            {
                chkOverwriteCollection.Enabled = false;
            }
            if (chkNIStemTwoStems.Checked || chkNIStem.Checked)
            {
                chkStemRemoveFiles.Enabled = true;
                chkStemsFolder.Enabled = true;
                chkUpdateCollection.Enabled = true;
            }
            else
            {
                chkStemRemoveFiles.Enabled = false;
                chkStemsFolder.Enabled = false;
                chkUpdateCollection.Enabled = false;
            }
        }

        private void duration_ValueChanged(object sender, EventArgs e)
        {
            Properties.Settings.Default.duration = Convert.ToInt32(duration.Value);
            Properties.Settings.Default.Save();
        }

        private void chkSongName_CheckedChanged(object sender, EventArgs e)
        {
            Properties.Settings.Default.songName = chkSongName.Checked;
            Properties.Settings.Default.Save();

            //EMPTY!!!!
            //update_checks();
        }

        private void chkNIStemTwoStems_CheckedChanged(object sender, EventArgs e)
        {

            if (chkNIStemTwoStems.Checked == true)
            {
                chkNIStem.Checked = false;
                chkRecombine.Enabled = false;
                chkSongName.Enabled = false;
                chkSongName.Checked = true;     // Probably not necessary
                cmbBox_codec.SelectedIndex = 3; // Set codec m4a
                cmbBox_codec.Enabled = false;

                parts_btn2.Enabled = false;
                parts_btn4.Enabled = false;
                parts_btn5.Enabled = false;

                //set the stem mode to 2
                parts_label.Text = langStr["vocal_accompaniment"];
                parts_btn2.UseVisualStyleBackColor = false;
                parts_btn4.UseVisualStyleBackColor = true;
                parts_btn5.UseVisualStyleBackColor = true;
                stem_count = "2";


            }
            else
            {
                //chkRecombine.Enabled = true;
                chkSongName.Enabled = true;
                cmbBox_codec.Enabled = true;
                parts_btn2.Enabled = true;
                parts_btn4.Enabled = true;
                parts_btn5.Enabled = true;
            }
            update_checks();
        }

        private void chkNIStem_CheckedChanged(object sender, EventArgs e)
        {
            update_checks();
            if (chkNIStem.Checked == true)
            {
                chkNIStemTwoStems.Checked = false;
                chkRecombine.Enabled = false;
                chkSongName.Enabled = false;
                chkSongName.Checked = true;     // Probably not necessary
                cmbBox_codec.SelectedIndex = 3; // Set codec m4a
                cmbBox_codec.Enabled = false;

                parts_btn2.Enabled = false;
                parts_btn4.Enabled = false;
                parts_btn5.Enabled = false;

                //set the stem mode to 4
                parts_label.Text = langStr["vocal_bass_drums_other"];
                parts_btn2.UseVisualStyleBackColor = true;
                parts_btn4.UseVisualStyleBackColor = false;
                parts_btn5.UseVisualStyleBackColor = true;
                stem_count = "4";


            }
            else
            {
                //chkRecombine.Enabled = true;
                chkSongName.Enabled = true;
                cmbBox_codec.Enabled = true;
                parts_btn2.Enabled = true;
                parts_btn4.Enabled = true;
                parts_btn5.Enabled = true;
            }
        }

        private void NIStemRunner()
        {
            run_ffmpeg(current_song);
        }

        private void run_NIStem()
        {

            if (File.Exists(storage + @"\ni-stem\ni-stem.exe"))
            {
                String outputArgument;

                if (!chkStemsFolder.Checked)
                {
                    outputArgument = (char)34 + txt_output_directory.Text + @"\" + current_songname + ".stem." +
                    cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34;
                }
                else
                {
                    outputArgument = (char)34 + txt_output_directory.Text + @"\" + "stems" + @"\" + current_songname + ".stem." +
                    cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34;
                }



                String args = "create -x " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - mix.wav" + (char)34 + " -s " +
                    (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - vocals." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34 + " " +
                    (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - drums." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34 + " " +
                    (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - bass." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34 + " " +
                    (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34 + " " +
                    "-m " + (char)34 + storage + @"\ni-stem\ni-stem-metadata.json" + (char)34 + " -o " + outputArgument;



                ProcessStartInfo processStartInfo = new ProcessStartInfo(storage + @"\ni-stem\ni-stem.exe", args);
                processStartInfo.WorkingDirectory = storage;

                processStartInfo.UseShellExecute = false;
                processStartInfo.ErrorDialog = false;
                processStartInfo.RedirectStandardOutput = true;
                processStartInfo.RedirectStandardError = true;
                processStartInfo.CreateNoWindow = true;
                Process process = new Process();
                process.StartInfo = processStartInfo;
                process.EnableRaisingEvents = true;
                process.Exited += new EventHandler(run_niStemExited);
                process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
                process.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);
                bool processStarted = process.Start();
                process.BeginOutputReadLine();
                process.BeginErrorReadLine();
            }
            else
            {
                textBox1.AppendText("\r\n" +
                    "=============================" + "\r\n" +
                    "Error: ni-stem.exe not found!" + "\r\n" +
                    "=============================" + "\r\n" +
                    "You need to reinstall SpleeterCore to fix this!" + "\r\n" +
                    "Follow the install instructions under 'Help' > 'Help and FAQ'" + "\r\n" +
                    "https://github.com/thooore/SpleeterGUI/wiki" + "\r\n");
                System.Media.SystemSounds.Exclamation.Play();
                MessageBox.Show("Error: ni-stem.exe not found!" + "\r\n" +
                    "You need to reinstall SpleeterCore to fix this!" + "\r\n" +
                    "Follow the install instructions under 'Help' > 'Help and FAQ'");
            }
        }

        private void run_ffmpeg(String filename)
        {
            run_ffmpegAudio(filename);
        }

        private void run_ffmpegAudio(String filename)
        {
            String args = "-y -i " + (char)34 + filename + (char)34 + " " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - mix.wav" + (char)34;

            ProcessStartInfo processStartInfo = new ProcessStartInfo(storage + @"\ffmpeg.exe", args);
            processStartInfo.WorkingDirectory = storage;

            processStartInfo.UseShellExecute = false;
            processStartInfo.ErrorDialog = false;
            processStartInfo.RedirectStandardOutput = true;
            processStartInfo.RedirectStandardError = true;
            processStartInfo.CreateNoWindow = true;
            Process process = new Process();
            process.StartInfo = processStartInfo;
            process.EnableRaisingEvents = true;
            process.Exited += new EventHandler(run_ffmpegExited);
            process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
            process.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);
            bool processStarted = process.Start();
            process.BeginOutputReadLine();
            process.BeginErrorReadLine();

            textBox1.AppendText("\r\n" + ("AUDIO DONE!") + "\r\n");
        }

        private void run_ffmpegTwoStemMakerRunner(String filename)
        {
            run_ffmpegSilenceMakerDrums(filename);
            silenceMakerBass(filename);
            twoStemMakerOther(filename);
        }

        private void run_ffmpegSilenceMakerDrums(String filename)
        {
            String args = "-y -i " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - mix.wav" + (char)34
                + " -filter:a \"volume=0\" " + (char)34 + txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - drums." +
                cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34;

            ProcessStartInfo processStartInfo = new ProcessStartInfo(storage + @"\ffmpeg.exe", args);
            processStartInfo.WorkingDirectory = storage;

            processStartInfo.UseShellExecute = false;
            processStartInfo.ErrorDialog = false;
            processStartInfo.RedirectStandardOutput = true;
            processStartInfo.RedirectStandardError = true;
            processStartInfo.CreateNoWindow = true;
            Process process = new Process();
            process.StartInfo = processStartInfo;
            process.EnableRaisingEvents = true;
            process.Exited += new EventHandler(run_doNothingOnExit);
            process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
            process.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);
            bool processStarted = process.Start();
            process.BeginOutputReadLine();
            process.BeginErrorReadLine();
            process.WaitForExit();

            textBox1.AppendText("\r\n" + ("DRUMS SILENCE DONE!") + "\r\n");
        }

        private void silenceMakerBass(String filename)
        {
            File.Copy(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - drums." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem),
            txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - bass." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem));

            textBox1.AppendText("\r\n" + ("BASS SILENCE DONE!") + "\r\n");
        }

        private void twoStemMakerOther(String filename)
        {
            if (File.Exists(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem)))
            {
                File.Delete(txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem));
            }


            File.Move(
                txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - accompaniment." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem),
                txt_output_directory.Text + @"\" + current_songname + @"\" + current_songname + " - other." + cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem));

            textBox1.AppendText("\r\n" + ("RENAME ACCOMPANIMENT DONE!") + "\r\n");
        }

        private void run_StemSyncer()
        {

            if (File.Exists(storage + @"\StemSyncer\StemSyncer\StemSyncer.py"))
            {
                String collectionPath = txt_collection_path.Text;
                String outputCollectionPath = txt_collection_path_out.Text;
                if (File.Exists(collectionPath))
                {
                    string createNewCollection = "";
                    if (!(File.Exists(outputCollectionPath)))
                    {
                        textBox1.AppendText("\r\n" +
                        "Output collection does not exist! \n Trying to create a new collection!");
                        createNewCollection = " -create";
                    }
                    if (!(stemSyncerBackup))
                    {
                        File.Copy(collectionPath, txt_output_directory.Text + "\\collection_backup.nml", true);
                        stemSyncerBackup = true;
                    }
                    if (chkOverwriteCollection.Checked)
                    {
                        createNewCollection = " -create";
                    }
                    collectionPath = (char)34 + collectionPath + (char)34;
                    outputCollectionPath = (char)34 + outputCollectionPath + (char)34;

                    textBox1.AppendText("\r\n" +
                        "Running StemSyncer!");

                    String outputArgument;

                    if (!chkStemsFolder.Checked)
                    {
                        outputArgument = (char)34 + txt_output_directory.Text + @"\" + current_songname + ".stem." +
                        cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34;
                    }
                    else
                    {
                        outputArgument = (char)34 + txt_output_directory.Text + @"\" + "stems" + @"\" + current_songname + ".stem." +
                        cmbBox_codec.GetItemText(cmbBox_codec.SelectedItem) + (char)34;
                    }

                    String args = storage + @"\StemSyncer\StemSyncer\StemSyncer.py " + " \"" + current_song + "\" " + outputArgument + " " + collectionPath + " " + outputCollectionPath + " " + createNewCollection;
                    ProcessStartInfo processStartInfo = new ProcessStartInfo(((char)34 + storage + @"\StemSyncer\python.exe" + (char)34), args);
                    processStartInfo.WorkingDirectory = storage;

                    processStartInfo.UseShellExecute = false;
                    processStartInfo.ErrorDialog = false;
                    processStartInfo.RedirectStandardOutput = true;
                    processStartInfo.RedirectStandardError = true;
                    processStartInfo.CreateNoWindow = true;
                    Process process = new Process();
                    process.StartInfo = processStartInfo;
                    process.EnableRaisingEvents = true;
                    process.Exited += new EventHandler(run_StemSyncerExited);
                    process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
                    process.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);
                    bool processStarted = process.Start();
                    process.BeginOutputReadLine();
                    process.BeginErrorReadLine();
                    process.WaitForExit(); 
                }
                else
                {
                    textBox1.AppendText("\r\n" +
                        "Collection was not found!" + "\r\n");
                }
            }
            else
            {
                textBox1.AppendText("\r\n" +
                    "StemSyncer was not found!" + "\r\n");
            }
        }


        private void cmbBox_codec_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbBox_codec.SelectedIndex == 0 || cmbBox_codec.SelectedIndex == 5)
            {
                bitrate.Enabled = false;
            }
            else
            {
                bitrate.Enabled = true;
            }
            Properties.Settings.Default.codec = cmbBox_codec.SelectedIndex;
            Properties.Settings.Default.Save();
        }

        private void bitrate_ValueChanged(object sender, EventArgs e)
        {
            Properties.Settings.Default.bitrate = Convert.ToInt32(bitrate.Value);
            Properties.Settings.Default.Save();
        }

        private void btn_browse_collection_Click(object sender, EventArgs e)
        {
            //choose a song(s) to spleet
            if (files_remain == 0)
            {
                DialogResult result = openFileDialogCollection.ShowDialog();
                if (result == DialogResult.OK)
                {
                    txt_collection_path.Text = openFileDialogCollection.FileName;
                    Properties.Settings.Default.collection_location = txt_collection_path.Text;
                    Properties.Settings.Default.Save();
                }
            }
            else
            {
                System.Media.SystemSounds.Asterisk.Play();
            }
        }

        private void btn_browse_collection_out_Click(object sender, EventArgs e)
        {
            //choose a song(s) to spleet
            if (files_remain == 0)
            {
                DialogResult result = openFileDialogCollection.ShowDialog();
                if (result == DialogResult.OK)
                {
                    txt_collection_path_out.Text = openFileDialogCollection.FileName;
                    Properties.Settings.Default.collection_out_location = txt_collection_path_out.Text;
                    Properties.Settings.Default.Save();
                }
            }
            else
            {
                System.Media.SystemSounds.Asterisk.Play();
            }

        }

        private void chkUpdateCollection_CheckedChanged(object sender, EventArgs e)
        {
            update_checks();
        }
    }
}


================================================
FILE: SpleeterGui/Form1.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="openFileDialog2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>132, 17</value>
  </metadata>
  <metadata name="folderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>272, 17</value>
  </metadata>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        /9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAAB
        AAAARgEoAAMAAAABAAIAAAExAAIAAAAQAAAATgAAAAAAAXcMAAAD6AABdwwAAAPocGFpbnQubmV0IDQu
        Mi44AP/bAEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
        AQEBAQEBAQEBAQEBAf/bAEMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
        AQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAEwBGAMBIQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAA
        AAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj
        QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2
        d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj
        5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIE
        BAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn
        KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqi
        o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA
        AhEDEQA/AP79ucAD6cfT6gcHtk/zwv8APHPb/P54oAM8Zo/P/P8An1oAX/P+f84pBj6YHfsP8j9KAFoz
        /n/P+eaACjNABRQAUUAFFACZz/n/AA+v60tABQPx/GgAooAKKAEPTpn2/wA/5PSm4Hf2JySe2Dn0+vtn
        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
        6+x/oDQAtFABSE/zH6nFAC0UAf/Z
</value>
  </data>
  <metadata name="openFileDialogCollection.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>441, 17</value>
  </metadata>
  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>53</value>
  </metadata>
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAqBAAAJ4EAAAwMAAAAQAgAKglAABGFQAAKAAAABAA
        AAAgAAAAAQAgAAAAAAAABAAAww4AAMMOAAAAAAAAAAAAAP/////+/////v////7//////////v7///7+
        ///////////////+/////v7//////////////v7///7+////////////////////////////////////
        ////////////////////////////////////////////////////////+/7///f8/v/3/P//+vz///v9
        ///4+/7/+fr+//z7/v/9+/3/+/j8//z4+v/9+/z//fv7//35+P/9+vn//vz7/5fa9/8VpvT/Dp70/1m6
        8f+IyfL/JHvp/0RY3v+Vi9z/vYfK/40nlv+gLm7/yI+l/8uPf/+8UTH/umk4/9ezlP+S2Pb/CqLz/wSa
        9P9RtvD/i8ny/yt+6f9KXd//mY7d/7+LzP+SL5v/pDVz/8qTqP/MkoP/vlc5/71uQP/YtZn/+f3///P6
        /v/y+v7/+v3//9fv+/+z1vj/vcbz/9nW8v/n0+z/1bHZ/9u1y//q19//7NbQ/+bAsv/myrL/8OTV////
        /////////P7///////941Pb/AIjt/xpQ3P96ftr/sXC7/3cBef+LDEn/u36P/799YP+rOQD/qFgA/82r
        b////////v////z+////////uu78/3rL+P+Lru//vcPu/9Wx1/+3drH/wnyX/9u5vv/iwLL/2J9//9ev
        fv/o2Lj////////////9/v///////7jm+v9wxfn/ebv4/6jL8////////v7///7+/v//////yNSc/7DB
        bf+1vXL/19mz/////////////P7///////932vj/AKb3/wCO9P9Zpur////+//z7/f/8+/v//////5ex
        Sf9nlAD/bJIA/7DBbP////////////7/////////4fn+/8Tw/v/I6/3/2+/7/////////////v/+////
        ///e6cj/zuKs/83irf/k7tL///////////////////////////////////////////////////////7+
        /v//////n8J0/3CsLv9xqy//stCN///////////////////////9/////P7///z+///9/v//////////
        ///+/v7//////6rJgv+BtUP/gbRE/7rVmf//////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAA
        AAAAEAAAww4AAMMOAAAAAAAAAAAAAP//////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////+/////v////7/
        ///+/////v////7///////////////7////+/////v////7//////v////7///////////////7////+
        /////v////7////+/////v///////////////v7////+/////v////7////+/////v//////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /v///////P7///v9///7/f//+/3///v9///7/f///P3///7////8/f7/+/3///v8/v/8/P7//Pz+//z8
        /v/+/v7///7///37/f/9+/3//fv9//78/f/9+/z//fv8///+/v/+/v7//vz7//78/P/+/Pv//vz8//78
        +//+/fz////+/+7+//9jxPH/K6/0/y6v9/8trfX/Lqv2/yyi7v+ByfH/2/n//06j6P87ke7/TIbq/1d6
        5f9lb+T/ZlnO/8W54//r1e7/kEat/55Fq/+kSZz/qkyO/7FOgf+rTm3/69jh/9vBu/+3WEX/yGtR/8Vw
        Uf/FeFP/xH1Q/8CMY//68ef/6v3//zy17v8Am/L/AZz2/wCY8/8BlvT/AIzr/2G77f/S+P7/Iovj/wp1
        6v8faOb/Llng/z5K3f8/MMT/uKfc/+bK6v91GJn/hheX/44chP+VH3P/nyJi/5UiSv/mz9r/0rKp/6Qv
        Fv+7Ryf/t00m/7ZXJ/+1XiX/sG87//ju4v/q/f//P7bu/wCc8v8Bnfb/AJnz/wGY9P8Ajev/ZLzu/9P4
        //8ljeT/DXfr/yJq5v8wW+D/QUze/0IyxP+5qdz/58vq/3cbmv+HGpj/kB+F/5YidP+gJWP/lyRM/+fQ
        2v/Ss6r/pTEZ/71JKf+4Tyn/t1kq/7dgKP+ycT7/+O7i/+z+//9Uv/D/F6jz/xuo9/8bpfX/G6P2/xma
        7f91xe//1/n//zuZ5v8mhe3/OXro/0Zs4/9UX+H/VUfK/8Cx4P/p0e3/hTKm/5Qxo/+bNpL/oTmD/6k7
        c/+iO17/6dTe/9e7s/+uRjH/wlw//79hP/+/akD/vXA9/7mAUv/58OT//v////f8/v/1+/7/9fv///X7
        ///1+///9fv+//n9/v//////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////+////////////
        ///////////////////+/////////+z7/v+L0fT/fsL2/4m48v+OrO//l6Ht/5aR3//Y0Oz/8eLz/7N/
        xv+7gMT/v4O6/8GGsf/GiKj/wYia//Hm6v/m1c//zY19/9ibg//Wn4H/1qZ//9apfP/Ts4n/+/bs////
        ///+/////v////7////+/////v////3+////////2fn9/ySs7f8Lk/D/HX/p/yhp4v83VeD/NjTG/7Oo
        3P/lyOj/cRCR/4ASjf+HGHr/jhxp/5ggV/+OIED/5c/W/9Cypf+gLAr/uEcV/7JPEf+xWg7/r2EH/6x0
        IP/479v//////////////////////////////////v/////////Z+v3/Mrrw/xqk9P8pke3/NH3m/0Jr
        5P9CTc3/t7Ph/+fO6f9+JZX/jSaR/5QsgP+ZMHH/oTNf/5g0Sv/o09j/1Lqs/6dCHf+9Wyb/uGMj/7dt
        IP+2cxr/soQx//jw3f/////////////////////////////////+/////////9j6/f8nvvL/DKj1/xyU
        7/8ogOn/Nm3n/zhOzv+ytOH/58zn/30gj/+MIor/kyh3/5ksaP+hMFb/lzBC/+fT1P/Tu6f/pEIU/7hc
        Hf+0Yxn/s2wY/7J0Ef+whSn/+PHb////////////////////////////////////////////9////9b1
        /v/Q8P3/1Oz8/9fo+//a4/r/2t31//Lw+f/48vj/38ji/+PJ4f/lyt3/5svY/+jM1f/mzM//+PPz//jy
        8P/x2NP/9d7W//Tg1P/z4tP/8uTT//Lp1//+/Pj/////////////////////////////////////////
        ///0/f7/v+X6/7bh/P+43/z/utz7/7za/P++1ff/4uz4//////////////////////////////////7+
        /v//////7vDf/9Xdtf/Z4Lf/2d64/9vduf/b3Ln/3NzA//v79f//////////////////////////////
        ///+/////////9r5/P8osu//CqT4/xSb9f8ZkfP/IIn0/yV44/+dwef///////37/f/+/f7//v3+//79
        /f/+/f3//Pv7///////Fy5T/dIkF/4KWCv+Ckwz/hZIP/4aODP+MkSn/8vLb////////////////////
        //////////////7/////////2/r9/zK/8v8Ws/n/H6v4/ySi9/8qmvf/L4vo/6HJ6v///////v7+////
        ///////////////////9/f3//////8bQmP90mA7/f6UR/3+hE/+BoRX/gZ4R/4ugLv/x9Nv/////////
        /////////////////////////v/////////V+v3/GsLz/wC2+v8ErPn/CaP3/w+a9v8Wiun/lsnq////
        ///+/f7///////////////////////39/f//////vsyJ/1+SAP9roQL/ap0A/2udAf9qmwD/dZsT/+30
        1P///////////////////////////////////////////+z9/v+b5/v/iuL9/5He/f+T2vz/ltb8/5jP
        9f/Q6fb////////+/////////////////////////v7+///////k687/vtSP/8Paj//C2I//wtmQ/8HY
        jv/F2Jz/+Pvt////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////r8+v/z+PL/8/jy//P5
        8v/0+fL/8vny//P58v/9/v3////////////////////////////////////////////+////+/7///v+
        ///6/f//+/7///v9///7/f///f7///////////////////////////////////39/f//////wdSj/2ii
        KP9xrSr/cKsq/3CsKv9uqib/eaw+/+323v//////////////////////////////////////////////
        ///+/////////////////////////////////////////////////////////////////////f39////
        ///B1KP/aaEo/3GuK/9wqyv/casr/22qJ/95rD7/7fbe////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///9/f3//////77Rn/9gnBz/aakf/2imHv9pph//ZaUa/3GnM//r9tz/////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////7+/v//////1uLB/5m/bf+fyG//nsZu/57Hb/+cxWv/pMZ8//L56P//////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////+//3//v7+//7+/v/+//7//v/+//7/
        /v//////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEA
        IAAAAAAAACQAAMMOAADDDgAAAAAAAAAAAAD/////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////7+/v/////////////////////////////////////////////////////////////+
        /v/////////////////////////////////////////////+////////////////////////////////
        /////////////////v/////////////////////////////////+/v7////+/////v//////////////
        //////7////////////////////////////////////////+////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////v////3+///9/v///f7///3+///9/v///f7///3+///9/v///f7///7+/////////v7+//3+
        ///9/v///f7///39///9/v7//f3+//39///9/f///f3+/////////////v3+//79/v/+/f7//f39//79
        /v/+/f7//v3+//79/f/+/f3//v39/////////////v39//79/f/+/f3//v39//79/f///v3//v39//79
        /f/+/v3///7+////////////tun6/1K77v9BuPT/Pbb3/z209v88s/b/PLL2/zyw9f8/r/b/Tavn/5vY
        9v/u////ntDv/0We6v9MnfD/UpXu/1qN6v9hhef/aX7l/3B24/95b97/fW/E/+XZ8f//8///rYDC/5lN
        s/+kVbT/p1Sp/6xWof+wWZj/s1qP/7hdif+zWHn/vIGT//33+//v5OD/sm9j/8lvXP/Kc1z/yXdd/8p8
        Xv/JgV7/yYVf/8qMYv+9hVr/3cCo////////////nuH5/xai6v8An/H/AZ31/wCb9f8AmfT/AJfz/wCU
        8v8Bk/P/Do7f/3nJ8//p////fL/q/wR74/8Oe+z/F27n/yFk5P8qWuD/NFHd/z5G2v9JPtT/UD2y/93L
        7P//7v//klSt/3cQm/+FGZn/ihqM/5Acgf+TH3X/mSFq/6AkYP+aHkv/pFVu//3z+v/p29X/lj0r/7Y9
        Iv+4RCT/uEkl/7hOJv+1VCb/tlwn/7lkLP+lWyD/0KqK////////////oeL5/x6m6v8IovL/AqD2/wKd
        9f8BnPT/Apr0/wKY8/8Fl/T/F5Hg/33L9P/q////gcHr/wyA5P8XgO3/HnTo/yhr5v8yYeL/O1fe/0RL
        2/9PRNX/V0S1/97N7f//7v//llqv/3sYnv+JIZ3/jiKR/5Mkhf+YJXv/nSdv/6MrZv+cJlL/plt0//30
        +v/q3Nf/mkQz/7hDKf+7SSz/uk8t/7lULf+4Wi3/uGEv/7tpM/+oYCf/0q6P////////////oeL5/x6l
        6v8HovH/AaD2/wGe9f8BnPT/AZrz/wGY8/8El/T/F5Hg/33L9P/p////gcHr/wyA5P8XgO3/HnPp/ydq
        5v8xYOL/O1be/0VL2/9PQtb/VkO0/97N7f//7///llqw/3oXnf+JIZ3/jiKR/5Mjhf+XJnn/nCht/6Mr
        Zf+dJVL/plpz//31+f/q3Nf/mUMy/7hDKf+8SSv/uk8s/7lULf+5Wi3/uWEv/7tpMv+pYCf/0a2O////
        ////////n+H5/xmj6f8BoPH/AJ72/wCc9f8AmvT/AJfz/wCV8v8ClPP/EY/f/3vK9P/p////fcDq/wd8
        4/8Rfez/GHHn/yNn5f8tXeD/N1Pe/0FI2v9MP9T/Uj+z/93M7P//7v//k1au/3gSm/+GHJr/ix2O/5Ee
        gv+UIHj/mSNr/6EnYP+bIE3/pVdv//30+v/p29f/lz4u/7Y/JP+4Rib/uEso/7hQKf+2Vij/t14q/7pl
        Lv+nXSL/0KuL////////////qub5/zWw7P8hrPL/Har3/x2o9v8dpvb/HaX1/xyj9P8fovX/L57i/4rS
        9P/s////jcjt/yaN5v8vje7/NYLq/z966P9IceT/UGjh/1df3v9hV9n/Z1e8/+LS7v//8f//oWq5/4gu
        qP+XN6n/mTid/546kv+iPIj/pj59/61Bdf+oPGL/sGuB//31+//s4Nv/pVZI/79XQP/BXEP/wGBC/8Bm
        Q//Ba0P/wHFE/8F5SP+xcD7/1raZ/////////////f7///n9/v/5/f//+f3///j8/v/5/P//+f3///n9
        ///5/P//+fz+//z+///+/////P7+//r8/v/6/P//+vz///r7///7/P7/+vv+//r8/v/7+/7/+/v9//7+
        /////////Pv9//z6/f/8+v3//fr9//36/P/9+vz//fr8//36/P/9+vv//fv8/////////v7//fv7//77
        +//++/v//vv7//78+//+/Pv//fz7//38+//9+/v//v38///////+////////////////////////////
        /////////////////////////////////////////f7///n9///5/f7/+vv+//v8/v/7/P7/+/v+//v6
        /f/7+/7/+/v9//79/////////Pv9//v5/f/9+v3//fr9//36/P/8+/z//Pv8//z6/P/8+fr//fz7////
        /v/+/v7//fv7//36+v/9+/r//fv6//36+v/9/Pr//vv6//77+v/9+/r//v39///////+/////v/////+
        //////////////////////////////////////////////z+/v/6////nNvz/0Ox7/9HrPP/TaDv/1WW
        7P9Ziun/YX/m/2hz4v9vbN7/dGnC/+PX8P//8v//qHe9/5JArf+dSKz/n0qi/6NMmf+lT5D/qVGI/69U
        f/+pUG//s3uK//33+v/u49z/q2VV/8VlTP/FbEr/xHBI/8V1SP/EfEX/xIFF/8aIR/+1gjz/2L6Y////
        //////////////////////////////////////////////////////////////v+/v/4////gdXx/xCg
        7P8VnPH/HY3u/yV96f8sb+T/NGHg/z5U3f9GR9f/TkO0/9rM7P//7v//kVOq/3YOlf+EGpX/hxuG/4we
        e/+QIXD/lSRk/5wpW/+VI0f/oVhr//31+P/p3dT/lT8o/7RAHP+3SBr/tU4Y/7VVF/+zXBX/smIT/7Vs
        FP+kZAj/z698//////////////////////////////////////////////////////////////////v+
        /v/2////hdnz/xqq8P8fpfP/JJfu/yqJ6/8yfOf/O2/k/0Nh4P9MVdz/VVK6/9rQ7v//8P7/l1ys/30a
        lv+LJ5b/jSiJ/5Iqfv+XLXX/my9p/6I0YP+bL0z/pmJw//329//q39b/mkoz/7hNJv+8VCT/uFoj/7dh
        Iv+2aB//tm0e/7l2H/+ncBP/0bWC////////////////////////////////////////////////////
        //////////////v+///1////g9vz/xev8P8cqvX/Ipzx/ymO7P8xgej/OHPk/0Fn4f9KWtz/VFa7/9nS
        7//+8P7/mV6q/38dk/+NJ5T/kCiH/5UrfP+YL3L/mzBm/6I1Xf+cMUn/p2Ju//329//q4NX/mk8z/7hR
        J/+6WCX/uF4j/7hkIf+2bB//tnAe/7l6IP+ncxX/0LaC/////v//////////////////////////////
        //////////////////////////////v+///1////e9z0/wex8f8MqvX/EZrx/xmN7v8if+j/KnHl/zNj
        4v88Vtz/SFG5/9XR7v//7/7/lVSk/3gOi/+HG4v/ihx8/48fcP+TI2X/mCZZ/58qT/+WJTz/o1pk//32
        9P/q4NH/lkco/7NLGf+0Uxb/slgV/7JfFP+yZRL/smwQ/7V2Ev+jbgb/z7R6/////f//////////////
        //////////////////////////////////////////////z+///3////nuf4/0nJ+P9Lxfj/Trj1/1Wv
        9P9cpfH/Yprt/2mQ7P9viOf/eYPN/+De8///9P7/soS6/6BUqP+qXKj/q1yd/7Bfl/+yYY3/tWOG/7pm
        f/+1YnH/vIeN//349v/v6d3/snxi/8h+WP/IhFb/x4hU/8iOU//GklL/xpZR/8idU/+8mEr/28qe////
        /v///////////////////////////////////////////////////////////////////////P////n/
        ///6/v//+v7+//r9/v/7/f7/+/z+//z8/v/8+/7//Pv9///9/v///v//+vf6//n0+f/59Pn/+fT4//r0
        +P/69ff/+vT3//r19v/69PX/+/f3///+/v///v///vr7///6+v//+vv///r7///6+//++/r//vv6//78
        +//+/Pr//v78////////////////////////////////////////////////////////////////////
        ///+////8fn9/+Tz/f/k9P7/5PP+/+Ty/v/k8v3/5fH9/+Xw/f/m8P3/6fD6//j7/f//////////////
        ///////////////////////////////////////////////////8/Pj/8PHn//Dy4//w8uP/8PLk//Hy
        5P/x8eT/8vHl//Ly5f/w7+T/9/fx////////////////////////////////////////////////////
        //////////////z+///4////ktnz/zCv8v8xsfj/Mqn2/zak9v85n/T/PZnz/0GU8/9HjvD/Xo7Z/83h
        9P/8/////v3+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///+/v/+/v7//f3+/////v/q68v/j5lG/5Oh
        Lv+VoS//lp8x/5ieMv+ZnTT/m501/5+eOv+RkDH/xsSS/////v//////////////////////////////
        //////////////////////////////v+/v/4////g9fy/xSr8P8Wrfn/FqT3/xue9v8emPX/I5L0/yeN
        8v8sh+//R4bV/8Pg8//7//////7+/////////////////////////////////////////////v7+////
        /f/m6cP/fZEs/3+ZD/+Bmg7/gpkQ/4OYEP+FlxP/h5YT/4yYGP99iBH/u8CA/////f//////////////
        //////////////////////////////////////////////v+/v/3////g9vz/xWz8f8YtPn/Ga34/xyn
        +P8foff/JJv3/yiU9P8tkPH/SY3Y/8Pi9P/7//////7/////////////////////////////////////
        /////////v7+/////f/m6sL/fJYs/3ugDf98oA7/fZ8P/3+fEP+AnhH/gZ0S/4WfFf95kA//ucWA////
        /f////////////////////////////////////////////////////////////v+///1////gt70/xO5
        9P8Uuvn/FrL5/xqs+f8dpvb/IZ/1/yWa9v8qlPP/SZLb/8Lk9P/7//////7/////////////////////
        /////////////////////////v7+/////v/m6sH/eJgq/3ejCf93pQn/eKML/3miC/97oQv/fKEN/4Ci
        Ef90lAn/tcZ8/////P////////////////////////////////////////////////////////////v+
        ///0////eN/0/wO79f8BvPv/A7T5/wit+f8MqPn/D6D2/xSa9P8alvT/PJLb/7zj9P/5//////7/////
        /////////////////////////////////////////v7+/////f/k6bz/bpMY/2ygAP9toQH/baAA/26g
        AP9toAD/bqAA/3GiAv9kkQD/rcRw////+///////////////////////////////////////////////
        //////////////z+///3////o+v4/1TV+f9R1f3/VND8/1jL/P9ax/r/XcP5/2C++f9ju/f/ernm/9Dt
        +P/7//////7//////////////////////////////////////////////v7//////f/s8NH/nLdi/5vB
        S/+cwUn/m8BK/5rASv+awEr/m8BL/53BTv+Ut0n/xtid/////P//////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////P7+//r+///7/v//+/7///v+
        ///7/v//+/7///z+///8/v///P3+//7/////////////////////////////////////////////////
        ///////////////////5+/T/4evX/+Dt0v/g7dL/3+zR/+Dt0f/g7dL/3+3R/+Dt0v/d6s//7fPl////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////7+/v//////////////////////////////////////////////////////////////
        /////////////////////////v7+/////v/i7Mv/eKJH/3CsLf9xrSz/caws/3GsLP9xrCz/caws/3Ou
        L/9ooSX/r86L/////f//////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////v7+/////v/i7Mn/dKBC/2ypKP9vqyj/bqoo/26r
        KP9uqif/bqon/3CsKv9lnyH/rsyJ/////P//////////////////////////////////////////////
        /////////////////////////v////3/////////////////////////////////////////////////
        /////////////////////////////////////////////////////////v7+/////v/i7Mr/dqFE/2+q
        Kv9wrCr/cKsq/2+qKv9vqyn/cKsq/3KtLf9mnyP/rs2K/////P//////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////v7+////
        /v/i7Mz/d6FG/3CrLP9xrCz/caws/3GsK/9yqyv/casr/3KtLf9ooSX/rs6L/////P//////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////v7+/////v/h68j/cJw7/2imH/9opx//aKce/2inHv9opx7/aKcf/2qpIf9emxf/qsuE////
        /P//////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////////////v7////////w9eP/uM6d/7TTj/+104//tNOP/7TTj/+004//tNOP/7XU
        j/+vzYz/1OTB/////v//////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////7///////7+/v////7////+/////v////7/////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        /////////////////v///////v/+////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value>
  </data>
</root>

================================================
FILE: SpleeterGui/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SpleeterGui
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}


================================================
FILE: SpleeterGui/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SpleeterGUI")]
[assembly: AssemblyDescription("Spleeter source separation - GUI")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Maken it so and Thore")]
[assembly: AssemblyProduct("SpleeterGui")]
[assembly: AssemblyCopyright("Apache License 2.0")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("92a3d32b-8397-41e5-8928-2ee4c22caf17")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.2.1.0")]
[assembly: AssemblyFileVersion("3.2.1.0")]


================================================
FILE: SpleeterGui/Properties/Resources.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace SpleeterGui.Properties {
    using System;
    
    
    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        
        /// <summary>
        ///   Returns the cached ResourceManager instance used by this class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SpleeterGui.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   Overrides the current thread's CurrentUICulture property for all
        ///   resource lookups using this strongly typed resource class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   Looks up a localized resource of type System.Drawing.Bitmap.
        /// </summary>
        internal static System.Drawing.Bitmap _649656_global_32x32 {
            get {
                object obj = ResourceManager.GetObject("649656_global_32x32", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        
        /// <summary>
        ///   Looks up a localized resource of type System.Drawing.Bitmap.
        /// </summary>
        internal static System.Drawing.Bitmap spleeter_logo {
            get {
                object obj = ResourceManager.GetObject("spleeter_logo", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        
        /// <summary>
        ///   Looks up a localized resource of type System.Drawing.Bitmap.
      
Download .txt
gitextract_n87oml8j/

├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── SpleeterGui/
│   ├── App.config
│   ├── Form1.Designer.cs
│   ├── Form1.cs
│   ├── Form1.resx
│   ├── Program.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   ├── Settings.settings
│   │   └── app.manifest
│   ├── SpleeterGui.csproj
│   ├── configs/
│   │   ├── 2stems.json
│   │   ├── 4stems.json
│   │   └── 5stems.json
│   ├── languages_source/
│   │   ├── arabic.xml
│   │   ├── chinese.xml
│   │   ├── english.xml
│   │   ├── french.xml
│   │   ├── german.xml
│   │   ├── hindi.xml
│   │   ├── italian.xml
│   │   ├── japanese.xml
│   │   ├── korean.xml
│   │   ├── russian.xml
│   │   ├── spanish.xml
│   │   └── tchinese.xml
│   └── packages_OLD.config
├── SpleeterGui.sln
└── ni-stem-metadata.json
Download .txt
SYMBOL INDEX (69 symbols across 5 files)

FILE: SpleeterGui/Form1.Designer.cs
  class Form1 (line 3) | partial class Form1
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: SpleeterGui/Form1.cs
  class Form1 (line 34) | public partial class Form1 : Form
    method Form1 (line 51) | public Form1()
    method Form1_Load (line 56) | private void Form1_Load(object sender, EventArgs e)
    method Form1_Shown (line 63) | private void Form1_Shown(object sender, EventArgs e)
    method LoadStuff (line 68) | public void LoadStuff()
    method get_languages (line 110) | void get_languages()
    method LanguageItemClickHandler (line 139) | private void LanguageItemClickHandler(object sender, EventArgs e)
    method update_language (line 146) | void update_language(string lang_name)
    method Form1_DragEnter (line 202) | void Form1_DragEnter(object sender, DragEventArgs e)
    method Form1_DragDrop (line 207) | void Form1_DragDrop(object sender, DragEventArgs e)
    method checkForSpleeterError (line 238) | private void checkForSpleeterError()
    method spleeterError (line 292) | private void spleeterError()
    method generateLog (line 321) | private void generateLog()
    method next_song (line 349) | private void next_song()
    method run_cmd (line 432) | private void run_cmd(String cmd)
    method run_recombine (line 464) | private void run_recombine(String args)
    method OutputHandler (line 485) | void OutputHandler(object sender, DataReceivedEventArgs e)
    method txt_check (line 499) | bool txt_check(string txt)  //prevent output
    method ErrorHandler (line 514) | void ErrorHandler(object sender, DataReceivedEventArgs e)
    method run_recombineExited (line 525) | private void run_recombineExited(object sender, EventArgs e)
    method run_ffmpegExited (line 534) | private void run_ffmpegExited(object sender, EventArgs e)
    method run_doNothingOnExit (line 548) | private void run_doNothingOnExit(object sender, EventArgs e)
    method run_StemSyncerExited (line 558) | private void run_StemSyncerExited(object sender, EventArgs e)
    method run_niStemExited (line 563) | private void run_niStemExited(object sender, EventArgs e)
    method RemoveStemFiles (line 602) | private void RemoveStemFiles()
    method recombineAudio (line 637) | private void recombineAudio()
    method ProcessExited (line 707) | private void ProcessExited(object sender, EventArgs e)
    method Button2_Click (line 756) | private void Button2_Click(object sender, EventArgs e)
    method setPythonPathToolStripMenuItem1_Click (line 774) | private void setPythonPathToolStripMenuItem1_Click(object sender, Even...
    method exitToolStripMenuItem_Click (line 791) | private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    method checkBox1_CheckedChanged (line 808) | private void checkBox1_CheckedChanged(object sender, EventArgs e)
    method spleeterGithubPageToolStripMenuItem_Click (line 814) | private void spleeterGithubPageToolStripMenuItem_Click(object sender, ...
    method makenItSoToolStripMenuItem1_Click (line 820) | private void makenItSoToolStripMenuItem1_Click(object sender, EventArg...
    method helpFAQToolStripMenuItem_Click (line 826) | private void helpFAQToolStripMenuItem_Click(object sender, EventArgs e)
    method parts_btn2_Click (line 832) | private void parts_btn2_Click(object sender, EventArgs e)
    method parts_btn4_Click (line 843) | private void parts_btn4_Click(object sender, EventArgs e)
    method parts_btn5_Click (line 854) | private void parts_btn5_Click(object sender, EventArgs e)
    method button1_Click (line 865) | private void button1_Click(object sender, EventArgs e)
    method openFileDialog2_FileOk (line 878) | private void openFileDialog2_FileOk(object sender, CancelEventArgs e)
    method spleeterupgradeToolStripMenuItem_Click (line 903) | private void spleeterupgradeToolStripMenuItem_Click(object sender, Eve...
    method checkSpleeterGUIUpdateToolStripMenuItem_Click (line 912) | private void checkSpleeterGUIUpdateToolStripMenuItem_Click(object send...
    method chkRecombine_CheckedChanged (line 960) | private void chkRecombine_CheckedChanged(object sender, EventArgs e)
    method update_checks (line 965) | private void update_checks()
    method duration_ValueChanged (line 1049) | private void duration_ValueChanged(object sender, EventArgs e)
    method chkSongName_CheckedChanged (line 1055) | private void chkSongName_CheckedChanged(object sender, EventArgs e)
    method chkNIStemTwoStems_CheckedChanged (line 1064) | private void chkNIStemTwoStems_CheckedChanged(object sender, EventArgs e)
    method chkNIStem_CheckedChanged (line 1101) | private void chkNIStem_CheckedChanged(object sender, EventArgs e)
    method NIStemRunner (line 1137) | private void NIStemRunner()
    method run_NIStem (line 1142) | private void run_NIStem()
    method run_ffmpeg (line 1205) | private void run_ffmpeg(String filename)
    method run_ffmpegAudio (line 1210) | private void run_ffmpegAudio(String filename)
    method run_ffmpegTwoStemMakerRunner (line 1235) | private void run_ffmpegTwoStemMakerRunner(String filename)
    method run_ffmpegSilenceMakerDrums (line 1242) | private void run_ffmpegSilenceMakerDrums(String filename)
    method silenceMakerBass (line 1270) | private void silenceMakerBass(String filename)
    method twoStemMakerOther (line 1278) | private void twoStemMakerOther(String filename)
    method run_StemSyncer (line 1293) | private void run_StemSyncer()
    method cmbBox_codec_SelectedIndexChanged (line 1371) | private void cmbBox_codec_SelectedIndexChanged(object sender, EventArg...
    method bitrate_ValueChanged (line 1385) | private void bitrate_ValueChanged(object sender, EventArgs e)
    method btn_browse_collection_Click (line 1391) | private void btn_browse_collection_Click(object sender, EventArgs e)
    method btn_browse_collection_out_Click (line 1410) | private void btn_browse_collection_out_Click(object sender, EventArgs e)
    method chkUpdateCollection_CheckedChanged (line 1430) | private void chkUpdateCollection_CheckedChanged(object sender, EventAr...

FILE: SpleeterGui/Program.cs
  class Program (line 9) | static class Program
    method Main (line 14) | [STAThread]

FILE: SpleeterGui/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: SpleeterGui/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
Condensed preview — 34 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (307K chars).
[
  {
    "path": ".gitattributes",
    "chars": 66,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".gitignore",
    "chars": 6229,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "LICENSE",
    "chars": 11324,
    "preview": "Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licens"
  },
  {
    "path": "README.md",
    "chars": 2576,
    "preview": "## SpleeterGUI - Music source separation desktop app  \nWindows Desktop Front end for [Spleeter](https://github.com/deeze"
  },
  {
    "path": "SpleeterGui/App.config",
    "chars": 1890,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<configuration>\n    <configSections>\n        <sectionGroup name=\"userSettings\" t"
  },
  {
    "path": "SpleeterGui/Form1.Designer.cs",
    "chars": 55823,
    "preview": "namespace SpleeterGui\n{\n    partial class Form1\n    {\n        /// <summary>\n        /// Required designer variable.\n    "
  },
  {
    "path": "SpleeterGui/Form1.cs",
    "chars": 66193,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Diagnostics"
  },
  {
    "path": "SpleeterGui/Form1.resx",
    "chars": 48876,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "SpleeterGui/Program.cs",
    "chars": 509,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Fo"
  },
  {
    "path": "SpleeterGui/Properties/AssemblyInfo.cs",
    "chars": 1443,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Inform"
  },
  {
    "path": "SpleeterGui/Properties/Resources.Designer.cs",
    "chars": 4325,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "SpleeterGui/Properties/Resources.resx",
    "chars": 6872,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "SpleeterGui/Properties/Settings.Designer.cs",
    "chars": 4963,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "SpleeterGui/Properties/Settings.settings",
    "chars": 1443,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" "
  },
  {
    "path": "SpleeterGui/Properties/app.manifest",
    "chars": 3329,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n  <ass"
  },
  {
    "path": "SpleeterGui/SpleeterGui.csproj",
    "chars": 6926,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "SpleeterGui/configs/2stems.json",
    "chars": 717,
    "preview": "{\n    \"train_csv\": \"path/to/train.csv\",\n    \"validation_csv\": \"path/to/test.csv\",\n    \"model_dir\": \"2stems\",\n    \"mix_na"
  },
  {
    "path": "SpleeterGui/configs/4stems.json",
    "chars": 800,
    "preview": "{\n    \"train_csv\": \"path/to/train.csv\",\n    \"validation_csv\": \"path/to/test.csv\",\n    \"model_dir\": \"4stems\",\n    \"mix_na"
  },
  {
    "path": "SpleeterGui/configs/5stems.json",
    "chars": 817,
    "preview": "{\n    \"train_csv\": \"path/to/train.csv\",\n    \"validation_csv\": \"path/to/test.csv\",\n    \"model_dir\": \"5stems\",\n    \"mix_na"
  },
  {
    "path": "SpleeterGui/languages_source/arabic.xml",
    "chars": 4742,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n  <language english=\"arabic\" control=\"\">عربى</language>\n  <!-- menu item"
  },
  {
    "path": "SpleeterGui/languages_source/chinese.xml",
    "chars": 4103,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n  <language english=\"chinese\" control=\"\">中文</language>\n  <!-- menu items"
  },
  {
    "path": "SpleeterGui/languages_source/english.xml",
    "chars": 6468,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n    <language english=\"english\" control=\"\">english</language>\n    <!-- m"
  },
  {
    "path": "SpleeterGui/languages_source/french.xml",
    "chars": 5298,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n  <language english=\"french\" control=\"\">français</language>\n  <!-- menu "
  },
  {
    "path": "SpleeterGui/languages_source/german.xml",
    "chars": 5328,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n    <language english=\"german\" control=\"\">deutsch</language>\n    <!-- men"
  },
  {
    "path": "SpleeterGui/languages_source/hindi.xml",
    "chars": 4957,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n  <language english=\"hindi\" control=\"\">हिन्दी</language>\n  <!-- menu ite"
  },
  {
    "path": "SpleeterGui/languages_source/italian.xml",
    "chars": 5479,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n    <language english=\"italian\" control=\"\">italiano</language>\n    <!-- m"
  },
  {
    "path": "SpleeterGui/languages_source/japanese.xml",
    "chars": 4751,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n  <language english=\"Japanese\" control=\"\">日本語</language>\n  <!-- menu ite"
  },
  {
    "path": "SpleeterGui/languages_source/korean.xml",
    "chars": 4844,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n    <language english=\"korean\" control=\"\">한국어</language>\n    <!-- menu it"
  },
  {
    "path": "SpleeterGui/languages_source/russian.xml",
    "chars": 5158,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n  <language english=\"russian\" control=\"\">русский</language>\n  <!-- menu "
  },
  {
    "path": "SpleeterGui/languages_source/spanish.xml",
    "chars": 5239,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n  <language english=\"spanish\" control=\"\">español</language>\n  <!-- menu "
  },
  {
    "path": "SpleeterGui/languages_source/tchinese.xml",
    "chars": 4635,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n    <language english=\"tchinese\" control=\"\">正體中文</language>\n    <!-- men"
  },
  {
    "path": "SpleeterGui/packages_OLD.config",
    "chars": 39,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
  },
  {
    "path": "SpleeterGui.sln",
    "chars": 1111,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.2912"
  },
  {
    "path": "ni-stem-metadata.json",
    "chars": 893,
    "preview": "{\n    \"mastering_dsp\": {\n        \"compressor\": {\n            \"ratio\": 3,\n            \"output_gain\": 0.5,\n            \"en"
  }
]

About this extraction

This page contains the full source code of the thooore/SpleeterGUI GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 34 files (281.4 KB), approximately 78.3k tokens, and a symbol index with 69 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!