mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-24 16:02:54 +08:00
Merged Synthesizer from alexguirre (WIP)
This commit is contained in:
parent
adcb997808
commit
8207da8d70
@ -32,6 +32,10 @@
|
|||||||
<ProjectReference Include="..\CodeWalker.WinForms\CodeWalker.WinForms.csproj" />
|
<ProjectReference Include="..\CodeWalker.WinForms\CodeWalker.WinForms.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System.Windows.Forms.DataVisualization" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Update="Properties\Settings.Designer.cs">
|
<Compile Update="Properties\Settings.Designer.cs">
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
208
CodeWalker/Forms/RelForm.Designer.cs
generated
208
CodeWalker/Forms/RelForm.Designer.cs
generated
@ -29,6 +29,9 @@
|
|||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
this.components = new System.ComponentModel.Container();
|
||||||
|
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||||
|
System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
|
||||||
|
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RelForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RelForm));
|
||||||
this.RelPropertyGrid = new CodeWalker.WinForms.PropertyGridFix();
|
this.RelPropertyGrid = new CodeWalker.WinForms.PropertyGridFix();
|
||||||
this.MainTabControl = new System.Windows.Forms.TabControl();
|
this.MainTabControl = new System.Windows.Forms.TabControl();
|
||||||
@ -44,6 +47,17 @@
|
|||||||
this.SearchTextBox = new System.Windows.Forms.TextBox();
|
this.SearchTextBox = new System.Windows.Forms.TextBox();
|
||||||
this.SearchButton = new System.Windows.Forms.Button();
|
this.SearchButton = new System.Windows.Forms.Button();
|
||||||
this.SearchResultsGrid = new CodeWalker.WinForms.PropertyGridFix();
|
this.SearchResultsGrid = new CodeWalker.WinForms.PropertyGridFix();
|
||||||
|
this.SynthsTabPage = new System.Windows.Forms.TabPage();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.SynthVariablesTextBox = new System.Windows.Forms.TextBox();
|
||||||
|
this.SynthOutputsTextBox = new System.Windows.Forms.TextBox();
|
||||||
|
this.SynthBufferChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||||
|
this.SynthPlayButton = new System.Windows.Forms.Button();
|
||||||
|
this.SynthCopyXMLButton = new System.Windows.Forms.Button();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.SynthsComboBox = new System.Windows.Forms.ComboBox();
|
||||||
|
this.SynthTextBox = new FastColoredTextBoxNS.FastColoredTextBox();
|
||||||
this.MainToolbar = new System.Windows.Forms.ToolStrip();
|
this.MainToolbar = new System.Windows.Forms.ToolStrip();
|
||||||
this.NewButton = new System.Windows.Forms.ToolStripSplitButton();
|
this.NewButton = new System.Windows.Forms.ToolStripSplitButton();
|
||||||
this.OpenButton = new System.Windows.Forms.ToolStripSplitButton();
|
this.OpenButton = new System.Windows.Forms.ToolStripSplitButton();
|
||||||
@ -64,12 +78,16 @@
|
|||||||
this.wIPToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
this.wIPToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.OpenFileDialog = new System.Windows.Forms.OpenFileDialog();
|
this.OpenFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||||
this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog();
|
this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog();
|
||||||
|
this.SynthStopButton = new System.Windows.Forms.Button();
|
||||||
this.MainTabControl.SuspendLayout();
|
this.MainTabControl.SuspendLayout();
|
||||||
this.XmlTabPage.SuspendLayout();
|
this.XmlTabPage.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.XmlTextBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.XmlTextBox)).BeginInit();
|
||||||
this.DetailsTabPage.SuspendLayout();
|
this.DetailsTabPage.SuspendLayout();
|
||||||
this.NameTableTabPage.SuspendLayout();
|
this.NameTableTabPage.SuspendLayout();
|
||||||
this.SearchTabPage.SuspendLayout();
|
this.SearchTabPage.SuspendLayout();
|
||||||
|
this.SynthsTabPage.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.SynthBufferChart)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.SynthTextBox)).BeginInit();
|
||||||
this.MainToolbar.SuspendLayout();
|
this.MainToolbar.SuspendLayout();
|
||||||
this.MainStatusStrip.SuspendLayout();
|
this.MainStatusStrip.SuspendLayout();
|
||||||
this.MainMenu.SuspendLayout();
|
this.MainMenu.SuspendLayout();
|
||||||
@ -92,6 +110,7 @@
|
|||||||
this.MainTabControl.Controls.Add(this.DetailsTabPage);
|
this.MainTabControl.Controls.Add(this.DetailsTabPage);
|
||||||
this.MainTabControl.Controls.Add(this.NameTableTabPage);
|
this.MainTabControl.Controls.Add(this.NameTableTabPage);
|
||||||
this.MainTabControl.Controls.Add(this.SearchTabPage);
|
this.MainTabControl.Controls.Add(this.SearchTabPage);
|
||||||
|
this.MainTabControl.Controls.Add(this.SynthsTabPage);
|
||||||
this.MainTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.MainTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.MainTabControl.Location = new System.Drawing.Point(0, 49);
|
this.MainTabControl.Location = new System.Drawing.Point(0, 49);
|
||||||
this.MainTabControl.Margin = new System.Windows.Forms.Padding(0);
|
this.MainTabControl.Margin = new System.Windows.Forms.Padding(0);
|
||||||
@ -136,6 +155,7 @@
|
|||||||
this.XmlTextBox.DelayedEventsInterval = 1;
|
this.XmlTextBox.DelayedEventsInterval = 1;
|
||||||
this.XmlTextBox.DisabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
|
this.XmlTextBox.DisabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
|
||||||
this.XmlTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.XmlTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.XmlTextBox.Font = new System.Drawing.Font("Courier New", 9.75F);
|
||||||
this.XmlTextBox.IsReplaceMode = false;
|
this.XmlTextBox.IsReplaceMode = false;
|
||||||
this.XmlTextBox.Language = FastColoredTextBoxNS.Language.XML;
|
this.XmlTextBox.Language = FastColoredTextBoxNS.Language.XML;
|
||||||
this.XmlTextBox.LeftBracket = '<';
|
this.XmlTextBox.LeftBracket = '<';
|
||||||
@ -270,6 +290,166 @@
|
|||||||
this.SearchResultsGrid.Size = new System.Drawing.Size(822, 423);
|
this.SearchResultsGrid.Size = new System.Drawing.Size(822, 423);
|
||||||
this.SearchResultsGrid.TabIndex = 1;
|
this.SearchResultsGrid.TabIndex = 1;
|
||||||
//
|
//
|
||||||
|
// SynthsTabPage
|
||||||
|
//
|
||||||
|
this.SynthsTabPage.Controls.Add(this.SynthStopButton);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.label3);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.label2);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.SynthVariablesTextBox);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.SynthOutputsTextBox);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.SynthBufferChart);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.SynthPlayButton);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.SynthCopyXMLButton);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.label1);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.SynthsComboBox);
|
||||||
|
this.SynthsTabPage.Controls.Add(this.SynthTextBox);
|
||||||
|
this.SynthsTabPage.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.SynthsTabPage.Name = "SynthsTabPage";
|
||||||
|
this.SynthsTabPage.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.SynthsTabPage.Size = new System.Drawing.Size(831, 460);
|
||||||
|
this.SynthsTabPage.TabIndex = 4;
|
||||||
|
this.SynthsTabPage.Text = "Synths";
|
||||||
|
this.SynthsTabPage.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
this.label3.AutoSize = true;
|
||||||
|
this.label3.Location = new System.Drawing.Point(8, 59);
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
this.label3.Size = new System.Drawing.Size(53, 13);
|
||||||
|
this.label3.TabIndex = 42;
|
||||||
|
this.label3.Text = "Variables:";
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Location = new System.Drawing.Point(8, 33);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(47, 13);
|
||||||
|
this.label2.TabIndex = 41;
|
||||||
|
this.label2.Text = "Outputs:";
|
||||||
|
//
|
||||||
|
// SynthVariablesTextBox
|
||||||
|
//
|
||||||
|
this.SynthVariablesTextBox.Location = new System.Drawing.Point(64, 56);
|
||||||
|
this.SynthVariablesTextBox.Multiline = true;
|
||||||
|
this.SynthVariablesTextBox.Name = "SynthVariablesTextBox";
|
||||||
|
this.SynthVariablesTextBox.Size = new System.Drawing.Size(293, 87);
|
||||||
|
this.SynthVariablesTextBox.TabIndex = 40;
|
||||||
|
//
|
||||||
|
// SynthOutputsTextBox
|
||||||
|
//
|
||||||
|
this.SynthOutputsTextBox.Location = new System.Drawing.Point(64, 30);
|
||||||
|
this.SynthOutputsTextBox.Name = "SynthOutputsTextBox";
|
||||||
|
this.SynthOutputsTextBox.Size = new System.Drawing.Size(293, 20);
|
||||||
|
this.SynthOutputsTextBox.TabIndex = 39;
|
||||||
|
//
|
||||||
|
// SynthBufferChart
|
||||||
|
//
|
||||||
|
this.SynthBufferChart.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
chartArea2.Name = "ChartArea1";
|
||||||
|
this.SynthBufferChart.ChartAreas.Add(chartArea2);
|
||||||
|
legend2.Name = "Legend1";
|
||||||
|
this.SynthBufferChart.Legends.Add(legend2);
|
||||||
|
this.SynthBufferChart.Location = new System.Drawing.Point(363, 31);
|
||||||
|
this.SynthBufferChart.Name = "SynthBufferChart";
|
||||||
|
series2.ChartArea = "ChartArea1";
|
||||||
|
series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
|
||||||
|
series2.IsXValueIndexed = true;
|
||||||
|
series2.Legend = "Legend1";
|
||||||
|
series2.Name = "Buffer";
|
||||||
|
this.SynthBufferChart.Series.Add(series2);
|
||||||
|
this.SynthBufferChart.Size = new System.Drawing.Size(460, 112);
|
||||||
|
this.SynthBufferChart.TabIndex = 38;
|
||||||
|
this.SynthBufferChart.Text = "chart1";
|
||||||
|
//
|
||||||
|
// SynthPlayButton
|
||||||
|
//
|
||||||
|
this.SynthPlayButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.SynthPlayButton.Location = new System.Drawing.Point(615, 2);
|
||||||
|
this.SynthPlayButton.Name = "SynthPlayButton";
|
||||||
|
this.SynthPlayButton.Size = new System.Drawing.Size(104, 23);
|
||||||
|
this.SynthPlayButton.TabIndex = 37;
|
||||||
|
this.SynthPlayButton.Text = "Play";
|
||||||
|
this.SynthPlayButton.UseVisualStyleBackColor = true;
|
||||||
|
this.SynthPlayButton.Click += new System.EventHandler(this.SynthPlayButton_Click);
|
||||||
|
//
|
||||||
|
// SynthCopyXMLButton
|
||||||
|
//
|
||||||
|
this.SynthCopyXMLButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.SynthCopyXMLButton.Location = new System.Drawing.Point(463, 2);
|
||||||
|
this.SynthCopyXMLButton.Name = "SynthCopyXMLButton";
|
||||||
|
this.SynthCopyXMLButton.Size = new System.Drawing.Size(146, 23);
|
||||||
|
this.SynthCopyXMLButton.TabIndex = 35;
|
||||||
|
this.SynthCopyXMLButton.Text = "Copy XML to clipboard";
|
||||||
|
this.SynthCopyXMLButton.UseVisualStyleBackColor = true;
|
||||||
|
this.SynthCopyXMLButton.Click += new System.EventHandler(this.SynthCopyXMLButton_Click);
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.AutoSize = true;
|
||||||
|
this.label1.Location = new System.Drawing.Point(8, 6);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(37, 13);
|
||||||
|
this.label1.TabIndex = 33;
|
||||||
|
this.label1.Text = "Synth:";
|
||||||
|
//
|
||||||
|
// SynthsComboBox
|
||||||
|
//
|
||||||
|
this.SynthsComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.SynthsComboBox.FormattingEnabled = true;
|
||||||
|
this.SynthsComboBox.Location = new System.Drawing.Point(64, 3);
|
||||||
|
this.SynthsComboBox.Name = "SynthsComboBox";
|
||||||
|
this.SynthsComboBox.Size = new System.Drawing.Size(393, 21);
|
||||||
|
this.SynthsComboBox.TabIndex = 4;
|
||||||
|
this.SynthsComboBox.SelectedIndexChanged += new System.EventHandler(this.SynthsComboBox_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// SynthTextBox
|
||||||
|
//
|
||||||
|
this.SynthTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.SynthTextBox.AutoCompleteBracketsList = new char[] {
|
||||||
|
'(',
|
||||||
|
')',
|
||||||
|
'{',
|
||||||
|
'}',
|
||||||
|
'[',
|
||||||
|
']',
|
||||||
|
'\"',
|
||||||
|
'\"',
|
||||||
|
'\'',
|
||||||
|
'\''};
|
||||||
|
this.SynthTextBox.AutoIndentChars = false;
|
||||||
|
this.SynthTextBox.AutoIndentCharsPatterns = "";
|
||||||
|
this.SynthTextBox.AutoIndentExistingLines = false;
|
||||||
|
this.SynthTextBox.AutoScrollMinSize = new System.Drawing.Size(27, 14);
|
||||||
|
this.SynthTextBox.BackBrush = null;
|
||||||
|
this.SynthTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.SynthTextBox.CharHeight = 14;
|
||||||
|
this.SynthTextBox.CharWidth = 8;
|
||||||
|
this.SynthTextBox.CommentPrefix = null;
|
||||||
|
this.SynthTextBox.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||||
|
this.SynthTextBox.DelayedEventsInterval = 1;
|
||||||
|
this.SynthTextBox.DisabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
|
||||||
|
this.SynthTextBox.IsReplaceMode = false;
|
||||||
|
this.SynthTextBox.Language = FastColoredTextBoxNS.Language.XML;
|
||||||
|
this.SynthTextBox.LeftBracket = '<';
|
||||||
|
this.SynthTextBox.LeftBracket2 = '(';
|
||||||
|
this.SynthTextBox.Location = new System.Drawing.Point(3, 149);
|
||||||
|
this.SynthTextBox.Name = "SynthTextBox";
|
||||||
|
this.SynthTextBox.Paddings = new System.Windows.Forms.Padding(0);
|
||||||
|
this.SynthTextBox.RightBracket = '>';
|
||||||
|
this.SynthTextBox.RightBracket2 = ')';
|
||||||
|
this.SynthTextBox.SelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
|
||||||
|
this.SynthTextBox.ServiceColors = ((FastColoredTextBoxNS.ServiceColors)(resources.GetObject("SynthTextBox.ServiceColors")));
|
||||||
|
this.SynthTextBox.Size = new System.Drawing.Size(825, 308);
|
||||||
|
this.SynthTextBox.TabIndex = 3;
|
||||||
|
this.SynthTextBox.Zoom = 100;
|
||||||
|
this.SynthTextBox.TextChangedDelayed += new System.EventHandler<FastColoredTextBoxNS.TextChangedEventArgs>(this.SynthTextBox_TextChangedDelayed);
|
||||||
|
//
|
||||||
// MainToolbar
|
// MainToolbar
|
||||||
//
|
//
|
||||||
this.MainToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.MainToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
@ -433,6 +613,18 @@
|
|||||||
//
|
//
|
||||||
this.SaveFileDialog.Filter = "XML files|*.xml|All files|*.*";
|
this.SaveFileDialog.Filter = "XML files|*.xml|All files|*.*";
|
||||||
//
|
//
|
||||||
|
// SynthStopButton
|
||||||
|
//
|
||||||
|
this.SynthStopButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.SynthStopButton.Enabled = false;
|
||||||
|
this.SynthStopButton.Location = new System.Drawing.Point(724, 2);
|
||||||
|
this.SynthStopButton.Name = "SynthStopButton";
|
||||||
|
this.SynthStopButton.Size = new System.Drawing.Size(104, 23);
|
||||||
|
this.SynthStopButton.TabIndex = 43;
|
||||||
|
this.SynthStopButton.Text = "Stop";
|
||||||
|
this.SynthStopButton.UseVisualStyleBackColor = true;
|
||||||
|
this.SynthStopButton.Click += new System.EventHandler(this.SynthStopButton_Click);
|
||||||
|
//
|
||||||
// RelForm
|
// RelForm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
@ -453,6 +645,10 @@
|
|||||||
this.NameTableTabPage.PerformLayout();
|
this.NameTableTabPage.PerformLayout();
|
||||||
this.SearchTabPage.ResumeLayout(false);
|
this.SearchTabPage.ResumeLayout(false);
|
||||||
this.SearchTabPage.PerformLayout();
|
this.SearchTabPage.PerformLayout();
|
||||||
|
this.SynthsTabPage.ResumeLayout(false);
|
||||||
|
this.SynthsTabPage.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.SynthBufferChart)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.SynthTextBox)).EndInit();
|
||||||
this.MainToolbar.ResumeLayout(false);
|
this.MainToolbar.ResumeLayout(false);
|
||||||
this.MainToolbar.PerformLayout();
|
this.MainToolbar.PerformLayout();
|
||||||
this.MainStatusStrip.ResumeLayout(false);
|
this.MainStatusStrip.ResumeLayout(false);
|
||||||
@ -500,5 +696,17 @@
|
|||||||
private System.Windows.Forms.ToolStripMenuItem wIPToolStripMenuItem1;
|
private System.Windows.Forms.ToolStripMenuItem wIPToolStripMenuItem1;
|
||||||
private System.Windows.Forms.OpenFileDialog OpenFileDialog;
|
private System.Windows.Forms.OpenFileDialog OpenFileDialog;
|
||||||
private System.Windows.Forms.SaveFileDialog SaveFileDialog;
|
private System.Windows.Forms.SaveFileDialog SaveFileDialog;
|
||||||
|
private System.Windows.Forms.TabPage SynthsTabPage;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.ComboBox SynthsComboBox;
|
||||||
|
private FastColoredTextBoxNS.FastColoredTextBox SynthTextBox;
|
||||||
|
private System.Windows.Forms.Button SynthCopyXMLButton;
|
||||||
|
private System.Windows.Forms.Button SynthPlayButton;
|
||||||
|
private System.Windows.Forms.DataVisualization.Charting.Chart SynthBufferChart;
|
||||||
|
private System.Windows.Forms.TextBox SynthOutputsTextBox;
|
||||||
|
private System.Windows.Forms.TextBox SynthVariablesTextBox;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.Button SynthStopButton;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,6 @@
|
|||||||
using CodeWalker.GameFiles;
|
using CodeWalker.GameFiles;
|
||||||
|
using CodeWalker.Utils;
|
||||||
|
|
||||||
using FastColoredTextBoxNS;
|
using FastColoredTextBoxNS;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -10,8 +12,10 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using System.Windows.Forms.DataVisualization.Charting;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Range = FastColoredTextBoxNS.Range;
|
using Range = FastColoredTextBoxNS.Range;
|
||||||
|
using TextStyle = FastColoredTextBoxNS.TextStyle;
|
||||||
|
|
||||||
namespace CodeWalker.Forms
|
namespace CodeWalker.Forms
|
||||||
{
|
{
|
||||||
@ -173,6 +177,25 @@ namespace CodeWalker.Forms
|
|||||||
}
|
}
|
||||||
MainTextBox.Text = sb.ToString();
|
MainTextBox.Text = sb.ToString();
|
||||||
|
|
||||||
|
|
||||||
|
SynthsComboBox.Items.Clear();
|
||||||
|
SynthTextBox.Language = Language.Custom;
|
||||||
|
SynthTextBox.Text = "";
|
||||||
|
SynthTextBox.ClearUndo();
|
||||||
|
if (rel.RelType == RelDatFileType.Dat10ModularSynth)
|
||||||
|
{
|
||||||
|
foreach (var relData in rel.RelDatasSorted)
|
||||||
|
{
|
||||||
|
if ((Dat10RelType)relData.TypeID == Dat10RelType.Synth)
|
||||||
|
{
|
||||||
|
SynthsComboBox.Items.Add(relData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MainTabControl.TabPages.Remove(SynthsTabPage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -296,6 +319,8 @@ namespace CodeWalker.Forms
|
|||||||
Xml = "";
|
Xml = "";
|
||||||
RelPropertyGrid.SelectedObject = null;
|
RelPropertyGrid.SelectedObject = null;
|
||||||
MainTextBox.Text = "";
|
MainTextBox.Text = "";
|
||||||
|
SynthsComboBox.Items.Clear();
|
||||||
|
SynthTextBox.Text = "";
|
||||||
modified = false;
|
modified = false;
|
||||||
rpfFileEntry = null;
|
rpfFileEntry = null;
|
||||||
|
|
||||||
@ -380,14 +405,73 @@ namespace CodeWalker.Forms
|
|||||||
metaFormat = MetaFormat.XML;
|
metaFormat = MetaFormat.XML;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private byte[] ParseSynthOutputs()
|
||||||
|
{
|
||||||
|
var outputs = SynthOutputsTextBox.Text.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
var outputsIndices = new byte[4];
|
||||||
|
for (int i = 0; i < outputsIndices.Length; i++)
|
||||||
|
{
|
||||||
|
if (outputs.Length <= i)
|
||||||
|
break;
|
||||||
|
|
||||||
|
outputsIndices[i] = byte.Parse(outputs[i].Substring(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
return outputsIndices;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dat10SynthVariable[] ParseSynthVariables()
|
||||||
|
{
|
||||||
|
var variablesLines = SynthVariablesTextBox.Text.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
var variables = new Dat10SynthVariable[variablesLines.Length];
|
||||||
|
for (int i = 0; i < variablesLines.Length; i++)
|
||||||
|
{
|
||||||
|
var parts = variablesLines[i].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
variables[i] = new Dat10SynthVariable
|
||||||
|
{
|
||||||
|
Name = XmlMeta.GetHash(parts[0]),
|
||||||
|
Value = FloatUtil.Parse(parts[1]),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return variables;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dat10Synth AssembleSynth()
|
||||||
|
{
|
||||||
|
var outputs = ParseSynthOutputs();
|
||||||
|
var variables = ParseSynthVariables();
|
||||||
|
|
||||||
|
bool error = false;
|
||||||
|
var result = Dat10Synth.Assemble(SynthTextBox.Text, variables, (errorMsg, lineNumber) => error = true);
|
||||||
|
|
||||||
|
if (error)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return new Dat10Synth(CurrentFile)
|
||||||
|
{
|
||||||
|
BuffersCount = result.BuffersCount,
|
||||||
|
RegistersCount = result.RegistersCount,
|
||||||
|
StateBlocksCount = result.StateBlocksCount,
|
||||||
|
ConstantsCount = result.Constants.Count,
|
||||||
|
Constants = result.Constants.ToArray(),
|
||||||
|
Bytecode = result.Bytecode,
|
||||||
|
OutputsCount = outputs.Length,
|
||||||
|
OutputsIndices = outputs,
|
||||||
|
VariablesCount = variables.Length,
|
||||||
|
Variables = variables,
|
||||||
|
RuntimeCost = 123
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Style BlueStyle = new TextStyle(Brushes.Blue, null, FontStyle.Regular);
|
Style BlueStyle = new TextStyle(Brushes.Blue, null, FontStyle.Regular);
|
||||||
Style RedStyle = new TextStyle(Brushes.Red, null, FontStyle.Regular);
|
Style RedStyle = new TextStyle(Brushes.Red, null, FontStyle.Regular);
|
||||||
Style MaroonStyle = new TextStyle(Brushes.Maroon, null, FontStyle.Regular);
|
Style MaroonStyle = new TextStyle(Brushes.Maroon, null, FontStyle.Regular);
|
||||||
|
Style OrangeRedStyle = new TextStyle(Brushes.OrangeRed, null, FontStyle.Regular);
|
||||||
|
Style GreenStyle = new TextStyle(Brushes.Green, null, FontStyle.Regular);
|
||||||
|
Style ErrorStyle = new TextStyle(Brushes.Red, null, FontStyle.Underline);
|
||||||
|
|
||||||
private void HTMLSyntaxHighlight(Range range)
|
private void HTMLSyntaxHighlight(Range range)
|
||||||
{
|
{
|
||||||
@ -439,7 +523,7 @@ namespace CodeWalker.Forms
|
|||||||
{
|
{
|
||||||
if (textsearch)
|
if (textsearch)
|
||||||
{
|
{
|
||||||
if (((rd.Name?.ToLowerInvariant().Contains(textl))??false) || (rd.NameHash == hash) || (rd.NameHash == hashl) ||
|
if (((rd.Name?.ToLowerInvariant().Contains(textl)) ?? false) || (rd.NameHash == hash) || (rd.NameHash == hashl) ||
|
||||||
(rd.NameHash.ToString().ToLowerInvariant().Contains(textl)))
|
(rd.NameHash.ToString().ToLowerInvariant().Contains(textl)))
|
||||||
{
|
{
|
||||||
results.Add(rd);
|
results.Add(rd);
|
||||||
@ -447,7 +531,7 @@ namespace CodeWalker.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((rd.NameHash == hash)||(rd.NameHash == hashl))
|
if ((rd.NameHash == hash) || (rd.NameHash == hashl))
|
||||||
{
|
{
|
||||||
SearchResultsGrid.SelectedObject = rd;
|
SearchResultsGrid.SelectedObject = rd;
|
||||||
return;
|
return;
|
||||||
@ -540,5 +624,148 @@ namespace CodeWalker.Forms
|
|||||||
HTMLSyntaxHighlight(XmlTextBox.VisibleRange);
|
HTMLSyntaxHighlight(XmlTextBox.VisibleRange);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SynthAssemblySyntaxHighlight(Range range)
|
||||||
|
{
|
||||||
|
//clear style of changed range
|
||||||
|
range.ClearStyle(GreenStyle, OrangeRedStyle, BlueStyle, MaroonStyle);
|
||||||
|
|
||||||
|
// comments
|
||||||
|
range.SetStyle(GreenStyle, @";.*");
|
||||||
|
// registers/variables/buffers
|
||||||
|
range.SetStyle(MaroonStyle, @"(?<![a-zA-Z_0-9])[RVB][0-9]+");
|
||||||
|
// numbers
|
||||||
|
range.SetStyle(BlueStyle, @"(?<![a-zA-Z_0-9])[0-9]+(.[0-9]+)*");
|
||||||
|
// inputs/outputs separator
|
||||||
|
range.SetStyle(OrangeRedStyle, @"=>");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SynthsComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Dat10Synth synth = (Dat10Synth)SynthsComboBox.SelectedItem;
|
||||||
|
if (synth == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SynthTextBox.Text = Dat10Synth.Disassemble(synth.Bytecode, synth.Constants, synth.Variables, false).Disassembly;
|
||||||
|
SynthTextBox.ClearUndo();
|
||||||
|
SynthAssemblySyntaxHighlight(SynthTextBox.Range);
|
||||||
|
|
||||||
|
SynthVariablesTextBox.Clear();
|
||||||
|
SynthVariablesTextBox.Text = string.Join(Environment.NewLine, synth.Variables.Select(v => $"{RelXml.HashString(v.Name)} {FloatUtil.ToString(v.Value)}"));
|
||||||
|
|
||||||
|
SynthOutputsTextBox.Clear();
|
||||||
|
SynthOutputsTextBox.Text = string.Join(" ", synth.OutputsIndices.Take(synth.OutputsCount).Select(bufferIdx => $"B{bufferIdx}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SynthTextBox_TextChangedDelayed(object sender, TextChangedEventArgs e)
|
||||||
|
{
|
||||||
|
string errors = "";
|
||||||
|
SynthTextBox.Range.ClearStyle(ErrorStyle);
|
||||||
|
SynthAssemblySyntaxHighlight(SynthTextBox.Range);
|
||||||
|
var variables = ParseSynthVariables();
|
||||||
|
Dat10Synth.Assemble(SynthTextBox.Text, variables, (errorMsg, lineNumber) =>
|
||||||
|
{
|
||||||
|
errors += $"Line {lineNumber}: {errorMsg}" + Environment.NewLine;
|
||||||
|
var line = SynthTextBox.GetLine(lineNumber - 1);
|
||||||
|
line.ClearStyle(GreenStyle, OrangeRedStyle, BlueStyle, MaroonStyle, RedStyle);
|
||||||
|
line.SetStyle(ErrorStyle);
|
||||||
|
});
|
||||||
|
StatusLabel.Text = errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SynthCopyXMLButton_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var newSynth = AssembleSynth();
|
||||||
|
if (newSynth == null)
|
||||||
|
{
|
||||||
|
StatusLabel.Text = "Failed to assemble synth";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
newSynth.WriteXml(sb, 0);
|
||||||
|
Clipboard.SetText(sb.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Synthesizer synthesizer = null; // TODO(alexguirre): dispose synthesizer
|
||||||
|
|
||||||
|
private void SynthPlayButton_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var newSynth = AssembleSynth();
|
||||||
|
if (newSynth == null)
|
||||||
|
{
|
||||||
|
StatusLabel.Text = "Failed to assemble synth";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//#if !DEBUG
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//#endif
|
||||||
|
if (synthesizer == null)
|
||||||
|
{
|
||||||
|
synthesizer = new Synthesizer();
|
||||||
|
synthesizer.Stopped += (t, _) =>
|
||||||
|
{
|
||||||
|
BeginInvoke((Action)(() =>
|
||||||
|
{
|
||||||
|
SynthPlayButton.Enabled = true;
|
||||||
|
SynthStopButton.Enabled = false;
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
synthesizer.FrameSynthesized += (t, _) =>
|
||||||
|
{
|
||||||
|
float[][] buffersCopy = new float[synthesizer.Buffers.Length][];
|
||||||
|
for (int i = 0; i < buffersCopy.Length; i++)
|
||||||
|
{
|
||||||
|
buffersCopy[i] = new float[synthesizer.Buffers[i].Length];
|
||||||
|
Array.Copy(synthesizer.Buffers[i], buffersCopy[i], synthesizer.Buffers[i].Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
BeginInvoke((Action)(() =>
|
||||||
|
{
|
||||||
|
//for (int i = 0; i < buffersCopy.Length; i++)
|
||||||
|
int i = synthesizer.Synth.OutputsIndices[0];
|
||||||
|
{
|
||||||
|
var series = SynthBufferChart.Series[$"B{i}"];
|
||||||
|
series.Points.Clear();
|
||||||
|
foreach (var v in buffersCopy[i])
|
||||||
|
series.Points.AddY(v);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
SynthBufferChart.Series.Clear();
|
||||||
|
for (int i = 0; i < newSynth.BuffersCount; i++)
|
||||||
|
{
|
||||||
|
var series = SynthBufferChart.Series.Add($"B{i}");
|
||||||
|
series.IsXValueIndexed = true;
|
||||||
|
series.ChartType = SeriesChartType.FastLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
SynthPlayButton.Enabled = false;
|
||||||
|
SynthStopButton.Enabled = true;
|
||||||
|
synthesizer.Play(newSynth);
|
||||||
|
//#if !DEBUG
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
SynthPlayButton.Enabled = true;
|
||||||
|
SynthStopButton.Enabled = false;
|
||||||
|
StatusLabel.Text = $"Synthesizer error: {ex}";
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SynthStopButton_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (synthesizer != null)
|
||||||
|
synthesizer.Stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -117,6 +117,24 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="SynthTextBox.ServiceColors" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>
|
||||||
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFdGYXN0Q29sb3JlZFRleHRCb3gsIFZlcnNpb249Mi4xNi4yNC4w
|
||||||
|
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWZiOGFhMTJiOTk0ZWY2MWIMAwAAAFFTeXN0
|
||||||
|
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
||||||
|
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACJGYXN0Q29sb3JlZFRleHRCb3hOUy5TZXJ2aWNlQ29sb3JzBgAA
|
||||||
|
ACg8Q29sbGFwc2VNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxDb2xsYXBzZU1hcmtlckJh
|
||||||
|
Y2tDb2xvcj5rX19CYWNraW5nRmllbGQqPENvbGxhcHNlTWFya2VyQm9yZGVyQ29sb3I+a19fQmFja2lu
|
||||||
|
Z0ZpZWxkJjxFeHBhbmRNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkJjxFeHBhbmRNYXJrZXJC
|
||||||
|
YWNrQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxFeHBhbmRNYXJrZXJCb3JkZXJDb2xvcj5rX19CYWNraW5n
|
||||||
|
RmllbGQEBAQEBAQUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAA
|
||||||
|
ABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5E
|
||||||
|
cmF3aW5nLkNvbG9yAwAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAACAAAABfz///8UU3lzdGVtLkRy
|
||||||
|
YXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAACgAAAAAA
|
||||||
|
AAAAlgABAAH7/////P///woAAAAAAAAAAKQAAQAB+v////z///8KAAAAAAAAAACWAAEAAfn////8////
|
||||||
|
CgAAAAAAAAAATgABAAH4/////P///woAAAAAAAAAAKQAAQAB9/////z///8KAAAAAAAAAACWAAEACw==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
<data name="XmlTextBox.ServiceColors" mimetype="application/x-microsoft.net.object.binary.base64">
|
<data name="XmlTextBox.ServiceColors" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>
|
<value>
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdGYXN0Q29sb3JlZFRleHRCb3gsIFZlcnNpb249Mi4xNi4yNC4w
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFdGYXN0Q29sb3JlZFRleHRCb3gsIFZlcnNpb249Mi4xNi4yNC4w
|
||||||
|
2036
CodeWalker/Utils/Synthesizer.cs
Normal file
2036
CodeWalker/Utils/Synthesizer.cs
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user