diff --git a/BAKKA Editor/BAKKA Editor.rc b/BAKKA Editor/BAKKA Editor.rc deleted file mode 100644 index 16eed0e..0000000 --- a/BAKKA Editor/BAKKA Editor.rc +++ /dev/null @@ -1,71 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON1 ICON "exeIcon.ico" - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/BAKKA Editor/BAKKA Editor.vcxproj b/BAKKA Editor/BAKKA Editor.vcxproj deleted file mode 100644 index da64c53..0000000 --- a/BAKKA Editor/BAKKA Editor.vcxproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - {459EC852-D323-45B0-8A85-D6F4B030F5A4} - v4.7.2 - ManagedCProj - BAKKAEditor - 10.0 - - - - Application - true - v142 - true - Unicode - - - Application - false - v142 - true - Unicode - - - Application - true - v142 - true - Unicode - - - Application - false - v142 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - Level3 - WIN32;_DEBUG;%(PreprocessorDefinitions) - - - - Windows - main - - - - - Level3 - _DEBUG;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - - - - %(AdditionalDependencies) - %(AdditionalLibraryDirectories) - Windows - main - - - false - - - - - Level3 - WIN32;NDEBUG;%(PreprocessorDefinitions) - MultiThreadedDLL - - - - main - Windows - - - - - Level3 - NDEBUG;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - - - - %(AdditionalDependencies) - %(AdditionalLibraryDirectories) - Windows - main - - - false - - - - - irrKlang-64bit-1.6.0\lib\dotnet-4-64\irrKlang.NET4.dll - - - - - - - - - - - - - - - CppForm - - - - - - MyForm.h - - - MyForm.h - Designer - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/BAKKA Editor/BAKKA Editor.vcxproj.filters b/BAKKA Editor/BAKKA Editor.vcxproj.filters deleted file mode 100644 index fbf70d1..0000000 --- a/BAKKA Editor/BAKKA Editor.vcxproj.filters +++ /dev/null @@ -1,48 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Resource Files - - - - - Source Files - - - \ No newline at end of file diff --git a/BAKKA Editor/Chart.h b/BAKKA Editor/Chart.h deleted file mode 100644 index 460142c..0000000 --- a/BAKKA Editor/Chart.h +++ /dev/null @@ -1,86 +0,0 @@ -#pragma once -#include -#include -#include - -enum NoteType { - TouchNoBonus = 1, - TouchBonus = 2, - SnapRedNoBonus = 3, - SnapBlueNoBonus = 4, - SlideOrangeNoBonus = 5, - SlideOrangeBonus = 6, - SlideGreenNoBonus = 7, - SlideGreenBonus = 8, - HoldStartNoBonus = 9, - HoldJoint = 10, - HoldEnd = 11, - MaskAdd = 12, - MaskRemove = 13, - EndOfChart = 14, - //MaskSameTime = 15, - Chain = 16, - //MaskLane = 17, - //TutorialTag = 18, - //BarLine = 19, - TouchBonusFlair = 20, - SnapRedBonusFlair = 21, - SnapBlueBonusFlair = 22, - SlideOrangeBonusFlair = 23, - SlideGreenBonusFlair = 24, - HoldStartBonusFlair = 25, - ChainBonusFlair = 26, -}; - -struct NotesNode { - int measure; - int beat; - NoteType noteType; - int position; - int size; - int holdChange; - int BGType; - std::list::iterator nextNode; - std::list::iterator prevNode; -}; - -enum GimmickType { - NoGimmick = 1, - BpmChange = 2, - TimeSignatureChange = 3, - //Stop = 4, //No clue what this does - HiSpeedChange = 5, - ReverseStart = 6, - ReverseEnd = 7, - ReverseNoteEnd = 8, - StopStart = 9, - StopEnd = 10, -}; - -struct PreChartNode { - int measure; - int beat; - GimmickType type; - double BPM; //2 - int beatDiv1; //3 - int beatDiv2; //3 - double hiSpeed; //5 - //6-10 have no extra info -}; - -struct Chart { - std::list Notes; - std::list PreChart; - double offset; - double movieOffset; - std::string songFileName; -}; - -struct Operation { - int operationType; //1=insert, 2=delete, 3=edit - int objectType; //1=Note, 2=Gimmick - std::list oldNote; //only used for edit - std::list oldGimmick; //only used for edit - std::list Note; - std::list Gimmick; -}; \ No newline at end of file diff --git a/BAKKA Editor/MyForm.cpp b/BAKKA Editor/MyForm.cpp deleted file mode 100644 index f31a159..0000000 --- a/BAKKA Editor/MyForm.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "MyForm.h" - - -using namespace System; -using namespace System::Windows::Forms; -[STAThread] - -void main(array^ args) -{ - Application::EnableVisualStyles(); - Application::SetCompatibleTextRenderingDefault(false); - BAKKAEditor::MyForm form; - Application::Run(% form); -} \ No newline at end of file diff --git a/BAKKA Editor/MyForm.en-US.resx b/BAKKA Editor/MyForm.en-US.resx deleted file mode 100644 index e44e8ac..0000000 --- a/BAKKA Editor/MyForm.en-US.resx +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - 114, 22 - - - 114, 22 - - - 114, 22 - - - 114, 22 - - - 114, 22 - - - 12, 48 - - - 666, 74 - - \ No newline at end of file diff --git a/BAKKA Editor/MyForm.h b/BAKKA Editor/MyForm.h deleted file mode 100644 index 6b51699..0000000 --- a/BAKKA Editor/MyForm.h +++ /dev/null @@ -1,4855 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "Chart.h" -#define PI 3.14159265 - -using std::to_string; -using namespace IrrKlang; - -//I'm sorry for this clusterfuck -Chart theChart; -std::stack undoStack; -std::stack redoStack; -std::string songFilePath = ""; -std::string chartFilePath = ""; -std::string tickFilePath = "se_tick.ogg"; -GimmickType SelectedLineType = NoGimmick; -NoteType SelectedNoteType = TouchNoBonus; -NoteType SelectedNoteTypeVisual = TouchNoBonus; -std::list::iterator viewNotesITR = theChart.Notes.begin(); -std::list::iterator viewGimmicksITR = theChart.PreChart.begin(); -std::list::iterator holdNoteitr = theChart.Notes.end(); -std::map>> mapOfMasks; //measure, list of masks -std::map> mapOfNotes; //measure, list of notes -std::map mapOfTimeBetweenMeasures; //current measure, milliseconds beatween beats -std::map mapOfBeatAtTime; //milliseconds start time, measure start time -std::map mapOfBPMatTime; //measure start time, BPM at time -std::map> mapOfTSatTime; //measure start time, Time Signature at time -bool alreadyRefreshed = false; -bool noteRefresh = false; -bool subnum1changed = false; -int songLength = 0; -const unsigned int update_interval = 4; // update after every 100 milliseconds (1/16th of 100bpm) -const int milInMinute = 60000; -bool scrollBarChanged = false; -float theCurrentMeasure = 0; -bool operationReversal = false; -// Variables for mouse things -int mouseDownPos = -1; -int lastMousePos = -1; -bool rolloverPos = false; -bool rolloverNeg = false; - - -int findLine(std::list::iterator nextNode) { - int outputLine = 0; - - for (std::list::iterator itr = theChart.Notes.begin(); itr != theChart.Notes.end(); itr++) { - if (itr == nextNode) - break; - outputLine++; - } - - return outputLine; -} -bool isHold(NoteType note) { - switch (note) - { - case HoldStartNoBonus: - case HoldJoint: - case HoldEnd: - case HoldStartBonusFlair: - return true; - default: - return false; - } -} -bool sortNotesListByMeasure(const NotesNode& lhs, const NotesNode& rhs) { - if (lhs.measure < rhs.measure) - return true; - else if ((lhs.measure == rhs.measure) && (lhs.beat < rhs.beat)) - return true; - else - return false; -} -bool sortPreChartListByBeat(const PreChartNode& lhs, const PreChartNode& rhs) { - if (lhs.measure < rhs.measure) - return true; - else if ((lhs.measure == rhs.measure) && (lhs.beat < rhs.beat)) - return true; - return false; -} -bool compareInterval(const std::pair& lhs, const std::pair& rhs) -{ - return (lhs.first < rhs.first); -} -float findGCD(float a, float b) { - if (b == 0) - return a; - return findGCD(b, (int)a % (int)b); -} - -namespace BAKKAEditor { - - using namespace System; - using namespace System::ComponentModel; - using namespace System::Collections; - using namespace System::Windows::Forms; - using namespace System::Data; - using namespace System::Drawing; - using namespace System::IO; - using namespace System::Threading; - using namespace System::Reflection; - - /// - /// Summary for MyForm - /// - public ref class MyForm : public System::Windows::Forms::Form - { - public: - MyForm(void) - { - InitializeComponent(); - } - - protected: - /// - /// Clean up any resources being used. - /// - ~MyForm() - { - if (components) - { - delete components; - } - } - private: System::Windows::Forms::MenuStrip^ menuStrip; - protected: - ISoundEngine SoundEngine; - ISound^ currentlyPlayingSong = SoundEngine.Play2D(stdStringToSystemString(songFilePath), true, true); - ISound^ currentlyPlayingTickSound = SoundEngine.Play2D(stdStringToSystemString(tickFilePath), false, true); - BufferedGraphicsContext^ bufferedGfxContext; - BufferedGraphics^ bufferedGfx; - protected: - private: System::Windows::Forms::ToolStripMenuItem^ fileToolStripMenuItem; - private: System::Windows::Forms::ToolStripMenuItem^ newToolStripMenuItem; - private: System::Windows::Forms::ToolStripMenuItem^ openToolStripMenuItem; - private: System::Windows::Forms::ToolStripMenuItem^ saveToolStripMenuItem; - private: System::Windows::Forms::ToolStripMenuItem^ saveAsToolStripMenuItem; - private: System::Windows::Forms::ToolStripMenuItem^ exitToolStripMenuItem; - private: System::Windows::Forms::Button^ TapButton; - private: System::Windows::Forms::Button^ OrangeButton; - private: System::Windows::Forms::Button^ GreenButton; - - - - - - private: System::Windows::Forms::Button^ RedButton; - private: System::Windows::Forms::Button^ BlueButton; - private: System::Windows::Forms::Button^ YellowButton; - private: System::Windows::Forms::Button^ HoldButton; - private: System::Windows::Forms::Button^ EndChartButton; - - - private: System::Windows::Forms::GroupBox^ NoteTypeBox; - - - - - private: System::Windows::Forms::ToolTip^ ToolTip; - - private: System::Windows::Forms::CheckBox^ EndHoldBox; - private: System::Windows::Forms::Button^ InsertButton; - private: System::Windows::Forms::Label^ PosLabel; - private: System::Windows::Forms::Label^ posInfo; - private: System::Windows::Forms::NumericUpDown^ SizeNum; - private: System::Windows::Forms::Label^ SizeInfo; - private: System::Windows::Forms::Label^ SizeLabel; - private: System::Windows::Forms::NumericUpDown^ PosNum; - - - - private: System::Windows::Forms::GroupBox^ GimmickBox; - private: System::Windows::Forms::Button^ MaskButton; - private: System::Windows::Forms::RadioButton^ RemoveMask; - private: System::Windows::Forms::RadioButton^ AddMask; - private: System::Windows::Forms::Button^ Reverse; - private: System::Windows::Forms::Button^ Stop; - private: System::Windows::Forms::Button^ Hispeed; - private: System::Windows::Forms::Button^ TimeSignature; - private: System::Windows::Forms::Button^ BPMChange; - private: System::Windows::Forms::Label^ label1; - private: System::Windows::Forms::NumericUpDown^ BeatNum2; - private: System::Windows::Forms::NumericUpDown^ BeatNum1; - private: System::Windows::Forms::NumericUpDown^ MeasureNum; - - private: System::Windows::Forms::Label^ Beat; - private: System::Windows::Forms::GroupBox^ GimmickSettingsBox; - private: System::Windows::Forms::NumericUpDown^ HiSpeedChangeNum; - private: System::Windows::Forms::NumericUpDown^ TimeSigNum2; - private: System::Windows::Forms::Label^ label9; - private: System::Windows::Forms::NumericUpDown^ TimeSigNum1; - private: System::Windows::Forms::NumericUpDown^ BPMChangeNum; - private: System::Windows::Forms::Label^ label8; - private: System::Windows::Forms::Label^ label7; - private: System::Windows::Forms::Label^ label6; - private: System::Windows::Forms::Label^ label5; - private: System::Windows::Forms::Label^ label4; - private: System::Windows::Forms::Label^ label3; - private: System::Windows::Forms::NumericUpDown^ ReverseEnd2BeatNum2; - private: System::Windows::Forms::Label^ label12; - private: System::Windows::Forms::NumericUpDown^ ReverseEnd2BeatNum1; - private: System::Windows::Forms::NumericUpDown^ ReverseEnd2MeasureNum; - private: System::Windows::Forms::NumericUpDown^ ReverseEnd1BeatNum2; - private: System::Windows::Forms::Label^ label11; - private: System::Windows::Forms::NumericUpDown^ ReverseEnd1BeatNum1; - private: System::Windows::Forms::NumericUpDown^ ReverseEnd1MeasureNum; - private: System::Windows::Forms::NumericUpDown^ StopEndMeasureNum; - private: System::Windows::Forms::NumericUpDown^ StopEndBeatNum2; - private: System::Windows::Forms::Label^ label10; - private: System::Windows::Forms::NumericUpDown^ StopEndBeatNum1; - private: System::Windows::Forms::GroupBox^ InitialSettingsPane; - private: System::Windows::Forms::NumericUpDown^ MovieOffsetNum; - private: System::Windows::Forms::Label^ label17; - private: System::Windows::Forms::NumericUpDown^ OffsetNum; - private: System::Windows::Forms::Label^ label16; - private: System::Windows::Forms::NumericUpDown^ InitTimeSigNum2; - private: System::Windows::Forms::Label^ label15; - private: System::Windows::Forms::NumericUpDown^ InitTimeSigNum1; - private: System::Windows::Forms::Label^ label14; - private: System::Windows::Forms::NumericUpDown^ InitialBPMNum; - private: System::Windows::Forms::Label^ label13; - -private: System::Windows::Forms::RadioButton^ BonusFlairRadioButton; -private: System::Windows::Forms::RadioButton^ BonusGetRadioButton; -private: System::Windows::Forms::RadioButton^ NoBonusRadioButton; -private: System::Windows::Forms::Button^ InitialSetSave; -private: System::Windows::Forms::GroupBox^ MaskSettingsBox; -private: System::Windows::Forms::RadioButton^ MaskCenter; -private: System::Windows::Forms::RadioButton^ MaskCClockwise; -private: System::Windows::Forms::RadioButton^ MaskClockwise; - -private: System::Windows::Forms::Label^ CurrentObjectText; -private: System::Windows::Forms::GroupBox^ PreChartViewBox; -private: System::Windows::Forms::Button^ NextGimmickButton; -private: System::Windows::Forms::Button^ PrevGimmickButton; - - -private: System::Windows::Forms::Button^ DeleteGimmickButton; -private: System::Windows::Forms::GroupBox^ NotesViewBox; -private: System::Windows::Forms::Button^ DeleteNoteButton; -private: System::Windows::Forms::Button^ NextNoteButton; - -private: System::Windows::Forms::Button^ PrevNoteButton; -private: System::Windows::Forms::Label^ GimmickBeatLabel; - -private: System::Windows::Forms::Label^ label22; -private: System::Windows::Forms::Label^ label21; -private: System::Windows::Forms::Label^ label20; -private: System::Windows::Forms::Label^ label19; -private: System::Windows::Forms::Label^ label28; -private: System::Windows::Forms::Label^ label27; -private: System::Windows::Forms::Label^ label26; -private: System::Windows::Forms::Label^ label25; -private: System::Windows::Forms::Label^ label24; -private: System::Windows::Forms::Label^ label23; -private: System::Windows::Forms::Label^ GimmickValueLabel; -private: System::Windows::Forms::Label^ GimmickTypeLabel; -private: System::Windows::Forms::Label^ GimmickSubBeatLabel; -private: System::Windows::Forms::Label^ NotesMaskLabel; -private: System::Windows::Forms::Label^ NotesSizeLabel; -private: System::Windows::Forms::Label^ NotesPosLabel; -private: System::Windows::Forms::Label^ NotesTypeLabel; -private: System::Windows::Forms::Label^ NotesSubBeatLabel; -private: System::Windows::Forms::Label^ NotesBeatLabel; - - -private: System::Windows::Forms::Label^ label29; -private: System::Windows::Forms::OpenFileDialog^ openFileDialogChart; -private: System::Windows::Forms::SaveFileDialog^ saveFileDialog1; - - -private: System::Windows::Forms::ToolStripMenuItem^ aboutToolStripMenuItem; -private: System::Windows::Forms::CheckBox^ MatchTimeCheckBox; -private: System::Windows::Forms::CheckBox^ MatchNoteCheckBox; -private: System::Windows::Forms::Button^ PrevBeatButton; -private: System::Windows::Forms::Button^ NextBeatButton; -private: System::Windows::Forms::Button^ EditNoteButton; -private: System::Windows::Forms::GroupBox^ CurrentNoteBox; -private: System::Windows::Forms::TrackBar^ SizeTrackBar; -private: System::Windows::Forms::TrackBar^ PosTrackBar; -private: System::IO::FileSystemWatcher^ fileSystemWatcher1; -private: System::Windows::Forms::Panel^ CirclePanel; -private: System::Windows::Forms::GroupBox^ VisualSettingsBox; -private: System::Windows::Forms::Label^ label2; -private: System::Windows::Forms::NumericUpDown^ VisualHispeed; -private: System::Windows::Forms::TrackBar^ songTrackSlider; - -private: System::Windows::Forms::Button^ PlayButton; - -private: System::Windows::Forms::GroupBox^ SongPlaybackBox; - -private: System::Windows::Forms::Label^ songFileName; -private: System::Windows::Forms::Button^ selectSongFile; -private: System::Windows::Forms::OpenFileDialog^ openFileDialogSong; -private: System::Windows::Forms::Label^ VolumeLabel; -//private: System::Windows::Forms::Timer^ timer1; -private: System::Windows::Forms::TrackBar^ SongVolume; - -private: System::ComponentModel::BackgroundWorker^ backgroundWorkerSong; -private: System::ComponentModel::BackgroundWorker^ backgroundWorkerPaint; -private: System::ComponentModel::BackgroundWorker^ backgroundWorker1; -private: System::ComponentModel::BackgroundWorker^ backgroundWorker2; - -private: System::Windows::Forms::NumericUpDown^ PlaybackSpeedNum; -private: System::Windows::Forms::Label^ label30; - -private: System::Windows::Forms::ToolStripMenuItem^ viewToolStripMenuItem; -private: System::Windows::Forms::ToolStripMenuItem^ showCursorToolStripMenuItem; -private: System::Windows::Forms::ToolStripMenuItem^ showCursorDuringPlaybackToolStripMenuItem; -private: System::Windows::Forms::GroupBox^ CurrentObjectBox; -private: System::Windows::Forms::ToolStripMenuItem^ aboutBAKKAEditorToolStripMenuItem; -private: System::Windows::Forms::ToolStripMenuItem^ highlightViewedNoteToolStripMenuItem; -private: System::Windows::Forms::ToolStripMenuItem^ editToolStripMenuItem; -private: System::Windows::Forms::ToolStripMenuItem^ undoToolStripMenuItem; -private: System::Windows::Forms::ToolStripMenuItem^ redoToolStripMenuItem; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - private: System::ComponentModel::IContainer^ components; - - - - - - - - - - - private: - /// - /// Required designer variable. - /// - - -#pragma region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - void InitializeComponent(void) - { - this->components = (gcnew System::ComponentModel::Container()); - System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(MyForm::typeid)); - this->menuStrip = (gcnew System::Windows::Forms::MenuStrip()); - this->fileToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->newToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->openToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->saveToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->saveAsToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->exitToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->editToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->undoToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->redoToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->viewToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->showCursorToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->showCursorDuringPlaybackToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->highlightViewedNoteToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->aboutToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->aboutBAKKAEditorToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); - this->TapButton = (gcnew System::Windows::Forms::Button()); - this->OrangeButton = (gcnew System::Windows::Forms::Button()); - this->GreenButton = (gcnew System::Windows::Forms::Button()); - this->RedButton = (gcnew System::Windows::Forms::Button()); - this->BlueButton = (gcnew System::Windows::Forms::Button()); - this->YellowButton = (gcnew System::Windows::Forms::Button()); - this->HoldButton = (gcnew System::Windows::Forms::Button()); - this->EndChartButton = (gcnew System::Windows::Forms::Button()); - this->NoteTypeBox = (gcnew System::Windows::Forms::GroupBox()); - this->BonusFlairRadioButton = (gcnew System::Windows::Forms::RadioButton()); - this->BonusGetRadioButton = (gcnew System::Windows::Forms::RadioButton()); - this->NoBonusRadioButton = (gcnew System::Windows::Forms::RadioButton()); - this->EndHoldBox = (gcnew System::Windows::Forms::CheckBox()); - this->ToolTip = (gcnew System::Windows::Forms::ToolTip(this->components)); - this->BPMChange = (gcnew System::Windows::Forms::Button()); - this->TimeSignature = (gcnew System::Windows::Forms::Button()); - this->Hispeed = (gcnew System::Windows::Forms::Button()); - this->Stop = (gcnew System::Windows::Forms::Button()); - this->Reverse = (gcnew System::Windows::Forms::Button()); - this->VisualHispeed = (gcnew System::Windows::Forms::NumericUpDown()); - this->label2 = (gcnew System::Windows::Forms::Label()); - this->label30 = (gcnew System::Windows::Forms::Label()); - this->PlaybackSpeedNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->EditNoteButton = (gcnew System::Windows::Forms::Button()); - this->MaskButton = (gcnew System::Windows::Forms::Button()); - this->InsertButton = (gcnew System::Windows::Forms::Button()); - this->PosLabel = (gcnew System::Windows::Forms::Label()); - this->posInfo = (gcnew System::Windows::Forms::Label()); - this->SizeNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->SizeInfo = (gcnew System::Windows::Forms::Label()); - this->SizeLabel = (gcnew System::Windows::Forms::Label()); - this->PosNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->label1 = (gcnew System::Windows::Forms::Label()); - this->BeatNum2 = (gcnew System::Windows::Forms::NumericUpDown()); - this->BeatNum1 = (gcnew System::Windows::Forms::NumericUpDown()); - this->MeasureNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->Beat = (gcnew System::Windows::Forms::Label()); - this->GimmickBox = (gcnew System::Windows::Forms::GroupBox()); - this->RemoveMask = (gcnew System::Windows::Forms::RadioButton()); - this->AddMask = (gcnew System::Windows::Forms::RadioButton()); - this->GimmickSettingsBox = (gcnew System::Windows::Forms::GroupBox()); - this->ReverseEnd2BeatNum2 = (gcnew System::Windows::Forms::NumericUpDown()); - this->label12 = (gcnew System::Windows::Forms::Label()); - this->ReverseEnd2BeatNum1 = (gcnew System::Windows::Forms::NumericUpDown()); - this->ReverseEnd2MeasureNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->ReverseEnd1BeatNum2 = (gcnew System::Windows::Forms::NumericUpDown()); - this->label11 = (gcnew System::Windows::Forms::Label()); - this->ReverseEnd1BeatNum1 = (gcnew System::Windows::Forms::NumericUpDown()); - this->ReverseEnd1MeasureNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->StopEndMeasureNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->StopEndBeatNum2 = (gcnew System::Windows::Forms::NumericUpDown()); - this->label10 = (gcnew System::Windows::Forms::Label()); - this->StopEndBeatNum1 = (gcnew System::Windows::Forms::NumericUpDown()); - this->HiSpeedChangeNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->TimeSigNum2 = (gcnew System::Windows::Forms::NumericUpDown()); - this->label9 = (gcnew System::Windows::Forms::Label()); - this->TimeSigNum1 = (gcnew System::Windows::Forms::NumericUpDown()); - this->BPMChangeNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->label8 = (gcnew System::Windows::Forms::Label()); - this->label7 = (gcnew System::Windows::Forms::Label()); - this->label6 = (gcnew System::Windows::Forms::Label()); - this->label5 = (gcnew System::Windows::Forms::Label()); - this->label4 = (gcnew System::Windows::Forms::Label()); - this->label3 = (gcnew System::Windows::Forms::Label()); - this->InitialSettingsPane = (gcnew System::Windows::Forms::GroupBox()); - this->InitialSetSave = (gcnew System::Windows::Forms::Button()); - this->MovieOffsetNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->label17 = (gcnew System::Windows::Forms::Label()); - this->OffsetNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->label16 = (gcnew System::Windows::Forms::Label()); - this->InitTimeSigNum2 = (gcnew System::Windows::Forms::NumericUpDown()); - this->label15 = (gcnew System::Windows::Forms::Label()); - this->InitTimeSigNum1 = (gcnew System::Windows::Forms::NumericUpDown()); - this->label14 = (gcnew System::Windows::Forms::Label()); - this->InitialBPMNum = (gcnew System::Windows::Forms::NumericUpDown()); - this->label13 = (gcnew System::Windows::Forms::Label()); - this->label29 = (gcnew System::Windows::Forms::Label()); - this->MaskSettingsBox = (gcnew System::Windows::Forms::GroupBox()); - this->MaskCenter = (gcnew System::Windows::Forms::RadioButton()); - this->MaskCClockwise = (gcnew System::Windows::Forms::RadioButton()); - this->MaskClockwise = (gcnew System::Windows::Forms::RadioButton()); - this->CurrentObjectText = (gcnew System::Windows::Forms::Label()); - this->PreChartViewBox = (gcnew System::Windows::Forms::GroupBox()); - this->GimmickValueLabel = (gcnew System::Windows::Forms::Label()); - this->GimmickTypeLabel = (gcnew System::Windows::Forms::Label()); - this->GimmickSubBeatLabel = (gcnew System::Windows::Forms::Label()); - this->GimmickBeatLabel = (gcnew System::Windows::Forms::Label()); - this->label22 = (gcnew System::Windows::Forms::Label()); - this->label21 = (gcnew System::Windows::Forms::Label()); - this->label20 = (gcnew System::Windows::Forms::Label()); - this->label19 = (gcnew System::Windows::Forms::Label()); - this->NextGimmickButton = (gcnew System::Windows::Forms::Button()); - this->PrevGimmickButton = (gcnew System::Windows::Forms::Button()); - this->DeleteGimmickButton = (gcnew System::Windows::Forms::Button()); - this->NotesViewBox = (gcnew System::Windows::Forms::GroupBox()); - this->PrevBeatButton = (gcnew System::Windows::Forms::Button()); - this->NextBeatButton = (gcnew System::Windows::Forms::Button()); - this->MatchNoteCheckBox = (gcnew System::Windows::Forms::CheckBox()); - this->MatchTimeCheckBox = (gcnew System::Windows::Forms::CheckBox()); - this->NotesMaskLabel = (gcnew System::Windows::Forms::Label()); - this->NotesSizeLabel = (gcnew System::Windows::Forms::Label()); - this->NotesPosLabel = (gcnew System::Windows::Forms::Label()); - this->NotesTypeLabel = (gcnew System::Windows::Forms::Label()); - this->NotesSubBeatLabel = (gcnew System::Windows::Forms::Label()); - this->NotesBeatLabel = (gcnew System::Windows::Forms::Label()); - this->label28 = (gcnew System::Windows::Forms::Label()); - this->label27 = (gcnew System::Windows::Forms::Label()); - this->label26 = (gcnew System::Windows::Forms::Label()); - this->label25 = (gcnew System::Windows::Forms::Label()); - this->label24 = (gcnew System::Windows::Forms::Label()); - this->label23 = (gcnew System::Windows::Forms::Label()); - this->NextNoteButton = (gcnew System::Windows::Forms::Button()); - this->PrevNoteButton = (gcnew System::Windows::Forms::Button()); - this->DeleteNoteButton = (gcnew System::Windows::Forms::Button()); - this->openFileDialogChart = (gcnew System::Windows::Forms::OpenFileDialog()); - this->saveFileDialog1 = (gcnew System::Windows::Forms::SaveFileDialog()); - this->CurrentNoteBox = (gcnew System::Windows::Forms::GroupBox()); - this->SizeTrackBar = (gcnew System::Windows::Forms::TrackBar()); - this->PosTrackBar = (gcnew System::Windows::Forms::TrackBar()); - this->fileSystemWatcher1 = (gcnew System::IO::FileSystemWatcher()); - this->CirclePanel = (gcnew System::Windows::Forms::Panel()); - this->VisualSettingsBox = (gcnew System::Windows::Forms::GroupBox()); - this->PlayButton = (gcnew System::Windows::Forms::Button()); - this->songTrackSlider = (gcnew System::Windows::Forms::TrackBar()); - this->selectSongFile = (gcnew System::Windows::Forms::Button()); - this->SongPlaybackBox = (gcnew System::Windows::Forms::GroupBox()); - this->VolumeLabel = (gcnew System::Windows::Forms::Label()); - this->SongVolume = (gcnew System::Windows::Forms::TrackBar()); - this->songFileName = (gcnew System::Windows::Forms::Label()); - this->openFileDialogSong = (gcnew System::Windows::Forms::OpenFileDialog()); - this->backgroundWorkerSong = (gcnew System::ComponentModel::BackgroundWorker()); - this->backgroundWorkerPaint = (gcnew System::ComponentModel::BackgroundWorker()); - this->backgroundWorker1 = (gcnew System::ComponentModel::BackgroundWorker()); - this->backgroundWorker2 = (gcnew System::ComponentModel::BackgroundWorker()); - this->CurrentObjectBox = (gcnew System::Windows::Forms::GroupBox()); - this->menuStrip->SuspendLayout(); - this->NoteTypeBox->SuspendLayout(); - (cli::safe_cast(this->VisualHispeed))->BeginInit(); - (cli::safe_cast(this->PlaybackSpeedNum))->BeginInit(); - (cli::safe_cast(this->SizeNum))->BeginInit(); - (cli::safe_cast(this->PosNum))->BeginInit(); - (cli::safe_cast(this->BeatNum2))->BeginInit(); - (cli::safe_cast(this->BeatNum1))->BeginInit(); - (cli::safe_cast(this->MeasureNum))->BeginInit(); - this->GimmickBox->SuspendLayout(); - this->GimmickSettingsBox->SuspendLayout(); - (cli::safe_cast(this->ReverseEnd2BeatNum2))->BeginInit(); - (cli::safe_cast(this->ReverseEnd2BeatNum1))->BeginInit(); - (cli::safe_cast(this->ReverseEnd2MeasureNum))->BeginInit(); - (cli::safe_cast(this->ReverseEnd1BeatNum2))->BeginInit(); - (cli::safe_cast(this->ReverseEnd1BeatNum1))->BeginInit(); - (cli::safe_cast(this->ReverseEnd1MeasureNum))->BeginInit(); - (cli::safe_cast(this->StopEndMeasureNum))->BeginInit(); - (cli::safe_cast(this->StopEndBeatNum2))->BeginInit(); - (cli::safe_cast(this->StopEndBeatNum1))->BeginInit(); - (cli::safe_cast(this->HiSpeedChangeNum))->BeginInit(); - (cli::safe_cast(this->TimeSigNum2))->BeginInit(); - (cli::safe_cast(this->TimeSigNum1))->BeginInit(); - (cli::safe_cast(this->BPMChangeNum))->BeginInit(); - this->InitialSettingsPane->SuspendLayout(); - (cli::safe_cast(this->MovieOffsetNum))->BeginInit(); - (cli::safe_cast(this->OffsetNum))->BeginInit(); - (cli::safe_cast(this->InitTimeSigNum2))->BeginInit(); - (cli::safe_cast(this->InitTimeSigNum1))->BeginInit(); - (cli::safe_cast(this->InitialBPMNum))->BeginInit(); - this->MaskSettingsBox->SuspendLayout(); - this->PreChartViewBox->SuspendLayout(); - this->NotesViewBox->SuspendLayout(); - this->CurrentNoteBox->SuspendLayout(); - (cli::safe_cast(this->SizeTrackBar))->BeginInit(); - (cli::safe_cast(this->PosTrackBar))->BeginInit(); - (cli::safe_cast(this->fileSystemWatcher1))->BeginInit(); - this->VisualSettingsBox->SuspendLayout(); - (cli::safe_cast(this->songTrackSlider))->BeginInit(); - this->SongPlaybackBox->SuspendLayout(); - (cli::safe_cast(this->SongVolume))->BeginInit(); - this->CurrentObjectBox->SuspendLayout(); - this->SuspendLayout(); - // - // menuStrip - // - resources->ApplyResources(this->menuStrip, L"menuStrip"); - this->menuStrip->ImageScalingSize = System::Drawing::Size(24, 24); - this->menuStrip->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(4) { - this->fileToolStripMenuItem, - this->editToolStripMenuItem, this->viewToolStripMenuItem, this->aboutToolStripMenuItem - }); - this->menuStrip->Name = L"menuStrip"; - // - // fileToolStripMenuItem - // - this->fileToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(5) { - this->newToolStripMenuItem, - this->openToolStripMenuItem, this->saveToolStripMenuItem, this->saveAsToolStripMenuItem, this->exitToolStripMenuItem - }); - this->fileToolStripMenuItem->Name = L"fileToolStripMenuItem"; - resources->ApplyResources(this->fileToolStripMenuItem, L"fileToolStripMenuItem"); - // - // newToolStripMenuItem - // - this->newToolStripMenuItem->Name = L"newToolStripMenuItem"; - resources->ApplyResources(this->newToolStripMenuItem, L"newToolStripMenuItem"); - this->newToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::newToolStripMenuItem_Click); - // - // openToolStripMenuItem - // - this->openToolStripMenuItem->Name = L"openToolStripMenuItem"; - resources->ApplyResources(this->openToolStripMenuItem, L"openToolStripMenuItem"); - this->openToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::openToolStripMenuItem_Click); - // - // saveToolStripMenuItem - // - this->saveToolStripMenuItem->Name = L"saveToolStripMenuItem"; - resources->ApplyResources(this->saveToolStripMenuItem, L"saveToolStripMenuItem"); - this->saveToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::saveToolStripMenuItem_Click); - // - // saveAsToolStripMenuItem - // - this->saveAsToolStripMenuItem->Name = L"saveAsToolStripMenuItem"; - resources->ApplyResources(this->saveAsToolStripMenuItem, L"saveAsToolStripMenuItem"); - this->saveAsToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::saveAsToolStripMenuItem_Click); - // - // exitToolStripMenuItem - // - this->exitToolStripMenuItem->Name = L"exitToolStripMenuItem"; - resources->ApplyResources(this->exitToolStripMenuItem, L"exitToolStripMenuItem"); - this->exitToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::exitToolStripMenuItem_Click); - // - // editToolStripMenuItem - // - this->editToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) { - this->undoToolStripMenuItem, - this->redoToolStripMenuItem - }); - this->editToolStripMenuItem->Name = L"editToolStripMenuItem"; - resources->ApplyResources(this->editToolStripMenuItem, L"editToolStripMenuItem"); - // - // undoToolStripMenuItem - // - this->undoToolStripMenuItem->Name = L"undoToolStripMenuItem"; - resources->ApplyResources(this->undoToolStripMenuItem, L"undoToolStripMenuItem"); - this->undoToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::undoToolStripMenuItem_Click); - // - // redoToolStripMenuItem - // - this->redoToolStripMenuItem->Name = L"redoToolStripMenuItem"; - resources->ApplyResources(this->redoToolStripMenuItem, L"redoToolStripMenuItem"); - this->redoToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::redoToolStripMenuItem_Click); - // - // viewToolStripMenuItem - // - this->viewToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(3) { - this->showCursorToolStripMenuItem, - this->showCursorDuringPlaybackToolStripMenuItem, this->highlightViewedNoteToolStripMenuItem - }); - this->viewToolStripMenuItem->Name = L"viewToolStripMenuItem"; - resources->ApplyResources(this->viewToolStripMenuItem, L"viewToolStripMenuItem"); - // - // showCursorToolStripMenuItem - // - this->showCursorToolStripMenuItem->Checked = true; - this->showCursorToolStripMenuItem->CheckOnClick = true; - this->showCursorToolStripMenuItem->CheckState = System::Windows::Forms::CheckState::Checked; - this->showCursorToolStripMenuItem->Name = L"showCursorToolStripMenuItem"; - resources->ApplyResources(this->showCursorToolStripMenuItem, L"showCursorToolStripMenuItem"); - this->showCursorToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::showCursorToolStripMenuItem_Click); - // - // showCursorDuringPlaybackToolStripMenuItem - // - this->showCursorDuringPlaybackToolStripMenuItem->CheckOnClick = true; - this->showCursorDuringPlaybackToolStripMenuItem->Name = L"showCursorDuringPlaybackToolStripMenuItem"; - resources->ApplyResources(this->showCursorDuringPlaybackToolStripMenuItem, L"showCursorDuringPlaybackToolStripMenuItem"); - // - // highlightViewedNoteToolStripMenuItem - // - this->highlightViewedNoteToolStripMenuItem->Checked = true; - this->highlightViewedNoteToolStripMenuItem->CheckOnClick = true; - this->highlightViewedNoteToolStripMenuItem->CheckState = System::Windows::Forms::CheckState::Checked; - this->highlightViewedNoteToolStripMenuItem->Name = L"highlightViewedNoteToolStripMenuItem"; - resources->ApplyResources(this->highlightViewedNoteToolStripMenuItem, L"highlightViewedNoteToolStripMenuItem"); - this->highlightViewedNoteToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::highlightViewedNoteToolStripMenuItem_Click); - // - // aboutToolStripMenuItem - // - this->aboutToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(1) { this->aboutBAKKAEditorToolStripMenuItem }); - this->aboutToolStripMenuItem->Name = L"aboutToolStripMenuItem"; - resources->ApplyResources(this->aboutToolStripMenuItem, L"aboutToolStripMenuItem"); - // - // aboutBAKKAEditorToolStripMenuItem - // - this->aboutBAKKAEditorToolStripMenuItem->Name = L"aboutBAKKAEditorToolStripMenuItem"; - resources->ApplyResources(this->aboutBAKKAEditorToolStripMenuItem, L"aboutBAKKAEditorToolStripMenuItem"); - this->aboutBAKKAEditorToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::aboutBAKKAEditorToolStripMenuItem_Click); - // - // TapButton - // - resources->ApplyResources(this->TapButton, L"TapButton"); - this->TapButton->BackColor = System::Drawing::Color::Fuchsia; - this->TapButton->Name = L"TapButton"; - this->TapButton->UseVisualStyleBackColor = false; - this->TapButton->Click += gcnew System::EventHandler(this, &MyForm::TapButton_Click); - // - // OrangeButton - // - resources->ApplyResources(this->OrangeButton, L"OrangeButton"); - this->OrangeButton->BackColor = System::Drawing::Color::FromArgb(static_cast(static_cast(255)), static_cast(static_cast(128)), - static_cast(static_cast(0))); - this->OrangeButton->Name = L"OrangeButton"; - this->OrangeButton->UseVisualStyleBackColor = false; - this->OrangeButton->Click += gcnew System::EventHandler(this, &MyForm::OrangeButton_Click); - // - // GreenButton - // - resources->ApplyResources(this->GreenButton, L"GreenButton"); - this->GreenButton->BackColor = System::Drawing::Color::Lime; - this->GreenButton->Name = L"GreenButton"; - this->GreenButton->UseVisualStyleBackColor = false; - this->GreenButton->Click += gcnew System::EventHandler(this, &MyForm::GreenButton_Click); - // - // RedButton - // - resources->ApplyResources(this->RedButton, L"RedButton"); - this->RedButton->BackColor = System::Drawing::Color::Red; - this->RedButton->ForeColor = System::Drawing::Color::White; - this->RedButton->Name = L"RedButton"; - this->RedButton->UseVisualStyleBackColor = false; - this->RedButton->Click += gcnew System::EventHandler(this, &MyForm::RedButton_Click); - // - // BlueButton - // - resources->ApplyResources(this->BlueButton, L"BlueButton"); - this->BlueButton->BackColor = System::Drawing::Color::Aqua; - this->BlueButton->Name = L"BlueButton"; - this->BlueButton->UseVisualStyleBackColor = false; - this->BlueButton->Click += gcnew System::EventHandler(this, &MyForm::BlueButton_Click); - // - // YellowButton - // - resources->ApplyResources(this->YellowButton, L"YellowButton"); - this->YellowButton->BackColor = System::Drawing::Color::FromArgb(static_cast(static_cast(204)), static_cast(static_cast(190)), - static_cast(static_cast(45))); - this->YellowButton->Name = L"YellowButton"; - this->YellowButton->UseVisualStyleBackColor = false; - this->YellowButton->Click += gcnew System::EventHandler(this, &MyForm::YellowButton_Click); - // - // HoldButton - // - resources->ApplyResources(this->HoldButton, L"HoldButton"); - this->HoldButton->BackColor = System::Drawing::Color::Yellow; - this->HoldButton->Name = L"HoldButton"; - this->ToolTip->SetToolTip(this->HoldButton, resources->GetString(L"HoldButton.ToolTip")); - this->HoldButton->UseVisualStyleBackColor = false; - this->HoldButton->Click += gcnew System::EventHandler(this, &MyForm::HoldButton_Click); - // - // EndChartButton - // - resources->ApplyResources(this->EndChartButton, L"EndChartButton"); - this->EndChartButton->Name = L"EndChartButton"; - this->ToolTip->SetToolTip(this->EndChartButton, resources->GetString(L"EndChartButton.ToolTip")); - this->EndChartButton->UseVisualStyleBackColor = true; - this->EndChartButton->Click += gcnew System::EventHandler(this, &MyForm::EndChartButton_Click); - // - // NoteTypeBox - // - this->NoteTypeBox->Controls->Add(this->BonusFlairRadioButton); - this->NoteTypeBox->Controls->Add(this->BonusGetRadioButton); - this->NoteTypeBox->Controls->Add(this->NoBonusRadioButton); - this->NoteTypeBox->Controls->Add(this->EndHoldBox); - this->NoteTypeBox->Controls->Add(this->EndChartButton); - this->NoteTypeBox->Controls->Add(this->TapButton); - this->NoteTypeBox->Controls->Add(this->HoldButton); - this->NoteTypeBox->Controls->Add(this->OrangeButton); - this->NoteTypeBox->Controls->Add(this->YellowButton); - this->NoteTypeBox->Controls->Add(this->GreenButton); - this->NoteTypeBox->Controls->Add(this->BlueButton); - this->NoteTypeBox->Controls->Add(this->RedButton); - resources->ApplyResources(this->NoteTypeBox, L"NoteTypeBox"); - this->NoteTypeBox->Name = L"NoteTypeBox"; - this->NoteTypeBox->TabStop = false; - // - // BonusFlairRadioButton - // - resources->ApplyResources(this->BonusFlairRadioButton, L"BonusFlairRadioButton"); - this->BonusFlairRadioButton->Name = L"BonusFlairRadioButton"; - this->ToolTip->SetToolTip(this->BonusFlairRadioButton, resources->GetString(L"BonusFlairRadioButton.ToolTip")); - this->BonusFlairRadioButton->UseVisualStyleBackColor = true; - this->BonusFlairRadioButton->CheckedChanged += gcnew System::EventHandler(this, &MyForm::NoteRadioButton_CheckedChanged); - // - // BonusGetRadioButton - // - resources->ApplyResources(this->BonusGetRadioButton, L"BonusGetRadioButton"); - this->BonusGetRadioButton->Name = L"BonusGetRadioButton"; - this->ToolTip->SetToolTip(this->BonusGetRadioButton, resources->GetString(L"BonusGetRadioButton.ToolTip")); - this->BonusGetRadioButton->UseVisualStyleBackColor = true; - this->BonusGetRadioButton->CheckedChanged += gcnew System::EventHandler(this, &MyForm::NoteRadioButton_CheckedChanged); - // - // NoBonusRadioButton - // - resources->ApplyResources(this->NoBonusRadioButton, L"NoBonusRadioButton"); - this->NoBonusRadioButton->Checked = true; - this->NoBonusRadioButton->Name = L"NoBonusRadioButton"; - this->NoBonusRadioButton->TabStop = true; - this->NoBonusRadioButton->UseVisualStyleBackColor = true; - this->NoBonusRadioButton->CheckedChanged += gcnew System::EventHandler(this, &MyForm::NoteRadioButton_CheckedChanged); - // - // EndHoldBox - // - resources->ApplyResources(this->EndHoldBox, L"EndHoldBox"); - this->EndHoldBox->Name = L"EndHoldBox"; - this->ToolTip->SetToolTip(this->EndHoldBox, resources->GetString(L"EndHoldBox.ToolTip")); - this->EndHoldBox->UseVisualStyleBackColor = true; - this->EndHoldBox->CheckedChanged += gcnew System::EventHandler(this, &MyForm::EndHoldBox_CheckedChanged); - // - // BPMChange - // - resources->ApplyResources(this->BPMChange, L"BPMChange"); - this->BPMChange->Name = L"BPMChange"; - this->ToolTip->SetToolTip(this->BPMChange, resources->GetString(L"BPMChange.ToolTip")); - this->BPMChange->UseVisualStyleBackColor = true; - this->BPMChange->Click += gcnew System::EventHandler(this, &MyForm::BPMChange_Click); - // - // TimeSignature - // - resources->ApplyResources(this->TimeSignature, L"TimeSignature"); - this->TimeSignature->Name = L"TimeSignature"; - this->ToolTip->SetToolTip(this->TimeSignature, resources->GetString(L"TimeSignature.ToolTip")); - this->TimeSignature->UseVisualStyleBackColor = true; - this->TimeSignature->Click += gcnew System::EventHandler(this, &MyForm::TimeSignature_Click); - // - // Hispeed - // - resources->ApplyResources(this->Hispeed, L"Hispeed"); - this->Hispeed->Name = L"Hispeed"; - this->ToolTip->SetToolTip(this->Hispeed, resources->GetString(L"Hispeed.ToolTip")); - this->Hispeed->UseVisualStyleBackColor = true; - this->Hispeed->Click += gcnew System::EventHandler(this, &MyForm::Hispeed_Click); - // - // Stop - // - resources->ApplyResources(this->Stop, L"Stop"); - this->Stop->Name = L"Stop"; - this->ToolTip->SetToolTip(this->Stop, resources->GetString(L"Stop.ToolTip")); - this->Stop->UseVisualStyleBackColor = true; - this->Stop->Click += gcnew System::EventHandler(this, &MyForm::Stop_Click); - // - // Reverse - // - resources->ApplyResources(this->Reverse, L"Reverse"); - this->Reverse->Name = L"Reverse"; - this->ToolTip->SetToolTip(this->Reverse, resources->GetString(L"Reverse.ToolTip")); - this->Reverse->UseVisualStyleBackColor = true; - this->Reverse->Click += gcnew System::EventHandler(this, &MyForm::Reverse_Click); - // - // VisualHispeed - // - this->VisualHispeed->BackColor = System::Drawing::SystemColors::Window; - this->VisualHispeed->DecimalPlaces = 2; - this->VisualHispeed->Increment = System::Decimal(gcnew cli::array< System::Int32 >(4) { 5, 0, 0, 131072 }); - resources->ApplyResources(this->VisualHispeed, L"VisualHispeed"); - this->VisualHispeed->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 5, 0, 0, 0 }); - this->VisualHispeed->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 5, 0, 0, 131072 }); - this->VisualHispeed->Name = L"VisualHispeed"; - this->ToolTip->SetToolTip(this->VisualHispeed, resources->GetString(L"VisualHispeed.ToolTip")); - this->VisualHispeed->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 5, 0, 0, 65536 }); - this->VisualHispeed->ValueChanged += gcnew System::EventHandler(this, &MyForm::VisualHispeed_ValueChanged); - // - // label2 - // - resources->ApplyResources(this->label2, L"label2"); - this->label2->Name = L"label2"; - this->ToolTip->SetToolTip(this->label2, resources->GetString(L"label2.ToolTip")); - // - // label30 - // - resources->ApplyResources(this->label30, L"label30"); - this->label30->Name = L"label30"; - this->ToolTip->SetToolTip(this->label30, resources->GetString(L"label30.ToolTip")); - // - // PlaybackSpeedNum - // - this->PlaybackSpeedNum->BackColor = System::Drawing::SystemColors::Window; - this->PlaybackSpeedNum->DecimalPlaces = 2; - this->PlaybackSpeedNum->Increment = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 65536 }); - resources->ApplyResources(this->PlaybackSpeedNum, L"PlaybackSpeedNum"); - this->PlaybackSpeedNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 2, 0, 0, 0 }); - this->PlaybackSpeedNum->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 65536 }); - this->PlaybackSpeedNum->Name = L"PlaybackSpeedNum"; - this->ToolTip->SetToolTip(this->PlaybackSpeedNum, resources->GetString(L"PlaybackSpeedNum.ToolTip")); - this->PlaybackSpeedNum->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->PlaybackSpeedNum->ValueChanged += gcnew System::EventHandler(this, &MyForm::PlaybackSpeedNum_ValueChanged); - // - // EditNoteButton - // - resources->ApplyResources(this->EditNoteButton, L"EditNoteButton"); - this->EditNoteButton->Name = L"EditNoteButton"; - this->ToolTip->SetToolTip(this->EditNoteButton, resources->GetString(L"EditNoteButton.ToolTip")); - this->EditNoteButton->UseVisualStyleBackColor = true; - this->EditNoteButton->Click += gcnew System::EventHandler(this, &MyForm::EditNoteButton_Click); - // - // MaskButton - // - resources->ApplyResources(this->MaskButton, L"MaskButton"); - this->MaskButton->Name = L"MaskButton"; - this->MaskButton->UseVisualStyleBackColor = true; - this->MaskButton->Click += gcnew System::EventHandler(this, &MyForm::MaskButton_Click); - // - // InsertButton - // - resources->ApplyResources(this->InsertButton, L"InsertButton"); - this->InsertButton->Name = L"InsertButton"; - this->InsertButton->UseVisualStyleBackColor = true; - this->InsertButton->Click += gcnew System::EventHandler(this, &MyForm::InsertButton_Click); - // - // PosLabel - // - resources->ApplyResources(this->PosLabel, L"PosLabel"); - this->PosLabel->Name = L"PosLabel"; - // - // posInfo - // - resources->ApplyResources(this->posInfo, L"posInfo"); - this->posInfo->Name = L"posInfo"; - // - // SizeNum - // - resources->ApplyResources(this->SizeNum, L"SizeNum"); - this->SizeNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 60, 0, 0, 0 }); - this->SizeNum->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->SizeNum->Name = L"SizeNum"; - this->SizeNum->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->SizeNum->ValueChanged += gcnew System::EventHandler(this, &MyForm::SizeNum_ValueChanged); - // - // SizeInfo - // - resources->ApplyResources(this->SizeInfo, L"SizeInfo"); - this->SizeInfo->Name = L"SizeInfo"; - // - // SizeLabel - // - resources->ApplyResources(this->SizeLabel, L"SizeLabel"); - this->SizeLabel->Name = L"SizeLabel"; - // - // PosNum - // - resources->ApplyResources(this->PosNum, L"PosNum"); - this->PosNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 59, 0, 0, 0 }); - this->PosNum->Name = L"PosNum"; - this->PosNum->ValueChanged += gcnew System::EventHandler(this, &MyForm::PosNum_ValueChanged); - // - // label1 - // - resources->ApplyResources(this->label1, L"label1"); - this->label1->Name = L"label1"; - // - // BeatNum2 - // - resources->ApplyResources(this->BeatNum2, L"BeatNum2"); - this->BeatNum2->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1920, 0, 0, 0 }); - this->BeatNum2->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->BeatNum2->Name = L"BeatNum2"; - this->BeatNum2->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 16, 0, 0, 0 }); - this->BeatNum2->ValueChanged += gcnew System::EventHandler(this, &MyForm::BeatNum2_ValueChanged); - // - // BeatNum1 - // - resources->ApplyResources(this->BeatNum1, L"BeatNum1"); - this->BeatNum1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1919, 0, 0, 0 }); - this->BeatNum1->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, System::Int32::MinValue }); - this->BeatNum1->Name = L"BeatNum1"; - this->BeatNum1->ValueChanged += gcnew System::EventHandler(this, &MyForm::BeatNum1_ValueChanged); - // - // MeasureNum - // - resources->ApplyResources(this->MeasureNum, L"MeasureNum"); - this->MeasureNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 9999, 0, 0, 0 }); - this->MeasureNum->Name = L"MeasureNum"; - this->MeasureNum->ValueChanged += gcnew System::EventHandler(this, &MyForm::MeasureNum_ValueChanged); - // - // Beat - // - resources->ApplyResources(this->Beat, L"Beat"); - this->Beat->Name = L"Beat"; - // - // GimmickBox - // - this->GimmickBox->Controls->Add(this->Reverse); - this->GimmickBox->Controls->Add(this->Stop); - this->GimmickBox->Controls->Add(this->Hispeed); - this->GimmickBox->Controls->Add(this->TimeSignature); - this->GimmickBox->Controls->Add(this->BPMChange); - this->GimmickBox->Controls->Add(this->RemoveMask); - this->GimmickBox->Controls->Add(this->AddMask); - this->GimmickBox->Controls->Add(this->MaskButton); - resources->ApplyResources(this->GimmickBox, L"GimmickBox"); - this->GimmickBox->Name = L"GimmickBox"; - this->GimmickBox->TabStop = false; - // - // RemoveMask - // - resources->ApplyResources(this->RemoveMask, L"RemoveMask"); - this->RemoveMask->Name = L"RemoveMask"; - this->RemoveMask->UseVisualStyleBackColor = true; - this->RemoveMask->CheckedChanged += gcnew System::EventHandler(this, &MyForm::RemoveMask_CheckedChanged); - // - // AddMask - // - resources->ApplyResources(this->AddMask, L"AddMask"); - this->AddMask->Checked = true; - this->AddMask->Name = L"AddMask"; - this->AddMask->TabStop = true; - this->AddMask->UseVisualStyleBackColor = true; - this->AddMask->CheckedChanged += gcnew System::EventHandler(this, &MyForm::AddMask_CheckedChanged); - // - // GimmickSettingsBox - // - resources->ApplyResources(this->GimmickSettingsBox, L"GimmickSettingsBox"); - this->GimmickSettingsBox->Controls->Add(this->ReverseEnd2BeatNum2); - this->GimmickSettingsBox->Controls->Add(this->label12); - this->GimmickSettingsBox->Controls->Add(this->ReverseEnd2BeatNum1); - this->GimmickSettingsBox->Controls->Add(this->ReverseEnd2MeasureNum); - this->GimmickSettingsBox->Controls->Add(this->ReverseEnd1BeatNum2); - this->GimmickSettingsBox->Controls->Add(this->label11); - this->GimmickSettingsBox->Controls->Add(this->ReverseEnd1BeatNum1); - this->GimmickSettingsBox->Controls->Add(this->ReverseEnd1MeasureNum); - this->GimmickSettingsBox->Controls->Add(this->StopEndMeasureNum); - this->GimmickSettingsBox->Controls->Add(this->StopEndBeatNum2); - this->GimmickSettingsBox->Controls->Add(this->label10); - this->GimmickSettingsBox->Controls->Add(this->StopEndBeatNum1); - this->GimmickSettingsBox->Controls->Add(this->HiSpeedChangeNum); - this->GimmickSettingsBox->Controls->Add(this->TimeSigNum2); - this->GimmickSettingsBox->Controls->Add(this->label9); - this->GimmickSettingsBox->Controls->Add(this->TimeSigNum1); - this->GimmickSettingsBox->Controls->Add(this->BPMChangeNum); - this->GimmickSettingsBox->Controls->Add(this->label8); - this->GimmickSettingsBox->Controls->Add(this->label7); - this->GimmickSettingsBox->Controls->Add(this->label6); - this->GimmickSettingsBox->Controls->Add(this->label5); - this->GimmickSettingsBox->Controls->Add(this->label4); - this->GimmickSettingsBox->Controls->Add(this->label3); - this->GimmickSettingsBox->Name = L"GimmickSettingsBox"; - this->GimmickSettingsBox->TabStop = false; - // - // ReverseEnd2BeatNum2 - // - resources->ApplyResources(this->ReverseEnd2BeatNum2, L"ReverseEnd2BeatNum2"); - this->ReverseEnd2BeatNum2->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 192, 0, 0, 0 }); - this->ReverseEnd2BeatNum2->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->ReverseEnd2BeatNum2->Name = L"ReverseEnd2BeatNum2"; - this->ReverseEnd2BeatNum2->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 4, 0, 0, 0 }); - // - // label12 - // - resources->ApplyResources(this->label12, L"label12"); - this->label12->Name = L"label12"; - // - // ReverseEnd2BeatNum1 - // - resources->ApplyResources(this->ReverseEnd2BeatNum1, L"ReverseEnd2BeatNum1"); - this->ReverseEnd2BeatNum1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 191, 0, 0, 0 }); - this->ReverseEnd2BeatNum1->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, System::Int32::MinValue }); - this->ReverseEnd2BeatNum1->Name = L"ReverseEnd2BeatNum1"; - this->ReverseEnd2BeatNum1->ValueChanged += gcnew System::EventHandler(this, &MyForm::ReverseEnd2BeatNum1_ValueChanged); - // - // ReverseEnd2MeasureNum - // - resources->ApplyResources(this->ReverseEnd2MeasureNum, L"ReverseEnd2MeasureNum"); - this->ReverseEnd2MeasureNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 9999, 0, 0, 0 }); - this->ReverseEnd2MeasureNum->Name = L"ReverseEnd2MeasureNum"; - // - // ReverseEnd1BeatNum2 - // - resources->ApplyResources(this->ReverseEnd1BeatNum2, L"ReverseEnd1BeatNum2"); - this->ReverseEnd1BeatNum2->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 192, 0, 0, 0 }); - this->ReverseEnd1BeatNum2->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->ReverseEnd1BeatNum2->Name = L"ReverseEnd1BeatNum2"; - this->ReverseEnd1BeatNum2->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 4, 0, 0, 0 }); - // - // label11 - // - resources->ApplyResources(this->label11, L"label11"); - this->label11->Name = L"label11"; - // - // ReverseEnd1BeatNum1 - // - resources->ApplyResources(this->ReverseEnd1BeatNum1, L"ReverseEnd1BeatNum1"); - this->ReverseEnd1BeatNum1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 191, 0, 0, 0 }); - this->ReverseEnd1BeatNum1->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, System::Int32::MinValue }); - this->ReverseEnd1BeatNum1->Name = L"ReverseEnd1BeatNum1"; - this->ReverseEnd1BeatNum1->ValueChanged += gcnew System::EventHandler(this, &MyForm::ReverseEnd1BeatNum1_ValueChanged); - // - // ReverseEnd1MeasureNum - // - resources->ApplyResources(this->ReverseEnd1MeasureNum, L"ReverseEnd1MeasureNum"); - this->ReverseEnd1MeasureNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 9999, 0, 0, 0 }); - this->ReverseEnd1MeasureNum->Name = L"ReverseEnd1MeasureNum"; - // - // StopEndMeasureNum - // - resources->ApplyResources(this->StopEndMeasureNum, L"StopEndMeasureNum"); - this->StopEndMeasureNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 9999, 0, 0, 0 }); - this->StopEndMeasureNum->Name = L"StopEndMeasureNum"; - // - // StopEndBeatNum2 - // - resources->ApplyResources(this->StopEndBeatNum2, L"StopEndBeatNum2"); - this->StopEndBeatNum2->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 192, 0, 0, 0 }); - this->StopEndBeatNum2->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->StopEndBeatNum2->Name = L"StopEndBeatNum2"; - this->StopEndBeatNum2->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 4, 0, 0, 0 }); - // - // label10 - // - resources->ApplyResources(this->label10, L"label10"); - this->label10->Name = L"label10"; - // - // StopEndBeatNum1 - // - resources->ApplyResources(this->StopEndBeatNum1, L"StopEndBeatNum1"); - this->StopEndBeatNum1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 191, 0, 0, 0 }); - this->StopEndBeatNum1->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, System::Int32::MinValue }); - this->StopEndBeatNum1->Name = L"StopEndBeatNum1"; - this->StopEndBeatNum1->ValueChanged += gcnew System::EventHandler(this, &MyForm::StopEndBeatNum1_ValueChanged); - // - // HiSpeedChangeNum - // - this->HiSpeedChangeNum->DecimalPlaces = 6; - resources->ApplyResources(this->HiSpeedChangeNum, L"HiSpeedChangeNum"); - this->HiSpeedChangeNum->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 100, 0, 0, System::Int32::MinValue }); - this->HiSpeedChangeNum->Name = L"HiSpeedChangeNum"; - this->HiSpeedChangeNum->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - // - // TimeSigNum2 - // - resources->ApplyResources(this->TimeSigNum2, L"TimeSigNum2"); - this->TimeSigNum2->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 192, 0, 0, 0 }); - this->TimeSigNum2->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->TimeSigNum2->Name = L"TimeSigNum2"; - this->TimeSigNum2->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 4, 0, 0, 0 }); - // - // label9 - // - resources->ApplyResources(this->label9, L"label9"); - this->label9->Name = L"label9"; - // - // TimeSigNum1 - // - resources->ApplyResources(this->TimeSigNum1, L"TimeSigNum1"); - this->TimeSigNum1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 191, 0, 0, 0 }); - this->TimeSigNum1->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->TimeSigNum1->Name = L"TimeSigNum1"; - this->TimeSigNum1->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 4, 0, 0, 0 }); - // - // BPMChangeNum - // - this->BPMChangeNum->DecimalPlaces = 6; - resources->ApplyResources(this->BPMChangeNum, L"BPMChangeNum"); - this->BPMChangeNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 9999, 0, 0, 0 }); - this->BPMChangeNum->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->BPMChangeNum->Name = L"BPMChangeNum"; - this->BPMChangeNum->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - // - // label8 - // - resources->ApplyResources(this->label8, L"label8"); - this->label8->Name = L"label8"; - // - // label7 - // - resources->ApplyResources(this->label7, L"label7"); - this->label7->Name = L"label7"; - // - // label6 - // - resources->ApplyResources(this->label6, L"label6"); - this->label6->Name = L"label6"; - // - // label5 - // - resources->ApplyResources(this->label5, L"label5"); - this->label5->Name = L"label5"; - // - // label4 - // - resources->ApplyResources(this->label4, L"label4"); - this->label4->Name = L"label4"; - // - // label3 - // - resources->ApplyResources(this->label3, L"label3"); - this->label3->Name = L"label3"; - // - // InitialSettingsPane - // - resources->ApplyResources(this->InitialSettingsPane, L"InitialSettingsPane"); - this->InitialSettingsPane->Controls->Add(this->InitialSetSave); - this->InitialSettingsPane->Controls->Add(this->MovieOffsetNum); - this->InitialSettingsPane->Controls->Add(this->label17); - this->InitialSettingsPane->Controls->Add(this->OffsetNum); - this->InitialSettingsPane->Controls->Add(this->label16); - this->InitialSettingsPane->Controls->Add(this->InitTimeSigNum2); - this->InitialSettingsPane->Controls->Add(this->label15); - this->InitialSettingsPane->Controls->Add(this->InitTimeSigNum1); - this->InitialSettingsPane->Controls->Add(this->label14); - this->InitialSettingsPane->Controls->Add(this->InitialBPMNum); - this->InitialSettingsPane->Controls->Add(this->label13); - this->InitialSettingsPane->Name = L"InitialSettingsPane"; - this->InitialSettingsPane->TabStop = false; - // - // InitialSetSave - // - resources->ApplyResources(this->InitialSetSave, L"InitialSetSave"); - this->InitialSetSave->Name = L"InitialSetSave"; - this->InitialSetSave->UseVisualStyleBackColor = true; - this->InitialSetSave->Click += gcnew System::EventHandler(this, &MyForm::InitialSetSave_Click); - // - // MovieOffsetNum - // - this->MovieOffsetNum->DecimalPlaces = 6; - resources->ApplyResources(this->MovieOffsetNum, L"MovieOffsetNum"); - this->MovieOffsetNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 9999, 0, 0, 0 }); - this->MovieOffsetNum->Name = L"MovieOffsetNum"; - // - // label17 - // - resources->ApplyResources(this->label17, L"label17"); - this->label17->Name = L"label17"; - // - // OffsetNum - // - this->OffsetNum->DecimalPlaces = 6; - resources->ApplyResources(this->OffsetNum, L"OffsetNum"); - this->OffsetNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 9999, 0, 0, 0 }); - this->OffsetNum->Name = L"OffsetNum"; - // - // label16 - // - resources->ApplyResources(this->label16, L"label16"); - this->label16->Name = L"label16"; - // - // InitTimeSigNum2 - // - resources->ApplyResources(this->InitTimeSigNum2, L"InitTimeSigNum2"); - this->InitTimeSigNum2->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 192, 0, 0, 0 }); - this->InitTimeSigNum2->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->InitTimeSigNum2->Name = L"InitTimeSigNum2"; - this->InitTimeSigNum2->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 4, 0, 0, 0 }); - // - // label15 - // - resources->ApplyResources(this->label15, L"label15"); - this->label15->Name = L"label15"; - // - // InitTimeSigNum1 - // - resources->ApplyResources(this->InitTimeSigNum1, L"InitTimeSigNum1"); - this->InitTimeSigNum1->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 191, 0, 0, 0 }); - this->InitTimeSigNum1->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->InitTimeSigNum1->Name = L"InitTimeSigNum1"; - this->InitTimeSigNum1->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 4, 0, 0, 0 }); - // - // label14 - // - resources->ApplyResources(this->label14, L"label14"); - this->label14->Name = L"label14"; - // - // InitialBPMNum - // - this->InitialBPMNum->DecimalPlaces = 6; - resources->ApplyResources(this->InitialBPMNum, L"InitialBPMNum"); - this->InitialBPMNum->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 9999, 0, 0, 0 }); - this->InitialBPMNum->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - this->InitialBPMNum->Name = L"InitialBPMNum"; - this->InitialBPMNum->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) { 1, 0, 0, 0 }); - // - // label13 - // - resources->ApplyResources(this->label13, L"label13"); - this->label13->Name = L"label13"; - // - // label29 - // - resources->ApplyResources(this->label29, L"label29"); - this->label29->Name = L"label29"; - // - // MaskSettingsBox - // - this->MaskSettingsBox->Controls->Add(this->MaskCenter); - this->MaskSettingsBox->Controls->Add(this->MaskCClockwise); - this->MaskSettingsBox->Controls->Add(this->MaskClockwise); - resources->ApplyResources(this->MaskSettingsBox, L"MaskSettingsBox"); - this->MaskSettingsBox->Name = L"MaskSettingsBox"; - this->MaskSettingsBox->TabStop = false; - // - // MaskCenter - // - resources->ApplyResources(this->MaskCenter, L"MaskCenter"); - this->MaskCenter->Name = L"MaskCenter"; - this->MaskCenter->UseVisualStyleBackColor = true; - this->MaskCenter->CheckedChanged += gcnew System::EventHandler(this, &MyForm::Mask_CheckedChanged); - // - // MaskCClockwise - // - resources->ApplyResources(this->MaskCClockwise, L"MaskCClockwise"); - this->MaskCClockwise->Name = L"MaskCClockwise"; - this->MaskCClockwise->UseVisualStyleBackColor = true; - this->MaskCClockwise->CheckedChanged += gcnew System::EventHandler(this, &MyForm::Mask_CheckedChanged); - // - // MaskClockwise - // - resources->ApplyResources(this->MaskClockwise, L"MaskClockwise"); - this->MaskClockwise->Checked = true; - this->MaskClockwise->Name = L"MaskClockwise"; - this->MaskClockwise->TabStop = true; - this->MaskClockwise->UseVisualStyleBackColor = true; - this->MaskClockwise->CheckedChanged += gcnew System::EventHandler(this, &MyForm::Mask_CheckedChanged); - // - // CurrentObjectText - // - resources->ApplyResources(this->CurrentObjectText, L"CurrentObjectText"); - this->CurrentObjectText->Name = L"CurrentObjectText"; - // - // PreChartViewBox - // - resources->ApplyResources(this->PreChartViewBox, L"PreChartViewBox"); - this->PreChartViewBox->Controls->Add(this->GimmickValueLabel); - this->PreChartViewBox->Controls->Add(this->GimmickTypeLabel); - this->PreChartViewBox->Controls->Add(this->GimmickSubBeatLabel); - this->PreChartViewBox->Controls->Add(this->GimmickBeatLabel); - this->PreChartViewBox->Controls->Add(this->label22); - this->PreChartViewBox->Controls->Add(this->label21); - this->PreChartViewBox->Controls->Add(this->label20); - this->PreChartViewBox->Controls->Add(this->label19); - this->PreChartViewBox->Controls->Add(this->NextGimmickButton); - this->PreChartViewBox->Controls->Add(this->PrevGimmickButton); - this->PreChartViewBox->Controls->Add(this->DeleteGimmickButton); - this->PreChartViewBox->Name = L"PreChartViewBox"; - this->PreChartViewBox->TabStop = false; - // - // GimmickValueLabel - // - resources->ApplyResources(this->GimmickValueLabel, L"GimmickValueLabel"); - this->GimmickValueLabel->Name = L"GimmickValueLabel"; - // - // GimmickTypeLabel - // - resources->ApplyResources(this->GimmickTypeLabel, L"GimmickTypeLabel"); - this->GimmickTypeLabel->Name = L"GimmickTypeLabel"; - // - // GimmickSubBeatLabel - // - resources->ApplyResources(this->GimmickSubBeatLabel, L"GimmickSubBeatLabel"); - this->GimmickSubBeatLabel->Name = L"GimmickSubBeatLabel"; - // - // GimmickBeatLabel - // - resources->ApplyResources(this->GimmickBeatLabel, L"GimmickBeatLabel"); - this->GimmickBeatLabel->Name = L"GimmickBeatLabel"; - // - // label22 - // - resources->ApplyResources(this->label22, L"label22"); - this->label22->Name = L"label22"; - // - // label21 - // - resources->ApplyResources(this->label21, L"label21"); - this->label21->Name = L"label21"; - // - // label20 - // - resources->ApplyResources(this->label20, L"label20"); - this->label20->Name = L"label20"; - // - // label19 - // - resources->ApplyResources(this->label19, L"label19"); - this->label19->Name = L"label19"; - // - // NextGimmickButton - // - resources->ApplyResources(this->NextGimmickButton, L"NextGimmickButton"); - this->NextGimmickButton->Name = L"NextGimmickButton"; - this->NextGimmickButton->UseVisualStyleBackColor = true; - this->NextGimmickButton->Click += gcnew System::EventHandler(this, &MyForm::NextGimmickButton_Click); - // - // PrevGimmickButton - // - resources->ApplyResources(this->PrevGimmickButton, L"PrevGimmickButton"); - this->PrevGimmickButton->Name = L"PrevGimmickButton"; - this->PrevGimmickButton->UseVisualStyleBackColor = true; - this->PrevGimmickButton->Click += gcnew System::EventHandler(this, &MyForm::PrevGimmickButton_Click); - // - // DeleteGimmickButton - // - resources->ApplyResources(this->DeleteGimmickButton, L"DeleteGimmickButton"); - this->DeleteGimmickButton->Name = L"DeleteGimmickButton"; - this->DeleteGimmickButton->UseVisualStyleBackColor = true; - this->DeleteGimmickButton->Click += gcnew System::EventHandler(this, &MyForm::DeleteGimmickButton_Click); - // - // NotesViewBox - // - resources->ApplyResources(this->NotesViewBox, L"NotesViewBox"); - this->NotesViewBox->Controls->Add(this->EditNoteButton); - this->NotesViewBox->Controls->Add(this->PrevBeatButton); - this->NotesViewBox->Controls->Add(this->NextBeatButton); - this->NotesViewBox->Controls->Add(this->MatchNoteCheckBox); - this->NotesViewBox->Controls->Add(this->MatchTimeCheckBox); - this->NotesViewBox->Controls->Add(this->NotesMaskLabel); - this->NotesViewBox->Controls->Add(this->NotesSizeLabel); - this->NotesViewBox->Controls->Add(this->NotesPosLabel); - this->NotesViewBox->Controls->Add(this->NotesTypeLabel); - this->NotesViewBox->Controls->Add(this->NotesSubBeatLabel); - this->NotesViewBox->Controls->Add(this->NotesBeatLabel); - this->NotesViewBox->Controls->Add(this->label28); - this->NotesViewBox->Controls->Add(this->label27); - this->NotesViewBox->Controls->Add(this->label26); - this->NotesViewBox->Controls->Add(this->label25); - this->NotesViewBox->Controls->Add(this->label24); - this->NotesViewBox->Controls->Add(this->label23); - this->NotesViewBox->Controls->Add(this->NextNoteButton); - this->NotesViewBox->Controls->Add(this->PrevNoteButton); - this->NotesViewBox->Controls->Add(this->DeleteNoteButton); - this->NotesViewBox->Name = L"NotesViewBox"; - this->NotesViewBox->TabStop = false; - // - // PrevBeatButton - // - resources->ApplyResources(this->PrevBeatButton, L"PrevBeatButton"); - this->PrevBeatButton->Name = L"PrevBeatButton"; - this->PrevBeatButton->UseVisualStyleBackColor = true; - this->PrevBeatButton->Click += gcnew System::EventHandler(this, &MyForm::PrevBeatButton_Click); - // - // NextBeatButton - // - resources->ApplyResources(this->NextBeatButton, L"NextBeatButton"); - this->NextBeatButton->Name = L"NextBeatButton"; - this->NextBeatButton->UseVisualStyleBackColor = true; - this->NextBeatButton->Click += gcnew System::EventHandler(this, &MyForm::NextBeatButton_Click); - // - // MatchNoteCheckBox - // - resources->ApplyResources(this->MatchNoteCheckBox, L"MatchNoteCheckBox"); - this->MatchNoteCheckBox->BackColor = System::Drawing::Color::Transparent; - this->MatchNoteCheckBox->Name = L"MatchNoteCheckBox"; - this->MatchNoteCheckBox->UseVisualStyleBackColor = false; - this->MatchNoteCheckBox->CheckedChanged += gcnew System::EventHandler(this, &MyForm::MatchNoteCheckBox_CheckedChanged); - // - // MatchTimeCheckBox - // - resources->ApplyResources(this->MatchTimeCheckBox, L"MatchTimeCheckBox"); - this->MatchTimeCheckBox->Name = L"MatchTimeCheckBox"; - this->MatchTimeCheckBox->UseVisualStyleBackColor = true; - this->MatchTimeCheckBox->CheckedChanged += gcnew System::EventHandler(this, &MyForm::MatchTimeCheckBox_CheckedChanged); - // - // NotesMaskLabel - // - resources->ApplyResources(this->NotesMaskLabel, L"NotesMaskLabel"); - this->NotesMaskLabel->Name = L"NotesMaskLabel"; - // - // NotesSizeLabel - // - resources->ApplyResources(this->NotesSizeLabel, L"NotesSizeLabel"); - this->NotesSizeLabel->Name = L"NotesSizeLabel"; - // - // NotesPosLabel - // - resources->ApplyResources(this->NotesPosLabel, L"NotesPosLabel"); - this->NotesPosLabel->Name = L"NotesPosLabel"; - // - // NotesTypeLabel - // - resources->ApplyResources(this->NotesTypeLabel, L"NotesTypeLabel"); - this->NotesTypeLabel->Name = L"NotesTypeLabel"; - // - // NotesSubBeatLabel - // - resources->ApplyResources(this->NotesSubBeatLabel, L"NotesSubBeatLabel"); - this->NotesSubBeatLabel->Name = L"NotesSubBeatLabel"; - // - // NotesBeatLabel - // - resources->ApplyResources(this->NotesBeatLabel, L"NotesBeatLabel"); - this->NotesBeatLabel->Name = L"NotesBeatLabel"; - // - // label28 - // - resources->ApplyResources(this->label28, L"label28"); - this->label28->Name = L"label28"; - // - // label27 - // - resources->ApplyResources(this->label27, L"label27"); - this->label27->Name = L"label27"; - // - // label26 - // - resources->ApplyResources(this->label26, L"label26"); - this->label26->Name = L"label26"; - // - // label25 - // - resources->ApplyResources(this->label25, L"label25"); - this->label25->Name = L"label25"; - // - // label24 - // - resources->ApplyResources(this->label24, L"label24"); - this->label24->Name = L"label24"; - // - // label23 - // - resources->ApplyResources(this->label23, L"label23"); - this->label23->Name = L"label23"; - // - // NextNoteButton - // - resources->ApplyResources(this->NextNoteButton, L"NextNoteButton"); - this->NextNoteButton->Name = L"NextNoteButton"; - this->NextNoteButton->UseVisualStyleBackColor = true; - this->NextNoteButton->Click += gcnew System::EventHandler(this, &MyForm::NextNoteButton_Click); - // - // PrevNoteButton - // - resources->ApplyResources(this->PrevNoteButton, L"PrevNoteButton"); - this->PrevNoteButton->Name = L"PrevNoteButton"; - this->PrevNoteButton->UseVisualStyleBackColor = true; - this->PrevNoteButton->Click += gcnew System::EventHandler(this, &MyForm::PrevNoteButton_Click); - // - // DeleteNoteButton - // - resources->ApplyResources(this->DeleteNoteButton, L"DeleteNoteButton"); - this->DeleteNoteButton->ForeColor = System::Drawing::Color::Red; - this->DeleteNoteButton->Name = L"DeleteNoteButton"; - this->DeleteNoteButton->UseVisualStyleBackColor = true; - this->DeleteNoteButton->Click += gcnew System::EventHandler(this, &MyForm::DeleteNoteButton_Click); - // - // openFileDialogChart - // - resources->ApplyResources(this->openFileDialogChart, L"openFileDialogChart"); - this->openFileDialogChart->RestoreDirectory = true; - this->openFileDialogChart->FileOk += gcnew System::ComponentModel::CancelEventHandler(this, &MyForm::openFileDialog_FileOk); - // - // saveFileDialog1 - // - this->saveFileDialog1->DefaultExt = L"mer"; - resources->ApplyResources(this->saveFileDialog1, L"saveFileDialog1"); - this->saveFileDialog1->RestoreDirectory = true; - this->saveFileDialog1->FileOk += gcnew System::ComponentModel::CancelEventHandler(this, &MyForm::saveFileDialog_FileOk); - // - // CurrentNoteBox - // - this->CurrentNoteBox->Controls->Add(this->BeatNum2); - this->CurrentNoteBox->Controls->Add(this->label1); - this->CurrentNoteBox->Controls->Add(this->Beat); - this->CurrentNoteBox->Controls->Add(this->BeatNum1); - this->CurrentNoteBox->Controls->Add(this->MeasureNum); - this->CurrentNoteBox->Controls->Add(this->SizeTrackBar); - this->CurrentNoteBox->Controls->Add(this->PosTrackBar); - this->CurrentNoteBox->Controls->Add(this->posInfo); - this->CurrentNoteBox->Controls->Add(this->PosLabel); - this->CurrentNoteBox->Controls->Add(this->PosNum); - this->CurrentNoteBox->Controls->Add(this->SizeLabel); - this->CurrentNoteBox->Controls->Add(this->SizeInfo); - this->CurrentNoteBox->Controls->Add(this->SizeNum); - resources->ApplyResources(this->CurrentNoteBox, L"CurrentNoteBox"); - this->CurrentNoteBox->Name = L"CurrentNoteBox"; - this->CurrentNoteBox->TabStop = false; - // - // SizeTrackBar - // - resources->ApplyResources(this->SizeTrackBar, L"SizeTrackBar"); - this->SizeTrackBar->Maximum = 60; - this->SizeTrackBar->Minimum = 1; - this->SizeTrackBar->Name = L"SizeTrackBar"; - this->SizeTrackBar->TickStyle = System::Windows::Forms::TickStyle::None; - this->SizeTrackBar->Value = 1; - this->SizeTrackBar->ValueChanged += gcnew System::EventHandler(this, &MyForm::SizeTrackBar_ValueChanged); - // - // PosTrackBar - // - resources->ApplyResources(this->PosTrackBar, L"PosTrackBar"); - this->PosTrackBar->Maximum = 59; - this->PosTrackBar->Name = L"PosTrackBar"; - this->PosTrackBar->TickStyle = System::Windows::Forms::TickStyle::None; - this->PosTrackBar->ValueChanged += gcnew System::EventHandler(this, &MyForm::PosTrackBar_ValueChanged); - // - // fileSystemWatcher1 - // - this->fileSystemWatcher1->EnableRaisingEvents = true; - this->fileSystemWatcher1->SynchronizingObject = this; - // - // CirclePanel - // - this->CirclePanel->BackColor = System::Drawing::Color::Transparent; - resources->ApplyResources(this->CirclePanel, L"CirclePanel"); - this->CirclePanel->Name = L"CirclePanel"; - this->CirclePanel->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &MyForm::CirclePanel_Paint); - this->CirclePanel->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::CirclePanel_MouseDown); - this->CirclePanel->MouseMove += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::CirclePanel_MouseMove); - this->CirclePanel->MouseUp += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::CirclePanel_MouseUp); - // - // VisualSettingsBox - // - resources->ApplyResources(this->VisualSettingsBox, L"VisualSettingsBox"); - this->VisualSettingsBox->Controls->Add(this->label2); - this->VisualSettingsBox->Controls->Add(this->VisualHispeed); - this->VisualSettingsBox->Name = L"VisualSettingsBox"; - this->VisualSettingsBox->TabStop = false; - // - // PlayButton - // - resources->ApplyResources(this->PlayButton, L"PlayButton"); - this->PlayButton->Name = L"PlayButton"; - this->PlayButton->UseVisualStyleBackColor = true; - this->PlayButton->Click += gcnew System::EventHandler(this, &MyForm::PlayButton_Click); - // - // songTrackSlider - // - resources->ApplyResources(this->songTrackSlider, L"songTrackSlider"); - this->songTrackSlider->Name = L"songTrackSlider"; - this->songTrackSlider->TickStyle = System::Windows::Forms::TickStyle::None; - this->songTrackSlider->Scroll += gcnew System::EventHandler(this, &MyForm::songTrackSlider_Scroll); - // - // selectSongFile - // - resources->ApplyResources(this->selectSongFile, L"selectSongFile"); - this->selectSongFile->Name = L"selectSongFile"; - this->selectSongFile->UseVisualStyleBackColor = true; - this->selectSongFile->Click += gcnew System::EventHandler(this, &MyForm::selectSongFile_Click); - // - // SongPlaybackBox - // - resources->ApplyResources(this->SongPlaybackBox, L"SongPlaybackBox"); - this->SongPlaybackBox->Controls->Add(this->PlaybackSpeedNum); - this->SongPlaybackBox->Controls->Add(this->VolumeLabel); - this->SongPlaybackBox->Controls->Add(this->label30); - this->SongPlaybackBox->Controls->Add(this->SongVolume); - this->SongPlaybackBox->Controls->Add(this->songFileName); - this->SongPlaybackBox->Controls->Add(this->PlayButton); - this->SongPlaybackBox->Controls->Add(this->label29); - this->SongPlaybackBox->Controls->Add(this->songTrackSlider); - this->SongPlaybackBox->Controls->Add(this->selectSongFile); - this->SongPlaybackBox->Name = L"SongPlaybackBox"; - this->SongPlaybackBox->TabStop = false; - // - // VolumeLabel - // - resources->ApplyResources(this->VolumeLabel, L"VolumeLabel"); - this->VolumeLabel->Name = L"VolumeLabel"; - // - // SongVolume - // - resources->ApplyResources(this->SongVolume, L"SongVolume"); - this->SongVolume->Maximum = 100; - this->SongVolume->Name = L"SongVolume"; - this->SongVolume->SmallChange = 5; - this->SongVolume->TickFrequency = 10; - this->SongVolume->Value = 100; - this->SongVolume->Scroll += gcnew System::EventHandler(this, &MyForm::SongVolume_Scroll); - // - // songFileName - // - resources->ApplyResources(this->songFileName, L"songFileName"); - this->songFileName->Name = L"songFileName"; - // - // openFileDialogSong - // - resources->ApplyResources(this->openFileDialogSong, L"openFileDialogSong"); - // - // backgroundWorkerSong - // - this->backgroundWorkerSong->WorkerReportsProgress = true; - this->backgroundWorkerSong->WorkerSupportsCancellation = true; - this->backgroundWorkerSong->DoWork += gcnew System::ComponentModel::DoWorkEventHandler(this, &MyForm::backgroundWorkerSong_DoWork); - this->backgroundWorkerSong->ProgressChanged += gcnew System::ComponentModel::ProgressChangedEventHandler(this, &MyForm::backgroundWorkerSong_ProgressChanged); - this->backgroundWorkerSong->RunWorkerCompleted += gcnew System::ComponentModel::RunWorkerCompletedEventHandler(this, &MyForm::backgroundWorkerSong_RunWorkerCompleted); - // - // backgroundWorkerPaint - // - this->backgroundWorkerPaint->WorkerReportsProgress = true; - this->backgroundWorkerPaint->WorkerSupportsCancellation = true; - this->backgroundWorkerPaint->DoWork += gcnew System::ComponentModel::DoWorkEventHandler(this, &MyForm::backgroundWorkerPaint_DoWork); - this->backgroundWorkerPaint->ProgressChanged += gcnew System::ComponentModel::ProgressChangedEventHandler(this, &MyForm::backgroundWorkerPaint_ProgressChanged); - this->backgroundWorkerPaint->RunWorkerCompleted += gcnew System::ComponentModel::RunWorkerCompletedEventHandler(this, &MyForm::backgroundWorkerPaint_RunWorkerCompleted); - // - // CurrentObjectBox - // - this->CurrentObjectBox->Controls->Add(this->CurrentObjectText); - resources->ApplyResources(this->CurrentObjectBox, L"CurrentObjectBox"); - this->CurrentObjectBox->Name = L"CurrentObjectBox"; - this->CurrentObjectBox->TabStop = false; - // - // MyForm - // - this->AllowDrop = true; - resources->ApplyResources(this, L"$this"); - this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Dpi; - this->Controls->Add(this->NotesViewBox); - this->Controls->Add(this->VisualSettingsBox); - this->Controls->Add(this->CurrentObjectBox); - this->Controls->Add(this->GimmickBox); - this->Controls->Add(this->NoteTypeBox); - this->Controls->Add(this->SongPlaybackBox); - this->Controls->Add(this->CirclePanel); - this->Controls->Add(this->CurrentNoteBox); - this->Controls->Add(this->PreChartViewBox); - this->Controls->Add(this->MaskSettingsBox); - this->Controls->Add(this->InitialSettingsPane); - this->Controls->Add(this->GimmickSettingsBox); - this->Controls->Add(this->InsertButton); - this->Controls->Add(this->menuStrip); - this->DoubleBuffered = true; - this->KeyPreview = true; - this->MainMenuStrip = this->menuStrip; - this->Name = L"MyForm"; - this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load); - this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &MyForm::MyForm_Paint); - this->KeyPress += gcnew System::Windows::Forms::KeyPressEventHandler(this, &MyForm::MyForm_KeyPress); - this->Resize += gcnew System::EventHandler(this, &MyForm::MyForm_Resize); - this->menuStrip->ResumeLayout(false); - this->menuStrip->PerformLayout(); - this->NoteTypeBox->ResumeLayout(false); - this->NoteTypeBox->PerformLayout(); - (cli::safe_cast(this->VisualHispeed))->EndInit(); - (cli::safe_cast(this->PlaybackSpeedNum))->EndInit(); - (cli::safe_cast(this->SizeNum))->EndInit(); - (cli::safe_cast(this->PosNum))->EndInit(); - (cli::safe_cast(this->BeatNum2))->EndInit(); - (cli::safe_cast(this->BeatNum1))->EndInit(); - (cli::safe_cast(this->MeasureNum))->EndInit(); - this->GimmickBox->ResumeLayout(false); - this->GimmickBox->PerformLayout(); - this->GimmickSettingsBox->ResumeLayout(false); - this->GimmickSettingsBox->PerformLayout(); - (cli::safe_cast(this->ReverseEnd2BeatNum2))->EndInit(); - (cli::safe_cast(this->ReverseEnd2BeatNum1))->EndInit(); - (cli::safe_cast(this->ReverseEnd2MeasureNum))->EndInit(); - (cli::safe_cast(this->ReverseEnd1BeatNum2))->EndInit(); - (cli::safe_cast(this->ReverseEnd1BeatNum1))->EndInit(); - (cli::safe_cast(this->ReverseEnd1MeasureNum))->EndInit(); - (cli::safe_cast(this->StopEndMeasureNum))->EndInit(); - (cli::safe_cast(this->StopEndBeatNum2))->EndInit(); - (cli::safe_cast(this->StopEndBeatNum1))->EndInit(); - (cli::safe_cast(this->HiSpeedChangeNum))->EndInit(); - (cli::safe_cast(this->TimeSigNum2))->EndInit(); - (cli::safe_cast(this->TimeSigNum1))->EndInit(); - (cli::safe_cast(this->BPMChangeNum))->EndInit(); - this->InitialSettingsPane->ResumeLayout(false); - this->InitialSettingsPane->PerformLayout(); - (cli::safe_cast(this->MovieOffsetNum))->EndInit(); - (cli::safe_cast(this->OffsetNum))->EndInit(); - (cli::safe_cast(this->InitTimeSigNum2))->EndInit(); - (cli::safe_cast(this->InitTimeSigNum1))->EndInit(); - (cli::safe_cast(this->InitialBPMNum))->EndInit(); - this->MaskSettingsBox->ResumeLayout(false); - this->MaskSettingsBox->PerformLayout(); - this->PreChartViewBox->ResumeLayout(false); - this->PreChartViewBox->PerformLayout(); - this->NotesViewBox->ResumeLayout(false); - this->NotesViewBox->PerformLayout(); - this->CurrentNoteBox->ResumeLayout(false); - this->CurrentNoteBox->PerformLayout(); - (cli::safe_cast(this->SizeTrackBar))->EndInit(); - (cli::safe_cast(this->PosTrackBar))->EndInit(); - (cli::safe_cast(this->fileSystemWatcher1))->EndInit(); - this->VisualSettingsBox->ResumeLayout(false); - this->VisualSettingsBox->PerformLayout(); - (cli::safe_cast(this->songTrackSlider))->EndInit(); - this->SongPlaybackBox->ResumeLayout(false); - this->SongPlaybackBox->PerformLayout(); - (cli::safe_cast(this->SongVolume))->EndInit(); - this->CurrentObjectBox->ResumeLayout(false); - this->CurrentObjectBox->PerformLayout(); - this->ResumeLayout(false); - this->PerformLayout(); - - } -#pragma endregion - System::String^ stdStringToSystemString(std::string input) { - return gcnew String(input.data()); - } - std::string SystemStringTostdString(System::String^ input) { - using namespace Runtime::InteropServices; - const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(input)).ToPointer(); - std::string os = chars; - Marshal::FreeHGlobal(IntPtr((void*)chars)); - return os; - } - void mergeIntervals(std::list> theList) { - // sort the intervals in increasing order of start position - theList.sort(compareInterval); - - std::list>::iterator listITRprev = theList.begin(); - std::list>::iterator listITR = theList.begin(); - - for (listITR++; listITR != theList.end(); listITR++) { - // If this is not first Interval and overlaps - // with the previous one - if (listITRprev->second >= listITR->first) { - // Merge previous and current Intervals - listITRprev->second = std::max(listITRprev->second, listITR->second); - } - else { - listITRprev++; - listITRprev->first = listITR->first; - listITRprev->second = listITR->second; - } - } - } - void refreshMapofMasks() { - mapOfMasks.clear(); - std::pair zero(0, 0); - mapOfMasks[0].push_back(zero); - - for (std::list::iterator viewMasksITR = theChart.Notes.begin(); viewMasksITR != theChart.Notes.end(); viewMasksITR++) { - if (viewMasksITR->noteType == MaskAdd || viewMasksITR->noteType == MaskRemove) { - float currentTime = (float)viewMasksITR->measure + ((float)viewMasksITR->beat / 1920.f); - int maskStart, maskEnd; - maskStart = viewMasksITR->position; - maskEnd = viewMasksITR->position + viewMasksITR->size; - - //copy previous mask layout to current time if current time is empty - if (mapOfMasks.find(currentTime) == mapOfMasks.end()) { - std::map>>::iterator itr = mapOfMasks.lower_bound(currentTime); - if (itr != mapOfMasks.end()) { - if (itr != mapOfMasks.begin()) { - itr--; - } - if (itr->first < currentTime) { - for (std::list>::iterator currentListitr = itr->second.begin(); currentListitr != itr->second.end(); currentListitr++) { - std::pair temppair(currentListitr->first, currentListitr->second); - mapOfMasks[currentTime].push_back(temppair); - } - } - } - else { - itr = mapOfMasks.end(); - if (!mapOfMasks.empty()) { - itr--; - for (std::list>::iterator currentListitr = itr->second.begin(); currentListitr != itr->second.end(); currentListitr++) { - std::pair temppair(currentListitr->first, currentListitr->second); - mapOfMasks[currentTime].push_back(temppair); - } - } - } - } - - if (viewMasksITR->noteType == MaskAdd) { - if (maskEnd > 60) { - int differenceEnd = maskEnd - 60; - int differenceStart = 0; - maskEnd = 60; - std::pair intervalA(maskStart, maskEnd); - std::pair intervalB(differenceStart, differenceEnd); - mapOfMasks[currentTime].push_back(intervalA); - mapOfMasks[currentTime].push_back(intervalB); - } - else { - std::pair intervalA(maskStart, maskEnd); - mapOfMasks[currentTime].push_back(intervalA); - } - } - - if (viewMasksITR->noteType == MaskRemove) { - if (maskEnd > 60) { - int differenceEnd = maskEnd - 60; - int differenceStart = 0; - maskEnd = 60; - std::pair intervalA(maskStart, maskEnd); - std::pair intervalB(differenceStart, differenceEnd); - for (std::list>::iterator currentMaskITR = mapOfMasks[currentTime].begin(); currentMaskITR != mapOfMasks[currentTime].end(); currentMaskITR++) { - if (maskStart <= currentMaskITR->first && maskEnd >= currentMaskITR->first) { //mask to delete overlaps start of pre-existing mask - if (maskEnd <= currentMaskITR->second) { - currentMaskITR->first = maskEnd; - } - else { ////mask to delete overlaps all of pre-existing mask - currentMaskITR->first = 0; - currentMaskITR->second = 0; - } - } - else if (maskStart > currentMaskITR->first && maskEnd < currentMaskITR->second) { //mask to delete in the middle pre-existing mask - std::pair newPair(maskEnd, currentMaskITR->second); - mapOfMasks[currentTime].push_back(newPair); - currentMaskITR->second = maskStart; - } - else if (maskStart < currentMaskITR->second && maskEnd >= currentMaskITR->second) { //mask to delete overlaps end of pre-existing mask - currentMaskITR->second = maskStart; - } - if (differenceStart <= currentMaskITR->first && differenceEnd >= currentMaskITR->first) { //mask to delete overlaps start of pre-existing mask - if (differenceEnd <= currentMaskITR->second) { - currentMaskITR->first = differenceEnd; - } - else { ////mask to delete overlaps all of pre-existing mask - currentMaskITR->first = 0; - currentMaskITR->second = 0; - } - } - else if (differenceStart > currentMaskITR->first && differenceEnd < currentMaskITR->second) { //mask to delete in the middle pre-existing mask - std::pair newPair(differenceEnd, currentMaskITR->second); - mapOfMasks[currentTime].push_back(newPair); - currentMaskITR->second = differenceStart; - } - else if (differenceStart < currentMaskITR->second && differenceEnd >= currentMaskITR->second) { //mask to delete overlaps end of pre-existing mask - currentMaskITR->second = differenceStart; - } - } - } - else { - std::pair intervalA(maskStart, maskEnd); - for (std::list>::iterator currentMaskITR = mapOfMasks[currentTime].begin(); currentMaskITR != mapOfMasks[currentTime].end(); currentMaskITR++) { - if (maskStart <= currentMaskITR->first && maskEnd >= currentMaskITR->first) { //mask to delete overlaps start of pre-existing mask - if (maskEnd <= currentMaskITR->second) { - currentMaskITR->first = maskEnd; - } - else { ////mask to delete overlaps all of pre-existing mask - currentMaskITR->first = 0; - currentMaskITR->second = 0; - } - } - else if (maskStart > currentMaskITR->first && maskEnd < currentMaskITR->second) { //mask to delete in the middle pre-existing mask - std::pair newPair(maskEnd, currentMaskITR->second); - mapOfMasks[currentTime].push_back(newPair); - currentMaskITR->second = maskStart; - break; - } - else if (maskStart < currentMaskITR->second && maskEnd >= currentMaskITR->second) { //mask to delete overlaps end of pre-existing mask - currentMaskITR->second = maskStart; - } - } - } - } - mergeIntervals(mapOfMasks[currentTime]); - } - } - } - void refreshMapofNotes() { - mapOfNotes.clear(); - for (std::list::iterator NotesITR = theChart.Notes.begin(); NotesITR != theChart.Notes.end(); NotesITR++) { - float currentTime = (float)NotesITR->measure + ((float)NotesITR->beat / 1920.f); - if (NotesITR->noteType != 12 || NotesITR->noteType != 13) { - NotesNode tempnode; - tempnode.measure = NotesITR->measure; - tempnode.beat = NotesITR->beat; - tempnode.noteType = NotesITR->noteType; - tempnode.position = NotesITR->position; - tempnode.size = NotesITR->size; - tempnode.nextNode = NotesITR->nextNode; - tempnode.prevNode = NotesITR->prevNode; - mapOfNotes[currentTime].push_back(tempnode); - } - } - } - void refreshMapOfTime() { - mapOfTimeBetweenMeasures.clear(); - mapOfBPMatTime.clear(); - mapOfTSatTime.clear(); - //tempo - X bpm - (eg.:120). - //time signature - Y / Z - (eg.: 4 / 4). - //(60,000 / X) = time of 1/4th of measure, so multiply Time Signiture by 4 - //(60,000 / X) * (Y / Z) * 4 = time per measure (milliseconds) - float oneFourthMultiplier = 4.f; - float TS = (float)InitTimeSigNum1->Value / (float)InitTimeSigNum2->Value; - // if nothing exists yet then make measure 0 match initial values - // PreChart list should overwrite this if it has anything - mapOfTimeBetweenMeasures[0] = ((float)milInMinute / (float)InitialBPMNum->Value) * oneFourthMultiplier * TS; - - if (!theChart.PreChart.empty()) { - for (std::list::iterator viewGimmicksITR = theChart.PreChart.begin(); viewGimmicksITR != theChart.PreChart.end(); viewGimmicksITR++) { - float currentTime = (float)viewGimmicksITR->measure + ((float)viewGimmicksITR->beat / 1920.f); - if (viewGimmicksITR->type == BpmChange || viewGimmicksITR->type == TimeSignatureChange) { // First run through fills maps of BPMs and Time Signatures - //make current time values in maps current to what the PreChart list is saying - if(viewGimmicksITR->type == BpmChange) - mapOfBPMatTime[currentTime] = (float)viewGimmicksITR->BPM; - if (viewGimmicksITR->type == TimeSignatureChange) { - std::pair tempTS(viewGimmicksITR->beatDiv1, viewGimmicksITR->beatDiv2); - mapOfTSatTime[currentTime] = tempTS; - } - - //put the previous BPM into map of time at any point a time signature happens and there's no BPM at current time - if (mapOfBPMatTime.find(currentTime) == mapOfBPMatTime.end()) { - std::map::iterator BPMitr = mapOfBPMatTime.lower_bound(currentTime); - if (BPMitr != mapOfBPMatTime.end()) { - if (BPMitr != mapOfBPMatTime.begin()) { - BPMitr--; - } - if (BPMitr->first < currentTime) { - mapOfBPMatTime[currentTime] = BPMitr->second; - } - } - else { - BPMitr = mapOfBPMatTime.end(); - if (!mapOfBPMatTime.empty()) { - BPMitr--; - mapOfBPMatTime[currentTime] = BPMitr->second; - } - } - } - //put the previous time signature into map of BPMs at any point a BPM happens and there's no BPM at current time - if (mapOfTSatTime.find(currentTime) == mapOfTSatTime.end()) { - std::map>::iterator TSitr = mapOfTSatTime.lower_bound(currentTime); - if (TSitr != mapOfTSatTime.end()) { - if (TSitr != mapOfTSatTime.begin()) { - TSitr--; - } - if (TSitr->first < currentTime) { - mapOfTSatTime[currentTime] = TSitr->second; - } - } - else { - TSitr = mapOfTSatTime.end(); - if (!mapOfTSatTime.empty()) { - TSitr--; - mapOfTSatTime[currentTime] = TSitr->second; - } - } - } - } - } - //Put values into map of time between measures - //this itr could be map of time signatures too, doesnt matter - for (std::map::iterator itr = mapOfBPMatTime.begin(); itr != mapOfBPMatTime.end(); itr++) { - float TS = (float)mapOfTSatTime[itr->first].first / (float)mapOfTSatTime[itr->first].second; - mapOfTimeBetweenMeasures[itr->first] = ((float)milInMinute / (float)mapOfBPMatTime[itr->first]) * oneFourthMultiplier * TS; - } - } - refreshMapOfBeatAtTime(); - } - void refreshMapOfBeatAtTime() { - mapOfBeatAtTime.clear(); - std::map::iterator itr = mapOfTimeBetweenMeasures.begin(); - int startTime = (theChart.offset * 1000.f); //convert off from seconds to milliseconds - mapOfBeatAtTime[startTime] = 0; //millisecond 0 of song starts at measure 0 of song; - if (itr != mapOfTimeBetweenMeasures.end()) { - float prevTimeMil = startTime; - float prevTimeBeats = itr->first; - float prevTimePerMeasure = itr->second; - for (itr++; itr != mapOfTimeBetweenMeasures.end(); itr++) { - float differenceBetweenMeasures = itr->first - prevTimeBeats; - float millisecondsFromLastChange = differenceBetweenMeasures * prevTimePerMeasure; - float nextTime = millisecondsFromLastChange + prevTimeMil; - mapOfBeatAtTime[nextTime] = itr->first; //millisecond nextTime of song starts at measure itr->first of song - - prevTimeMil = nextTime; - prevTimeBeats = itr->first; - prevTimePerMeasure = itr->second; - } - } - } - void refreshGimmickView() { - if (!theChart.PreChart.empty()) { - GimmickBeatLabel->Text = ((viewGimmicksITR)->measure).ToString(); - - int num1 = (viewGimmicksITR)->beat; - int num2 = 1920; - std::string subBeatString = subBeatValueDisplay(num1, num2); - GimmickSubBeatLabel->Text = stdStringToSystemString(subBeatString); - - switch ((viewGimmicksITR)->type) { - case BpmChange: - GimmickTypeLabel->Text = "BPM Change"; - GimmickValueLabel->Text = stdStringToSystemString(to_string((viewGimmicksITR)->BPM)); - break; - case TimeSignatureChange: - GimmickTypeLabel->Text = "Time Signature Change"; - GimmickValueLabel->Text = stdStringToSystemString(to_string((viewGimmicksITR)->beatDiv1)) - + "/" + stdStringToSystemString(to_string((viewGimmicksITR)->beatDiv2)); - break; - case HiSpeedChange: - GimmickTypeLabel->Text = "Hi-Speed Change"; - GimmickValueLabel->Text = stdStringToSystemString(to_string((viewGimmicksITR)->hiSpeed)); - break; - case ReverseStart: - GimmickTypeLabel->Text = "Reverse Start"; - GimmickValueLabel->Text = "N/A"; - break; - case ReverseEnd: - GimmickTypeLabel->Text = "Reverse Middle"; - GimmickValueLabel->Text = "N/A"; - break; - case ReverseNoteEnd: - GimmickTypeLabel->Text = "Reverse End"; - GimmickValueLabel->Text = "N/A"; - break; - case StopStart: - GimmickTypeLabel->Text = "Stop Start"; - GimmickValueLabel->Text = "N/A"; - break; - case StopEnd: - GimmickTypeLabel->Text = "Stop End"; - GimmickValueLabel->Text = "N/A"; - break; - } - } - else { - GimmickBeatLabel->Text = "List Empty"; - GimmickSubBeatLabel->Text = "List Empty"; - GimmickTypeLabel->Text = "List Empty"; - GimmickValueLabel->Text = "N/A"; - } - } - std::string refreshCurrentNoteLabel(NoteType currentNoteType) { - switch (currentNoteType) - { - case TouchNoBonus: - return "Touch"; - case TouchBonus: - return "Touch [Bonus]"; - case SnapRedNoBonus: - return "Snap (R)"; - case SnapBlueNoBonus: - return "Snap (B)"; - case SlideOrangeNoBonus: - return "Slide (O)"; - case SlideOrangeBonus: - return "Slide (O) [Bonus]"; - case SlideGreenNoBonus: - return "Slide (G)"; - case SlideGreenBonus: - return "Slide (G) [Bonus]"; - case HoldStartNoBonus: - return "Hold Start"; - case HoldJoint: - if (EndHoldBox->Checked) { - return "Hold End"; - } - else { - return "Hold Joint"; - } - case HoldEnd: - return "Hold End"; - case MaskAdd: - if (MaskClockwise->Checked) { - return "Mask Add (Clockwise)"; - } - else if (MaskCClockwise->Checked) { - return "Mask Add (Counter-Clockwise)"; - } - else { - return "Mask Add (From Center)"; - } - case MaskRemove: - if (MaskClockwise->Checked) { - return "Mask Remove (Clockwise)"; - } - else if (MaskCClockwise->Checked) { - return "Mask Remove (Counter-Clockwise)"; - } - else { - return "Mask Remove (To Center)"; - } - case EndOfChart: - return "End Of Chart"; - case Chain: - return "Chain"; - case TouchBonusFlair: - return "Touch [R Note]"; - case SnapRedBonusFlair: - return "Snap (R) [R Note]"; - case SnapBlueBonusFlair: - return "Snap (B) [R Note]"; - case SlideOrangeBonusFlair: - return "Slide (O) [R Note]"; - case SlideGreenBonusFlair: - return "Slide (G) [R Note]"; - case HoldStartBonusFlair: - return "Hold Start [R Note]"; - case ChainBonusFlair: - return "Chain [R Note]"; - default: - return "None Selected"; - } - } - std::string refreshCurrentNoteViewLabel(NoteType currentNoteType) { - switch (currentNoteType) - { - case TouchNoBonus: - return "Touch"; - case TouchBonus: - return "Touch [Bonus]"; - case SnapRedNoBonus: - return "Snap (R)"; - case SnapBlueNoBonus: - return "Snap (B)"; - case SlideOrangeNoBonus: - return "Slide (O)"; - case SlideOrangeBonus: - return "Slide (O) [Bonus]"; - case SlideGreenNoBonus: - return "Slide (G)"; - case SlideGreenBonus: - return "Slide (G) [Bonus]"; - case HoldStartNoBonus: - return "Hold Start"; - case HoldJoint: - return "Hold Joint"; - case HoldEnd: - return "Hold End"; - case MaskAdd: - return "Mask Add"; - case MaskRemove: - return "Mask Remove"; - case EndOfChart: - return "End Of Chart"; - case Chain: - return "Chain"; - case TouchBonusFlair: - return "Touch [R Note]"; - case SnapRedBonusFlair: - return "Snap (R) [R Note]"; - case SnapBlueBonusFlair: - return "Snap (B) [R Note]"; - case SlideOrangeBonusFlair: - return "Slide (O) [R Note]"; - case SlideGreenBonusFlair: - return "Slide (G) [R Note]"; - case HoldStartBonusFlair: - return "Hold Start [R Note]"; - case ChainBonusFlair: - return "Chain [R Note]"; - default: - return "List Empty"; - } - } - void refreshNotesView() { - if (!theChart.Notes.empty()) { - NotesBeatLabel->Text = ((viewNotesITR)->measure).ToString(); - - float num1 = (viewNotesITR)->beat; - float num2 = 1920; - std::string subBeatString = subBeatValueDisplay(num1, num2); - NotesSubBeatLabel->Text = stdStringToSystemString(subBeatString); - bool refreshThePaint = false; - - if (MatchNoteCheckBox->Checked) { - PosNum->Value = viewNotesITR->position; - SizeNum->Value = viewNotesITR->size; - SelectedNoteTypeVisual = viewNotesITR->noteType; - if (SelectedNoteTypeVisual != HoldJoint && SelectedNoteTypeVisual != HoldEnd && SelectedNoteTypeVisual != HoldStartNoBonus && SelectedNoteTypeVisual != HoldStartBonusFlair) { - SelectedLineType = NoGimmick; - SelectedNoteType = viewNotesITR->noteType; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - } - if (MatchTimeCheckBox->Checked) { - noteRefresh = true; - MeasureNum->Value = viewNotesITR->measure; - BeatNum2->Value = (int)subBeatValue2(num1, num2); //change 2 first so that 1 doesnt become larger and make it round up to the next measure - BeatNum1->Value = (int)subBeatValue1(num1, num2); - noteRefresh = false; - refreshThePaint = true; - } - if (highlightViewedNoteToolStripMenuItem->Checked) { - refreshThePaint = true; - } - if (refreshThePaint) { - RefreshPaint(); - } - - NotesPosLabel->Text = stdStringToSystemString(to_string((viewNotesITR)->position)); - NotesSizeLabel->Text = stdStringToSystemString(to_string((viewNotesITR)->size)); - NotesMaskLabel->Text = "N/A"; - - NotesTypeLabel->Text = stdStringToSystemString(refreshCurrentNoteViewLabel((viewNotesITR)->noteType)); - if ((viewNotesITR)->noteType == MaskAdd) { - switch ((viewNotesITR)->BGType) { - case 0: - NotesMaskLabel->Text = "Counter-Clockwise"; - break; - case 1: - NotesMaskLabel->Text = "Clockwise"; - break; - case 2: - NotesMaskLabel->Text = "From Center"; - break; - } - } - if ((viewNotesITR)->noteType == MaskRemove) { - switch ((viewNotesITR)->BGType) { - case 0: - NotesMaskLabel->Text = "Counter-Clockwise"; - break; - case 1: - NotesMaskLabel->Text = "Clockwise"; - break; - case 2: - NotesMaskLabel->Text = "To Center"; - break; - } - } - } - else { - NotesBeatLabel->Text = "List Empty"; - NotesSubBeatLabel->Text = "List Empty"; - NotesTypeLabel->Text = "List Empty"; - NotesPosLabel->Text = "N/A"; - NotesSizeLabel->Text = "N/A"; - NotesMaskLabel->Text = "N/A"; - } - } - std::string subBeatValueDisplay(float num1, float num2) { - float denom = findGCD(num1, num2); - num1 /= denom; - num2 /= denom; - switch ((int)num2) { - case 0: - num1 *= 16; - num2 = 16; - break; - case 1: - num1 *= 16; - num2 = 16; - break; - case 2: - num1 *= 8; - num2 = 16; - break; - case 3: - num1 *= 4; - num2 = 12; - break; - case 4: - num1 *= 4; - num2 = 16; - break; - case 6: - num1 *= 2; - num2 = 12; - break; - case 8: - num1 *= 2; - num2 = 16; - break; - } - - return to_string((int)num1) + "/" + to_string((int)num2); - } - float subBeatValue1(float num1, float num2) { - float denom = findGCD(num1, num2); - num1 /= denom; - num2 /= denom; - switch ((int)num2) { - case 0: - num1 *= 16; - break; - case 1: - num1 *= 16; - break; - case 2: - num1 *= 8; - break; - case 3: - num1 *= 4; - break; - case 4: - num1 *= 4; - break; - case 6: - num1 *= 2; - break; - case 8: - num1 *= 2; - break; - } - - return num1; - } - float subBeatValue2(float num1, float num2) { - float denom = findGCD(num1, num2); - num1 /= denom; - num2 /= denom; - switch ((int)num2) { - case 0: - return 16; - case 1: - return 16; - case 2: - return 16; - case 3: - return 12; - case 4: - return 16; - case 6: - return 12; - case 8: - return 16; - } - return num2; - } - private: System::Void newToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - theChart.offset = 0.000000; - theChart.movieOffset = 0.000000; - theChart.Notes.clear(); - theChart.PreChart.clear(); - refreshGimmickView(); - refreshMapofMasks(); - refreshMapofNotes(); - refreshNotesView(); - RefreshPaint(); - } - private: System::Void exitToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - exit(0); - } - void saveFile() { - theChart.PreChart.sort(sortPreChartListByBeat); - theChart.Notes.sort(sortNotesListByMeasure); - - std::ofstream chartFile; - chartFile.open(chartFilePath); - - - chartFile << std::fixed << std::setprecision(6) - << "#MUSIC_SCORE_ID 0\n" - << "#MUSIC_SCORE_VERSION 0\n" - << "#GAME_VERSION \n" - << "#MUSIC_FILE_PATH " << theChart.songFileName << "\n" - << "#OFFSET " << theChart.offset << "\n" - << "#MOVIEOFFSET " << theChart.movieOffset << "\n" - << "#BODY\n"; - - for (std::list::iterator itr = theChart.PreChart.begin(); itr != theChart.PreChart.end(); itr++) { - chartFile << std::right << std::fixed << std::setw(4) << (itr)->measure - << std::right << std::fixed << std::setw(5) << (itr)->beat - << std::right << std::fixed << std::setw(5) << (itr)->type; - switch ((itr)->type) { - case 2: - chartFile << " " << std::right << std::fixed << std::setw(5) << (itr)->BPM; - break; - case 3: - chartFile << std::right << std::fixed << std::setw(5) << (itr)->beatDiv1 - << std::right << std::fixed << std::setw(5) << (itr)->beatDiv2; - break; - case 5: - chartFile << " " << std::right << std::fixed << std::setw(5) << (itr)->hiSpeed; - break; - default: - chartFile << ""; - } - chartFile << "\n"; - } - - int line = 0; - for (std::list::iterator itr = theChart.Notes.begin(); itr != theChart.Notes.end(); itr++) { - chartFile << std::right << std::fixed << std::setw(4) << (itr)->measure - << std::right << std::fixed << std::setw(5) << (itr)->beat - << std::right << std::fixed << std::setw(5) << 1 - << std::right << std::fixed << std::setw(5) << (itr)->noteType - << std::right << std::fixed << std::setw(5) << line - << std::right << std::fixed << std::setw(5) << (itr)->position - << std::right << std::fixed << std::setw(5) << (itr)->size - << std::right << std::fixed << std::setw(5) << (itr)->holdChange; - switch ((itr)->noteType) { - case 9: - chartFile << std::right << std::fixed << std::setw(5) << findLine((itr)->nextNode); - break; - case 10: - chartFile << std::right << std::fixed << std::setw(5) << findLine((itr)->nextNode); - break; - case 12: - chartFile << std::right << std::fixed << std::setw(5) << (itr)->BGType; - break; - case 13: - chartFile << std::right << std::fixed << std::setw(5) << (itr)->BGType; - break; - case 25: - chartFile << std::right << std::fixed << std::setw(5) << findLine((itr)->nextNode); - break; - default: - chartFile << ""; - } - chartFile << "\n"; - line++; - } - - chartFile.close(); - } - private: System::Void saveToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - if (chartFilePath != "") { - saveFile(); - } - else { - saveAsToolStripMenuItem_Click(sender, e); - } - } - private: System::Void saveAsToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { - chartFilePath = SystemStringTostdString(saveFileDialog1->FileName); - } - if (chartFilePath != "") { - saveFile(); - } - } - private: System::Void openToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - theChart.offset = 0.000000; - theChart.movieOffset = 0.000000; - theChart.Notes.clear(); - theChart.PreChart.clear(); - - std::ifstream chartFile; - if (openFileDialogChart->ShowDialog() == System::Windows::Forms::DialogResult::OK) { - chartFilePath = SystemStringTostdString(openFileDialogChart->FileName); - } - if (chartFilePath != "") { - chartFile.open(chartFilePath); - } - - std::string temp; - while (!chartFile.eof()) { - if (temp == "#MUSIC_FILE_PATH") { - chartFile >> theChart.songFileName; - temp = theChart.songFileName; - //songFileName->Text = stdStringToSystemString(theChart.songFileName); - if (temp == "#OFFSET") { - songFileName->Text = "Select File (.ogg)"; - theChart.songFileName = "[Replace with name of file]"; - } - } - if (temp == "#OFFSET") { - chartFile >> theChart.offset; - temp = theChart.offset; - OffsetNum->Value = (System::Decimal)theChart.offset; - if (temp == "#BODY") { - OffsetNum->Value = 0; - theChart.offset = 0; - } - } - if (temp == "#MOVIEOFFSET") { - chartFile >> theChart.movieOffset; - temp = theChart.movieOffset; - MovieOffsetNum->Value = (System::Decimal)theChart.movieOffset; - if (temp == "#BODY") { - MovieOffsetNum->Value = 0; - theChart.movieOffset = 0; - } - } - if (temp == "#BODY") { - break; - } - chartFile >> temp; - } - if (theChart.offset < 0.0) { - songTrackSlider->Minimum = (int)(theChart.offset * 1000.f); - } - - int measure; - int beat; - GimmickType type; - int typeTemp; - int lineTemp; - int noteTemp; - std::map Holds; - NotesNode tempNotes; - PreChartNode tempPCNode; - while (!chartFile.eof()) { - chartFile >> measure >> beat >> typeTemp; - type = (GimmickType)typeTemp; - if (chartFile.eof()) break; - - switch (type) { - case NoGimmick: - tempNotes.measure = measure; - tempNotes.beat = beat; - chartFile >> noteTemp >> lineTemp >> tempNotes.position >> tempNotes.size >> tempNotes.holdChange; - tempNotes.noteType = (NoteType)noteTemp; - if (tempNotes.noteType == MaskAdd || tempNotes.noteType == MaskRemove) { - chartFile >> tempNotes.BGType; - } - if (tempNotes.noteType == HoldStartNoBonus || tempNotes.noteType == HoldJoint || tempNotes.noteType == HoldStartBonusFlair) { - chartFile >> Holds[lineTemp]; - } - theChart.Notes.push_back(tempNotes); - break; - case BpmChange: - tempPCNode.measure = measure; - tempPCNode.beat = beat; - tempPCNode.type = type; - chartFile >> tempPCNode.BPM; - theChart.PreChart.push_back(tempPCNode); - if (measure == 0 && beat == 0) { - InitialBPMNum->Value = (System::Decimal)tempPCNode.BPM; - } - break; - case TimeSignatureChange: - tempPCNode.measure = measure; - tempPCNode.beat = beat; - tempPCNode.type = type; - chartFile >> tempPCNode.beatDiv1 >> tempPCNode.beatDiv2; - theChart.PreChart.push_back(tempPCNode); - if (measure == 0 && beat == 0) { - InitTimeSigNum1->Value = (System::Decimal)tempPCNode.beatDiv1; - InitTimeSigNum2->Value = (System::Decimal)tempPCNode.beatDiv2; - } - break; - case HiSpeedChange: - tempPCNode.measure = measure; - tempPCNode.beat = beat; - tempPCNode.type = type; - chartFile >> tempPCNode.hiSpeed; - theChart.PreChart.push_back(tempPCNode); - break; - default: - tempPCNode.measure = measure; - tempPCNode.beat = beat; - tempPCNode.type = type; - theChart.PreChart.push_back(tempPCNode); - } - } - chartFile.close(); - - std::map::iterator mapitr; - std::list::iterator noteitr; - for (mapitr = Holds.begin(); mapitr != Holds.end(); ++mapitr) { - lineTemp = 0; - for (noteitr = theChart.Notes.begin(); noteitr != theChart.Notes.end(); ++noteitr) { - if (lineTemp == mapitr->first) { - std::list::iterator tempitr = noteitr; - std::advance(tempitr, (mapitr->second - lineTemp)); - (noteitr)->nextNode = tempitr; - (tempitr)->prevNode = noteitr; - noteitr = theChart.Notes.end(); - noteitr--; - } - lineTemp++; - } - } - - viewNotesITR = theChart.Notes.begin(); - viewGimmicksITR = theChart.PreChart.begin(); - refreshGimmickView(); - refreshNotesView(); - refreshMapofMasks(); - refreshMapofNotes(); - RefreshPaint(); - refreshMapOfTime(); - } - private: System::Void InsertButton_Click(System::Object^ sender, System::EventArgs^ e) { - InsertObject(); - } - System::Void InsertObject() { - NotesNode tempNotesNode; - PreChartNode tempPreChartNode; - Operation tempOperation; - tempOperation.operationType = 1; - - if (SelectedLineType == NoGimmick) { - tempNotesNode.measure = (int)MeasureNum->Value; - tempNotesNode.beat = std::round((1920.f / (float)BeatNum2->Value) * (float)BeatNum1->Value); - tempNotesNode.noteType = SelectedNoteType; - tempNotesNode.position = (int)PosNum->Value; - tempNotesNode.size = (int)SizeNum->Value; - tempNotesNode.holdChange = 1; - - tempOperation.objectType = 1; - - switch (SelectedNoteType) { - case HoldStartNoBonus: - if (EndHoldBox->Checked) { - CurrentObjectText->Text = "Hold End"; - } - else { - CurrentObjectText->Text = "Hold Joint"; - } - SelectedNoteType = HoldJoint; - break; - case HoldJoint: - if (EndHoldBox->Checked) { - SelectedNoteType = HoldEnd; - tempNotesNode.noteType = SelectedNoteType; - break; - } - break; - case MaskAdd: - if (MaskClockwise->Checked) { - tempNotesNode.BGType = 1; - } - else if (MaskCClockwise->Checked) { - tempNotesNode.BGType = 0; - } - else { - tempNotesNode.BGType = 2; - } - break; - case MaskRemove: - if (MaskClockwise->Checked) { - tempNotesNode.BGType = 1; - } - else if (MaskCClockwise->Checked) { - tempNotesNode.BGType = 0; - } - else { - tempNotesNode.BGType = 2; - } - break; - case HoldStartBonusFlair: - if (EndHoldBox->Checked) { - CurrentObjectText->Text = "Hold End"; - } - else { - CurrentObjectText->Text = "Hold Joint"; - } - SelectedNoteType = HoldJoint; - break; - } - if (SelectedNoteType == HoldEnd) { - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = HoldStartBonusFlair; - CurrentObjectText->Text = "Hold Start [R Note]"; - } - else { - SelectedNoteType = HoldStartNoBonus; - CurrentObjectText->Text = "Hold Start"; - } - } - - theChart.Notes.push_back(tempNotesNode); - tempOperation.Note.push_back(tempNotesNode); - float currentTime = (float)tempNotesNode.measure + ((float)tempNotesNode.beat / 1920); - mapOfNotes[currentTime].push_back(tempNotesNode); - if (!theChart.Notes.empty()) { - viewNotesITR = theChart.Notes.end(); - viewNotesITR--; - switch (viewNotesITR->noteType) { - case HoldStartNoBonus: - case HoldStartBonusFlair: - viewNotesITR->prevNode = theChart.Notes.end(); - viewNotesITR->nextNode = theChart.Notes.end(); - holdNoteitr = viewNotesITR; - break; - case HoldJoint: - viewNotesITR->prevNode = holdNoteitr; - viewNotesITR->prevNode->nextNode = viewNotesITR; - viewNotesITR->nextNode = theChart.Notes.end(); - holdNoteitr = viewNotesITR; - break; - case HoldEnd: - viewNotesITR->prevNode = holdNoteitr; - viewNotesITR->prevNode->nextNode = viewNotesITR; - viewNotesITR->nextNode = theChart.Notes.end(); - holdNoteitr = theChart.Notes.end(); - break; - } - } - SelectedNoteTypeVisual = viewNotesITR->noteType; - theChart.Notes.sort(sortNotesListByMeasure); - if (SelectedNoteType == MaskAdd || SelectedNoteType == MaskRemove) { - refreshMapofMasks(); - } - refreshNotesView(); - } - else { - tempPreChartNode.measure = (int)MeasureNum->Value; - tempPreChartNode.beat = std::round((1920.f / (float)BeatNum2->Value) * (float)BeatNum1->Value); - tempPreChartNode.type = SelectedLineType; - - tempOperation.objectType = 2; - - switch (SelectedLineType) { - case BpmChange: - if (tempPreChartNode.measure == 0 && tempPreChartNode.beat == 0) { - InitialBPMNum->Value = BPMChangeNum->Value; - } - tempPreChartNode.BPM = (double)BPMChangeNum->Value; - theChart.PreChart.push_back(tempPreChartNode); - tempOperation.Gimmick.push_back(tempPreChartNode); - break; - case TimeSignatureChange: - if (tempPreChartNode.measure == 0 && tempPreChartNode.beat == 0) { - InitTimeSigNum1->Value = TimeSigNum1->Value; - InitTimeSigNum2->Value = TimeSigNum2->Value; - } - tempPreChartNode.beatDiv1 = (int)TimeSigNum1->Value; - tempPreChartNode.beatDiv2 = (int)TimeSigNum2->Value; - theChart.PreChart.push_back(tempPreChartNode); - tempOperation.Gimmick.push_back(tempPreChartNode); - break; - case HiSpeedChange: - tempPreChartNode.hiSpeed = (double)HiSpeedChangeNum->Value; - theChart.PreChart.push_back(tempPreChartNode); - tempOperation.Gimmick.push_back(tempPreChartNode); - break; - case ReverseStart: - theChart.PreChart.push_back(tempPreChartNode); - tempOperation.Gimmick.push_back(tempPreChartNode); - - tempPreChartNode.measure = (int)ReverseEnd1MeasureNum->Value; - tempPreChartNode.beat = std::round((1920.f / (float)ReverseEnd1BeatNum2->Value) * (float)ReverseEnd1BeatNum1->Value); - tempPreChartNode.type = ReverseEnd; - theChart.PreChart.push_back(tempPreChartNode); - tempOperation.Gimmick.push_back(tempPreChartNode); - - tempPreChartNode.measure = (int)ReverseEnd2MeasureNum->Value; - tempPreChartNode.beat = std::round((1920.f / (float)ReverseEnd2BeatNum2->Value) * (float)ReverseEnd2BeatNum1->Value); - tempPreChartNode.type = ReverseNoteEnd; - theChart.PreChart.push_back(tempPreChartNode); - tempOperation.Gimmick.push_back(tempPreChartNode); - break; - case StopStart: - theChart.PreChart.push_back(tempPreChartNode); - tempOperation.Gimmick.push_back(tempPreChartNode); - - tempPreChartNode.measure = (int)StopEndMeasureNum->Value; - tempPreChartNode.beat = std::round((1920.f / (float)StopEndBeatNum2->Value) * (float)StopEndBeatNum1->Value); - tempPreChartNode.type = StopEnd; - theChart.PreChart.push_back(tempPreChartNode); - tempOperation.Gimmick.push_back(tempPreChartNode); - break; - } - if (!theChart.PreChart.empty()) { - viewGimmicksITR = theChart.PreChart.end(); - viewGimmicksITR--; - } - theChart.PreChart.sort(sortPreChartListByBeat); - refreshGimmickView(); - refreshMapOfTime(); - } - if(!operationReversal) { - undoStack.push(tempOperation); - while(!redoStack.empty()) - redoStack.pop(); - } - RefreshPaint(); - } - private: System::Void InitialSetSave_Click(System::Object^ sender, System::EventArgs^ e) { - bool BPMFound = false; - bool TimeSigFound = false; - - theChart.offset = (double)OffsetNum->Value; - theChart.movieOffset = (double)MovieOffsetNum->Value; - - std::list::iterator itr; - for (itr = theChart.PreChart.begin(); itr != theChart.PreChart.end(); ++itr) { - if ((itr)->type == BpmChange && (itr)->measure == 0 && (itr)->beat == 0) { - (itr)->BPM = (double)InitialBPMNum->Value; - BPMFound = true; - } - if ((itr)->type == TimeSignatureChange && (itr)->measure == 0 && (itr)->beat == 0) { - (itr)->beatDiv1 = (int)InitTimeSigNum1->Value; - (itr)->beatDiv2 = (int)InitTimeSigNum2->Value; - TimeSigFound = true; - } - } - - PreChartNode tempPreChartNode; - if (!BPMFound) { - tempPreChartNode.measure = 0; - tempPreChartNode.beat = 0; - tempPreChartNode.type = BpmChange; - tempPreChartNode.BPM = (double)InitialBPMNum->Value; - theChart.PreChart.push_back(tempPreChartNode); - viewGimmicksITR = theChart.PreChart.end(); - viewGimmicksITR--; - } - if (!TimeSigFound) { - tempPreChartNode.measure = 0; - tempPreChartNode.beat = 0; - tempPreChartNode.type = TimeSignatureChange; - tempPreChartNode.beatDiv1 = (int)InitTimeSigNum1->Value; - tempPreChartNode.beatDiv2 = (int)InitTimeSigNum2->Value; - theChart.PreChart.push_back(tempPreChartNode); - viewGimmicksITR = theChart.PreChart.end(); - viewGimmicksITR--; - } - theChart.PreChart.sort(sortPreChartListByBeat); - if (theChart.offset < 0.0) { - songTrackSlider->Minimum = (int)(theChart.offset * 1000.f); - } - refreshGimmickView(); - refreshMapOfTime(); - saveToolStripMenuItem_Click(sender, e); - } - private: System::Void TapButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - if (BonusGetRadioButton->Checked) { - SelectedNoteType = TouchBonus; - } - else if (BonusFlairRadioButton->Checked) { - SelectedNoteType = TouchBonusFlair; - } - else { - SelectedNoteType = TouchNoBonus; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - } - SelectedLineType = NoGimmick; - RefreshPaint(); - } - private: System::Void OrangeButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - if (BonusGetRadioButton->Checked) { - SelectedNoteType = SlideOrangeBonus; - } - else if (BonusFlairRadioButton->Checked) { - SelectedNoteType = SlideOrangeBonusFlair; - } - else { - SelectedNoteType = SlideOrangeNoBonus; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - SelectedLineType = NoGimmick; - } - RefreshPaint(); - } - private: System::Void GreenButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - if (BonusGetRadioButton->Checked == true) { - SelectedNoteType = SlideGreenBonus; - } - else if (BonusFlairRadioButton->Checked) { - SelectedNoteType = SlideGreenBonusFlair; - } - else { - SelectedNoteType = SlideGreenNoBonus; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - SelectedLineType = NoGimmick; - } - RefreshPaint(); - } - private: System::Void RedButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = SnapRedBonusFlair; - } - else { - SelectedNoteType = SnapRedNoBonus; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - SelectedLineType = NoGimmick; - } - RefreshPaint(); - } - private: System::Void BlueButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = SnapBlueBonusFlair; - } - else { - SelectedNoteType = SnapBlueNoBonus; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - SelectedLineType = NoGimmick; - } - RefreshPaint(); - } - private: System::Void YellowButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = ChainBonusFlair; - } - else { - SelectedNoteType = Chain; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - SelectedLineType = NoGimmick; - } - RefreshPaint(); - } - private: System::Void EndChartButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - SelectedNoteType = EndOfChart; - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - SelectedLineType = NoGimmick; - } - RefreshPaint(); - } - private: System::Void HoldButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = HoldStartBonusFlair; - } - else { - SelectedNoteType = HoldStartNoBonus; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - SelectedLineType = NoGimmick; - } - RefreshPaint(); - } - private: System::Void MaskButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - if (AddMask->Checked) { - SelectedNoteType = MaskAdd; - } - else { - SelectedNoteType = MaskRemove; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - SelectedLineType = NoGimmick; - } - RefreshPaint(); - } - private: System::Void BPMChange_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - CurrentObjectText->Text = "BPM Change"; - SelectedLineType = BpmChange; - } - RefreshPaint(); - } - private: System::Void TimeSignature_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - CurrentObjectText->Text = "Time Signature Change"; - SelectedLineType = TimeSignatureChange; - } - RefreshPaint(); - } - private: System::Void Hispeed_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - CurrentObjectText->Text = "Hi-Speed Change"; - SelectedLineType = HiSpeedChange; - } - RefreshPaint(); - } - private: System::Void Stop_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - CurrentObjectText->Text = "Stop"; - SelectedLineType = StopStart; - } - RefreshPaint(); - } - private: System::Void Reverse_Click(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType != HoldJoint) { - CurrentObjectText->Text = "Reverse"; - SelectedLineType = ReverseStart; - } - RefreshPaint(); - } - private: System::Void EndHoldBox_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { - if (SelectedNoteType == HoldJoint) { - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - } - RefreshPaint(); - } - private: System::Void NoteRadioButton_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { - if (SelectedLineType == NoGimmick) { - switch (SelectedNoteType) { - case TouchNoBonus: - case TouchBonus: - case TouchBonusFlair: - if (NoBonusRadioButton->Checked) { - SelectedNoteType = TouchNoBonus; - } - if (BonusGetRadioButton->Checked) { - SelectedNoteType = TouchBonus; - } - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = TouchBonusFlair; - } - break; - break; - case SlideOrangeNoBonus: - case SlideOrangeBonus: - case SlideOrangeBonusFlair: - if (NoBonusRadioButton->Checked) { - SelectedNoteType = SlideOrangeNoBonus; - } - if (BonusGetRadioButton->Checked) { - SelectedNoteType = SlideOrangeBonus; - } - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = SlideOrangeBonusFlair; - } - break; - case SlideGreenNoBonus: - case SlideGreenBonus: - case SlideGreenBonusFlair: - if (NoBonusRadioButton->Checked) { - SelectedNoteType = SlideGreenNoBonus; - } - if (BonusGetRadioButton->Checked) { - SelectedNoteType = SlideGreenBonus; - } - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = SlideGreenBonusFlair; - } - break; - case SnapRedNoBonus: - case SnapRedBonusFlair: - if (NoBonusRadioButton->Checked) { - SelectedNoteType = SnapRedNoBonus; - } - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = SnapRedBonusFlair; - } - break; - case SnapBlueNoBonus: - case SnapBlueBonusFlair: - if (NoBonusRadioButton->Checked) { - SelectedNoteType = SnapBlueNoBonus; - } - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = SnapBlueBonusFlair; - } - break; - case HoldStartNoBonus: - case HoldStartBonusFlair: - if (NoBonusRadioButton->Checked) { - SelectedNoteType = HoldStartNoBonus; - } - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = HoldStartBonusFlair; - } - break; - case Chain: - case ChainBonusFlair: - if (NoBonusRadioButton->Checked) { - SelectedNoteType = Chain; - } - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = ChainBonusFlair; - } - break; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - } - } - private: System::Void AddMask_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { - if (AddMask->Checked) { - MaskCenter->Text = "From Center"; - } - if (SelectedLineType == NoGimmick) { - if (SelectedNoteType == MaskRemove) { - if (AddMask->Checked) { - SelectedNoteType = MaskAdd; - } - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - } - RefreshPaint(); - } - private: System::Void RemoveMask_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { - if (RemoveMask->Checked) { - MaskCenter->Text = "To Center"; - } - if (SelectedLineType == NoGimmick) { - if (SelectedNoteType == MaskAdd) { - if (RemoveMask->Checked) { - SelectedNoteType = MaskRemove; - } - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - } - RefreshPaint(); - } - private: System::Void Mask_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { - if (SelectedLineType == NoGimmick) { - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - } - } - private: System::Void ReverseEnd1BeatNum1_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - if (ReverseEnd1BeatNum1->Value >= ReverseEnd1BeatNum2->Value) { - ReverseEnd1BeatNum1->Value = 0; - ReverseEnd1MeasureNum->Value++; - } - if (ReverseEnd1BeatNum1->Value < 0) { - if (ReverseEnd1MeasureNum->Value > 0) { - int temp = (int)ReverseEnd1BeatNum2->Value - 1; - ReverseEnd1BeatNum1->Value = (System::Decimal)temp; - ReverseEnd1MeasureNum->Value--; - } - else { - ReverseEnd1BeatNum1->Value = 0; - } - } - } - private: System::Void ReverseEnd2BeatNum1_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - if (ReverseEnd2BeatNum1->Value >= ReverseEnd2BeatNum2->Value) { - ReverseEnd2BeatNum1->Value = 0; - ReverseEnd2MeasureNum->Value++; - } - if (ReverseEnd2BeatNum1->Value < 0) { - if (ReverseEnd2MeasureNum->Value > 0) { - int temp = (int)ReverseEnd2BeatNum2->Value - 1; - ReverseEnd2BeatNum1->Value = (System::Decimal)temp; - ReverseEnd2MeasureNum->Value--; - } - else { - ReverseEnd2BeatNum1->Value = 0; - } - } - } - private: System::Void StopEndBeatNum1_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - if (StopEndBeatNum1->Value >= StopEndBeatNum2->Value) { - StopEndBeatNum1->Value = 0; - StopEndMeasureNum->Value++; - } - if (StopEndBeatNum1->Value < 0) { - if (StopEndMeasureNum->Value > 0) { - int temp = (int)StopEndBeatNum2->Value - 1; - StopEndBeatNum1->Value = (System::Decimal)temp; - StopEndMeasureNum->Value--; - } - else { - StopEndBeatNum1->Value = 0; - } - } - } - private: System::Void PrevGimmickButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (!theChart.PreChart.empty()) { - if (viewGimmicksITR != theChart.PreChart.begin()) { - viewGimmicksITR--; - } - else { - viewGimmicksITR = theChart.PreChart.end(); - viewGimmicksITR--; - } - refreshGimmickView(); - } - } - private: System::Void NextGimmickButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (!theChart.PreChart.empty()) { - viewGimmicksITR++; - if (viewGimmicksITR == theChart.PreChart.end()) { - viewGimmicksITR = theChart.PreChart.begin(); - } - refreshGimmickView(); - } - } - private: System::Void DeleteGimmickButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (!theChart.PreChart.empty()) { - std::list::iterator viewGimmicksITRtemp = viewGimmicksITR; - Operation tempOperation; - tempOperation.operationType = 2; - tempOperation.objectType = 2; - if (viewGimmicksITR == theChart.PreChart.begin()) { - viewGimmicksITR++; - } - else { - viewGimmicksITR--; - } - tempOperation.Gimmick.push_back(*viewGimmicksITRtemp); - theChart.PreChart.erase(viewGimmicksITRtemp); - if (!operationReversal) { - undoStack.push(tempOperation); - while (!redoStack.empty()) - redoStack.pop(); - } - refreshGimmickView(); - } - } - private: System::Void PrevNoteButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (!theChart.Notes.empty()) { - if (viewNotesITR != theChart.Notes.begin()) { - viewNotesITR--; - } - else { - viewNotesITR = theChart.Notes.end(); - viewNotesITR--; - } - refreshNotesView(); - } - } - private: System::Void NextNoteButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (!theChart.Notes.empty()) { - viewNotesITR++; - if (viewNotesITR == theChart.Notes.end()) { - viewNotesITR = theChart.Notes.begin(); - } - refreshNotesView(); - } - } - private: System::Void DeleteNoteButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (!theChart.Notes.empty()) { - bool holdDelete = false; - Operation tempOperation; - tempOperation.operationType = 2; - tempOperation.objectType = 1; - do { - std::list::iterator viewNotesITRtemp = viewNotesITR; - if (viewNotesITRtemp->noteType == HoldStartNoBonus || viewNotesITRtemp->noteType == HoldStartBonusFlair) { //deletes hold from start until it's all gone - holdDelete = true; - while (holdDelete) { - if (viewNotesITRtemp->noteType == HoldEnd) { - if (viewNotesITR == theChart.Notes.begin()) { - viewNotesITR++; - } - else { - viewNotesITR--; - } - tempOperation.Note.push_back(*viewNotesITRtemp); - theChart.Notes.erase(viewNotesITRtemp); - holdDelete = false; - } - else { - if (viewNotesITRtemp->nextNode != theChart.Notes.end()) { - viewNotesITR = viewNotesITRtemp->nextNode; - tempOperation.Note.push_back(*viewNotesITRtemp); - theChart.Notes.erase(viewNotesITRtemp); - viewNotesITRtemp = viewNotesITR; - viewNotesITRtemp->prevNode = theChart.Notes.end(); - } - else { - if (viewNotesITR == theChart.Notes.begin()) { - viewNotesITR++; - } - else { - viewNotesITR--; - } - SelectedNoteType = HoldStartNoBonus; - if (BonusFlairRadioButton->Checked) - SelectedNoteType = HoldStartBonusFlair; - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - tempOperation.Note.push_back(*viewNotesITRtemp); - theChart.Notes.erase(viewNotesITRtemp); - holdDelete = false; - } - } - } - holdDelete = false; - } - else if (viewNotesITRtemp->noteType == HoldJoint) { - holdDelete = true; - viewNotesITRtemp = viewNotesITRtemp->prevNode; - viewNotesITR = viewNotesITRtemp; - } - else if (viewNotesITRtemp->noteType == HoldEnd) { - holdDelete = true; - viewNotesITRtemp = viewNotesITRtemp->prevNode; - viewNotesITR = viewNotesITRtemp; - } - else { - if (viewNotesITR == theChart.Notes.begin()) { - viewNotesITR++; - } - else { - viewNotesITR--; - } - tempOperation.Note.push_back(*viewNotesITRtemp); - theChart.Notes.erase(viewNotesITRtemp); - holdDelete = false; - } - } while (holdDelete); - if (!operationReversal) { - undoStack.push(tempOperation); - while (!redoStack.empty()) - redoStack.pop(); - } - refreshNotesView(); - refreshMapofNotes(); - refreshMapofMasks(); - } - RefreshPaint(); - } - private: System::Void openFileDialog_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { - } - private: System::Void saveFileDialog_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { - } - Color returnColor(NoteType noteType) { - switch (noteType) - { - case TouchNoBonus: - case TouchBonus: - case TouchBonusFlair: - return TapButton->BackColor; - case SnapRedNoBonus: - case SnapRedBonusFlair: - return RedButton->BackColor; - case SnapBlueNoBonus: - case SnapBlueBonusFlair: - return BlueButton->BackColor; - case SlideOrangeNoBonus: - case SlideOrangeBonus: - case SlideOrangeBonusFlair: - return OrangeButton->BackColor; - case SlideGreenNoBonus: - case SlideGreenBonus: - case SlideGreenBonusFlair: - return GreenButton->BackColor; - case HoldStartNoBonus: - case HoldJoint: - case HoldEnd: - case HoldStartBonusFlair: - return HoldButton->BackColor; - case Chain: - case ChainBonusFlair: - return YellowButton->BackColor; - default: - return Color::Transparent; - } - } - private: System::Void MyForm_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { - /* MOVED TO PANEL PAINT - //Note graphics - Graphics^ notesGraphics = e->Graphics; - //Circle location and size - int xPos = InitialSettingsPane->Left; - int yPos = InitialSettingsPane->Bottom + 6; - int sizeOfRect = InitialSettingsPane->Width; - Point noteViewPos = NotesViewBox->Location; - Point InitSetBoxPos = InitialSettingsPane->Location; - if (noteViewPos.Y < (sizeOfRect + InitSetBoxPos.Y + InitialSettingsPane->Height)) { - sizeOfRect = noteViewPos.Y - InitialSettingsPane->Height - InitSetBoxPos.Y - 6; - } - //Circle info - float circleRadius = (sizeOfRect / 2); - float xCenterOfCircle = circleRadius + xPos; - float yCenterOfCircle = circleRadius + yPos; - //Selected object values - float startAngle = -((float)PosNum->Value * 6); - float arcLength = -((float)SizeNum->Value * 6); - //Rectangle the visualization is in - System::Drawing::Point location(xPos, yPos); - System::Drawing::Size size(sizeOfRect, sizeOfRect); - System::Drawing::Rectangle Rect(location, size); - //Pens for drawing parts of circle - float widthOfNotePen = 5; - Pen^ CircleBasePen = gcnew Pen(Color::Black, 3); - Pen^ CircleLinesPen = gcnew Pen(Color::Black, 2); - Pen^ CircleNotePen = gcnew Pen(Color::Transparent, widthOfNotePen); - //Drawing mode - notesGraphics->SmoothingMode = Drawing2D::SmoothingMode::Default; - - //pre-existing mask values - float maskStartAngle; - float maskArcLength; - //Draw pre-existing mask - float currentTime = (float)MeasureNum->Value + ((float)BeatNum1->Value / (float)BeatNum2->Value); - std::map>>::iterator mapitr = mapOfMasks.lower_bound(currentTime); - if (mapOfMasks.find(currentTime) == mapOfMasks.end() && Rect.Width >= 1) { - if (mapitr != mapOfMasks.end()) { - if (mapitr != mapOfMasks.begin()) { - mapitr--; - } - if (mapitr->first < currentTime) { - for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { - maskStartAngle = -((float)listITR->first * 6); - maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - notesGraphics->FillPie(Brushes::Silver, Rect, maskStartAngle, maskArcLength); - } - } - } - else { - mapitr = mapOfMasks.end(); - if (!mapOfMasks.empty()) { - mapitr--; - for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { - maskStartAngle = -((float)listITR->first * 6); - maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - notesGraphics->FillPie(Brushes::Silver, Rect, maskStartAngle, maskArcLength); - } - } - } - } - else { - if (Rect.Width >= 1) { - for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { - maskStartAngle = -((float)listITR->first * 6); - maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - notesGraphics->FillPie(Brushes::Silver, Rect, maskStartAngle, maskArcLength); - } - } - } - - //Draw selected mask - if (SelectedLineType == 1 && Rect.Width >= 1) { - if (SelectedNoteTypeVisual == 12) { - notesGraphics->FillPie(Brushes::Silver, Rect, startAngle, arcLength); - } - if (SelectedNoteTypeVisual == 13) { - notesGraphics->FillPie(Brushes::White, Rect, startAngle, arcLength); - } - } - - if (!alreadyDrawn) { - Graphics^ circleGraphics = e->Graphics; - - //Draw base circle - circleGraphics->DrawEllipse(CircleBasePen, Rect); - - //Draw Degree Lines - for (int i = 0; i < 360; i += 6) { //i is the angle n degrees - float xStart, yStart, xEnd, yEnd; - float degToRad = (float)i * PI / 180.0; //i to Radians - xStart = (circleRadius * cos(degToRad)) + xCenterOfCircle; - yStart = (circleRadius * sin(degToRad)) + yCenterOfCircle; - PointF coordPointStart(xStart, yStart); - - float innerRadius = circleRadius - 10; - CircleLinesPen->Width = 1; - if (i % 90 == 0) { - innerRadius = circleRadius - 35.0; - CircleLinesPen->Width = 4; - } - else if (i % 30 == 0) { - innerRadius = circleRadius - 25.0; - CircleLinesPen->Width = 2; - } - xEnd = (innerRadius * cos(degToRad)) + xCenterOfCircle; - yEnd = (innerRadius * sin(degToRad)) + yCenterOfCircle; - PointF coordPointEnd(xEnd, yEnd); - - circleGraphics->DrawLine(CircleLinesPen, coordPointStart, coordPointEnd); - } - alreadyDrawn = true; - } - - //future stuff - float futStartAngle; - float futArcLength; - float xPosFut; - float yPosFut; - float sizeOfRectFut; - float circleRadiusFut; - float totalTimeShowNotes = 0.5; - //Draw future holds - for (std::map>::iterator notemapitr = mapOfNotes.lower_bound(currentTime); notemapitr != mapOfNotes.end(); notemapitr++) { - float timeAtITR = notemapitr->first; - if (timeAtITR <= (currentTime + totalTimeShowNotes)) { - for (std::list::iterator listofNotesitr = notemapitr->second.begin(); listofNotesitr != notemapitr->second.end(); listofNotesitr++) { - if (isHold(listofNotesitr->noteType)) { - //Future hold values - futStartAngle = -((float)listofNotesitr->position * 6); - futArcLength = -((float)listofNotesitr->size * 6); - CircleNotePen->Color = returnColor(listofNotesitr->noteType); - //modify rectangle to scale with how long until the note appears - float NoteScale = 1 - ((timeAtITR - currentTime) * (1 / totalTimeShowNotes)); //0-1 = 0-100% - sizeOfRectFut = sizeOfRect * NoteScale; - circleRadiusFut = (sizeOfRectFut / 2); - xPosFut = InitialSettingsPane->Left + (circleRadius - circleRadiusFut) + 1; - yPosFut = InitialSettingsPane->Bottom + 6 + (circleRadius - circleRadiusFut) + 1; - CircleNotePen->Width = widthOfNotePen * NoteScale + 2; - - System::Drawing::Point locationFut(xPosFut, yPosFut); - System::Drawing::Size sizeFut(sizeOfRectFut, sizeOfRectFut); - System::Drawing::Rectangle RectFut(locationFut, sizeFut); - if (RectFut.Width >= 1) { - notesGraphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); - } - } - } - } - else { - notemapitr = mapOfNotes.end(); - notemapitr--; - } - } - - //Draw future notes - for (std::map>::iterator notemapitr = mapOfNotes.lower_bound(currentTime); notemapitr != mapOfNotes.end(); notemapitr++) { - float timeAtITR = notemapitr->first; - if (timeAtITR <= (currentTime + totalTimeShowNotes)) { - for (std::list::iterator listofNotesitr = notemapitr->second.begin(); listofNotesitr != notemapitr->second.end(); listofNotesitr++) { - if (!isHold(listofNotesitr->noteType)) { - //Future note values - futStartAngle = -((float)listofNotesitr->position * 6); - futArcLength = -((float)listofNotesitr->size * 6); - CircleNotePen->Color = returnColor(listofNotesitr->noteType); - //modify rectangle to scale with how long until the note appears - float NoteScale = 1 - ((timeAtITR - currentTime) * (1 / totalTimeShowNotes)); //0-1 = 0-100% - sizeOfRectFut = sizeOfRect * NoteScale; - circleRadiusFut = (sizeOfRectFut / 2); - xPosFut = InitialSettingsPane->Left + (circleRadius - circleRadiusFut) + 1; - yPosFut = InitialSettingsPane->Bottom + 6 + (circleRadius - circleRadiusFut) + 1; - CircleNotePen->Width = widthOfNotePen * NoteScale; - - System::Drawing::Point locationFut(xPosFut, yPosFut); - System::Drawing::Size sizeFut(sizeOfRectFut, sizeOfRectFut); - System::Drawing::Rectangle RectFut(locationFut, sizeFut); - if (RectFut.Width >= 1) { - notesGraphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); - } - } - } - } - else { - notemapitr = mapOfNotes.end(); - notemapitr--; - } - } - - - //Draw selected note - if (SelectedLineType == 1 && Rect.Width >= 1) { - CircleNotePen->Color = returnColor(SelectedNoteTypeVisual); - CircleNotePen->Width = 4; - notesGraphics->DrawArc(CircleNotePen, Rect, startAngle, arcLength); - } - */ - } - private: System::Void PosNum_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - RefreshPaint(); - } - private: System::Void SizeNum_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - RefreshPaint(); - } - private: System::Void MyForm_Resize(System::Object^ sender, System::EventArgs^ e) { - int paddingFromEdge = 28; - int paddingBetweenObjects = 6; - int leftPos = GimmickBox->Right + paddingBetweenObjects; - int rightPos = PreChartViewBox->Left - paddingBetweenObjects; - int topPos = GimmickBox->Top; - int botPos = SongPlaybackBox->Top - paddingBetweenObjects; - int width = rightPos - leftPos; - int height = botPos - topPos; - /* - if (width < (InitialSettingsPane->Left - leftPos)) { - topPos = InitialSettingsPane->Top; - width = (InitialSettingsPane->Left - paddingBetweenObjects) - leftPos; - height = (NotesViewBox->Top - paddingBetweenObjects) - InitialSettingsPane->Top; - } - */ - Point position(leftPos, topPos); - CirclePanel->Location = position; - if (width > height) { - CirclePanel->Width = height; - CirclePanel->Height = height; - } - else { - CirclePanel->Width = width; - CirclePanel->Height = width; - } - //InitialSettingsPane->Width = (this->Width - NoteTypeBox->Width - 36); - //Point position(NoteTypeBox->Width + 12, 27); - //InitialSettingsPane->Location = position; - - // Update BufferedGraphics size - bufferedGfxContext->MaximumBuffer = Drawing::Size(CirclePanel->Width + 1, CirclePanel->Height + 1); - bufferedGfx = bufferedGfxContext->Allocate(CirclePanel->CreateGraphics(), - Drawing::Rectangle(0, 0, CirclePanel->Width, CirclePanel->Height)); - //DrawToGraphics(bufferedGfx->Graphics); - - RefreshPaint(); - } - private: System::Void MeasureNum_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - refreshScrollBarFromMeasureNum(); - RefreshPaint(); - } - private: System::Void BeatNum1_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - if (BeatNum1->Value >= BeatNum2->Value) { - alreadyRefreshed = true; - BeatNum1->Value = 0; - alreadyRefreshed = true; - MeasureNum->Value++; - } - if (BeatNum1->Value < 0) { - if (MeasureNum->Value > 0) { - int temp = (int)BeatNum2->Value - 1; - alreadyRefreshed = true; - BeatNum1->Value = (System::Decimal)temp; - alreadyRefreshed = true; - MeasureNum->Value--; - } - else { - alreadyRefreshed = true; - BeatNum1->Value = 0; - } - } - refreshScrollBarFromMeasureNum(); - RefreshPaint(); - } - private: System::Void BeatNum2_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - refreshScrollBarFromMeasureNum(); - RefreshPaint(); - } - void refreshScrollBarFromMeasureNum() { - if (!mapOfTimeBetweenMeasures.empty()) { - float currentMeasure = (float)MeasureNum->Value + ((float)BeatNum1->Value / (float)BeatNum2->Value); //in measures - float lastTime = 0; - float timeBetweenBeats; - float lastMeasure; - if (mapOfTimeBetweenMeasures.find(currentMeasure) == mapOfTimeBetweenMeasures.end()) { - std::map::iterator itr = mapOfTimeBetweenMeasures.lower_bound(currentMeasure); - if (itr != mapOfTimeBetweenMeasures.end()) { - if (itr != mapOfTimeBetweenMeasures.begin()) { - itr--; - } - } - else { - itr = mapOfTimeBetweenMeasures.end(); - if (!mapOfTimeBetweenMeasures.empty()) { - itr--; - } - } - lastMeasure = itr->first; - timeBetweenBeats = itr->second; - } - else { - lastMeasure = currentMeasure; - timeBetweenBeats = mapOfTimeBetweenMeasures[currentMeasure]; //use current measure to find last "milliseconds per measure" - } - for (std::map::iterator itrBaT = mapOfBeatAtTime.begin(); itrBaT != mapOfBeatAtTime.end(); itrBaT++) { - if (itrBaT->second == lastMeasure) { //use itr->first value in first map to search for itr->second in second map, - lastTime = itrBaT->first; - break; - } - } - float differenceInTimeMeasures = currentMeasure - lastMeasure; - float currentTimeMil = (differenceInTimeMeasures * timeBetweenBeats) + lastTime; //itr->first in second map + ("milliseconds per measure" * time) - - if (currentlyPlayingSong != nullptr) { - if (currentlyPlayingSong->Paused) { - scrollBarChanged = true; - if (currentTimeMil < songTrackSlider->Maximum) { - songTrackSlider->Value = currentTimeMil; - } - else - songTrackSlider->Value = songTrackSlider->Maximum; - } - } - theCurrentMeasure = currentMeasure; - scrollBarChanged = false; - } - } - private: System::Void MatchNoteCheckBox_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { - refreshNotesView(); - } - private: System::Void NextBeatButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (!theChart.Notes.empty()) { - int initialMeasure = viewNotesITR->measure; - while (viewNotesITR->measure == initialMeasure) { - viewNotesITR++; - if (viewNotesITR == theChart.Notes.end()) { - viewNotesITR = theChart.Notes.begin(); - break; - } - } - refreshNotesView(); - } - } - private: System::Void PrevBeatButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (!theChart.Notes.empty()) { - int initialMeasure = viewNotesITR->measure; - while (viewNotesITR->measure == initialMeasure) { - if (viewNotesITR != theChart.Notes.begin()) { - viewNotesITR--; - } - else { - viewNotesITR = theChart.Notes.end(); - viewNotesITR--; - break; - } - } - refreshNotesView(); - } - } - private: System::Void MatchTimeCheckBox_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { - refreshNotesView(); - } - private: System::Void EditNoteButton_Click(System::Object^ sender, System::EventArgs^ e) { - Operation tempOperation; - tempOperation.operationType = 3; - tempOperation.objectType = 1; - tempOperation.oldNote.push_back(*viewNotesITR); - - viewNotesITR->measure = (int)MeasureNum->Value; - viewNotesITR->beat = ((1920 / (int)BeatNum2->Value) * (int)BeatNum1->Value); - if (!isHold(SelectedNoteType)) - viewNotesITR->noteType = SelectedNoteType; - viewNotesITR->position = (int)PosNum->Value; - viewNotesITR->size = (int)SizeNum->Value; - - tempOperation.Note.push_back(*viewNotesITR); - if (!operationReversal) { - undoStack.push(tempOperation); - while (!redoStack.empty()) - redoStack.pop(); - } - refreshNotesView(); - refreshMapofNotes(); - RefreshPaint(); - } - private: System::Void SizeTrackBar_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - SizeNum->Value = SizeTrackBar->Value; - } - private: System::Void PosTrackBar_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - PosNum->Value = PosTrackBar->Value; - } - void RefreshPaint() { - if (!alreadyRefreshed && !noteRefresh) { - CirclePanel->Refresh(); - } - else { - alreadyRefreshed = false; - } - } - private: System::Void CirclePanel_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { - System::Drawing::Rectangle PanelRect(0, 0, CirclePanel->Width, CirclePanel->Height); - //Pens for drawing parts of circle - float widthOfBasePen = (float)CirclePanel->Width * (4.f / 600.f); //sizes are essentially the pixel width if the box is 600x600 - float widthOfLinesPen = (float)CirclePanel->Width * (2.f / 600.f); - float widthOfNotePen = (float)CirclePanel->Width * (8.f / 600.f); - float widthOfCurrentNotePen = (float)CirclePanel->Width * (4.f / 600.f); - float widthOfMeasurePen = (float)CirclePanel->Width * (1.f / 600.f); - float highlightWidth = (float)CirclePanel->Width * (5.f / 600.f); - float baseLineLength = (float)CirclePanel->Width * (10.f / 285.f); //10 pixels if box is 285x285 - float baseLineWidth = (float)CirclePanel->Width * (1.f / 285.f); - int BonusTransparency = 75; //0 is full transparent, 255 is max - int SelectedTransparency = 110; - Color BonusColor = Color(Color::FromArgb(BonusTransparency, Color::Yellow)); - Color HighlightColor = Color(Color::FromArgb(SelectedTransparency, Color::LightPink)); - Pen^ CircleBasePen = gcnew Pen(Color::Black, widthOfBasePen); - Pen^ CircleLinesPen = gcnew Pen(Color::Black, widthOfLinesPen); - Pen^ CircleNotePen = gcnew Pen(Color::Transparent, widthOfNotePen); - Pen^ CircleBeatPen = gcnew Pen(Color::White, widthOfMeasurePen); - SolidBrush^ MaskBrush = gcnew SolidBrush(Color::DimGray); - SolidBrush^ MaskRemoveBrush = gcnew SolidBrush(Color::White); - //Circle location and size - float xPos = widthOfNotePen*2; - float yPos = widthOfNotePen*2; - float sizeOfRect = CirclePanel->Width - (widthOfNotePen*4); - //Circle info - float circleRadius = ((float)sizeOfRect / 2); - float xCenterOfCircle = circleRadius + xPos; - float yCenterOfCircle = circleRadius + yPos; - //Selected object values - float startAngle = -((float)PosNum->Value * 6); - float arcLength = -((float)SizeNum->Value * 6); - //Rectangle the visualization is in - System::Drawing::Point location(xPos, yPos); - System::Drawing::Size size(sizeOfRect, sizeOfRect); - System::Drawing::Rectangle Rect(location, size); - //Drawing mode - bufferedGfx->Graphics->SmoothingMode = Drawing2D::SmoothingMode::HighSpeed; - //Current time - float currentTime; - if (scrollBarChanged) { - currentTime = theCurrentMeasure; - } - else { - currentTime = (float)MeasureNum->Value + ((float)BeatNum1->Value / (float)BeatNum2->Value); - } - //How many measures/beats in the future to show notes - float totalTimeShowNotes = (float)VisualHispeed->Value; - //future stuff - float futStartAngle; - float futArcLength; - float xPosFut; - float yPosFut; - float sizeOfRectFut; - float circleRadiusFut; - //pre-existing mask values - float maskStartAngle; - float maskArcLength; - - //Make Background Transparent - SolidBrush^ backgroundBrush = gcnew SolidBrush(this->BackColor); - bufferedGfx->Graphics->FillRectangle(backgroundBrush, PanelRect); - - //Draw pre-existing mask - std::map>>::iterator mapitr = mapOfMasks.lower_bound(currentTime); - if (mapOfMasks.find(currentTime) == mapOfMasks.end() && Rect.Width >= 1) { - if (mapitr != mapOfMasks.end()) { - if (mapitr != mapOfMasks.begin()) { - mapitr--; - } - if (mapitr->first < currentTime) { - for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { - maskStartAngle = -((float)listITR->first * 6); - maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - bufferedGfx->Graphics->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); - } - } - } - else { - mapitr = mapOfMasks.end(); - if (!mapOfMasks.empty()) { - mapitr--; - for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { - maskStartAngle = -((float)listITR->first * 6); - maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - bufferedGfx->Graphics->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); - } - } - } - } - else { - if (Rect.Width >= 1) { - for (std::list>::iterator listITR = mapitr->second.begin(); listITR != mapitr->second.end(); listITR++) { - maskStartAngle = -((float)listITR->first * 6); - maskArcLength = -(((float)listITR->second - (float)listITR->first) * 6); - bufferedGfx->Graphics->FillPie(MaskBrush, Rect, maskStartAngle, maskArcLength); - } - } - } - - //Draw selected mask - if (SelectedLineType == NoGimmick && Rect.Width >= 1) { - if (SelectedNoteTypeVisual == MaskAdd) { - bufferedGfx->Graphics->FillPie(MaskBrush, Rect, startAngle, arcLength); - } - if (SelectedNoteTypeVisual == MaskRemove) { - bufferedGfx->Graphics->FillPie(MaskRemoveBrush, Rect, startAngle, arcLength); - } - } - - //Switch Drawing mode - bufferedGfx->Graphics->SmoothingMode = Drawing2D::SmoothingMode::AntiAlias; - - //Draw measure circle - float nearestMeasure = std::ceil(currentTime); - for (float nearestMeasure = std::ceil(currentTime); (nearestMeasure - currentTime) < totalTimeShowNotes; nearestMeasure += 1.0) { - //modify rectangle to scale with how long until the measure appears - float NoteScaleInitial = 1 - ((nearestMeasure - currentTime) * (1 / totalTimeShowNotes)); //0-1 = 0-100% - float NoteScale = (std::pow(10.f, NoteScaleInitial)) / 10.f; - sizeOfRectFut = sizeOfRect * NoteScale; - circleRadiusFut = (sizeOfRectFut / 2); - xPosFut = xPos + (circleRadius - circleRadiusFut); - yPosFut = yPos + (circleRadius - circleRadiusFut); - - System::Drawing::Point locationFut(xPosFut, yPosFut); - System::Drawing::Size sizeFut(sizeOfRectFut, sizeOfRectFut); - System::Drawing::Rectangle RectFut(locationFut, sizeFut); - if (RectFut.Width >= 1) { - bufferedGfx->Graphics->DrawEllipse(CircleBeatPen, RectFut); - } - } - - - //Draw base circle - bufferedGfx->Graphics->DrawEllipse(CircleBasePen, Rect); - - //Draw Degree Lines - for (int i = 0; i < 360; i += 6) { //i is the angle n degrees - float xStart, yStart, xEnd, yEnd; - float degToRad = (float)i * PI / 180.0; //i to Radians - xStart = (circleRadius * cos(degToRad)) + xCenterOfCircle; - yStart = (circleRadius * sin(degToRad)) + yCenterOfCircle; - PointF coordPointStart(xStart, yStart); - - float innerRadius = circleRadius - baseLineLength; - CircleLinesPen->Width = baseLineWidth; - if (i % 90 == 0) { - innerRadius = circleRadius - (baseLineLength * 3.5); - CircleLinesPen->Width = (baseLineWidth * 3.5); - } - else if (i % 30 == 0) { - innerRadius = circleRadius - (baseLineLength * 2.5); - CircleLinesPen->Width = (baseLineWidth * 2); - } - xEnd = (innerRadius * cos(degToRad)) + xCenterOfCircle; - yEnd = (innerRadius * sin(degToRad)) + yCenterOfCircle; - PointF coordPointEnd(xEnd, yEnd); - - bufferedGfx->Graphics->DrawLine(CircleLinesPen, coordPointStart, coordPointEnd); - } - - //Draw future holds - for (std::map>::iterator notemapitr = mapOfNotes.lower_bound(currentTime); notemapitr != mapOfNotes.end(); notemapitr++) { - float timeAtITR = notemapitr->first; - if (timeAtITR <= (currentTime + totalTimeShowNotes)) { - for (std::list::iterator listofNotesitr = notemapitr->second.begin(); listofNotesitr != notemapitr->second.end(); listofNotesitr++) { - if (isHold(listofNotesitr->noteType)) { - //Future hold values - futStartAngle = -((float)listofNotesitr->position * 6); - futArcLength = -((float)listofNotesitr->size * 6); - if (futArcLength != -360) { //increase size for highlight slightly decrease size to better match ingame - futStartAngle -= 2; - futArcLength += 4; - } - CircleNotePen->Color = returnColor(listofNotesitr->noteType); - //modify rectangle to scale with how long until the note appears - float NoteScaleInitial = 1 - ((timeAtITR - currentTime) * (1 / totalTimeShowNotes)); //0-1 = 0-100% - float NoteScale = (std::pow(10.f, NoteScaleInitial)) / 10.f; - sizeOfRectFut = sizeOfRect * NoteScale; - circleRadiusFut = (sizeOfRectFut / 2); - xPosFut = xPos + (circleRadius - circleRadiusFut); - yPosFut = yPos + (circleRadius - circleRadiusFut); - CircleNotePen->Width = widthOfNotePen * NoteScale + 2; - - System::Drawing::Point locationFut(xPosFut, yPosFut); - System::Drawing::Size sizeFut(sizeOfRectFut, sizeOfRectFut); - System::Drawing::Rectangle RectFut(locationFut, sizeFut); - if (RectFut.Width >= 1) { - bufferedGfx->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw hold - - if (listofNotesitr->noteType == 25) { //If bonus hold - CircleNotePen->Color = BonusColor; - CircleNotePen->Width += highlightWidth; - futStartAngle += 2; //increase size for highlight - futArcLength -= 4; - bufferedGfx->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight - } - if (highlightViewedNoteToolStripMenuItem->Checked) { - if (islistITREqualToViewITR(listofNotesitr)) { - CircleNotePen->Color = HighlightColor; - CircleNotePen->Width += highlightWidth; - futStartAngle += 2; //increase size for highlight - futArcLength -= 4; - bufferedGfx->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight - } - } - } - } - } - } - else { - notemapitr = mapOfNotes.end(); - notemapitr--; - } - } - - //Draw future notes - for (std::map>::iterator notemapitr = mapOfNotes.lower_bound(currentTime); notemapitr != mapOfNotes.end(); notemapitr++) { - float timeAtITR = notemapitr->first; - if (timeAtITR <= (currentTime + totalTimeShowNotes)) { - for (std::list::iterator listofNotesitr = notemapitr->second.begin(); listofNotesitr != notemapitr->second.end(); listofNotesitr++) { - if (!isHold(listofNotesitr->noteType) && listofNotesitr->noteType != 12 && listofNotesitr->noteType != 13) { - //Future note values - futStartAngle = -((float)listofNotesitr->position * 6); - futArcLength = -((float)listofNotesitr->size * 6); - if (futArcLength != -360) { //increase size for highlight slightly decrease size to better match ingame - futStartAngle -= 2; - futArcLength += 4; - } - CircleNotePen->Color = returnColor(listofNotesitr->noteType); - //modify rectangle to scale with how long until the note appears - float NoteScaleInitial = 1 - ((timeAtITR - currentTime) * (1 / totalTimeShowNotes)); //0-1 = 0-100% - float NoteScale = (std::pow(10.f, NoteScaleInitial)) / 10.f; - sizeOfRectFut = sizeOfRect * NoteScale; - circleRadiusFut = (sizeOfRectFut / 2); - xPosFut = xPos + (circleRadius - circleRadiusFut); - yPosFut = yPos + (circleRadius - circleRadiusFut); - CircleNotePen->Width = widthOfNotePen * NoteScale; - - System::Drawing::Point locationFut(xPosFut, yPosFut); - System::Drawing::Size sizeFut(sizeOfRectFut, sizeOfRectFut); - System::Drawing::Rectangle RectFut(locationFut, sizeFut); - if (RectFut.Width >= 1) { - bufferedGfx->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw note - - if (listofNotesitr->noteType >= 20) { //If bonus note - CircleNotePen->Color = BonusColor; - CircleNotePen->Width += highlightWidth; - futStartAngle += 2; //increase size for highlight - futArcLength -= 4; - bufferedGfx->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight - } - if (highlightViewedNoteToolStripMenuItem->Checked) { - if (islistITREqualToViewITR(listofNotesitr)) { - CircleNotePen->Color = HighlightColor; - CircleNotePen->Width += highlightWidth; - futStartAngle += 2; //increase size for highlight - futArcLength -= 4; - bufferedGfx->Graphics->DrawArc(CircleNotePen, RectFut, futStartAngle, futArcLength); //Draw highlight - } - } - } - } - } - } - else { - notemapitr = mapOfNotes.end(); - notemapitr--; - } - } - - // Generate flag for showing cursor - bool showCursor = showCursorToolStripMenuItem->Checked || mouseDownPos != -1; - if (currentlyPlayingSong != nullptr) { - if (!currentlyPlayingSong->Paused) { - showCursor = showCursorDuringPlaybackToolStripMenuItem->Checked; - } - } - - //Draw selected note - if (SelectedLineType == NoGimmick && Rect.Width >= 1 && showCursor) { - CircleNotePen->Color = Color(Color::FromArgb(SelectedTransparency, returnColor(SelectedNoteTypeVisual))); - float spacing = widthOfNotePen + widthOfCurrentNotePen; - CircleNotePen->Width = spacing * 2.f; - //Rectangle innerRect(Rect.X + spacing, Rect.Y + spacing, Rect.Width - spacing * 2, Rect.Height - spacing * 2); - //Rectangle outerRect(Rect.X - spacing, Rect.Y - spacing, Rect.Width + spacing * 2, Rect.Height + spacing * 2); - bufferedGfx->Graphics->DrawArc(CircleNotePen, Rect, startAngle, arcLength); - //bufferedGfx->Graphics->DrawArc(CircleNotePen, outerRect, startAngle, arcLength); - } - - //Render - bufferedGfx->Render(e->Graphics); - } - bool islistITREqualToViewITR(std::list::iterator listITR) { - if (listITR->measure != viewNotesITR->measure) - return false; - if (listITR->beat != viewNotesITR->beat) - return false; - if (listITR->noteType != viewNotesITR->noteType) - return false; - if (listITR->position != viewNotesITR->position) - return false; - if (listITR->size != viewNotesITR->size) - return false; - return true; - } - private: System::Void backgroundWorkerPaint_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) { - //unused - int j = 0; - while (true) { - backgroundWorkerPaint->ReportProgress(j); - if (j == 1) - j = 0; - else - j = 1; - Thread::Sleep(50); - } - } - private: System::Void backgroundWorkerPaint_ProgressChanged(System::Object^ sender, System::ComponentModel::ProgressChangedEventArgs^ e) { - //unused - if (!alreadyRefreshed && !noteRefresh) { - CirclePanel->Refresh(); - } - else { - alreadyRefreshed = false; - } - } - private: System::Void backgroundWorkerPaint_RunWorkerCompleted(System::Object^ sender, System::ComponentModel::RunWorkerCompletedEventArgs^ e) { - //unused - } - private: System::Void VisualHispeed_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - RefreshPaint(); - } - private: System::Void selectSongFile_Click(System::Object^ sender, System::EventArgs^ e) { - if (openFileDialogSong->ShowDialog() == System::Windows::Forms::DialogResult::OK) { - songFilePath = SystemStringTostdString(openFileDialogSong->FileName); - } - if (songFilePath != "") { - theChart.songFileName = songFilePath; - songFileName->Text = stdStringToSystemString(songFilePath); - currentlyPlayingSong = SoundEngine.Play2D(stdStringToSystemString(songFilePath), true, true); - songTrackSlider->Value = 0; - songTrackSlider->Maximum = currentlyPlayingSong->PlayLength; - refreshMapOfTime(); - } - } - private: System::Void PlayButton_Click(System::Object^ sender, System::EventArgs^ e) { - if (songFilePath != "" && currentlyPlayingSong != nullptr) { - currentlyPlayingSong->PlayPosition = songTrackSlider->Value; - currentlyPlayingSong->PlaybackSpeed = (float)PlaybackSpeedNum->Value; - currentlyPlayingSong->Paused = !currentlyPlayingSong->Paused; - if (currentlyPlayingSong->Paused) { - PlayButton->Text = "Play (P)"; - if (backgroundWorkerSong->IsBusy) { - backgroundWorkerSong->CancelAsync(); - } - RefreshPaint(); - } - else { - PlayButton->Text = "Pause (P)"; - backgroundWorkerSong->RunWorkerAsync(); - } - } - } - private: System::Void backgroundWorkerSong_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) { - int i = 0; - while (!currentlyPlayingSong->Paused) { - backgroundWorkerSong->ReportProgress(i); - i++; - Thread::Sleep(update_interval); - } - backgroundWorkerSong->CancelAsync(); - } - private: System::Void backgroundWorkerSong_ProgressChanged(System::Object^ sender, System::ComponentModel::ProgressChangedEventArgs^ e) { - songTrackSlider->Value = currentlyPlayingSong->PlayPosition; - refreshVisualFromSongScroll(); - } - private: System::Void backgroundWorkerSong_RunWorkerCompleted(System::Object^ sender, System::ComponentModel::RunWorkerCompletedEventArgs^ e) { - - } - void refreshVisualFromSongScroll() { - /* trackBar Value = current time (milliseconds) - find last millisecond start time which will tell you the "last measure start time" - use last measure to find "milliseconds per measure" since then - (current time - last measure start time) / (milliseconds per measure) = measures from last measure - last measure start time + measures from last measure = current measure */ - float currentTime = songTrackSlider->Value; //in milliseconds - float currentMeasure = 0; - float timeBetweenMeasures; - if (mapOfBeatAtTime.find(currentTime) == mapOfBeatAtTime.end()) { - std::map::iterator itr = mapOfBeatAtTime.lower_bound(currentTime); - float lastMeasure; - if (itr != mapOfBeatAtTime.end()) { - if (itr != mapOfBeatAtTime.begin()) { - itr--; - } - if (itr->first < currentTime) { - lastMeasure = itr->second; //find last millisecond start time which will tell you the "last measure start time" - } - } - else { - itr = mapOfBeatAtTime.end(); - if (!mapOfBeatAtTime.empty()) { - itr--; - lastMeasure = itr->second; //find last millisecond start time which will tell you the "last measure start time" - } - } - timeBetweenMeasures = mapOfTimeBetweenMeasures[lastMeasure]; // use last measure to find "milliseconds per measure" since then - float measuresFromLastMeasure = (currentTime - itr->first) / timeBetweenMeasures; //(current time - last measure start time) / (milliseconds per measure) = measures from last measure - currentMeasure = lastMeasure + measuresFromLastMeasure; //last measure + measures from last measure = current measure - } - else { - currentMeasure = mapOfBeatAtTime[currentTime]; - } - - noteRefresh = true; - scrollBarChanged = true; - theCurrentMeasure = currentMeasure; - if (currentMeasure >= 0) { - MeasureNum->Value = (Decimal)std::floor(currentMeasure); - float currentSubMeasure = currentMeasure - std::floor(currentMeasure); - BeatNum1->Value = (Decimal)(std::floor(currentSubMeasure * (float)BeatNum2->Value)); - } - noteRefresh = false; - RefreshPaint(); - scrollBarChanged = false; - /* - //Play note tick if a note is within range and song is playing - bool playTickSoundBool = false; - //Convert update_interval time to how many measures it takes up - float updateIntToMeasure = ((float)update_interval / timeBetweenMeasures) * (float)PlaybackSpeedNum->Value; - //Find notes near current time - std::list listOfNotesAtCurrentMeasure; - if (mapOfNotes.find(currentMeasure) == mapOfNotes.end()) { - std::map>::iterator itr = mapOfNotes.lower_bound(currentMeasure); - if (itr != mapOfNotes.end()) { - if (itr != mapOfNotes.begin()) { - itr--; - } - if (itr->first < currentMeasure) { - listOfNotesAtCurrentMeasure = itr->second; //find last millisecond start time which will tell you the "last measure start time" - } - } - else { - itr = mapOfNotes.end(); - if (!mapOfNotes.empty()) { - itr--; - listOfNotesAtCurrentMeasure = itr->second; //find last millisecond start time which will tell you the "last measure start time" - } - } - } - else { - listOfNotesAtCurrentMeasure = mapOfNotes[currentMeasure]; - } - if (!listOfNotesAtCurrentMeasure.empty()) { - float measureAtListTime = listOfNotesAtCurrentMeasure.begin()->measure + (listOfNotesAtCurrentMeasure.begin()->beat / 1920.f); - if (measureAtListTime <= currentMeasure && measureAtListTime >= (currentMeasure - updateIntToMeasure)) { - for (std::list::iterator listofNotesitr = listOfNotesAtCurrentMeasure.begin(); listofNotesitr != listOfNotesAtCurrentMeasure.end(); listofNotesitr++) { - switch (listofNotesitr->noteType) { - case 10: - break; - case 11: - break; - case 12: - break; - case 13: - break; - default: - playTickSoundBool = true; - } - } - } - } - if (currentlyPlayingSong != nullptr) { - if (currentlyPlayingSong->Paused == false && playTickSoundBool == true) { - PlayTickSound(); - } - } - */ - } - private: System::Void songTrackSlider_Scroll(System::Object^ sender, System::EventArgs^ e) { - if (currentlyPlayingSong != nullptr) { - currentlyPlayingSong->PlayPosition = songTrackSlider->Value; - refreshVisualFromSongScroll(); - } - } - private: System::Void SongVolume_Scroll(System::Object^ sender, System::EventArgs^ e) { - if (currentlyPlayingSong != nullptr) { - currentlyPlayingSong->Volume = SongVolume->Value / (float)100.0; - } - } - private: System::Void TickVolume_Scroll(System::Object^ sender, System::EventArgs^ e) { - /* - if (currentlyPlayingTickSound != nullptr) { - currentlyPlayingTickSound->Volume = TickVolume->Value / (float)100.0; - } - */ - } - void PlayTickSound() { - /* - currentlyPlayingTickSound = SoundEngine.Play2D(stdStringToSystemString(tickFilePath), false, true); - if (currentlyPlayingTickSound != nullptr) { - currentlyPlayingTickSound->Volume = TickVolume->Value / (float)100.0; - currentlyPlayingTickSound->Paused = !currentlyPlayingTickSound->Paused; - } - */ - } - private: System::Void PlaybackSpeedNum_ValueChanged(System::Object^ sender, System::EventArgs^ e) { - if (songFilePath != "" && currentlyPlayingSong != nullptr) { - currentlyPlayingSong->PlaybackSpeed = (float)PlaybackSpeedNum->Value; - } - } - private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) { - //backgroundWorkerPaint->RunWorkerAsync(); - SetStyle(ControlStyles::OptimizedDoubleBuffer, true); - SetStyle(ControlStyles::UserPaint, true); - SetStyle(ControlStyles::AllPaintingInWmPaint, true); - - // Initialize BufferedGraphics - bufferedGfxContext = BufferedGraphicsManager::Current; - bufferedGfxContext->MaximumBuffer = Drawing::Size(CirclePanel->Width + 1, CirclePanel->Height + 1); - bufferedGfx = bufferedGfxContext->Allocate(CirclePanel->CreateGraphics(), - Drawing::Rectangle(0, 0, CirclePanel->Width, CirclePanel->Height)); - //DrawToGraphics(bufferedGfx->Graphics); - RefreshPaint(); - - // Force double buffering on CirlcePanel - Type^ controlType = CirclePanel->GetType(); - PropertyInfo^ pi = controlType->GetProperty("DoubleBuffered", BindingFlags::Instance | BindingFlags::NonPublic); - pi->SetValue(CirclePanel, true); - - // Add MouseWheel event to CirclePanel - CirclePanel->MouseWheel += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::CirclePanel_MouseWheel); - } - private: System::Void CirclePanel_MouseWheel(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { - if (Control::ModifierKeys == Keys::Alt) { - // Shift measure division by standard musical quantizations - // TODO: take into account time signature? - if (BeatNum2->Value < 2) { - if (e->Delta > 0) { - BeatNum2->Value = 2; - } - return; - } - else if (BeatNum2->Value == 2 && e->Delta < 0) { - BeatNum2->Value = 1; - return; - } - - int low = 0; - int high = 1; - - while (!(BeatNum2->Value >= (1 << low) && BeatNum2->Value <= (1 << high))) { - low++; - high++; - } - if (e->Delta < 0) { - BeatNum2->Value = (1 << low); - } - else { - if (high < 10) { - BeatNum2->Value = (1 << (high + 1)); - } - } - } - else if (Control::ModifierKeys == Keys::Shift) { - - } - else if (Control::ModifierKeys == Keys::Control) { - - } - else { - // Scroll by one measure at a time - if (e->Delta > 0) { - BeatNum1->Value++; - } - else { - BeatNum1->Value--; - } - } - } - private: System::Void MyForm_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) { - wchar_t keyPressed = std::toupper(e->KeyChar); - switch (keyPressed) { - case 'T': //Touch - TapButton_Click(sender, e); - TapButton->Focus(); - e->Handled = true; - break; - case 'O': //Orange Slide - OrangeButton_Click(sender, e); - OrangeButton->Focus(); - e->Handled = true; - break; - case 'G': //Green Slide - GreenButton_Click(sender, e); - GreenButton->Focus(); - e->Handled = true; - break; - case 'R': //Red Snap - RedButton_Click(sender, e); - RedButton->Focus(); - e->Handled = true; - break; - case 'B': //Blue Snap - BlueButton_Click(sender, e); - BlueButton->Focus(); - e->Handled = true; - break; - case 'Y': //Chain - YellowButton_Click(sender, e); - YellowButton->Focus(); - e->Handled = true; - break; - case 'H': //Hold - HoldButton_Click(sender, e); - HoldButton->Focus(); - e->Handled = true; - break; - case 'M': //Mask - MaskButton_Click(sender, e); - MaskButton->Focus(); - e->Handled = true; - break; - case 'I': //Insert - InsertButton_Click(sender, e); - InsertButton->Focus(); - e->Handled = true; - break; - case 'P': //Play/Pause - PlayButton_Click(sender, e); - PlayButton->Focus(); - e->Handled = true; - break; - } - } - private: System::Void highlightViewedNoteToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - RefreshPaint(); - } - /* - private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { - DrawToGraphics(bufferedGfx->Graphics); - } - */ -private: System::Void showCursorToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - RefreshPaint(); -} -private: System::Void CirclePanel_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { - // Determine location of mouse click in the circle - // X and Y are relative to upper left of image - float xCen = e->X - (CirclePanel->Width / 2); - float yCen = -(e->Y - (CirclePanel->Height / 2)); - float theta = Math::Atan2(yCen, xCen) * 180.0f / PI; - if (theta < 0) - theta += 360.0f; - // Left click moves the cursor - if (e->Button == System::Windows::Forms::MouseButtons::Left) { - PosNum->Value = (int)(theta / 6.0f); - mouseDownPos = (int)PosNum->Value; - lastMousePos = -1; - rolloverPos = false; - rolloverNeg = false; - } -} -private: System::Void CirclePanel_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { - // Only Left Click should create notes - if (e->Button == System::Windows::Forms::MouseButtons::Left) { - mouseDownPos = -1; - InsertObject(); - } -} -private: System::Void CirclePanel_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { - // Calculate angle - float xCen = e->X - (CirclePanel->Width / 2); - float yCen = -(e->Y - (CirclePanel->Height / 2)); - float thetaCalc = Math::Atan2(yCen, xCen) * 180.0f / PI; - if (thetaCalc < 0) - thetaCalc += 360.0f; - int theta = thetaCalc / 6.0f; - // Left click will alter the note width and possibly the position depending on which direction is being turned - if (e->Button == System::Windows::Forms::MouseButtons::Left && mouseDownPos != -1) { - int delta = theta - lastMousePos; - // Handle rollover - if (delta == -59) { - if (rolloverNeg) { - rolloverNeg = false; - } - else { - rolloverPos = true; - } - } - else if (delta == 59) { - if (rolloverPos) { - rolloverPos = false; - } - else { - rolloverNeg = true; - } - } - if (theta == mouseDownPos) { - PosNum->Value = mouseDownPos; - SizeNum->Value = 1; - } - else if ((theta > mouseDownPos || rolloverPos) && !rolloverNeg) { - PosNum->Value = mouseDownPos; - if (rolloverPos) { - - SizeNum->Value = Math::Min(theta + 60 - mouseDownPos + 1, 60); - } - else { - SizeNum->Value = theta - mouseDownPos + 1; - } - } - else if (theta < mouseDownPos || rolloverNeg) { - if (rolloverNeg) { - PosNum->Value = theta; - SizeNum->Value = Math::Min(mouseDownPos + 60 - theta + 1, 60); - } - else { - PosNum->Value = theta; - SizeNum->Value = mouseDownPos - theta + 1; - } - } - lastMousePos = theta; - } -} -private: System::Void aboutBAKKAEditorToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - MessageBox::Show(this->Text + "\n\nCredits:\nGoatgarien - Initial editor and idea\nZoids - Various fixes\nYellowberry - UI redesign", "About BAKKA Editor"); -} -private: System::Void undoToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - if (!undoStack.empty()) { - operationReversal = true; - Operation currentOperation = undoStack.top(); - undoStack.pop(); - redoStack.push(currentOperation); - - std::list::iterator noteITR = currentOperation.Note.begin(); - std::list::iterator gimmickITR = currentOperation.Gimmick.begin(); - std::list::iterator oldNoteITR = currentOperation.oldNote.begin(); - std::list::iterator oldGimmickITR = currentOperation.oldGimmick.begin(); - - switch (currentOperation.operationType) { - case 1: //Insert - switch (currentOperation.objectType) { - case 1: //Note - if (noteITR != currentOperation.Note.end()) { - viewNotesITR = findMatchNote(*noteITR); - refreshNotesView(); - if (isHold(viewNotesITR->noteType)) { - std::list::iterator viewNotesITRtemp = viewNotesITR; - switch (viewNotesITR->noteType) { - case HoldStartNoBonus: - case HoldStartBonusFlair: - if (NoBonusRadioButton->Checked) { - SelectedNoteType = HoldStartNoBonus; - } - if (BonusFlairRadioButton->Checked) { - SelectedNoteType = HoldStartBonusFlair; - } - holdNoteitr = theChart.Notes.end(); - if (viewNotesITR == theChart.Notes.begin()) { - viewNotesITR++; - } - else { - viewNotesITR--; - } - break; - case HoldJoint: - SelectedNoteType = HoldJoint; - holdNoteitr = viewNotesITR->prevNode; - viewNotesITR->prevNode->nextNode = theChart.Notes.end(); - viewNotesITR = holdNoteitr; - break; - case HoldEnd: - SelectedNoteType = HoldJoint; - holdNoteitr = viewNotesITR->prevNode; - viewNotesITR->prevNode->nextNode = theChart.Notes.end(); - viewNotesITR = holdNoteitr; - break; - } - theChart.Notes.erase(viewNotesITRtemp); - refreshNotesView(); - refreshMapofNotes(); - RefreshPaint(); - } - else { - DeleteNoteButton_Click(sender, e); - } - } - break; - case 2: //Gimmick - while (gimmickITR != currentOperation.Gimmick.end()) { - viewGimmicksITR = findMatchGimmick(*gimmickITR); - DeleteGimmickButton_Click(sender, e); - gimmickITR++; - } - break; - } - break; - case 2: //Delete - switch (currentOperation.objectType) { - case 1: //Note - while (noteITR != currentOperation.Note.end()) { - SelectedLineType = NoGimmick; - MeasureNum->Value = noteITR->measure; - float num1 = noteITR->beat; - float num2 = 1920; - BeatNum2->Value = (int)subBeatValue2(num1, num2); //change 2 first so that 1 doesnt become larger and make it round up to the next measure - BeatNum1->Value = (int)subBeatValue1(num1, num2); - SelectedNoteType = noteITR->noteType; - if (SelectedNoteType == HoldJoint) { - EndHoldBox->Checked = false; - } - if (SelectedNoteType == HoldEnd) { - SelectedNoteType = HoldJoint; - EndHoldBox->Checked = true; - } - PosNum->Value = noteITR->position; - SizeNum->Value = noteITR->size; - InsertObject(); - noteITR++; - } - break; - case 2: //Gimmick - if (gimmickITR != currentOperation.Gimmick.end()) { - PreChartNode tempPreChartNode; - tempPreChartNode.measure = gimmickITR->measure; - tempPreChartNode.beat = gimmickITR->beat; - tempPreChartNode.type = gimmickITR->type; - SelectedLineType = gimmickITR->type; - - switch (SelectedLineType) { - case BpmChange: - if (tempPreChartNode.measure == 0 && tempPreChartNode.beat == 0) { - InitialBPMNum->Value = (System::Decimal)gimmickITR->BPM; - } - tempPreChartNode.BPM = gimmickITR->BPM; - theChart.PreChart.push_back(tempPreChartNode); - break; - case TimeSignatureChange: - if (tempPreChartNode.measure == 0 && tempPreChartNode.beat == 0) { - InitTimeSigNum1->Value = (System::Decimal)gimmickITR->beatDiv1; - InitTimeSigNum2->Value = (System::Decimal)gimmickITR->beatDiv2; - } - tempPreChartNode.beatDiv1 = gimmickITR->beatDiv1; - tempPreChartNode.beatDiv2 = gimmickITR->beatDiv2; - theChart.PreChart.push_back(tempPreChartNode); - break; - case HiSpeedChange: - tempPreChartNode.hiSpeed = gimmickITR->hiSpeed; - theChart.PreChart.push_back(tempPreChartNode); - break; - case ReverseStart: - case ReverseEnd: - case ReverseNoteEnd: - case StopStart: - case StopEnd: - theChart.PreChart.push_back(tempPreChartNode); - break; - } - if (!theChart.PreChart.empty()) { - viewGimmicksITR = theChart.PreChart.end(); - viewGimmicksITR--; - } - theChart.PreChart.sort(sortPreChartListByBeat); - refreshGimmickView(); - refreshMapOfTime(); - } - break; - } - break; - case 3: //Edit - switch (currentOperation.objectType) { - case 1: //Note - if (noteITR != currentOperation.Note.end()) { - viewNotesITR = findMatchNote(*noteITR); - viewNotesITR->measure = oldNoteITR->measure; - viewNotesITR->beat = oldNoteITR->beat; - if (!isHold(noteITR->noteType)) - viewNotesITR->noteType = oldNoteITR->noteType; - viewNotesITR->position = oldNoteITR->position; - viewNotesITR->size = oldNoteITR->size; - refreshNotesView(); - refreshMapofNotes(); - RefreshPaint(); - } - break; - case 2: //Gimmick (currently no edit button implemented for gimmicks - if (gimmickITR != currentOperation.Gimmick.end()) { - - } - break; - } - break; - } - CurrentObjectText->Text = stdStringToSystemString(refreshCurrentNoteLabel(SelectedNoteType)); - SelectedNoteTypeVisual = SelectedNoteType; - operationReversal = false; - } -} -private: System::Void redoToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { - if (!redoStack.empty()) { - operationReversal = true; - Operation currentOperation = redoStack.top(); - redoStack.pop(); - undoStack.push(currentOperation); - - std::list::iterator noteITR = currentOperation.Note.begin(); - std::list::iterator gimmickITR = currentOperation.Gimmick.begin(); - std::list::iterator oldNoteITR = currentOperation.oldNote.begin(); - std::list::iterator oldGimmickITR = currentOperation.oldGimmick.begin(); - - switch (currentOperation.operationType) { - case 1: //Insert - switch (currentOperation.objectType) { - case 1: //Note - while (noteITR != currentOperation.Note.end()) { - SelectedLineType = NoGimmick; - MeasureNum->Value = noteITR->measure; - float num1 = noteITR->beat; - float num2 = 1920; - BeatNum2->Value = (int)subBeatValue2(num1, num2); //change 2 first so that 1 doesnt become larger and make it round up to the next measure - BeatNum1->Value = (int)subBeatValue1(num1, num2); - SelectedNoteType = noteITR->noteType; - if (SelectedNoteType == HoldJoint) { - EndHoldBox->Checked = false; - } - if (SelectedNoteType == HoldEnd) { - SelectedNoteType = HoldJoint; - EndHoldBox->Checked = true; - } - PosNum->Value = noteITR->position; - SizeNum->Value = noteITR->size; - InsertObject(); - noteITR++; - } - break; - case 2: //Gimmick - while (gimmickITR != currentOperation.Gimmick.end()) { - PreChartNode tempPreChartNode; - tempPreChartNode.measure = gimmickITR->measure; - tempPreChartNode.beat = gimmickITR->beat; - tempPreChartNode.type = gimmickITR->type; - SelectedLineType = gimmickITR->type; - - switch (SelectedLineType) { - case BpmChange: - if (tempPreChartNode.measure == 0 && tempPreChartNode.beat == 0) { - InitialBPMNum->Value = (System::Decimal)gimmickITR->BPM; - } - tempPreChartNode.BPM = gimmickITR->BPM; - theChart.PreChart.push_back(tempPreChartNode); - break; - case TimeSignatureChange: - if (tempPreChartNode.measure == 0 && tempPreChartNode.beat == 0) { - InitTimeSigNum1->Value = (System::Decimal)gimmickITR->beatDiv1; - InitTimeSigNum2->Value = (System::Decimal)gimmickITR->beatDiv2; - } - tempPreChartNode.beatDiv1 = gimmickITR->beatDiv1; - tempPreChartNode.beatDiv2 = gimmickITR->beatDiv2; - theChart.PreChart.push_back(tempPreChartNode); - break; - case HiSpeedChange: - tempPreChartNode.hiSpeed = gimmickITR->hiSpeed; - theChart.PreChart.push_back(tempPreChartNode); - break; - case ReverseStart: - case ReverseEnd: - case ReverseNoteEnd: - case StopStart: - case StopEnd: - theChart.PreChart.push_back(tempPreChartNode); - break; - } - if (!theChart.PreChart.empty()) { - viewGimmicksITR = theChart.PreChart.end(); - viewGimmicksITR--; - } - theChart.PreChart.sort(sortPreChartListByBeat); - refreshGimmickView(); - refreshMapOfTime(); - - gimmickITR++; - } - break; - } - break; - case 2: //Delete - switch (currentOperation.objectType) { - case 1: //Note - if (noteITR != currentOperation.Note.end()) { - viewNotesITR = findMatchNote(*noteITR); - refreshNotesView(); - DeleteNoteButton_Click(sender, e); - } - break; - case 2: //Gimmick - while (gimmickITR != currentOperation.Gimmick.end()) { - viewGimmicksITR = findMatchGimmick(*gimmickITR); - DeleteGimmickButton_Click(sender, e); - gimmickITR++; - } - break; - } - break; - case 3: //Edit - switch (currentOperation.objectType) { - case 1: //Note - if (noteITR != currentOperation.Note.end()) { - viewNotesITR = findMatchNote(*oldNoteITR); - viewNotesITR->measure = noteITR->measure; - viewNotesITR->beat = noteITR->beat; - if (!isHold(oldNoteITR->noteType)) - viewNotesITR->noteType = noteITR->noteType; - viewNotesITR->position = noteITR->position; - viewNotesITR->size = noteITR->size; - refreshNotesView(); - refreshMapofNotes(); - RefreshPaint(); - } - break; - case 2: //Gimmick (currently no edit button implemented for gimmicks - if (gimmickITR != currentOperation.Gimmick.end()) { - - } - break; - } - break; - } - operationReversal = false; - } -} -std::list::iterator findMatchNote(NotesNode noteNode) { - std::list::iterator foundNoteITR = theChart.Notes.begin(); - - while (foundNoteITR != theChart.Notes.end()) { - if (foundNoteITR->measure == noteNode.measure) { - if (foundNoteITR->beat == noteNode.beat) { - if (foundNoteITR->noteType == noteNode.noteType) { - if (foundNoteITR->position == noteNode.position) { - if (foundNoteITR->size == noteNode.size) { - return foundNoteITR; - } - } - } - } - } - foundNoteITR++; - } - foundNoteITR--; - return foundNoteITR; -} -std::list::iterator findMatchGimmick(PreChartNode gimmickNode) { - std::list::iterator foundGimmickITR = theChart.PreChart.begin(); - - while (foundGimmickITR != theChart.PreChart.end()) { - if (foundGimmickITR->measure == gimmickNode.measure) { - if (foundGimmickITR->beat == gimmickNode.beat) { - if (foundGimmickITR->type == gimmickNode.type) { - return foundGimmickITR; - } - } - } - foundGimmickITR++; - } - foundGimmickITR--; - return foundGimmickITR; -} -}; -} diff --git a/BAKKA Editor/MyForm.resx b/BAKKA Editor/MyForm.resx deleted file mode 100644 index ca8bcca..0000000 --- a/BAKKA Editor/MyForm.resx +++ /dev/null @@ -1,5395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - Segoe UI, 9pt - - - - Ctrl+N - - - 186, 22 - - - New - - - Ctrl+O - - - 186, 22 - - - Open - - - Ctrl+S - - - 186, 22 - - - Save - - - Ctrl+Shift+S - - - 186, 22 - - - Save As - - - 186, 22 - - - Exit - - - 37, 20 - - - File - - - Ctrl+Z - - - 144, 22 - - - Undo - - - Ctrl+Y - - - 144, 22 - - - Redo - - - 39, 20 - - - Edit - - - 230, 22 - - - Show Cursor - - - 230, 22 - - - Show Cursor During Playback - - - 230, 22 - - - Highlight Viewed Note - - - 44, 20 - - - View - - - 181, 22 - - - About BAKKA Editor - - - 52, 20 - - - About - - - 0, 0 - - - 1142, 24 - - - - 0 - - - Menu Strip - - - menuStrip - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 13 - - - True - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - NoControl - - - 6, 19 - - - 84, 23 - - - 1 - - - Touch (T) - - - ImageBeforeText - - - TapButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 5 - - - True - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - 6, 48 - - - 84, 23 - - - 2 - - - ← Slide (O) - - - OrangeButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 7 - - - True - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - 6, 77 - - - 84, 23 - - - 3 - - - → Slide (G) - - - GreenButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 9 - - - True - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - 6, 106 - - - 84, 23 - - - 7 - - - ↑ Snap (R) - - - RedButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 11 - - - True - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - 6, 135 - - - 84, 23 - - - 8 - - - ↓ Snap (B) - - - BlueButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 10 - - - True - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - 6, 164 - - - 84, 23 - - - 9 - - - Chain (Y) - - - YellowButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 8 - - - True - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - 6, 193 - - - 84, 23 - - - 10 - - - Hold (H) - - - 124, 17 - - - After first insert of a hold, -you must continue adding to the hold until end. -Check box to add end of hold - - - HoldButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 6 - - - True - - - 6, 222 - - - 84, 23 - - - 11 - - - End of Chart - - - Put this at the end of the chart -after all other notes -otherwise it will crash. - - - EndChartButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 4 - - - True - - - 6, 320 - - - 87, 17 - - - 21 - - - R Note (Flair) - - - Applies to all note types except Yellow Tap - - - BonusFlairRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 0 - - - True - - - NoControl - - - 6, 297 - - - 75, 17 - - - 20 - - - Bonus Get - - - Bonus Get Only Applies to: -Tap, Orange Flicks, and Green Flicks - - - - BonusGetRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 1 - - - True - - - NoControl - - - 6, 274 - - - 72, 17 - - - 20 - - - No Bonus - - - NoBonusRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 2 - - - True - - - 6, 251 - - - 70, 17 - - - 12 - - - End Hold - - - Check box to make next insert the end of the hold - - - EndHoldBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoteTypeBox - - - 3 - - - 12, 27 - - - 97, 346 - - - 14 - - - Note Types - - - NoteTypeBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - 7, 48 - - - 97, 23 - - - 15 - - - BPM Change - - - Insert BPM change at currently selected time - - - BPMChange - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 4 - - - 7, 77 - - - 97, 23 - - - 16 - - - Time Signature - - - Insert Time Signature change at currently selected time - - - TimeSignature - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 3 - - - 7, 106 - - - 97, 23 - - - 17 - - - Hi-speed - - - 1.000000 is default Hi-Speed -0.500000 is half speed -etc. - - - Hispeed - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 2 - - - 7, 135 - - - 97, 23 - - - 18 - - - Stop - - - Use left box to indicate stop start -Use Stop End to indicate end of stop - - - Stop - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 1 - - - 7, 164 - - - 97, 23 - - - 19 - - - Reverse - - - Use left box to indicate the start of the reversing -End 1 in settings for when the reversing will stop -End 2 in settings for the end of the notes that will appear while it's reversing -Notes appear during start -> End 1 -Notes that appear are from End 1 -> End 2 - - - Reverse - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 0 - - - 6, 32 - - - 85, 20 - - - 0 - - - Changes how many Beats into the future the visualization will display -Default: 0.5 (1/2 of a measure) - - - VisualHispeed - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - VisualSettingsBox - - - 1 - - - True - - - Microsoft Sans Serif, 8.25pt - - - 6, 16 - - - 49, 13 - - - 1 - - - Hi-speed - - - Changes how many Beats into the future the visualization will display -Default: 0.5 (1/2 of a measure) - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - VisualSettingsBox - - - 0 - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - NoControl - - - 329, 59 - - - 123, 32 - - - 2 - - - Audio -Playback Speed - - - Changes how many Beats into the future the visualization will display -Default: 0.5 (1/2 of a measure) - - - label30 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 2 - - - 465, 67 - - - 85, 20 - - - 3 - - - Changes how many Beats into the future the visualization will display -Default: 0.5 (1/2 of a measure) - - - PlaybackSpeedNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 0 - - - 6, 228 - - - 110, 23 - - - 38 - - - Modify Viewed Note - - - A bit confusing, changes the note in Notes View to the values set for the current note settings on the left. - - - EditNoteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 0 - - - 7, 19 - - - 97, 23 - - - 20 - - - Mask - - - MaskButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 7 - - - True - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - 12, 585 - - - 213, 50 - - - 21 - - - Insert Object (I) - - - InsertButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 12 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 6, 16 - - - 71, 17 - - - 16 - - - Position: - - - PosLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 8 - - - True - - - NoControl - - - 179, 38 - - - 28, 13 - - - 19 - - - 0-59 - - - posInfo - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 7 - - - 6, 79 - - - 41, 20 - - - 18 - - - SizeNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 12 - - - True - - - NoControl - - - 179, 81 - - - 28, 13 - - - 20 - - - 1-60 - - - SizeInfo - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 11 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 6, 59 - - - 44, 17 - - - 17 - - - Size: - - - SizeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 10 - - - 6, 36 - - - 41, 20 - - - 15 - - - PosNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 9 - - - True - - - Microsoft Sans Serif, 12pt, style=Bold - - - NoControl - - - 146, 122 - - - 14, 20 - - - 24 - - - / - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 1 - - - 163, 122 - - - 41, 20 - - - 23 - - - BeatNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 0 - - - 108, 122 - - - 36, 20 - - - 22 - - - BeatNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 3 - - - 6, 122 - - - 96, 20 - - - 21 - - - MeasureNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 4 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 6, 102 - - - 75, 17 - - - 17 - - - Measure: - - - Beat - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 2 - - - True - - - NoControl - - - 6, 228 - - - 94, 17 - - - 14 - - - Remove Mask - - - RemoveMask - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 5 - - - True - - - 6, 205 - - - 73, 17 - - - 13 - - - Add Mask - - - AddMask - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickBox - - - 6 - - - 115, 27 - - - 110, 253 - - - 15 - - - Gimmick Types - - - GimmickBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - Top, Right - - - 218, 150 - - - 41, 20 - - - 37 - - - ReverseEnd2BeatNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 0 - - - True - - - Microsoft Sans Serif, 12pt, style=Bold - - - NoControl - - - 202, 150 - - - 14, 20 - - - 36 - - - / - - - label12 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 1 - - - 164, 150 - - - 36, 20 - - - 35 - - - ReverseEnd2BeatNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 2 - - - 99, 150 - - - 59, 20 - - - 34 - - - ReverseEnd2MeasureNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 3 - - - 218, 124 - - - 41, 20 - - - 33 - - - ReverseEnd1BeatNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 4 - - - True - - - Microsoft Sans Serif, 12pt, style=Bold - - - NoControl - - - 202, 124 - - - 14, 20 - - - 32 - - - / - - - label11 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 5 - - - 164, 124 - - - 36, 20 - - - 31 - - - ReverseEnd1BeatNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 6 - - - 99, 124 - - - 59, 20 - - - 30 - - - ReverseEnd1MeasureNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 7 - - - 99, 98 - - - 59, 20 - - - 25 - - - StopEndMeasureNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 8 - - - 218, 98 - - - 41, 20 - - - 29 - - - StopEndBeatNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 9 - - - True - - - Microsoft Sans Serif, 12pt, style=Bold - - - NoControl - - - 202, 98 - - - 14, 20 - - - 28 - - - / - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 10 - - - 164, 98 - - - 36, 20 - - - 27 - - - StopEndBeatNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 11 - - - 99, 72 - - - 96, 20 - - - 26 - - - HiSpeedChangeNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 12 - - - 154, 45 - - - 41, 20 - - - 25 - - - TimeSigNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 13 - - - True - - - Microsoft Sans Serif, 12pt, style=Bold - - - NoControl - - - 137, 45 - - - 14, 20 - - - 25 - - - / - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 14 - - - 99, 45 - - - 36, 20 - - - 23 - - - TimeSigNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 15 - - - 99, 20 - - - 96, 20 - - - 22 - - - BPMChangeNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 16 - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - NoControl - - - 7, 150 - - - 87, 16 - - - 21 - - - Rev. End 2: - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 17 - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - NoControl - - - 19, 98 - - - 75, 16 - - - 20 - - - Stop End: - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 18 - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - NoControl - - - 7, 124 - - - 87, 16 - - - 19 - - - Rev. End 1: - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 19 - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - NoControl - - - 20, 45 - - - 74, 16 - - - 19 - - - Time Sig: - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 20 - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - NoControl - - - 16, 72 - - - 78, 16 - - - 18 - - - Hi-Speed: - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 21 - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - NoControl - - - 50, 20 - - - 44, 16 - - - 17 - - - BPM: - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GimmickSettingsBox - - - 22 - - - 864, 189 - - - 266, 176 - - - 23 - - - Gimmick Settings - - - GimmickSettingsBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 11 - - - Top, Right - - - Bottom - - - 3, 128 - - - 260, 29 - - - 42 - - - Save Settings - - - InitialSetSave - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 0 - - - 147, 103 - - - 97, 20 - - - 41 - - - MovieOffsetNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 1 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 30, 103 - - - 104, 17 - - - 40 - - - Movie Offset: - - - label17 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 2 - - - 147, 74 - - - 97, 20 - - - 39 - - - OffsetNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 3 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 77, 74 - - - 57, 17 - - - 38 - - - Offset: - - - label16 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 4 - - - 203, 48 - - - 41, 20 - - - 38 - - - InitTimeSigNum2 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 5 - - - True - - - Microsoft Sans Serif, 12pt, style=Bold - - - NoControl - - - 186, 48 - - - 14, 20 - - - 38 - - - / - - - label15 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 6 - - - 147, 48 - - - 36, 20 - - - 38 - - - InitTimeSigNum1 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 7 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 11, 48 - - - 123, 17 - - - 38 - - - Time Signature: - - - label14 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 8 - - - 147, 20 - - - 97, 20 - - - 38 - - - InitialBPMNum - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 9 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 89, 20 - - - 45, 17 - - - 38 - - - BPM: - - - label13 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - InitialSettingsPane - - - 10 - - - 864, 27 - - - 266, 160 - - - 24 - - - Initial Chart Settings - - - InitialSettingsPane - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 10 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 6, 97 - - - 81, 17 - - - 43 - - - Song File: - - - label29 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 6 - - - True - - - 7, 65 - - - 82, 17 - - - 2 - - - From Center - - - MaskCenter - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MaskSettingsBox - - - 0 - - - True - - - 7, 42 - - - 83, 17 - - - 1 - - - C-Clockwise - - - MaskCClockwise - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MaskSettingsBox - - - 1 - - - True - - - 7, 19 - - - 73, 17 - - - 0 - - - Clockwise - - - MaskClockwise - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MaskSettingsBox - - - 2 - - - 115, 286 - - - 110, 87 - - - 26 - - - Mask Setting - - - MaskSettingsBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 9 - - - True - - - Microsoft Sans Serif, 9pt, style=Bold - - - 6, 16 - - - 122, 15 - - - 27 - - - Touch (No Bonus) - - - CurrentObjectText - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentObjectBox - - - 0 - - - Bottom, Right - - - True - - - True - - - NoControl - - - 84, 91 - - - 27, 13 - - - 31 - - - N/A - - - GimmickValueLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 0 - - - True - - - NoControl - - - 84, 68 - - - 55, 13 - - - 30 - - - List Empty - - - GimmickTypeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 1 - - - True - - - NoControl - - - 204, 47 - - - 55, 13 - - - 29 - - - List Empty - - - GimmickSubBeatLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 2 - - - True - - - 84, 49 - - - 55, 13 - - - 28 - - - List Empty - - - GimmickBeatLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 3 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 24, 89 - - - 54, 17 - - - 27 - - - Value: - - - label22 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 4 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 29, 66 - - - 49, 17 - - - 26 - - - Type: - - - label21 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 5 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 152, 45 - - - 46, 17 - - - 25 - - - Beat: - - - label20 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 6 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 3, 45 - - - 75, 17 - - - 25 - - - Measure: - - - label19 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 7 - - - 146, 19 - - - 130, 23 - - - 2 - - - Next Gimmick - - - NextGimmickButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 8 - - - 6, 19 - - - 130, 23 - - - 1 - - - Previous Gimmick - - - PrevGimmickButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 9 - - - Bottom - - - 3, 106 - - - 277, 23 - - - 0 - - - Delete Current Gimmick - - - DeleteGimmickButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - PreChartViewBox - - - 10 - - - 847, 643 - - - 283, 132 - - - 28 - - - Gimmicks View - - - PreChartViewBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 8 - - - Bottom, Right - - - NoControl - - - 6, 47 - - - 110, 23 - - - 37 - - - << Previous Beat - - - PrevBeatButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 1 - - - 122, 47 - - - 110, 23 - - - 36 - - - Next Beat >> - - - NextBeatButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 2 - - - True - - - NoControl - - - 6, 205 - - - 196, 17 - - - 35 - - - Match Note Settings To Notes View - - - MatchNoteCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 3 - - - True - - - 6, 187 - - - 196, 17 - - - 31 - - - Match Time Settings To Notes View - - - MatchTimeCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 4 - - - True - - - NoControl - - - 126, 137 - - - 27, 13 - - - 34 - - - N/A - - - NotesMaskLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 5 - - - True - - - NoControl - - - 176, 114 - - - 27, 13 - - - 33 - - - N/A - - - NotesSizeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 6 - - - True - - - NoControl - - - 86, 114 - - - 27, 13 - - - 32 - - - N/A - - - NotesPosLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 7 - - - True - - - NoControl - - - 126, 159 - - - 55, 13 - - - 31 - - - List Empty - - - NotesTypeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 8 - - - True - - - NoControl - - - 126, 94 - - - 55, 13 - - - 30 - - - List Empty - - - NotesSubBeatLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 9 - - - True - - - NoControl - - - 126, 76 - - - 55, 13 - - - 29 - - - List Empty - - - NotesBeatLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 10 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 126, 112 - - - 44, 17 - - - 25 - - - Size: - - - label28 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 11 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 9, 112 - - - 71, 17 - - - 25 - - - Position: - - - label27 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 12 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 19, 133 - - - 96, 17 - - - 28 - - - Mask Value: - - - label26 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 13 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 66, 155 - - - 49, 17 - - - 28 - - - Type: - - - label25 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 14 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 67, 92 - - - 46, 17 - - - 28 - - - Beat: - - - label24 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 15 - - - True - - - Microsoft Sans Serif, 10pt, style=Bold - - - NoControl - - - 40, 72 - - - 75, 17 - - - 28 - - - Measure: - - - label23 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 16 - - - NoControl - - - 122, 18 - - - 110, 23 - - - 3 - - - Next Note > - - - NextNoteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 17 - - - NoControl - - - 6, 19 - - - 110, 23 - - - 3 - - - < Previous Note - - - PrevNoteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 18 - - - Microsoft Sans Serif, 8.25pt - - - NoControl - - - 122, 228 - - - 111, 23 - - - 1 - - - Delete Viewed Note - - - DeleteNoteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NotesViewBox - - - 19 - - - 892, 371 - - - 238, 266 - - - 29 - - - Notes View - - - NotesViewBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - 216, 17 - - - mer files (*.mer)|*.mer|All Files (*.*)|*.* - - - 365, 18 - - - mer files (*.mer)|*.mer|All Files (*.*)|*.* - - - 53, 79 - - - 120, 45 - - - 26 - - - SizeTrackBar - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 5 - - - 53, 36 - - - 120, 45 - - - 25 - - - PosTrackBar - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CurrentNoteBox - - - 6 - - - 12, 430 - - - 213, 149 - - - 31 - - - Current Note Settings - - - CurrentNoteBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 7 - - - 491, 20 - - - True - - - 96, 96 - - - 1142, 787 - - - Bottom, Left - - - True - - - 741, 643 - - - 100, 133 - - - 33 - - - Visual Settings - - - VisualSettingsBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Microsoft Sans Serif, 8.25pt, style=Bold - - - 12, 379 - - - 213, 43 - - - 40 - - - Current Selection - - - CurrentObjectBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Bottom, Left - - - True - - - Microsoft Sans Serif, 9.75pt, style=Bold - - - 91, 55 - - - 64, 32 - - - 47 - - - Song -Volume: - - - VolumeLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 1 - - - 161, 59 - - - 162, 45 - - - 46 - - - SongVolume - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 3 - - - True - - - 97, 102 - - - 86, 13 - - - 45 - - - Select File (.ogg) - - - songFileName - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 4 - - - 6, 19 - - - 75, 23 - - - 34 - - - Play (P) - - - PlayButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 5 - - - 87, 19 - - - 630, 45 - - - 36 - - - songTrackSlider - - - System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 7 - - - 6, 48 - - - 75, 23 - - - 37 - - - Select Song - - - selectSongFile - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SongPlaybackBox - - - 8 - - - 12, 643 - - - 723, 133 - - - 38 - - - Playback - - - SongPlaybackBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - - - 231, 27 - - - 610, 610 - - - 32 - - - CirclePanel - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - - 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 - BYoVuvg/gygJ2UtQ2fkAAAAASUVORK5CYII= - - - - 1158, 826 - - - BAKKA Editor 1.4.0 - - - fileToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - newToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - openToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - saveToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - saveAsToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - exitToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - undoToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - redoToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - viewToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - showCursorToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - showCursorDuringPlaybackToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - highlightViewedNoteToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - aboutToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - aboutBAKKAEditorToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ToolTip - - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - openFileDialogChart - - - System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - saveFileDialog1 - - - System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - fileSystemWatcher1 - - - System.IO.FileSystemWatcher, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - openFileDialogSong - - - System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - backgroundWorkerSong - - - System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - backgroundWorkerPaint - - - System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - backgroundWorker1 - - - System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - backgroundWorker2 - - - System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MyForm - - - System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 650, 20 - - - All playable files (*.ogg;*.mod;*.it;*.xm;*.it;*.s3d)|*.ogg;*.mod;*.it;*.xm;*.it;*.s3d - - - 811, 20 - - - 996, 20 - - - 17, 59 - - - 181, 59 - - \ No newline at end of file diff --git a/BAKKA Editor/exeIcon.ico b/BAKKA Editor/exeIcon.ico deleted file mode 100644 index b8098c3..0000000 Binary files a/BAKKA Editor/exeIcon.ico and /dev/null differ diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/changes.txt b/BAKKA Editor/irrKlang-64bit-1.6.0/changes.txt deleted file mode 100644 index 157dde9..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/changes.txt +++ /dev/null @@ -1,780 +0,0 @@ - -irrKlang 1.6 - -- stopped support for .NET 1.1, please use the versions for .NET 2 or .NET 4 instead, - or an older version of irrKlang if you still need .NET 1 support - -- irrKlang for .NET 4 now needs version 4.5 at miminum - -- there is now a new function stopAllSoundsOfSoundSource() to stop all sounds of a specific sound source - -- irrKlang.NET for .NET 4 now also has a strong name (it is now a signed assembly) - -- irrklang for gcc now supports gcc 5.1 - -- irrKlang 1.5 for windows was depending on the MSVC runtime dll, this is now - no longer the case with irrKlang 1.6 - -- fixed a bug causing duplicated DirectSound buffers to share the playbackSpeed sometimes, causing - some sounds to have a wrong frequency when played. - -- fixed update() problem in single threaded mode - if you run irrKlang in single threaded mode, you can now call irrKlang::update as often and - fast as you want. This was supposed to be called only about once every second prevousliy, and - could cause irrklang to stall previously if called too often. - -- added support for Visual Studio 2017 - - ------------------------------------------------------------------------- - -irrKlang 1.5 - -- Added support for unicode file names. - irrKlang now uses UTF8 internally on all operating systems. If you are running it on Windows, and want to use - wchar_t types, you can use the irrKlang provided function makeUTF8fromUTF16string() to convert your wchar_t* string to - a char* string. - In the .NET version of irrKlang, the API hasn't changed, but irrklang now supports unicode - file names there automatically as well. - -- Added 64 bit support. - There is now a separate irrKlang SDK for 64 bit builds - -- Added support for playing back 24 bit flac files - -- Uses less resources on linux now: PCM handles are now closed as soon as possible, freeing resources much earlier. - ------------------------------------------------------------------------- - - -irrKlang 1.4.1 - -- irrKlang now loads the alsa lib from the correct directory on previously unsupported linux systems. - ------------------------------------------------------------------------- - -irrKlang 1.4.0 - -- Fixed a potential crash in the windows version, when using DirectSound8 - -- Improved speed of the Windows version of irrKlang by about 20% - -- irrKlang now also works with newer Linux distributions (like Ubuntu 12), - which moved the ALSA lib file into a new directory. - -- Cleared up some inconsistencies in the documentation - -- Removed a very small memory leak in Linux and Mac OS X - ---------------------------------------------------------------------- - -irrKlang 1.3.0b - -- Added support for .NET framework 4. - -- Fixed a problem with audio recording: GUIDs were not correctly - decoded for some devices, causing manual device selection to fail - on Windows. - ---------------------------------------------------------------------- - -irrKlang 1.3.0 - -- There is now the possibility to capture the mixed output audio data - from irrKlang, using the ISoundMixedOutputReceiver interface. - Can be used to store the sound output as .wav file or for creating - an Oscillograph and similar. - -- The movement speed of 3d sound listeners has been ignored in previous - releases for 3d sound doppler effects, this has been corrected now. - -- irrKlang now also runs on 64 bit linux systems. It previously - looked for the alsa lib in /usr/lib/libasound.so, but on 64 bit - system this is located in /usr/lib32/libasound.so. This is fixed now. - ---------------------------------------------------------------------- - -irrKlang 1.2.0 - -- Added .flac file playback support. Implemented as plugin, ikpFlac.dll. - -- Fixed a bug causing the volume of 3D sounds not to be set correctly - when using DirectSound8 and playing more than one 3D sound of the - same file at the same time. - -- File formats with unknown extensions are now loaded by Plugins only - if they could not be loaded by the internal decoders. - -- Several API documentation updates and improvements. - -- C++ documentation now has search functionality - -- Replaced .chm documentation files now with plain .html files - ------------------------------------------------------------------------ - -irrKlang 1.1.3c - -- [This update only changes the implementation, the interfaces all remain the - same, so only the irrKlang.dll file needs to be replaced since version 1.1.3.] - -- Fixed a bug causing irrKlang to crash when playing looped, streamed sounds in 3D - under special circumstances. - ------------------------------------------------------------------------ - -irrKlang 1.1.3b - -- [This update only changes the implementation, the interfaces all remain the - same, so only the irrKlang.dll file needs to be replaced since version 1.1.3.] - -- Small bug fix for the DirectSound drivers: Looped streamed sounds sometimes - restarted with a small pause (~10 ms) in between. - -- The ISound and ISoundSource classes in irrKlang.NET now implement the - IDisposable interface, so it is now easily possible to free their resources - manually. - -- The .NET version now uses less memory (earlier unmanaged resource disposal). - ------------------------------------------------------------------------ - -irrKlang 1.1.3 - -- Added support for multichannel audio recording. When starting audio recording using - startRecordingBufferedAudio() or startRecordingCustomHandledAudio(), - set the new last parameter to the amount of channels you want to record audio data. - -- Reduced latency of the Linux version (ALSA). - -- Improved Mac OS X performance (CoreAudio), irrKlang now performs better on computers - with slow hardware. - -- Added two VisualBasic.NET examples - -- ForcedStreamingThreshold property of ISound now also available in - the .NET verion of irrKlang. - -- IAudioRecoder::IsRecording now returns the correct value in the .NET - version of irrKlang. - -- IAudioRecorder now correctly returns a SampleFormat data with a lenght of 0 if - nothing has been recorded before. - -- In irrKlang.NET, IAudioRecorder.RecordedAudioData does not throw an - OutOfMemoryException anymore if nothing has been recorded yet. - -- ISoundSource::getForcedStreamingForceThreshold has been renamed to - ISoundSource::getForcedStreamingThreshold - ------------------------------------------------------------------------ - -irrKlang 1.1.2b - -- Added support for (external) multichannel sound hardware on MacOSX. - ------------------------------------------------------------------------ - -irrKlang 1.1.2 - -- Added support to play back 24 bit wave files. - -- The DirectSound drivers now use more aggressive sound buffer sharing, - causing irrKlang to use a lot less memory and also speeding it up a lot - when playing a lot of big sounds. - -- There is now a way to access the internal used audio interfaces (ALSA, DirectSound, - DirectSound8, WinMM, CoreAudio) using ISoundEngine::getInternalAudioInterface(). - -- There are now two .NET versions of irrKlang available, one for the .NET CLR 1.1 - and one for .NET CLR 2.0 (.NET Framework 2, 3 and 3.5). Of course, you can still - use every version with every project, this is mainly to reduce the size of installers. - See details in readme.txt - -- It is now possible in the .NET version to access the decoded sample audio data of - non-streamed sounds using ISound.SampleData - -- It is now possible in the .NET version to access the recorded audio data directly - using IAudioRecorder.RecordedAudioData - -- Fixed a bug in the .NET version of the method EnableCompressorSoundEffect() - which totally skrewed up its parameters. - -- Fixed a bug causing the AudioRecorder only to work for one recording session - in DirectSound. - -- Fixed a bug causing the irrklang DirectSound driver to start playing the sound when - it changing its 'looped' flag when the sound is paused. - -- There is now a new example for C# available which shows how to use irrKlang with - Windows.Forms. - -- The forced streaming treshold has been adjusted to 2MB - -- Fixed some documentation mistakes in ISoundEngine::addSoundSourceFromPCMData - ------------------------------------------------------------------------ - -irrKlang 1.1.0 - -- Several speed optimizations and memory usage improvments. - -- It is now possible to directly access the decoded PCM sample data of - every loaded sound source. - Use ISoundSource::getSampleData() for this. - -- Fixed a bug causing the UserData object and other resources not to be garbage - collected when using ISoundStopEventReceiver in the .NET version of irrKlang. - -- Fixed a bug causing the sudden end of sound loops under very rare circumstances. - -- The 'Could not init COM' warning was senseless and has been removed. - ------------------------------------------------------------------------ -irrKlang 1.0.4 - -- irrKlang is now able to record audio. Use createIrrKlangAudioRecorder() to create an - audio recorder object. It currently only works in Windows and with DirectSound (subject to change). - -- A new method ISoundEngine::addSoundSourceFromPCMData() now adds to possibility to use sound - source from pure PCM data. - -- The three method overloads of addSoundSource() have now been renamed to - addSoundSourceFromFile(), addSoundSourceFromMemoryFile(), and addSoundSourceAlias(). - ------------------------------------------------------------------------ -irrKlang 1.0.3 - -- irrKlang now supports Power PCs (PPC). All features and file formats except - Module playback (.mod, .it, .xm, .s3m) are now supported on this platform. - -- There is now a function to enumerate available audio devices. Select a device ID from this list to - let irrKlang use a specific audio device. You can create this list using - irrklang::ISoundDeviceList* list = createSoundDeviceList(); - or in .NET (C#): - IrrKlang.ISoundDeviceList list = new IrrKlang.ISoundDeviceList(); - -- The sound stop event receiver now has an additional parameter, describing the reason why the - sound has been stopped. The signature of the method is now - virtual void OnSoundStopped(ISound* sound, E_STOP_EVENT_CAUSE reason, void* userData) = 0; - or in .NET (C#): - public void OnSoundStopped(IrrKlang.ISound sound, IrrKlang.StopEventCause reason, object userData); - -- irrKlang.NET is now a signed assembly to work around some security hassle Microsoft introduced on Vista. - -- On newer linux versions (such as Ubuntu 7.10), irrKlang sometimes would play sound too fast or with - a lot of noise, this is repaired now. - -- The Linux version of irrKlang shared object file is now named - libirrKlang.so instead of previously irrKlang.so - -- ALSA driver latency highly improved - -- IrrKlang.NET now supports retrieving the audio format of a sound, using ISoundSource::AudioFormat. - -- IrrKlang can now optionally be told which sound device to use for sound output. In addition using - this feature, it is now possible to define an ALSA device name to be used for alsa output when calling - createIrrKlangDevice(). - -- irrKlang ignored the new flag ESEO_PRINT_DEBUG_INFO_TO_STDOUT on unix based operation systems, - this is fixed now. - ------------------------------------------------------------------------ -irrKlang 1.0.2 - -- Breaking interface changes: - - All interfaces are now located in one single, new namespace named 'irrklang'. - - vector3df is now named vec3df - - IReadFile is now named IFileReader - - IReferenceCounted is now named IRefCounted and IVirtualReferenceCounted now IVirtualRefCounted - - primitive types now have the prefix ik_ - - all header files have now the prefix ik_ - - IFileFactory::createAndOpenFile() is now named createFileReader(). - These changes where necessary to simplify and clean up the interface, as well as to make irrklang independent - of future changes of the Irrlicht Engine. - -- It is now possible to change the play position of a sound using ISound::setPlayPosition(). - -- Software devices such as ALSA, WinMM and CoreAudio also support teh setPlaybackSpeed() functionality now. - -- Max values of 3D sound now behave differently: They won't mute the sound anymore when - the max distance is reached. This should not affect if you set your 3D sound min/max values - correctly before: The audible radius of a sound is only influenced by the minimum value, - the maximum should be set to a extremely high value usually (such as 1mio) which is the - default. If the maximum value is set to a small value, the sound won't attenuate anymore - after this distance and stay audible from then on. - In short: In nearly all cases, it is not necessary to change the max value of the sound - if not in linear rolloff mode. Details can be found in the documentation. - -- It is now possible to retrieve the audio format of sound sources. Informations - like channel count (mono/stereo), frame count, sample rate, etc are possible to - be retrieved using ISoundSource::getAudioFormat() - -- The internals of irrKlang has been refactored: irrKlang.dll/.so/.dylib files are now smaller, use - an improved thread locking mechanism and should run a bit faster. - -- irrKlang now supports a RollOff factor for 3D sounds. Use ISoundEngine::setRolloffFactor() for this. - -- it is now possible to get the name of the used sound driver by calling ISoundEngine::getDriverName(); - -- irrKlang now only prints status messages to stdout if ESEO_PRINT_DEBUG_INFO_TO_STDOUT was set when - creating the device (which is the default). - -- There is a new example application included in the SDK: A music player. - -- ISound::getPlayPosition() didn't return 100% accurate positions in all cases, this is fixed now. - -- irrKlang won't touch files anymore for preloading when streaming was specified. - -- ISoundSource::getIsSeekingSupported() now returns if the sound supports seeking using - ISound::setPlayPosition(). - -- Fixed a problem with 3D sounds: On some sound boards on windows operating systems older than Vista, - the 3D sound would not stop at the maximum 3D distance when using DirectSound. - -- Using ISoundEngine::setDefault3DSoundMaxDistance() had a small bug, which caused the max distance - not to work in all cases, this is fixed now. - ------------------------------------------------------------------------ -irrKlang 1.0.1 - -- Removed the deprecated header ESoundEffects.h - -- Fixed a rarely happening bug causing irrKlang to crash when stopping streamed sounds in the software devices - at disadvantageous times. - -- Fixed a rarely happening bug which could have caused a deadlock when stopping a huge - amount of streamed at the same time sounds. - -- Documentation fixes - ------------------------------------------------------------------------ -irrKlang 1.0 - -- Added ISound::setIsLooped(), to make it possible to change the loop mode of sounds during runtime. - -- It is now possible to preload sounds when using the addSoundSource() method, by - setting the parameter 'preload' to true. If this flag is set to false (which is default) - the sound engine will not try to load the sound file when calling this method, - but only when play() is called with this sound source as parameter. - -- Plugins can now be loaded manually from a custom path using ISoundEngine::loadPlugins(); - -- The listener position is now set to a default value when starting up irrKlang. - Previously, when playing 3D sounds without changing or setting the listener position at all, - 3D sounds would sound differently based on the chosen audio driver. - -- Fixed a bug of the Linux version of irrKlang, causing ALSA to crash on - some very few systems (known as the '!snd_interval_empty(i)'-problem). - -- Resampling mono sounds in all devices except directSound (it was ok there already) - now uses only half the memory as before. - -- To reduce name clashes with the windows headers for people not using namespaces, - the Interface IUnknown has been renamed to IRefCounted. - -- IrrKlang can now be used easily together with the latest 6 versions of - Irrlicht (header compatibility). - -- Fixed a small bug in the .NET version which could return 'false' instead of 'true' under - special circumstances when calling isCurrentlyPlaying() (Microsoft compiler bug). - -- The documentation has been updated and extended with lots of examples. - -- Examples now also include project files for visual studio 6.0 - ------------------------------------------------------------------------ -irrKlang 1.0-RC1 - -- irrKlang now supports MacOSX, using CoreAudio. - There is a new sound output driver enumeration literal, named ESOD_CORE_AUDIO, which - will be chosen automaticly when using ESOD_AUTO_DETECT on MacOsX. - Please note that irrKlang is a universal binary for both x86 and ppc, but - only x86 hardware is supported yet, altough some few features might work with the - ppc irrKlang version. - -- This version is release candiate 1 for version 1.0. There are now known bugs in irrKlang - currently, and if no major bugs will be found, version 1.0 will be released after some time. - We are already working on new user requested features which will be integrated after the - 1.0 release. - -- irrKlang.NET is now able to override the file access just like the C++ version. There is - a tutorial in examples.net\CSharp.04.OverrideFileAccess demonstrating this. - Use IFileFactory with ISoundEngine::addFileFactory for this. - -- Added a method to irrKlang.NET, making it possible to add System::IO::Streams as sound - sources. Note that the stream is totally read into memory when adding the sound source. - If you want irrKlang to dynamically open and close custom file streams without loading - everything into memory, use the addFileFactory with your own IFileFactory implementation. - -- Documentation improvements for the .NET version. - ------------------------------------------------------------------------ -irrKlang 0.9.1 - -- License change: All of the irrKlang Pro features (except static linking and signed assembly) - are now available for non-commercial use too. Please take a closer look at the new - license and the website for details. - The license was changed because of lots of user requests, so that free and open - source projects are now able to use irrKlang pro's features as well. To compensate this, - this means that irrKlang is no more free for commercial use. - -- Mp3 files with ID3 v2 or later tags in it have not been played correctly in irrKlang, this is - fixed now. - -- It is now possible to add sound source aliases for an existing sound source. - This is useful if you want to play multiple sounds but each sound isn't necessarily one single file. - Also useful if you want to or play the same sound using different names, volumes or min and max 3D distances. - Use the now existing third overload of ISoundEngine::addSoundSource() which takes another - sound source as parameter for this. - -- added ISound::PlayLength property to irrKlang.NET to retrieve the length of sounds in milliseconds. - -- irrKlang.NET now needs a lower amount of memory every time a sound is played and also - frees the memory used by these sounds earlier. - -- irrKlang.NET now supports sound sources just as the irrKlang C++ version does, - which means better access and possibility to influence sounds. - -- irrKlang.NET now also supports default 3D min and max distances. - -- irrKlang.NET now supports playing sounds directly from custom memory areas, - byte arrays (byte[]). Use ISoundEngine.addSoundSource(yourMemoryArray, someName) for this. - -- Using irrKlang.NET, streamed sound files have not been closed on some systems. This is fixed now. - -- It is now possible to set the wanted stream mode for sound sources using - ISoundSource::setStreamMode(). - -- Reduced the file size of the irrKlang library again a bit. - -- There are two new tutorials for irrKlang.NET in C# available now. - ------------------------------------------------------------------------ - -irrKlang 0.9 - -- irrKlang is now available in two editions: - - irrKlang which is still free, also for commercial use - - irrKlang Pro, for a small license fee (see details on http://ambiera.com) - Some of the new features added in this version are only available in - irrKlang Pro (see website for details). The 'pro' features can be accessed - and tested with the free version as well, but the audio engine will start playing - additional sounds (female voice saying 'irrKlang pro') from time to time once - a pro feature has been used. - -- irrKlang now supports DirectSound8 as additional sound output driver. - Note that the E_SOUND_OUTPUT_DRIVER enumeration has a new member now: - ESOD_DIRECT_SOUND_8. The ESOD_DIRECT_SOUND is still available. - -- Doppler effects are now supported (with the DirectSound drivers at least). - Use ISound::setVelocity to set a sounds velocity, ISoundEngine::setListenerPosition() - to set the listeners velocity and ISoundEngine::setDopplerEffectParameters() to - adjust two parameters influencing the doppler effects intensity. - -- There are now sound stop events: Events which are called when a sound has finished - playback. Use the new interface ISoundStopEventReciever for this. - The interface has only one method to be implemented by the user: OnSoundStopped(). - Implement this interface and set it via ISound::setSoundStopEventReciever(). - The sound stop event is guaranteed to be called when a sound or sound stream is finished, - either because the sound reached its playback end, its sound source was removed, - ISoundEngine::stopAllSounds() has been called or the whole engine was deleted. - -- Sound effects are now usable when using the ESOD_DIRECT_SOUND_8 - driver (default). Available sound effects are: - - Chorus - - Compressor - - Distortion - - Echo - - Flanger - - Gargle - - 3DL2Reverb - - ParamEq - - WavesReverb - Those effects can be accessed via ISound::getSoundEffectControl(), if the - 'enableSoundEffects' flag was set to true when starting the sound with - play2D() or play3D(). - -- There is now the option to change the play back speed and the frequency - of a sound. Use ISound::setPlaybackSpeed() for this. - -- It is now possible to set a default volume for every sound source via - ISoundSource::setDefaultVolume(). - -- There is now a statically linkable version of irrKlang available (currently - windows and irrKlang pro only). - Just #Define IRRKLANG_STATIC in your project settings or before including the - irrKlang headers to use the static lib version of irrKlang. - Note that you need to use multi threaded runtime libraries in your project - when using irrKlang as static lib, other wise you will get linker errors - (like "__getmbcp already defined in LIBC.lib(mbctype.obj)") or random crashes. - In Visual Studio, this setting can be found in - Project Settings -> C++ -> Code Generation -> Runtime Library. - -- Memory sound sources are now copied by default, so the memory block can be discarded after - calling ISoundEngine::addSoundSource(). There is a new parameter 'copyMemory' which - can be set to false to make the engine use the old, non memory copying behavior. - -- ISoundEngine::getSoundSource() now has a second parameter making it possible - to only retrieve a already added sound source without loading it. - -- There is a new example available showing how to use sound effects. - -- Refactored a lot of internal code, reducing the file size of the - irrKlang binaries. - -- Fixed a possible synchronization problem (possible crash) - ------------------------------------------------------------------------ - -irrKlang 0.8.1 - -- There was a serious bug in the WAV file reader which read over the end of files, - when streamed, causing a short 'click' sound. Fixed now. - -- 8 Bit sound streams don't produce a click when stopped anymore. - -- Audio stream readers which report a wrong amount of frames in the stream now - don't get clipped before playing the end of the sound anymore. - ------------------------------------------------------------------------ - -irrKlang 0.8 - -- There are now two ways to set default min and max distances for 3D sounds: - ISoundEngine::setDefault3DSoundMinDistance(), ISoundEngine::setDefault3DSoundMaxDistance - for global min/max control, as well as - ISoundSource::setDefaultMinDistance(), ISoundSource::setDefaultMaxDistance(). - to influence the default min/max value based on the sound source. - -- Some documentation updates - -- The short 'click'/'pop' sound which sometimes has been played on streamed, non looped sounds - when using the DirectSound device is now removed. - -- The ALSA driver now also works with sound hardware not supporting power of two buffer sizes. - -- License change: irrKlang.so file may also be redistributed. - ------------------------------------------------------------------------ - -irrKlang 0.7 - -- Added possibility to remove sound sources (selective or all at once). - See ISoundEngine::removeSoundSource() (two overloads) and - ISoundEngine::removeAllSoundSources(). - -- There is now the possibility to get the length of any sound source or playing sound. - See ISound::getPlayLength() and ISoundSource::getPlayLength(). - -- Resources of finished played sounds are now freed much earlier, causing smaller memory usage. - -- When stream playback is paused, the play position returned by ISound::getPlayPosition() - won't advance forward anymore in DirectSound, this was a bug which is now fixed. - -- Fixed a bug which caused ISound::isFinished() to be returned incorrect values when - using the DirectSound driver. - -- Fixed a bug causing a wrong value being reported using getPlayPosition() when playing - very long streams using the WinMM or the ALSA driver. - ------------------------------------------------------------------------ - -irrKlang 0.6 - -- There are some new supported file formats: MOD, XM, IT and S3M. Implemented using the - excellent Dynamic Universal Music Bibliotheque. - -- irrKlang now is available for .NET languages (C#, VisualBasic.NET, - IronPhyton, Boo, Delphi.NET etc). - See /bin/dotnet for the binary, and /examples.net for some examples. - -- irrKlang now chooses sound drivers in a more intelligent way when running in - driver auto detect mode (ESOD_AUTO_DETECT). - For example when DirectSound is available but fails starting up (for whatever reason), - irrKlang will select the winMM driver instead of not playing any sound. - -- It is now possible to influence or disable the threshold where irrKlang desides - to stream a file regardless of the user specified setting. - Use ISoundSource::setForcedStreamingThreshold for this. - -- irrKlang is now compatible with Irrlicht 1.3, the IFileReader interface has been - updated. Meaning you can use the same IFileReader interfaces between those two - engines and for example make irrKlang read files using Irrlicht's file system. - -- irrKlang now needs even less memory when playing a lot of short soundfiles at the same time, - achieved through a nicer internal (de)allocation scheme. - -- When using software 3d sound (using winMM or ALSA), the left and right speaker were swapped. - This is fixed now. - -- Failed COM initialization is now only a warning, and irrKlang will not abort with an error. - -- Under some circumstances (bad windows scheduling, cpu intensive applications etc) it could - happen that looped, streamed sound filed played via DirectSound in irrKlang would play - strange noises after the first repeat. This has been corrected now. - -- On some hardware under Linux, irrKlang wasn't able to set the wanted buffer size, - this has been improved now. - -- Removed a bug causing visual studio 2005 projects not to compile when using irrKlang without - a WIN32 define. - ------------------------------------------------------------------------ - -irrKlang 0.5 - -- Linux is now supported as platform. irrKlang uses ALSA as output target here by default. - -- irrKlang now supports winMM as output driver next to DirectSound in Windows. - -- added a new method to pause/unpause all sounds: - ISoundEngine::setAllSoundsPaused( bool bPaused = true ) - -- The flag ESEO_LOAD_PLUGINS now correctly prevents loading of plugins if - not set. This was not working before. - -- ISoundEngine::stopAllSounds() didn't work with the DirectSound output driver correctly, - this has been corrected now. - -- irrKlang can now be used as static lib. Just #Define IRRKLANG_STATIC in your project - settings or before including the irrKlang headers to use the static lib version - of irrKlang. Note that you need to use multi threaded runtime libraries in your project - when using irrKlang as static lib, other wise you will get linker errors - (like "__getmbcp already defined in LIBC.lib(mbctype.obj)") or random crashes. - In Visual Studio, this setting can be found in - Project Settings -> C++ -> Code Generation -> Runtime Library. - (If the static library isn't released in this package it may come as separate archive) - ------------------------------------------------------------------------ - -irrKlang 0.4 - -- Added support for the GCC compiler - -- Added the possibility to load sounds directly from memory. - For this, two overloaded methods to the ISoundEngine interface have been added: - ISoundSource* addSoundSource(void* memory, ik_s32 sizeInBytes, const ik_c8* soundName); - ISoundSource* addSoundSource(const ik_c8* fileName, E_STREAM_MODE mode=SM_AUTO_DETECT); - -- Added possibility to override file access easily. - -- Added two tutorials: MemoryPlayback and OverrideFileAccess. - -- Added support for the Code::Blocks IDE - -- Removed streamMode parameter from getSoundSource(). If you needed this, please use - addSoundSource() now instead. - -- Sounds are now loaded correctly independent of their file extension. - -- irrKlang no longer crashes if more than one instance of it is created. - ------------------------------------------------------------------------ - -irrKlang 0.3 - -- Added the option to play mp3 files. This functionality is available as plugin and - works when the file ikpMP3.dll is available. Simply remove it if you don't want - or need mp3 support for your software. Please note that if you are using mp3 - files in your application, you might need to pay a license fee to Thompson for - their patent (This is nothing irrKlang specific, every application needs to do - this today if Thompson wants it to.) - The ikpMP3.dll decoder is available as full source in the \plugins directory - and licensed under the LGPL. - -- Added plugin support. Create a .dll which starts with ikp (for IrrKlangPlugin) - including a function looking like this: - __declspec(dllexport) void __stdcall irrKlangPluginInit( - ISoundEngine* engine, const char* version) { // your code here } - irrKlang will load the dll and invoke that function. There is an example plugin - with full source code in the \plugins directory which enhances irrKlang - to decode mp3 files. - -- IrrKlang now supports 3D buffers (enabled by default). Previously, they have been - emulated. By not specifying the ESEO_USE_3D_BUFFERS flag when calling - createIrrKlangDevice(), irrKlang will not use 3D buffers. - -- Added the possibility to write debug info to any windows debugger supporting - OutputDebugString() (like VisualStudio). This is pretty useful if your application - does not capture any console output. Use ESEO_PRINT_DEBUG_INFO_TO_DEBUGGER to - enable this feature when calling createIrrKlangDevice(). - -- irrKlang now supports multiple rolloff models. 3D sounds are now played back with - a logarithmic rolloff by default. In previous versions, irrKlang used a linear rolloff - model. Use ESEO_LINEAR_ROLLOFF when calling createIrrKlangDevice() to switch - to the linear rolloff model. - -- The createIrrKlangDevice() function now accepts several options as flags. Note that - the C++ compiler automaticly converts bools to this flags so if you used a previous - version of the engine you might want to check if your parameters are correctly set. - -- Added the method ISound::getPlayPosition() which returns the current play position of - the sound in milliseconds. - -- Fixed a possible crash when stopping a streamed sound manually at the same time - it also stopped automaticly. - -- Fixed playback of looped streamed sounds causing artifacts under several circumstances. - ------------------------------------------------------------------------ - -irrKlang 0.2 - -- Fixed 3d positioning of sounds - -- Fixed a bug in ik_ISound.h causing irrKlang header not to compile with some strict compiler settings. - -- Added some internal performance improvements - ------------------------------------------------------------------------ - -irrKlang 0.1 - -Initial release. - -Although this is the first release, irrKlang already has some features: - -- Support for .WAV and .OGG files (MP3, FLAC, SPEEX support planned and -coming soon) - -- Buffered and streamed audio playback - -- Seamless 2D and 3D audio: It is possible to play short simple stereo -sounds as well multiple large streamed sound files in 3D space at the -same time for example. - -- High level autodetection: The engine can do everything for you. Just -tell it to play a sound file, and it will load, cache and/or stream -sound data for you automaticly, depending on what is best for -performance and memory usage. But if you want to specify how the engine -should handle this, you can specify this as well. - -- Extendable: Possibility to write own file format readers/decoders to -extend the engine with it. - -- Multi/Singlethreaded modes: The engine can run both multithreaded or -singlethreaded in the same thread as your application, to make it -possible to debug your application easier for example. - -- Low level audio output manipulation: Before starting to play a sound -or even during it is already playing, it is possible of course to alter -any aspect of it like panning, volume and 3d position. - -- Fast 3D audio on low end hardware: Because some low end audio hardware -is not able to play 3D sounds without significant performance loss or -some don't support 3d audio buffers at all, irrEdit has a high -performance 3d sound buffer emulator built-in, causing a sound -experience nearly as it was a real 3d sound buffer. - -- Separate music and sound control: As most applications want to -separate between sound and music playback, the engine offers to control -them separately, like for example via a master volume control. No need -to manage alls your playing sounds just to change the volume of all -sounds. (The control of the 'music' part in the API is not available in -version 0.1 yet, but can be used via normal sounds already) - -- Full playback control: Play any sound and forget about it if you want. -Then later, you can query at any time which sound is currently playing -and influene this if you want. - diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpFlac.dll b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpFlac.dll deleted file mode 100644 index 2271a3f..0000000 Binary files a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpFlac.dll and /dev/null differ diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpMP3.dll b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpMP3.dll deleted file mode 100644 index b913400..0000000 Binary files a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/ikpMP3.dll and /dev/null differ diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/irrKlang.NET4.dll b/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/irrKlang.NET4.dll deleted file mode 100644 index ef53ee5..0000000 Binary files a/BAKKA Editor/irrKlang-64bit-1.6.0/lib/dotnet-4-64/irrKlang.NET4.dll and /dev/null differ diff --git a/BAKKA Editor/irrKlang-64bit-1.6.0/readme.txt b/BAKKA Editor/irrKlang-64bit-1.6.0/readme.txt deleted file mode 100644 index 9dfc25d..0000000 --- a/BAKKA Editor/irrKlang-64bit-1.6.0/readme.txt +++ /dev/null @@ -1,191 +0,0 @@ -========================================================================== -The irrKlang SDK version 1.6 -========================================================================== - - Welcome the irrKlang SDK. - - Content of this file: - - 1. Directory structure overview - 2. How to start - 3. Release Notes - 4. .NET version dependencies - 5. License - 6. Contact - - - -========================================================================== -1. Directory structure overview -========================================================================== - - You will find some directories after decompressing the archive in which - came the SDK. These are: - - \bin The compiled library irrKlang.DLL and some compiled demo - and example applications, just start them to see - irrKlang in action. - \doc Documentation of the Irrlicht Engine. - \examples Examples and tutorials showing how to use the native engine - engine using C++. - \example.net Examples written for the .NET version of irrKlang, in C# and - VisualBasic.NET - \include Header files to include when using the engine. - \lib Lib to link with your programs when using the engine. - \media Sound data for the demo applications and - examples. - \plugins Source and documentation of the irrKlang plugins. - - -========================================================================== -2. How to start -========================================================================== - - To see the engine in action in Windows, just go to the \bin\Win32 - directories, and start some applications. - - To start developing own applications and games with the engine take - a look at the 01.HelloWorld example in the \examples directory. - - Windows Users: - There are Visual Studio as well as CodeBlocks projects for the examples. - - Linux users: - Just go into the /examples directory and run 'make' for every - example you want to try out. You can run the examples directly from the - directory they are created in. Some examples may print some special - hints after a successful make and might help you starting them up - by typing in 'make run'. - - Mac users: - There is a XCode project for each example available in - the corresponding example directory. To run the precompiled example - applications from bin\macos-gcc, doubleclick the run_0x_xxxxx.command - files from the finder (this will change the working directory to - bin\macos-gcc) or start them directly from a terminal. - -========================================================================== -3. Release Notes -========================================================================== - - Informations about changes in this new version of the engine can be - found in changes.txt. - - Please note that the included sound files are copyright - by their authors and not included in the irrKlang engine license. - - -========================================================================== -4. .NET version dependencies -========================================================================== - -There are four versions of irrKlang.NET available. They have the same -functionality and can be used from the same .NET projects. -The difference are only their dependencies and target platforms: - -irrKlang.NET2.0 in bin\dotnet-2.0: - Compiled for .NET common language runtime version 2.0, depends on - the modudles MSVCR80.DLL and MSVCM80.DLL. (32 bit) - One method to redistribute these is using the visual studio 2005 - redistributeable (vcredist_x86) - -irrKlang.NET4 in bin\dotnet-4: - Compiled for .NET common language runtime version 4.5, depends on - VCRUNTIME140.dll. (32 bit) - One method to redistribute this is using the visual studio 2017 - redistributeable (vcredist_x86) - -irrKlang.NET4 in bin\dotnet-4-64: (only in the 64 bit irrKlang SDK) - 64 bit version, Compiled for .NET common language runtime version 4.5, - depends on VCRUNTIME140.dll. (64 bit) - One method to redistribute this is using the visual studio 2017 - redistributeable (vcredist 64 bit) - -========================================================================== -5. License -========================================================================== - -irrKlang's source codes, documentation and binaries contained within the -distributed archive are copyright © Nikolaus Gebhardt / Ambiera 2001-2018. - -The contents of the irrKlang distribution archive may not be redistributed, -reproduced, modified, transmitted, broadcast, published or adapted in any -way, shape or form, without the prior written consent of the owner, -Nikolaus Gebhardt. - -The irrKlang.dll, irrKlang.so and libirrklang.dylib files may be -redistributed without the authors prior permission in non-commercial -products, and must remain unmodified except for compressing the file. - -For the included plugins which can be found in the \plugins -directory, different licenses may be applied, as specified in the -actual plugin directory. - - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- -irrKlang may include Xiph.org Foundation code (Ogg Vorbis and FLAC). -It's license is the following: - -Copyright (c) 2002, Xiph.org Foundation - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -- Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -- Neither the name of the Xiph.org Foundation nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- -irrKlang may include code from the - Dynamic Universal Music Bibliotheque, Version 0.9.3 - -Copyright (C) 2001-2005 Ben Davis, Robert J Ohannessian and Julien Cugniere - -========================================================================== -6. Contact -========================================================================== - - If you have problems, questions or suggestions, please visit the - official homepage of the irrKlang Engine: - - http://www.ambiera.com/irrklang - - You will find forums, bugtrackers, patches, tutorials, and other stuff - which will help you out. - - If want to contact the author of the engine, please send an email to - Nikolaus Gebhardt: - - office@ambiera.com diff --git a/BAKKA Editor/resource.h b/BAKKA Editor/resource.h deleted file mode 100644 index 3ccb07d..0000000 --- a/BAKKA Editor/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by BAKKA Editor.rc -// -#define IDI_ICON1 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/BAKKA Editor/se_tick.ogg b/BAKKA Editor/se_tick.ogg deleted file mode 100644 index 070c4a5..0000000 Binary files a/BAKKA Editor/se_tick.ogg and /dev/null differ