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/).

## 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
oKADA49+nfHT1yOeM9fqRyAZzyuMnnBPXtwO3r9c0AJzxx3HqAMjkH8+Py9qO33c5Iz3BHXj2HT09zQA
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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.
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
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.