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
================================================
english
600
1
False
320
Input Collection
Output Collection
================================================
FILE: SpleeterGui/Form1.Designer.cs
================================================
namespace SpleeterGui
{
partial class Form1
{
///
/// Required designer variable.
///
private System.ComponentModel.IContainer components = null;
///
/// Clean up any resources being used.
///
/// true if managed resources should be disposed; otherwise, false.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
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 files_to_process = new List();
private Boolean run_silent = true;
private String gui_version = "";
IDictionary langStr = new Dictionary();
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())
{
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
================================================
text/microsoft-resx
2.0
System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
17, 17
132, 17
272, 17
/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
441, 17
53
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=
================================================
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
{
///
/// The main entry point for the application.
///
[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
================================================
//------------------------------------------------------------------------------
//
// 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.
//
//------------------------------------------------------------------------------
namespace SpleeterGui.Properties {
using System;
///
/// A strongly-typed resource class, for looking up localized strings, etc.
///
// 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() {
}
///
/// Returns the cached ResourceManager instance used by this class.
///
[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;
}
}
///
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap _649656_global_32x32 {
get {
object obj = ResourceManager.GetObject("649656_global_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap spleeter_logo {
get {
object obj = ResourceManager.GetObject("spleeter_logo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap stems_logo_full {
get {
object obj = ResourceManager.GetObject("stems_logo_full", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap stems_logo_stripes {
get {
object obj = ResourceManager.GetObject("stems_logo_stripes", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
================================================
FILE: SpleeterGui/Properties/Resources.resx
================================================
text/microsoft-resx
2.0
System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
..\Resources\spleeter_logo.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\649656_global_32x32.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\stems_logo_full.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\stems_logo_stripes.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
================================================
FILE: SpleeterGui/Properties/Settings.Designer.cs
================================================
//------------------------------------------------------------------------------
//
// 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.
//
//------------------------------------------------------------------------------
namespace SpleeterGui.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string output_location {
get {
return ((string)(this["output_location"]));
}
set {
this["output_location"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("english")]
public string language {
get {
return ((string)(this["language"]));
}
set {
this["language"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string path_python {
get {
return ((string)(this["path_python"]));
}
set {
this["path_python"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("600")]
public int duration {
get {
return ((int)(this["duration"]));
}
set {
this["duration"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1")]
public int codec {
get {
return ((int)(this["codec"]));
}
set {
this["codec"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool songName {
get {
return ((bool)(this["songName"]));
}
set {
this["songName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("320")]
public int bitrate {
get {
return ((int)(this["bitrate"]));
}
set {
this["bitrate"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Input Collection")]
public string collection_location {
get {
return ((string)(this["collection_location"]));
}
set {
this["collection_location"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Output Collection")]
public string collection_out_location {
get {
return ((string)(this["collection_out_location"]));
}
set {
this["collection_out_location"] = value;
}
}
}
}
================================================
FILE: SpleeterGui/Properties/Settings.settings
================================================
english
600
1
False
320
Input Collection
Output Collection
================================================
FILE: SpleeterGui/Properties/app.manifest
================================================
================================================
FILE: SpleeterGui/SpleeterGui.csproj
================================================
Debug
AnyCPU
{92A3D32B-8397-41E5-8928-2EE4C22CAF17}
WinExe
SpleeterGui
SpleeterGui
v4.6.1
512
true
false
D:\Users\Windows 10\Documents\dist\SpleeterGUI\
true
Disk
true
Foreground
7
Days
false
false
true
0
3.1.0.0
false
true
true
x64
true
full
false
bin\Debug\
DEBUG;TRACE
prompt
4
false
x64
pdbonly
true
bin\Release\
TRACE
prompt
4
true
spleeter_icon.ico
12890233469093C86CBBB44F6AE6F151855EA389
SpleeterGui_TemporaryKey.pfx
true
false
LocalIntranet
Properties\app.manifest
Form
Form1.cs
Form1.cs
ResXFileCodeGenerator
Designer
Resources.Designer.cs
SettingsSingleFileGenerator
Settings.Designer.cs
True
True
Resources.resx
True
Settings.settings
True
False
Microsoft .NET Framework 4.6.1 %28x86 and x64%29
true
False
.NET Framework 3.5 SP1
false
Designer
Designer
Designer
Designer
Designer
Designer
================================================
FILE: SpleeterGui/configs/2stems.json
================================================
{
"train_csv": "path/to/train.csv",
"validation_csv": "path/to/test.csv",
"model_dir": "2stems",
"mix_name": "mix",
"instrument_list": ["vocals", "accompaniment"],
"sample_rate":44100,
"frame_length":4096,
"frame_step":1024,
"T":512,
"F":1024,
"n_channels":2,
"separation_exponent":2,
"mask_extension":"zeros",
"learning_rate": 1e-4,
"batch_size":4,
"training_cache":"training_cache",
"validation_cache":"validation_cache",
"train_max_steps": 1000000,
"throttle_secs":300,
"random_seed":0,
"save_checkpoints_steps":150,
"save_summary_steps":5,
"model":{
"type":"unet.unet",
"params":{}
}
}
================================================
FILE: SpleeterGui/configs/4stems.json
================================================
{
"train_csv": "path/to/train.csv",
"validation_csv": "path/to/test.csv",
"model_dir": "4stems",
"mix_name": "mix",
"instrument_list": ["vocals", "drums", "bass", "other"],
"sample_rate":44100,
"frame_length":4096,
"frame_step":1024,
"T":512,
"F":1024,
"n_channels":2,
"separation_exponent":2,
"mask_extension":"zeros",
"learning_rate": 1e-4,
"batch_size":4,
"training_cache":"training_cache",
"validation_cache":"validation_cache",
"train_max_steps": 1500000,
"throttle_secs":600,
"random_seed":3,
"save_checkpoints_steps":300,
"save_summary_steps":5,
"model":{
"type":"unet.unet",
"params":{
"conv_activation":"ELU",
"deconv_activation":"ELU"
}
}
}
================================================
FILE: SpleeterGui/configs/5stems.json
================================================
{
"train_csv": "path/to/train.csv",
"validation_csv": "path/to/test.csv",
"model_dir": "5stems",
"mix_name": "mix",
"instrument_list": ["vocals", "piano", "drums", "bass", "other"],
"sample_rate":44100,
"frame_length":4096,
"frame_step":1024,
"T":512,
"F":1024,
"n_channels":2,
"separation_exponent":2,
"mask_extension":"zeros",
"learning_rate": 1e-4,
"batch_size":4,
"training_cache":"training_cache",
"validation_cache":"validation_cache",
"train_max_steps": 2500000,
"throttle_secs":600,
"random_seed":8,
"save_checkpoints_steps":300,
"save_summary_steps":5,
"model":{
"type":"unet.softmax_unet",
"params":{
"conv_activation":"ELU",
"deconv_activation":"ELU"
}
}
}
================================================
FILE: SpleeterGui/languages_source/arabic.xml
================================================
عربى
- فصل مصدر الموسيقى
- حزمة سطح مكتب Windows
- أجزاء للفصل
- إثنان
- صوتي + مرافقة
- أربعة
- خمسة
- إعادة التركيب (دمج أجزاء الإخراج معًا)
- صوتي
- صوت عميق
- طبول
- بيانو
- آخر
- عرض نطاق كامل (جودة عالية 16 كيلو هرتز)
- حفظ في
- أفلت ملفك (ملفاتك) الموسيقية هنا لبدء المعالجة
- أو حدد ملف (ملفات) الموسيقى
- تقدم
- أقصى طول للأغنية
- ثواني
عرض نسخة مقياس
بدء
بدء معالجة جميع الأغاني
الأغاني المتبقية
العمل
معالجة
خامل
تم الانتهاء من معالجة جميع الأغاني
تشغيل كامل
صوتي + مرافقة
صوت + باس + طبول + أخرى
صوتي + باس + طبول + بيانو + أخرى
يرجى تحديد دليل الإخراج
تشغيل أمر التحديث
قد يستغرق ذلك بعض الوقت ، انتظر صوت الصفير
الإصدار
متاح
أنت تستخدم أحدث إصدار
تعذر الحصول على بيانات الإصدار الجديد ، تحقق من اتصال الإنترنت
اختر موقع الإخراج
اختر موقع root_folder.txt
================================================
FILE: SpleeterGui/languages_source/chinese.xml
================================================
中文
- 音乐源分离
- Windows 桌面捆绑
- 按几部分分离
- 2
- 人声 + 伴奏
- 4
- 5
- 重组(将输出的部分再合并到一起)
- 人声
- 贝斯
- 鼓
- 钢琴
- 其他
- 全带宽(16Khz高质量)
- 保存到
- 将您的音乐文件拖放到此处开始处理
- 或选择音乐文件
- 进度
- 最大歌曲长度
- 秒
显示 spleeter 版本
开始
开始处理所有歌曲
歌曲剩余
工作中
处理中
空闲
完成处理所有歌曲
运行完成
人声 + 伴奏
人声 + 贝斯 + 鼓 + 其他
人声 + 贝斯 + 鼓 + 钢琴 + 其他
请选择一个输出目录
运行更新命令
这可能需要一段时间,请等待哔哔声
版本
可用
您正在使用最新版本
无法获取新版本数据,请检查互联网连接
================================================
FILE: SpleeterGui/languages_source/english.xml
================================================
english
- Music source separation
- Windows desktop bundle
- Parts to separate
- 2
- Vocal + Accompaniment
- 4
- 5
- Recombine (Merge output parts back together)
- Vocal
- Bass
- Drums
- Piano
- Other
- Full bandwidth (16kHz High quality)
- Save to
- Drop your music file(s) here to begin processing
- Or select music file(s)
- Progress
- Maximum song length
- seconds
- Output codec
- Write input name to output files
- Generate NI Stem
- Generate NI Container from two stems
- Remove Working Files
- Save to 'stems' Folder
- Bitrate
- kbps
Help: https://github.com/thooore/SpleeterGUI/wiki[NL]Issues: https://github.com/thooore/SpleeterGui/issues[NL][NL]Showing spleeter version
Please select an output directory
Starting
Starting processing of all songs
songs remaining
Working
Processing
idle
Finished processing all songs
Run complete
Vocal + Accompaniment
Vocal + Bass + Drums + Other
Vocal + Bass + Drums + Piano + Other
Please select an output directory
Running update command
This might take a while, wait for the beep
Version
is available
You are using the latest version
Unable get new version data, check internet connection
Choose output location
Select location of SpleeterCore
You are running the latest version
Current version:
Error: Unable to find python.exe
Use 'Advanced' > 'Select SpleeterGUI Core path' to select SpleeterCore path
================================================
FILE: SpleeterGui/languages_source/french.xml
================================================
français
- Séparation des sources de musique
- Ensemble de bureau Windows
- Pièces à séparer
- deux
- Accompagnement vocal +
- quatre
- cinq
- Recombiner (fusionner les pièces de sortie ensemble)
- Vocale
- Basse
- Tambours
- Piano
- Autre
- Bande passante complète (haute qualité 16Khz)
- Enregistrer dans
- Déposez vos fichiers musicaux ici pour commencer le traitement
- Ou sélectionnez un ou plusieurs fichiers musicaux
- Progrès
- Durée maximale de la chanson
- secondes
Affichage de la version de Spleeter
Veuillez sélectionner un répertoire de sortie
Départ
Démarrage du traitement de toutes les chansons
chansons restantes
Au Travail
En traitement
Au repos
Traitement terminé de toutes les chansons
Exécution terminée
Accompagnement vocal +
Vocal + Bass + Drums + Other
Voix + Basse + Batterie + Piano + Autre
Veuillez sélectionner un répertoire de sortie
Exécution de la commande de mise à jour
Cela peut prendre un certain temps, attendez le bip
Version
est disponible
Vous utilisez la dernière version
Impossible d'obtenir les nouvelles données de version, vérifiez la connexion Internet
Choisissez l'emplacement de sortie
Choisissez l'emplacement de root_folder.txt
================================================
FILE: SpleeterGui/languages_source/german.xml
================================================
deutsch
- Trennung von Musikquellen
- Windows-Desktop-Paket
- Trennmodus
- 2
- Gesang + Begleitung
- 4
- 5
- Rekombinieren (Ausgangselemente wieder zusammenführen)
- Gesang
- Bass
- Schlagzeug
- Klavier
- Sonstiges
- Volle Bandbreite (16Khz Hohe Qualität)
- Speichern unter
- Musikdatei(en) hier ablegen, um zu verarbeiten
- Oder Dateiauswahl
- Fortschr.
- Maximale Liedlänge
- Sekunden
Hilfe: https://makenweb.com/spleeter_help.php[NL]Probleme: https://github.com/boy1dr/SpleeterGui/issues[NL][NL]Anzeige der Spleeter-Version
Bitte wählen Sie ein Ausgabeverzeichnis
Starten
Verarbeitung aller Lieder starten
Lied(er) verbleibend
Arbeiten
Verarbeiten
Leerlauf
Verarbeitung aller Lieder fertiggestellt
Durchlauf abgeschlossen
Gesang+Begleitung
Gesang+Bass+Schlagzeug+Sonstiges
Gesang+Bass+Schlagzeug+Klavier+Sonstiges
Bitte wählen Sie ein Ausgabeverzeichnis
Update-Befehl ausführen
Dies kann eine Weile dauern, warten Sie auf den Signalton
Version
ist verfügbar
Sie verwenden die neueste Version
Neue Versionsdaten können nicht abgerufen werden, Internetverbindung prüfen
Ausgabeort wählen
Speicherort von python.exe wählen
================================================
FILE: SpleeterGui/languages_source/hindi.xml
================================================
हिन्दी
- संगीत स्रोत जुदाई
- विंडोज डेस्कटॉप बंडल
- भागों को अलग करने के लिए
- दो
- स्वर + त्वरण
- चार
- पाँच
- रिकॉम्बिन (मर्ज आउटपुट पार्ट्स वापस एक साथ)
- स्वर
- बास
- ड्रम
- पियानो
- अन्य
- पूर्ण बैंडविड्थ (16 khz उच्च गुणवत्ता)
- को बचाए
- प्रसंस्करण शुरू करने के लिए अपनी संगीत फ़ाइल यहां छोड़ें
- या संगीत फ़ाइल चुनें
- प्रगति
- अधिकतम गीत की लंबाई
- सेकंड
स्पिलटर संस्करण दिखा रहा है
कृपया एक आउटपुट डायरेक्टरी चुनें
शुरुआत
सभी गानों की प्रोसेसिंग शुरू
गाने बचे हैं
काम कर रहे
प्रसंस्करण
बेकार
सभी गीतों का प्रसंस्करण समाप्त
पूरा चला
स्वर + त्वरण
स्वर + बास + ड्रम + अन्य
स्वर + बास + ड्रम + पियानो + अन्य
कृपया एक आउटपुट डायरेक्टरी चुनें
रनिंग अपडेट कमांड
इसमें कुछ समय लग सकता है, बीप की प्रतीक्षा करें
संस्करण
उपलब्ध है
आप नवीनतम संस्करण का उपयोग कर रहे हैं
नया संस्करण डेटा प्राप्त करने में असमर्थ, इंटरनेट कनेक्शन जांचें
आउटपुट स्थान चुनें
root_folder.txt का स्थान चुनें
================================================
FILE: SpleeterGui/languages_source/italian.xml
================================================
italiano
- Separaz. delle fonti musicali
- Applicazione per Windows
- Parti da separare
- 2
- Voce + Accompagnamento
- 4
- 5
- Ricombina (Unisci parti del risultato insieme)
- Voce
- Bassi
- Batteria
- Pianof.
- Altro
- Larghezza di banda completa (alta qualità a 16kHz)
- Salva in
- Rilascia qui i file musicali per iniziare l'elaborazione
- O carica i file musicali
- Avanzam.
- Lunghezza massima del brano
- secondi
Visualizzazione della versione di Spleeter
Per favore, seleziona una cartella di uscita
Avvio
Inizio dell'elaborazione di tutte le canzoni
canzone/i rimamenti
In esecuzione
Elaborazione
Inattivo
Elaborazione di tutte le canzoni terminato
Processo completato
Voce + Accompagnamento
Voce + Bassi + Batteria + Altro
Voce + Bassi + Batteria + Pianoforte + Altro
Per favore, seleziona una cartella di uscita
Eseguendo il comando di aggiornamento
Potrebbe volerci del tempo, attendi il segnale acustico
versione
è disponibile
Stai usando l'ultima versione
Impossibile ottenere i dati della nuova versione, controlla la connessione a Internet
Scegli la posizione di uscita
Scegli la posizione di root_folder.txt
Choose location of json config files
================================================
FILE: SpleeterGui/languages_source/japanese.xml
================================================
日本語
- 音楽ソースの分離
- Windows デスクトップバンドル
- 分離するパート
- 2
- ボーカル + 伴奏
- 4
- 5
- 再結合(指定したパートを合成)
- ボーカル
- ベース
- ドラム
- ピアノ
- その他
- 全帯域幅(16Khz 高品質)
- 出力先
- ここに音楽ファイル(複数可)をドロップして処理を開始します
- または音楽ファイル選択
- 進捗
- 曲の最大長
- 秒
ヘルプ: https://makenweb.com/spleeter_help.php[NL]問題: https://github.com/boy1dr/SpleeterGui/issues[NL][NL]Spleeter のバージョンを表示しています
出力先を選択してください
起動
すべての曲の処理を開始しています
曲残っています
処理中
処理
アイドル
すべての曲の処理が終了しました
完了
ボーカル + 伴奏
ボーカル + ベース + ドラム + その他
ボーカル + ベース + ドラム + ピアノ + その他
出力先を選択してください
更新コマンドを実行しています
しばらく時間がかかるかもしれませんが、ビープ音が出るまでお待ちください
バージョン
利用可能です
最新バージョンを使用しています
新しいバージョンのデータを取得できません。インターネット接続を確認してください
出力先を選択
python.exe の場所を選択
================================================
FILE: SpleeterGui/languages_source/korean.xml
================================================
한국어
- 음원 분리 프로그램
- 윈도우 GUI 버전
- 음원 분리 설정
- 2
- 보컬 + 반주
- 4
- 5
- 재결합 (분리된 음원중 재결합하여 출력할 요소 선택)
- 보컬
- 베이스
- 드럼
- 피아노
- 기타
- 전체 음역대 설정 (16Khz 이상 음역대 포함 고음질 분리)
- 분리된 음원 저장 경로
- 이곳에 음악 파일을 드래그 하여 분리를 시작하십시오
- 혹은 이 단추를 눌러 파일 탐색기로 분리 대상 설정하기
- 진행도
- 분리할 음원 최대 길이
- 초
Help: https://makenweb.com/spleeter_help.php[NL]Issues: https://github.com/boy1dr/SpleeterGui/issues[NL][NL]Showing spleeter 버전
출력할 경로를 설정하여 주세요
시작중
선택된 곡들의 분리 작업을 시작중
곡 남음
작업중
분리중
대기중
모든 곡의 분리를 성공했습니다
작업 완료
보컬 + 반주
보컬 + 베이스 + 드럼 + 기타
보컬 + 베이스 + 드럼 + 피아노 + 기타
출력할 경로를 설정하여 주세요
버전 업데이트 실행
이 작업을 수행하는데는 시간이 걸립니다. 신호음을 기다려주십시오
버전
이 사용 가능합니다
최신 버전을 사용하고 있습니다
최신 버전 정보를 가져오는데 실패했습니다. 인터넷 연결을 확인해주세요
출력 경로를 설정해 주십시오
python.exe의 경로를 설정해 주십시오
================================================
FILE: SpleeterGui/languages_source/russian.xml
================================================
русский
- Разделение источника музыки
- Пакет рабочего стола Windows
- Части для разделения
- два
- Вокал + аккомпанемент
- четыре
- пять
- Recombine (объединение выходных частей вместе)
- вокальный
- бас
- Барабаны
- пиано
- Другой
- Полная пропускная способность (16 кГц, высокое качество)
- Сохранить
- Оставьте свои музыкальные файлы здесь, чтобы начать обработку
- Или выберите музыкальный файл (ы)
- Прогресс
- Максимальная длина песни
- секунд
Отображение версии spleeter
Пожалуйста, выберите выходной каталог
начало
Начало обработки всех песен
оставшиеся песни
Работает
обработка
вхолостую
Закончена обработка всех песен
Выполнить завершено
Вокал + аккомпанемент
Вокал + Бас + Барабаны + Другое
Вокал + Бас + Барабаны + Фортепиано + Другое
Пожалуйста, выберите выходной каталог
Запуск команды обновления
Это может занять некоторое время, подождите звукового сигнала
Версия
доступен
Вы используете последнюю версию
Невозможно получить данные новой версии, проверьте интернет-соединение
Выберите место выхода
Выберите местоположение root_folder.txt
================================================
FILE: SpleeterGui/languages_source/spanish.xml
================================================
español
- Separación de fuente de música
- Paquete de escritorio de Windows
- Partes para separar
- dos
- Voz + acompañamiento
- cuatro
- cinco
- Recombine (Fusionar piezas de salida juntas)
- Vocal
- Bajo
- Tambores
- Piano
- Otra
- Ancho de banda completo (16Khz de alta calidad)
- Salvar a
- Suelta tus archivos de música aquí para comenzar a procesar
- O seleccione archivos de música
- Progreso
- Longitud máxima de la canción
- segundos
Mostrando la versión esplendorosa
Por favor seleccione un directorio de salida
Comenzando
Iniciando el procesamiento de todas las canciones
canciones restantes
Trabajando
Procesando
ociosa
Terminado de procesar todas las canciones.
Ejecutar completa
Voz + acompañamiento
Vocal + Bajo + Batería + Otra
Vocal + Bajo + Batería + Piano + Otra
Por favor seleccione un directorio de salida
Ejecutar comando de actualización
Esto puede llevar un tiempo, espera el pitido
Versión
está disponible
Estás usando la última versión
No se pueden obtener datos de la nueva versión, verifique la conexión a Internet
Elegir ubicación de salida
Elija la ubicación de root_folder.txt
================================================
FILE: SpleeterGui/languages_source/tchinese.xml
================================================
正體中文
- Music source separation
- Windows desktop bundle
- 分離聲部
- 2
- 人聲 + 伴奏
- 4
- 5
- 重組(將分離的音軌再次合併)
- 人聲
- 低音聲部
- 鼓組
- 鋼琴
- 其他
- 全頻寬(16Khz 高音質)
- 儲存至
- 將音樂檔案拖放至此處開始處理
- 或選擇音樂檔案
- 進度
- 最大歌曲長度
- 秒
說明:https://makenweb.com/spleeter_help.php[NL]問題:https://github.com/boy1dr/SpleeterGui/issues[NL][NL]顯示 spleeter 版本
請指定儲存路徑
開始
開始處理所有歌曲
個待處理檔案
執行中
處理中
閒置中
結束處理所有歌曲
執行完畢
人聲 + 伴奏
人聲 + 低音聲部 + 鼓組 + 其他
人聲 + 低音聲部 + 鼓組 + 鋼琴 + 其他
請指定儲存路徑
執行更新命令
可能需要一點時間,請等候提示音
版本
可更新
您正在使用最新版本
無法取得新版本資訊,請檢查網路連線
選擇儲存位置
選擇 python.exe 所在位置
================================================
FILE: SpleeterGui/packages_OLD.config
================================================
================================================
FILE: SpleeterGui.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29123.88
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpleeterGui", "SpleeterGui\SpleeterGui.csproj", "{92A3D32B-8397-41E5-8928-2EE4C22CAF17}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{92A3D32B-8397-41E5-8928-2EE4C22CAF17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{92A3D32B-8397-41E5-8928-2EE4C22CAF17}.Debug|Any CPU.Build.0 = Debug|Any CPU
{92A3D32B-8397-41E5-8928-2EE4C22CAF17}.Release|Any CPU.ActiveCfg = Release|Any CPU
{92A3D32B-8397-41E5-8928-2EE4C22CAF17}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CB165FAA-2E90-43F9-B812-A309FA9EC742}
EndGlobalSection
EndGlobal
================================================
FILE: ni-stem-metadata.json
================================================
{
"mastering_dsp": {
"compressor": {
"ratio": 3,
"output_gain": 0.5,
"enabled": false,
"release": 0.300000011920929,
"attack": 0.003000000026077032,
"input_gain": 0.5,
"threshold": 0,
"hp_cutoff": 300,
"dry_wet": 50
},
"limiter": {
"release": 0.05000000074505806,
"threshold": 0,
"ceiling": -0.3499999940395355,
"enabled": false
}
},
"version": 1,
"stems": [
{
"color": "#56B4E9",
"name": "vocals"
},
{
"color": "#229e00",
"name": "drums"
},
{
"color": "#D55E00",
"name": "bass"
},
{
"color": "#CC79A7",
"name": "other"
}
]
}