From: <pst...@us...> - 2013-03-17 23:18:13
|
Revision: 968 http://sourceforge.net/p/jazzplusplus/code/968 Author: pstieber Date: 2013-03-17 23:18:10 +0000 (Sun, 17 Mar 2013) Log Message: ----------- Started adding rhythm generator and added import and export of ASCII MIDI files, but commented out the menu entries because this is for debugging. Modified Paths: -------------- trunk/jazz/src/Project.cpp trunk/jazz/src/Project.h trunk/jazz/src/Track.cpp trunk/jazz/src/Track.h trunk/jazz/src/TrackFrame.cpp trunk/jazz/src/TrackFrame.h Modified: trunk/jazz/src/Project.cpp =================================================================== --- trunk/jazz/src/Project.cpp 2013-03-17 23:13:43 UTC (rev 967) +++ trunk/jazz/src/Project.cpp 2013-03-17 23:18:10 UTC (rev 968) @@ -22,6 +22,7 @@ #include "Project.h" +#include "AsciiMidiFile.h" #include "Filter.h" #include "GetOptionIndex.h" #include "Globals.h" @@ -515,12 +516,28 @@ { JZStandardRead Io; Clear(); - Read(Io, SongFileName.c_str()); + Read(Io, SongFileName); mpConfig->Put(C_StartUpSong, SongFileName); } //----------------------------------------------------------------------------- // Description: +// Open and read an ASCII MIDI file. +// +// Inputs: +// const wxString& SongFileName: +// Song path and file name. +//----------------------------------------------------------------------------- +void JZProject::OpenAndReadAsciiMidiFile(const wxString& AsciiMidiFileName) +{ + JZAsciiRead AsciiRead; + Clear(); + Read(AsciiRead, AsciiMidiFileName); +// mpConfig->Put(C_StartUpSong, SongFileName); +} + +//----------------------------------------------------------------------------- +// Description: // Save a MIDI file. This function will overwrite the file if it already // exists! // @@ -531,12 +548,20 @@ void JZProject::ExportMidiFile(const wxString& MidiFileName) { JZStandardWrite Io; - Write(Io, MidiFileName.c_str()); + Write(Io, MidiFileName); mpConfig->Put(C_StartUpSong, MidiFileName); } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +void JZProject::ExportAsciiMidiFile(const wxString& AsciiMidiFileName) +{ + JZAsciiWrite AsciiWrite; + Write(AsciiWrite, AsciiMidiFileName); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- void JZProject::Play() { mIsPlaying = true; Modified: trunk/jazz/src/Project.h =================================================================== --- trunk/jazz/src/Project.h 2013-03-17 23:13:43 UTC (rev 967) +++ trunk/jazz/src/Project.h 2013-03-17 23:18:10 UTC (rev 968) @@ -112,6 +112,8 @@ // Song path and file name. void OpenSong(const wxString& SongFileName); + void OpenAndReadAsciiMidiFile(const wxString& AsciiMidiFileName); + // Description: // Save a MIDI file. This function will overwrite the file if it // already exists! @@ -121,6 +123,8 @@ // MIDI file path and file name. void ExportMidiFile(const wxString& MidiFileName); + void ExportAsciiMidiFile(const wxString& AsciiMidiFileName); + // Here is the new play interface. For now it just acts as a layer // between the Project and the GUI. // Returns true during playback Modified: trunk/jazz/src/Track.cpp =================================================================== --- trunk/jazz/src/Track.cpp 2013-03-17 23:13:43 UTC (rev 967) +++ trunk/jazz/src/Track.cpp 2013-03-17 23:18:10 UTC (rev 968) @@ -23,8 +23,8 @@ #include "Track.h" #include "Configuration.h" +#include "Dialogs/TrackDialog.h" #include "DrumUtilities.h" -#include "Dialogs/TrackDialog.h" #include "Globals.h" #include "JazzPlusPlusApplication.h" #include "Player.h" @@ -44,7 +44,7 @@ return mMsb.Write(Io) + mLsb.Write(Io) + mDataMsb.Write(Io); } -void JZParam::SetCha(unsigned char Channel) +void JZParam::SetChannel(unsigned char Channel) { mMsb.SetChannel(Channel); mLsb.SetChannel(Channel); @@ -68,7 +68,7 @@ unsigned char *data) { int length = 9 + datalen; - unsigned char *mess = new unsigned char[length]; + unsigned char* mess = new unsigned char[length]; mess[0] = 0x41; mess[1] = 0x10; mess[2] = 0x42; @@ -185,15 +185,15 @@ String = Oss.str(); } -JZMtcOffsetEvent *JZMtcTime::ToOffset() +JZMtcOffsetEvent* JZMtcTime::ToOffset() { - unsigned char *mess = new unsigned char[5]; + unsigned char* mess = new unsigned char[5]; mess[0] = (unsigned char) hour | ((unsigned char) type << 5); mess[1] = (unsigned char) min; mess[2] = (unsigned char) sec; mess[3] = (unsigned char) fm; mess[4] = 0x00; - JZMtcOffsetEvent *s = new JZMtcOffsetEvent(0, mess, 5); + JZMtcOffsetEvent* s = new JZMtcOffsetEvent(0, mess, 5); delete mess; return s; } @@ -205,7 +205,7 @@ return msec; } -JZDrumInstrumentParameter::JZDrumInstrumentParameter(JZNrpn *par) +JZDrumInstrumentParameter::JZDrumInstrumentParameter(JZNrpn* par) : mPitch(par->mLsb.GetControlValue()), mpNext(0) { @@ -216,18 +216,18 @@ param[drumParam2Index(par->mMsb.GetControlValue())] = par; } -JZNrpn *JZDrumInstrumentParameter::Get(int index) +JZNrpn* JZDrumInstrumentParameter::Get(int index) { assert((index >= drumPitchIndex) && (index < numDrumParameters)); return(param[index]); } -void JZDrumInstrumentParameter::Put(JZNrpn *par) +void JZDrumInstrumentParameter::Put(JZNrpn* par) { param[par->mLsb.GetControlValue()] = par; } -JZDrumInstrumentParameter *JZDrumInstrumentParameter::Next() +JZDrumInstrumentParameter* JZDrumInstrumentParameter::Next() { return mpNext; } @@ -237,10 +237,10 @@ return mPitch; } -JZDrumInstrumentParameter -*JZDrumInstrumentParameterList::GetElem(int pit) +JZDrumInstrumentParameter* +JZDrumInstrumentParameterList::GetElem(int pit) { - JZDrumInstrumentParameter *ptr = list; + JZDrumInstrumentParameter* ptr = list; while (ptr) { if (ptr->mPitch == pit) @@ -252,9 +252,9 @@ return ptr; } -JZNrpn *JZDrumInstrumentParameterList::GetParam(int pit, int index) +JZNrpn* JZDrumInstrumentParameterList::GetParam(int pit, int index) { - JZDrumInstrumentParameter *ptr = GetElem(pit); + JZDrumInstrumentParameter* ptr = GetElem(pit); if (ptr) { return ptr->Get(index); @@ -262,7 +262,7 @@ return 0; } -void JZDrumInstrumentParameterList::PutParam(JZNrpn *par) +void JZDrumInstrumentParameterList::PutParam(JZNrpn* par) { JZDrumInstrumentParameter* ptr = GetElem(par->mLsb.GetControlValue()); if (!ptr) @@ -281,7 +281,7 @@ { if (list) { - JZDrumInstrumentParameter *elem = GetElem(pit); + JZDrumInstrumentParameter* elem = GetElem(pit); if (elem) { if (elem->Get(index)) @@ -300,8 +300,8 @@ DelParam(pit, i); } - JZDrumInstrumentParameter *ptr = list; - JZDrumInstrumentParameter *prev = 0; + JZDrumInstrumentParameter* ptr = list; + JZDrumInstrumentParameter* prev = 0; while (ptr) { if (ptr->mPitch == pit) @@ -322,17 +322,17 @@ } } -JZDrumInstrumentParameter *JZDrumInstrumentParameterList::FirstElem() +JZDrumInstrumentParameter* JZDrumInstrumentParameterList::FirstElem() { return list; } -JZDrumInstrumentParameter *JZDrumInstrumentParameterList::NextElem( - JZDrumInstrumentParameter *cur) +JZDrumInstrumentParameter* JZDrumInstrumentParameterList::NextElem( + JZDrumInstrumentParameter* cur) { if (cur) { - JZDrumInstrumentParameter *ptr = GetElem(cur->mPitch); + JZDrumInstrumentParameter* ptr = GetElem(cur->mPitch); if (ptr) { return ptr->mpNext; @@ -350,7 +350,7 @@ void JZDrumInstrumentParameterList::Clear() { - JZDrumInstrumentParameter *ptr = list; + JZDrumInstrumentParameter* ptr = list; while (ptr) { list = ptr->mpNext; @@ -655,17 +655,17 @@ -static int compare(const void *p1, const void *p2) +static int compare(const void* p1, const void* p2) { - JZEvent *e1 = *(JZEvent **)p1; - JZEvent *e2 = *(JZEvent **)p2; + JZEvent* e1 = *(JZEvent **)p1; + JZEvent* e2 = *(JZEvent **)p2; return e1->Compare(*e2); } void JZSimpleEventArray::Sort() { - qsort(mppEvents, nEvents, sizeof(JZEvent *), compare); + qsort(mppEvents, nEvents, sizeof(JZEvent*), compare); } @@ -1157,7 +1157,7 @@ // kill all KeyOn's with non matching KeyOff's for (i = 0; i < nEvents; i++) { - JZKeyOnEvent *k = mppEvents[i]->IsKeyOn(); + JZKeyOnEvent* k = mppEvents[i]->IsKeyOn(); if (k && k->Length <= 0) { k->Kill(); @@ -1286,7 +1286,7 @@ BendPitchSens->Write(Io); } - JZDrumInstrumentParameter *dpar = DrumParams.FirstElem(); + JZDrumInstrumentParameter* dpar = DrumParams.FirstElem(); while (dpar) { int index; @@ -1630,7 +1630,7 @@ class JZTrackDlg : public wxForm { JZTrackWindow* TrackWin; - JZTrack *trk; + JZTrack* trk; std::string& mTrackName; JZNamedChoice PatchChoice; JZNamedChoice DeviceChoice; @@ -1641,15 +1641,15 @@ int AudioMode; public: - JZTrackDlg::JZTrackDlg(JZTrackWindow *w, JZTrack *t); - void EditForm(wxPanel *panel); + JZTrackDlg::JZTrackDlg(JZTrackWindow* w, JZTrack* t); + void EditForm(wxPanel* panel); virtual void OnOk(); virtual void OnCancel(); virtual void OnHelp(); }; -JZTrackDlg::JZTrackDlg(JZTrackWindow *w, JZTrack *t) +JZTrackDlg::JZTrackDlg(JZTrackWindow* w, JZTrack* t) : wxForm(USED_WXFORM_BUTTONS), PatchChoice( "Patch", @@ -1698,7 +1698,7 @@ trk->SetDevice(Device); if (trk->ForceChannel) { - JZChannelEvent *c; + JZChannelEvent* c; JZSysExEvent* s; JZEventIterator Iterator(trk); trk->Sort(); @@ -1707,7 +1707,7 @@ { if ((c = pEvent->IsChannelEvent()) != 0) { - c = (JZChannelEvent *)pEvent->Copy(); + c = (JZChannelEvent*)pEvent->Copy(); c->SetChannel(trk->Channel - 1); trk->Kill(pEvent); trk->Put(c); @@ -1728,7 +1728,7 @@ *pChannel |= sysex_channel(trk->Channel); } - s = (JZSysExEvent *) pEvent->Copy(); + s = (JZSysExEvent*) pEvent->Copy(); trk->Kill(pEvent); trk->Put(s); } @@ -1738,39 +1738,39 @@ if (trk->VibRate) { - trk->VibRate->SetCha(trk->Channel - 1); + trk->VibRate->SetChannel(trk->Channel - 1); } if (trk->VibDepth) { - trk->VibDepth->SetCha(trk->Channel - 1); + trk->VibDepth->SetChannel(trk->Channel - 1); } if (trk->VibDelay) { - trk->VibDelay->SetCha(trk->Channel - 1); + trk->VibDelay->SetChannel(trk->Channel - 1); } if (trk->Cutoff) { - trk->Cutoff->SetCha(trk->Channel - 1); + trk->Cutoff->SetChannel(trk->Channel - 1); } if (trk->Resonance) { - trk->Resonance->SetCha(trk->Channel - 1); + trk->Resonance->SetChannel(trk->Channel - 1); } if (trk->EnvAttack) { - trk->EnvAttack->SetCha(trk->Channel - 1); + trk->EnvAttack->SetChannel(trk->Channel - 1); } if (trk->EnvDecay) { - trk->EnvDecay->SetCha(trk->Channel - 1); + trk->EnvDecay->SetChannel(trk->Channel - 1); } if (trk->EnvRelease) { - trk->EnvRelease->SetCha(trk->Channel - 1); + trk->EnvRelease->SetChannel(trk->Channel - 1); } if (trk->BendPitchSens) { - trk->BendPitchSens->SetCha(trk->Channel - 1); + trk->BendPitchSens->SetChannel(trk->Channel - 1); } if (trk->mpBank) { @@ -1782,14 +1782,14 @@ } if (!trk->DrumParams.IsEmpty()) { - JZDrumInstrumentParameter *dpar = trk->DrumParams.FirstElem(); + JZDrumInstrumentParameter* dpar = trk->DrumParams.FirstElem(); while (dpar) { for (int index = drumPitchIndex; index < numDrumParameters; ++index) { if (dpar->Get(index)) { - dpar->Get(index)->SetCha(trk->Channel - 1); + dpar->Get(index)->SetChannel(trk->Channel - 1); } } dpar = trk->DrumParams.NextElem(dpar); @@ -1801,7 +1801,7 @@ wxForm::OnOk(); } -void JZTrackDlg::EditForm(wxPanel *panel) +void JZTrackDlg::EditForm(wxPanel* panel) { PatchNr = trk->GetPatch() + (trk->GetBank() << 8); Device = trk->GetDevice(); @@ -1911,7 +1911,7 @@ return Channel == gpConfig->GetValue(C_DrumChannel); } -void JZTrack::Merge(JZEventArray *t) +void JZTrack::Merge(JZEventArray* t) { for (int i = 0; i < t->nEvents; i++) { @@ -1976,7 +1976,7 @@ { if (mUndoCount > 0) { - JZUndoBuffer *undo = &mUndoBuffers[mUndoIndex]; + JZUndoBuffer* undo = &mUndoBuffers[mUndoIndex]; for (int i = undo->nEvents - 1; i >= 0; i--) { JZEvent* pEvent = undo->mppEvents[i]; @@ -2006,7 +2006,7 @@ { mUndoIndex = (mUndoIndex + 1) % MaxUndo; - JZUndoBuffer *undo = &mUndoBuffers[mUndoIndex]; + JZUndoBuffer* undo = &mUndoBuffers[mUndoIndex]; for (int i = 0; i < undo->nEvents; i++) { JZEvent* pEvent = undo->mppEvents[i]; @@ -2060,14 +2060,14 @@ { if (mpCopyright) { - return (const char *)mpCopyright->GetData(); + return (const char*)mpCopyright->GetData(); } return ""; } -void JZTrack::SetCopyright(char *str) +void JZTrack::SetCopyright(char* str) { if (mpCopyright) { @@ -2080,7 +2080,7 @@ { len = strlen(str); } - Put(new JZCopyrightEvent(0, (unsigned char *)str, len)); + Put(new JZCopyrightEvent(0, (unsigned char*)str, len)); } Cleanup(); } @@ -2106,7 +2106,7 @@ { Put(new JZTrackNameEvent( 0, - (unsigned char *)pTrackName, + (unsigned char*)pTrackName, strlen(pTrackName))); } Cleanup(); @@ -2608,7 +2608,7 @@ { if (!DrumParams.IsEmpty()) { - JZNrpn *par = DrumParams.GetParam(pitch, index); + JZNrpn* par = DrumParams.GetParam(pitch, index); if (par) { return(par->GetVal() + 1); @@ -2761,7 +2761,7 @@ if (pValue) { - return *pValue + 1; + return* pValue + 1; } return 0; @@ -2955,7 +2955,7 @@ int JZTrack::GetChorusType(int lsb) { - const unsigned char *pValue = gpSynth->GetSysexValPtr(ChorusType); + const unsigned char* pValue = gpSynth->GetSysexValPtr(ChorusType); if (pValue) { @@ -3112,7 +3112,7 @@ return 0; } -void JZTrack::SetPartRsrv(unsigned char *rsrv) +void JZTrack::SetPartRsrv(unsigned char* rsrv) { if (PartialReserve) { @@ -3318,7 +3318,7 @@ Cleanup(); } -JZSetTempoEvent *JZTrack::GetCurrentTempo(int clk) +JZSetTempoEvent* JZTrack::GetCurrentTempo(int clk) { JZEventIterator Iterator(this); Sort(); @@ -3338,7 +3338,7 @@ int JZTrack::GetCurrentSpeed(int clk) { - JZSetTempoEvent *t = GetCurrentTempo(clk); + JZSetTempoEvent* t = GetCurrentTempo(clk); if (t) { return t->GetBPM(); Modified: trunk/jazz/src/Track.h =================================================================== --- trunk/jazz/src/Track.h 2013-03-17 23:13:43 UTC (rev 967) +++ trunk/jazz/src/Track.h 2013-03-17 23:18:10 UTC (rev 968) @@ -79,18 +79,18 @@ public: JZParam( - int clk, - int cha, + int Clock, + int Channel, unsigned char id1, unsigned char msb, unsigned char id2, unsigned char lsb, unsigned char msbval) - : mMsb(clk, cha, id1, msb), - mLsb(clk, cha, id2, lsb), - mDataMsb(clk, cha, 0x06, msbval), - mResetMsb(clk, cha, id1, 0x7f), - mResetLsb(clk, cha, id2, 0x7f) + : mMsb(Clock, Channel, id1, msb), + mLsb(Clock, Channel, id2, lsb), + mDataMsb(Clock, Channel, 0x06, msbval), + mResetMsb(Clock, Channel, id1, 0x7f), + mResetLsb(Clock, Channel, id2, 0x7f) { } @@ -100,7 +100,7 @@ virtual int Write(JZWriteBase& Io); - virtual void SetCha(unsigned char cha); + virtual void SetChannel(unsigned char Channel); virtual int GetVal() { @@ -121,12 +121,12 @@ public: JZNrpn( - int clk, - int cha, + int Clock, + int Channel, unsigned char msb, unsigned char lsb, unsigned char msbval) - : JZParam(clk, cha, 0x63, msb, 0x62, lsb, msbval) + : JZParam(Clock, Channel, 0x63, msb, 0x62, lsb, msbval) { } }; @@ -138,12 +138,12 @@ public: JZRpn( - int clk, - int cha, + int Clock, + int Channel, unsigned char msb, unsigned char lsb, unsigned char msbval) - : JZParam(clk, cha, 0x65, msb, 0x64, lsb, msbval) + : JZParam(Clock, Channel, 0x65, msb, 0x64, lsb, msbval) { } }; @@ -386,7 +386,7 @@ void GrabData(JZSimpleEventArray &src); - void Copy(JZSimpleEventArray& src, int frclk, int toclk); + void Copy(JZSimpleEventArray& src, int frClock, int toClock); JZSimpleEventArray(); @@ -692,9 +692,9 @@ int GetDefaultSpeed(); // beats per minute void SetDefaultSpeed(int bpm); - int GetCurrentSpeed( int clk ); // beats per minute + int GetCurrentSpeed(int Clock); // beats per minute - JZSetTempoEvent *GetCurrentTempo( int clk ); + JZSetTempoEvent* GetCurrentTempo(int Clock); int GetMasterVol(); void SetMasterVol(int MasterVol); Modified: trunk/jazz/src/TrackFrame.cpp =================================================================== --- trunk/jazz/src/TrackFrame.cpp 2013-03-17 23:13:43 UTC (rev 967) +++ trunk/jazz/src/TrackFrame.cpp 2013-03-17 23:18:10 UTC (rev 968) @@ -22,20 +22,21 @@ #include "TrackFrame.h" +#include "AboutDialog.h" +#include "Configuration.h" +#include "Dialogs/MetronomeSettingsDialog.h" +#include "Dialogs/SynthesizerSettingsDialog.h" +#include "Globals.h" +#include "Harmony.h" #include "JazzPlusPlusApplication.h" #include "Player.h" #include "Project.h" #include "ProjectManager.h" +#include "RecordingInfo.h" #include "Resources.h" -#include "RecordingInfo.h" +#include "Rhythm.h" #include "TrackWindow.h" #include "ToolBar.h" -#include "Globals.h" -#include "Configuration.h" -#include "Harmony.h" -#include "Dialogs/MetronomeSettingsDialog.h" -#include "Dialogs/SynthesizerSettingsDialog.h" -#include "AboutDialog.h" #ifdef __WXMSW__ #include "mswin/WindowsPlayer.h" @@ -89,8 +90,12 @@ EVT_MENU(ID_IMPORT_MIDI, JZTrackFrame::OnFileImportMidi) + EVT_MENU(ID_IMPORT_ASCII_MIDI, JZTrackFrame::OnFileImportAscii) + EVT_MENU(ID_EXPORT_MIDI, JZTrackFrame::OnFileExportMidi) + EVT_MENU(ID_EXPORT_ASCII_MIDI, JZTrackFrame::OnFileExportAscii) + EVT_MENU( ID_EXPORT_SELECTION_AS_MIDI, JZTrackFrame::OnFileExportSelectionAsMidi) @@ -113,6 +118,8 @@ EVT_MENU(ID_TOOLS_HARMONY_BROWSER, JZTrackFrame::OnToolsHarmonyBrowser) + EVT_MENU(ID_TOOLS_RHYTHM_GENERATOR, JZTrackFrame::OnToolsRhythmGenerator) + EVT_MENU(ID_SETTINGS_METRONOME, JZTrackFrame::OnSettingsMetronome) EVT_MENU(ID_SETTINGS_SYNTHESIZER, JZTrackFrame::OnSettingsSynthesizerType) @@ -238,8 +245,9 @@ mpFileMenu->AppendSeparator(); mpFileMenu->Append(ID_IMPORT_MIDI, "Import MIDI..."); - +//DEBUG mpFileMenu->Append(ID_IMPORT_ASCII_MIDI, "Import ASCII..."); mpFileMenu->Append(ID_EXPORT_MIDI, "Export as MIDI..."); +//DEBUG mpFileMenu->Append(ID_EXPORT_ASCII_MIDI, "Export as ASCII..."); mpFileMenu->Append( ID_EXPORT_SELECTION_AS_MIDI, "Export Selection as MIDI..."); @@ -309,7 +317,8 @@ pMiscMenu->Append(ID_MISC_SET_COPYRIGHT, "&Set Music Copyright..."); mpToolsMenu = new wxMenu; - mpToolsMenu->Append(ID_TOOLS_HARMONY_BROWSER, "&Harmony Browser..."); + mpToolsMenu->Append(ID_TOOLS_HARMONY_BROWSER, "&Harmony Browser..."); + mpToolsMenu->Append(ID_TOOLS_RHYTHM_GENERATOR, "&Rhythm Generator..."); #if 0 // Move to Project Menu @@ -468,6 +477,7 @@ // } delete gpHarmonyBrowser; + delete gpRhythmGeneratorFrame; return true; } @@ -557,6 +567,27 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +void JZTrackFrame::OnFileImportAscii(wxCommandEvent&) +{ + wxFileDialog OpenDialog( + 0, + "Load ASCII File", + "", + "", + "ASCII MIDI files (txt)|*.txt|All files (*.*)|*.*", + wxFD_OPEN | wxFD_CHANGE_DIR); + if (OpenDialog.ShowModal() == wxID_OK) + { + wxString AsciiMidiFileName = OpenDialog.GetPath(); + gpProject->OpenAndReadAsciiMidiFile(AsciiMidiFileName); + SetTitle(AsciiMidiFileName); + mpTrackWindow->SetScrollRanges(); + mpTrackWindow->Refresh(false); + } +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- void JZTrackFrame::OnFileExportMidi(wxCommandEvent& Event) { // wxFD_OVERWRITE_PROMPT - For save dialog only: prompt for a confirmation @@ -578,6 +609,27 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +void JZTrackFrame::OnFileExportAscii(wxCommandEvent&) +{ + // wxFD_OVERWRITE_PROMPT - For save dialog only: prompt for a confirmation + // if a file will be overwritten. + wxFileDialog SaveAsDialog( + 0, + "Save MIDI File as ASCII", + "", + "", + "ASCII MIDI files (txt)|*.txt|All files (*.*)|*.*", + wxFD_SAVE | wxFD_OVERWRITE_PROMPT); + if (SaveAsDialog.ShowModal() == wxID_OK) + { + wxString FileName = SaveAsDialog.GetPath(); + gpProject->ExportAsciiMidiFile(FileName); + SetTitle(FileName); + } +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- void JZTrackFrame::OnFileExportSelectionAsMidi(wxCommandEvent& Event) { } @@ -654,6 +706,13 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +void JZTrackFrame::OnToolsRhythmGenerator(wxCommandEvent& Event) +{ + CreateRhythmGenerator(); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- void JZTrackFrame::OnSettingsMetronome(wxCommandEvent& Event) { JZMetronomeInfo MetronomeInfo = gpProject->GetMetronomeInfo(); Modified: trunk/jazz/src/TrackFrame.h =================================================================== --- trunk/jazz/src/TrackFrame.h 2013-03-17 23:13:43 UTC (rev 967) +++ trunk/jazz/src/TrackFrame.h 2013-03-17 23:18:10 UTC (rev 968) @@ -81,8 +81,12 @@ void OnFileImportMidi(wxCommandEvent& Event); + void OnFileImportAscii(wxCommandEvent& Event); + void OnFileExportMidi(wxCommandEvent& Event); + void OnFileExportAscii(wxCommandEvent& Event); + void OnFileExportSelectionAsMidi(wxCommandEvent& Event); void OnFileExit(wxCommandEvent& Event); @@ -101,6 +105,8 @@ void OnToolsHarmonyBrowser(wxCommandEvent& Event); + void OnToolsRhythmGenerator(wxCommandEvent& Event); + void OnSettingsMetronome(wxCommandEvent& Event); void OnSettingsSynthesizerType(wxCommandEvent& Event); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |