Repository: thooore/SpleeterGUI Branch: master Commit: 344a8a5aa5e4 Files: 34 Total size: 281.4 KB Directory structure: gitextract_n87oml8j/ ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── SpleeterGui/ │ ├── App.config │ ├── Form1.Designer.cs │ ├── Form1.cs │ ├── Form1.resx │ ├── Program.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ ├── Settings.settings │ │ └── app.manifest │ ├── SpleeterGui.csproj │ ├── configs/ │ │ ├── 2stems.json │ │ ├── 4stems.json │ │ └── 5stems.json │ ├── languages_source/ │ │ ├── arabic.xml │ │ ├── chinese.xml │ │ ├── english.xml │ │ ├── french.xml │ │ ├── german.xml │ │ ├── hindi.xml │ │ ├── italian.xml │ │ ├── japanese.xml │ │ ├── korean.xml │ │ ├── russian.xml │ │ ├── spanish.xml │ │ └── tchinese.xml │ └── packages_OLD.config ├── SpleeterGui.sln └── ni-stem-metadata.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ # Auto detect text files and perform LF normalization * text=auto ================================================ FILE: .gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.rsuser *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Mono auto generated files mono_crash.* # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ [Ww][Ii][Nn]32/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ [Ll]ogs/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # Visual Studio 2017 auto generated files Generated\ Files/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUnit *.VisualState.xml TestResult.xml nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ # .NET Core project.lock.json project.fragment.lock.json artifacts/ # ASP.NET Scaffolding ScaffoldingReadMe.txt # StyleCop StyleCopReport.xml # Files built by Visual Studio *_i.c *_p.c *_h.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *_wpftmp.csproj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # Visual Studio Trace Files *.e2e # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # AxoCover is a Code Coverage Tool .axoCover/* !.axoCover/settings.json # Coverlet is a free, cross platform Code Coverage Tool coverage*.json coverage*.xml coverage*.info # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # Note: Comment the next line if you want to checkin your web deploy settings, # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # NuGet Symbol Packages *.snupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt *.appx *.appxbundle *.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !?*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings *.rptproj.rsuser *- [Bb]ackup.rdl *- [Bb]ackup ([0-9]).rdl *- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # CodeRush personal settings .cr/personal # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Tabs Studio *.tss # Telerik's JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # OpenCover UI analysis results OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log *.binlog # NVidia Nsight GPU debugger configuration file *.nvuser # MFractors (Xamarin productivity tool) working folder .mfractor/ # Local History for Visual Studio .localhistory/ # BeatPulse healthcheck temp database healthchecksdb # Backup folder for Package Reference Convert tool in Visual Studio 2017 MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ # Fody - auto-generated XML schema FodyWeavers.xsd /obj* /bin* ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: README.md ================================================ ## SpleeterGUI - Music source separation desktop app Windows Desktop Front end for [Spleeter](https://github.com/deezer/spleeter) - AI source separation ***THIS IS AN UPDATED VERSION OF [SPLEETERGUI](https://github.com/boy1dr/SpleeterGui/) WITH NO INSTALLER*** ## Installation 1. Download the compiled binary folder from GitHub releases and place it wherever you want. 2. Download and extract [SpleeterCore](https://github.com/thooore/SpleeterCore) 3. Start SpleeterGUI (There could be an error message showing here, continue anyway!) 4. In SpleeterGUI select ***Advanced > Set SpleeterGUI Core path*** and select the path to where you unzipped SpleeterCore (The `root_folder.txt` of SpleeterCore should be in that folder) 5. Restart SpleeterGUI This repository is a fork of the original [SpleeterGUI](https://github.com/boy1dr/SpleeterGui/) which can be downloaded from [here](https://makenweb.com/SpleeterGUI). The original project was developed by by [Maken It So](https://makenweb.com). --- This new version (3.0) has some additional features: - Generate [NI Stems](https://www.native-instruments.com/en/specials/stems/) for use in programs such as [Traktor](https://www.native-instruments.com/en/catalog/traktor/dj-software/) - Different output formats - Auto-name output files --- This project is a C# desktop front end for Spleeter that adds the ability to create [NI Stems](https://www.native-instruments.com/en/specials/stems/). ![SpleeterGUI_app](./docs/Spleeter_GUI.png) ## Examples https://www.youtube.com/watch?v=bdNzVPLzOLE https://www.youtube.com/watch?v=nxJfIsus0Ig https://www.youtube.com/watch?v=PHGAmZhuI-c https://www.youtube.com/watch?v=3X5nfc2d1Rw https://www.youtube.com/watch?v=9KkWJHC2bz0 https://www.youtube.com/watch?v=Mygm1sFlQXc This project contains the C# source code for the Graphical User Interface. The GUI is an Windows Forms Application requiring Microsoft Visual Studio to build. The [SpleeterGUI Core](https://github.com/thooore/SpleeterCore) required to run this program contains Python 3.7 and [Spleeter](https://github.com/deezer/spleeter). It contains everything you need to get up and running. Feel free to inspect the source code and build for yourself. ## Help, FAQ and more Check out the [Wiki](https://github.com/thooore/SpleeterGUI/wiki) for more information. If you encounter a problem feel free to [create an issue](https://github.com/thooore/SpleeterGUI/issues/new)! *** Also huge thanks to the original creator [Maken It So](https://makenweb.com/) for creating such a useful program! ================================================ FILE: SpleeterGui/App.config ================================================
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 ================================================  عربى ملف خروج مساعدة مساعدة & سؤال تحقق من إصدار spleeterGUI ترقية النواة الأساسية صفحة جيليت spleeter Maken it so المتقدمة صفحة SpleeterGUI جيثب تعيين مسار تكوينات json فصل مصدر الموسيقى حزمة سطح مكتب Windows أجزاء للفصل إثنان صوتي + مرافقة أربعة خمسة إعادة التركيب (دمج أجزاء الإخراج معًا) صوتي صوت عميق طبول بيانو آخر عرض نطاق كامل (جودة عالية 16 كيلو هرتز) حفظ في أفلت ملفك (ملفاتك) الموسيقية هنا لبدء المعالجة أو حدد ملف (ملفات) الموسيقى تقدم أقصى طول للأغنية ثواني عرض نسخة مقياس بدء بدء معالجة جميع الأغاني الأغاني المتبقية العمل معالجة خامل تم الانتهاء من معالجة جميع الأغاني تشغيل كامل صوتي + مرافقة صوت + باس + طبول + أخرى صوتي + باس + طبول + بيانو + أخرى يرجى تحديد دليل الإخراج تشغيل أمر التحديث قد يستغرق ذلك بعض الوقت ، انتظر صوت الصفير الإصدار متاح أنت تستخدم أحدث إصدار تعذر الحصول على بيانات الإصدار الجديد ، تحقق من اتصال الإنترنت اختر موقع الإخراج اختر موقع root_folder.txt ================================================ FILE: SpleeterGui/languages_source/chinese.xml ================================================  中文 文件 退出 帮助 帮助及常见问题 检查 spleeterGUI 版本 Spleeter 核心升级 Spleeter github 页面 Maken it so 高級 設置SpleeterGUI路徑 設置json配置路徑 音乐源分离 Windows 桌面捆绑 按几部分分离 2 人声 + 伴奏 4 5 重组(将输出的部分再合并到一起) 人声 贝斯 钢琴 其他 全带宽(16Khz高质量) 保存到 将您的音乐文件拖放到此处开始处理 或选择音乐文件 进度 最大歌曲长度 显示 spleeter 版本 开始 开始处理所有歌曲 歌曲剩余 工作中 处理中 空闲 完成处理所有歌曲 运行完成 人声 + 伴奏 人声 + 贝斯 + 鼓 + 其他 人声 + 贝斯 + 鼓 + 钢琴 + 其他 请选择一个输出目录 运行更新命令 这可能需要一段时间,请等待哔哔声 版本 可用 您正在使用最新版本 无法获取新版本数据,请检查互联网连接 ================================================ FILE: SpleeterGui/languages_source/english.xml ================================================  english File Exit Help Help and FAQ Check for SpleeterGUI updates Update Spleeter version SpleeterGUI GitHub page Maken It So GitHub Advanced Set SpleeterGUI Core path Set json configs path 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 Fichier Sortie Aidez-moi Aidez-moi & question Vérifier la version de Spleeter GUI Mise à jour de Spleeter Page Github de Spleeter Faites en sorte Avancée Définir le chemin SpleeterGUI Définir le chemin de configuration json 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 Datei Beenden Hilfe Hilfe & FAQ SpleeterGUI-Version überprüfen Spleeter Core-Upgrade SpleeterGUI GitHub-Seite Maken it so Erweitert SpleeterGUI-Pfad festlegen JSON-Konfigurationspfad festlegen 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 ================================================  हिन्दी फ़ाइल बाहर जाएं मदद मदद & सवाल SpleeterGUI संस्करण की जाँच करें Spleeter कोर उन्नयन Spleeter जीथब पृष्ठ माकन ने ऐसा किया उन्नत SpleeterGUI पथ सेट करें Json config पथ सेट करें संगीत स्रोत जुदाई विंडोज डेस्कटॉप बंडल भागों को अलग करने के लिए दो स्वर + त्वरण चार पाँच रिकॉम्बिन (मर्ज आउटपुट पार्ट्स वापस एक साथ) स्वर बास ड्रम पियानो अन्य पूर्ण बैंडविड्थ (16 khz उच्च गुणवत्ता) को बचाए प्रसंस्करण शुरू करने के लिए अपनी संगीत फ़ाइल यहां छोड़ें या संगीत फ़ाइल चुनें प्रगति अधिकतम गीत की लंबाई सेकंड स्पिलटर संस्करण दिखा रहा है कृपया एक आउटपुट डायरेक्टरी चुनें शुरुआत सभी गानों की प्रोसेसिंग शुरू गाने बचे हैं काम कर रहे प्रसंस्करण बेकार सभी गीतों का प्रसंस्करण समाप्त पूरा चला स्वर + त्वरण स्वर + बास + ड्रम + अन्य स्वर + बास + ड्रम + पियानो + अन्य कृपया एक आउटपुट डायरेक्टरी चुनें रनिंग अपडेट कमांड इसमें कुछ समय लग सकता है, बीप की प्रतीक्षा करें संस्करण उपलब्ध है आप नवीनतम संस्करण का उपयोग कर रहे हैं नया संस्करण डेटा प्राप्त करने में असमर्थ, इंटरनेट कनेक्शन जांचें आउटपुट स्थान चुनें root_folder.txt का स्थान चुनें ================================================ FILE: SpleeterGui/languages_source/italian.xml ================================================ italiano File Esci Aiuto Aiuto e domande frequenti Controlla la versione di SpleeterGUI Aggiorna i pacchetti di Spleeter Pagina GitHub di Spleeter Maken it so Avanzati Imposta il percorso SpleeterGUI Imposta percorso json configs 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 ================================================  日本語 ファイル(&F) 終了(&X) ヘルプ(&H) ヘルプと FAQ(&H) SpleeterGUI のバージョンを確認する(&C) Spleeter コアのアップグレード(&U) SpleeterGUI GitHub ページ(&G) Maken it so(&M) 高度な設定(&A) SpleeterGUI のパスを設定する(&S) json 設定パスを設定する(&J) 音楽ソースの分離 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 ================================================ 한국어 파일 종료 도움 도움말과 & FAQ spleeterGUI 버전체크 Spleeter 핵심파일 업데이트 SpleeterGUI의 github 페이지 만든이 Maken it so 고급 옵션 SpleeterGUI 경로 설정 json 설정집 경로 설정 음원 분리 프로그램 윈도우 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 ================================================  русский файл Выход Помогите Помогите & вопрос Проверьте spleeterGUI версию Обновление ядра Spleeter Spleeter Github страница Maken it so продвинутый Установить путь к SpleeterGUI Установить путь к конфигам json Разделение источника музыки Пакет рабочего стола Windows Части для разделения два Вокал + аккомпанемент четыре пять Recombine (объединение выходных частей вместе) вокальный бас Барабаны пиано Другой Полная пропускная способность (16 кГц, высокое качество) Сохранить Оставьте свои музыкальные файлы здесь, чтобы начать обработку Или выберите музыкальный файл (ы) Прогресс Максимальная длина песни секунд Отображение версии spleeter Пожалуйста, выберите выходной каталог начало Начало обработки всех песен оставшиеся песни Работает обработка вхолостую Закончена обработка всех песен Выполнить завершено Вокал + аккомпанемент Вокал + Бас + Барабаны + Другое Вокал + Бас + Барабаны + Фортепиано + Другое Пожалуйста, выберите выходной каталог Запуск команды обновления Это может занять некоторое время, подождите звукового сигнала Версия доступен Вы используете последнюю версию Невозможно получить данные новой версии, проверьте интернет-соединение Выберите место выхода Выберите местоположение root_folder.txt ================================================ FILE: SpleeterGui/languages_source/spanish.xml ================================================  español Expediente Salida Ayuda Ayuda & pregunta Comprueba la versión de spleeterGUI Actualización principal de Spleeter Página de github de Spleeter Hazlo así Avanzada Establecer ruta de SpleeterGUI Establecer ruta de configuración json 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 ================================================  正體中文 檔案 關閉 說明 說明及常見問題 檢查 spleeterGUI 版本 更新 Spleeter 核心 SpleeterGUI github 頁面 Maken it so 進階設定 設定 SpleeterGUI 路徑 設定 json 設定檔路徑 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" } ] }