From: <rel...@us...> - 2009-01-29 20:46:57
|
Revision: 248 http://modplug.svn.sourceforge.net/modplug/?rev=248&view=rev Author: relabsoluness Date: 2009-01-29 20:46:51 +0000 (Thu, 29 Jan 2009) Log Message: ----------- (Patches from Jojo, merged somewhat modified) + General: With additional DLL(not included), can now import MO3 files. + Pattern: Descriptions to tremor and retrigger note command parameters in note properties dialog. / Pattern: When applying "change instrument", won't add instrument number to note off/cut if the note doesn't have instrument already. / Menu: Goto dialog can now be opened from Edit-menu. . Song Cleanup: Sample cleanup should no longer remove data after sustain loop end point. . GUI: Minor tweaks (changes to MIDI mapping dialog, Channelmanager window should no longer be visible in taskbar, text format changes). Modified Paths: -------------- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp trunk/OpenMPT/mptrack/InputHandler.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Stdafx.h trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/mptrack.vcproj trunk/OpenMPT/mptrack/resource.h trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndfile.h Added Paths: ----------- trunk/OpenMPT/soundlib/Load_mo3.cpp Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp =================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -612,27 +612,27 @@ if((button = GetDlgItem(IDC_BUTTON1)) != 0){ button->GetWindowRect(&btn); - button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-6,0,0,SWP_NOSIZE | SWP_NOZORDER); + button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-4,0,0,SWP_NOSIZE | SWP_NOZORDER); } if((button = GetDlgItem(IDC_BUTTON2)) != 0){ button->GetWindowRect(&btn); - button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-6,0,0,SWP_NOSIZE | SWP_NOZORDER); + button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-4,0,0,SWP_NOSIZE | SWP_NOZORDER); } if((button = GetDlgItem(IDC_BUTTON3)) != 0){ button->GetWindowRect(&btn); - button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-6,0,0,SWP_NOSIZE | SWP_NOZORDER); + button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-4,0,0,SWP_NOSIZE | SWP_NOZORDER); } if((button = GetDlgItem(IDC_BUTTON4)) != 0){ button->GetWindowRect(&btn); - button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-6,0,0,SWP_NOSIZE | SWP_NOZORDER); + button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-4,0,0,SWP_NOSIZE | SWP_NOZORDER); } if((button = GetDlgItem(IDC_BUTTON5)) != 0){ button->GetWindowRect(&btn); - button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-6,0,0,SWP_NOSIZE | SWP_NOZORDER); + button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-4,0,0,SWP_NOSIZE | SWP_NOZORDER); } if((button = GetDlgItem(IDC_BUTTON6)) != 0){ button->GetWindowRect(&btn); - button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-6,0,0,SWP_NOSIZE | SWP_NOZORDER); + button->SetWindowPos(NULL,btn.left-wnd.left-3,wnd.Height()-btn.Height()*2-4,0,0,SWP_NOSIZE | SWP_NOZORDER); } GetClientRect(&wnd); Modified: trunk/OpenMPT/mptrack/InputHandler.cpp =================================================================== --- trunk/OpenMPT/mptrack/InputHandler.cpp 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/InputHandler.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -396,7 +396,7 @@ case ID_FILE_SAVEASMP3: s="Save as MP3...\t"; c=kcFileSaveAsMP3; break; case ID_FILE_SAVEMIDI: s="Export as Midi...\t"; c=kcFileSaveMidi; break; case ID_FILE_SAVECOMPAT: s="Compatibility Export...\t"; c=kcFileExportCompat; break; - case ID_IMPORT_MIDILIB: s="Import Midi Library...\t"; c=kcFileImportMidiLib; break; + case ID_IMPORT_MIDILIB: s="Import MIDI Library...\t"; c=kcFileImportMidiLib; break; case ID_ADD_SOUNDBANK: s="Add Sound Bank...\t"; c=kcFileAddSoundBank; break; case ID_PLAYER_PLAY: s="Pause/Resume\t"; c= kcPlayPauseSong; break; Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -182,6 +182,7 @@ } f.Close(); } + EndWaitCursor(); if ((m_SndFile.m_nType == MOD_TYPE_NONE) || (!m_SndFile.m_nChannels)) return FALSE; // Midi Import @@ -2466,6 +2467,37 @@ wsprintf(s, "%dbpm", param); break; + case CMD_TREMOR: + if(param) + wsprintf(s, "ontime %d, offtime %d", param >> 4, param & 0x0F); + else + strcpy(s, "continue"); + break; + + case CMD_RETRIG: + switch(param >> 4) { + case 0: strcpy(s, "continue"); break; + case 1: strcpy(s, "vol -1"); break; + case 2: strcpy(s, "vol -2"); break; + case 3: strcpy(s, "vol -4"); break; + case 4: strcpy(s, "vol -8"); break; + case 5: strcpy(s, "vol -16"); break; + case 6: strcpy(s, "vol *0.66"); break; + case 7: strcpy(s, "vol *0.5"); break; + case 8: strcpy(s, "vol *1"); break; + case 9: strcpy(s, "vol +1"); break; + case 10: strcpy(s, "vol +2"); break; + case 11: strcpy(s, "vol +4"); break; + case 12: strcpy(s, "vol +8"); break; + case 13: strcpy(s, "vol +16"); break; + case 14: strcpy(s, "vol *1.5"); break; + case 15: strcpy(s, "vol *2"); break; + } + char spd[10]; + wsprintf(spd, " speed %d", param & 0x0F); + strcat(s, spd); + break; + case CMD_VOLUMESLIDE: case CMD_TONEPORTAVOL: case CMD_VIBRATOVOL: Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -770,9 +770,8 @@ } for (UINT ilo=1; ilo<=m_SndFile.m_nSamples; ilo++) if (m_SndFile.Ins[ilo].pSample) { - if ((m_SndFile.Ins[ilo].uFlags & (CHN_LOOP|CHN_SUSTAINLOOP)) - && (m_SndFile.Ins[ilo].nLength > m_SndFile.Ins[ilo].nLoopEnd + 2) - && (m_SndFile.Ins[ilo].nLength > m_SndFile.Ins[ilo].nSustainEnd + 2)) nLoopOpt++; + if ((m_SndFile.Ins[ilo].uFlags & CHN_LOOP) + && (m_SndFile.Ins[ilo].nLength > m_SndFile.Ins[ilo].nLoopEnd + 2)) nLoopOpt++; } if (nLoopOpt) { @@ -782,12 +781,10 @@ { for (UINT j=1; j<=m_SndFile.m_nSamples; j++) { - if ((m_SndFile.Ins[j].uFlags & (CHN_LOOP|CHN_SUSTAINLOOP)) - && (m_SndFile.Ins[j].nLength > m_SndFile.Ins[j].nLoopEnd + 2) - && (m_SndFile.Ins[j].nLength > m_SndFile.Ins[j].nSustainEnd + 2)) + if ((m_SndFile.Ins[j].uFlags & CHN_LOOP) + && (m_SndFile.Ins[j].nLength > m_SndFile.Ins[j].nLoopEnd + 2)) { UINT lmax = m_SndFile.Ins[j].nLoopEnd + 2; - if (m_SndFile.Ins[j].nSustainEnd + 2 > lmax) lmax = m_SndFile.Ins[j].nSustainEnd + 2; if ((lmax < m_SndFile.Ins[j].nLength) && (lmax >= 16)) m_SndFile.Ins[j].nLength = lmax; } } Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -302,7 +302,7 @@ UINT id = IDYES; if (!bNoWarn) { - id = CMainFrame::GetMainFrame()->MessageBox("You are about to replace the current midi library:\n" + id = CMainFrame::GetMainFrame()->MessageBox("You are about to replace the current MIDI library:\n" "Do you want to replace only the missing instruments? (recommended)", "Warning", MB_YESNOCANCEL|MB_ICONQUESTION ); } @@ -1248,9 +1248,14 @@ // -> CODE#0023 // -> DESC="IT project files (.itp)" // "All Modules|*.mod;*.nst;*.wow;*.s3m;*.stm;*.669;*.mtm;*.xm;*.it;*.ult;*.mdz;*.s3z;*.xmz;*.itz;mod.*;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.mdr;*.med;*.ams;*.dbm;*.dsm;*.mid;*.rmi;*.smf;*.bak;*.umx;*.amf;*.psm;*.mt2|" - "All Modules|*.mod;*.nst;*.wow;*.s3m;*.stm;*.669;*.mtm;*.xm;*.it;*.itp;*.mptm;*.ult;*.mdz;*.s3z;*.xmz;*.itz;mod.*;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.mdr;*.med;*.ams;*.dbm;*.dsm;*.mid;*.rmi;*.smf;*.umx;*.amf;*.psm;*.mt2|" + #ifndef NO_MO3_SUPPORT + "All Modules|*.mod;*.nst;*.wow;*.s3m;*.stm;*.669;*.mtm;*.xm;*.it;*.itp;*.mptm;*.ult;*.mdz;*.s3z;*.xmz;*.itz;mod.*;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.mdr;*.med;*.ams;*.dbm;*.dsm;*.mid;*.rmi;*.smf;*.umx;*.amf;*.psm;*.mt2;*.mo3|" + "Compressed Modules (*.mdz;*.s3z;*.xmz;*.itz;*.mo3)|*.mdz;*.s3z;*.xmz;*.itz;*.mdr;*.zip;*.rar;*.lha;*.mo3|" + #else + "All Modules|*.mod;*.nst;*.wow;*.s3m;*.stm;*.669;*.mtm;*.xm;*.it;*.itp;*.mptm;*.ult;*.mdz;*.s3z;*.xmz;*.itz;mod.*;*.far;*.mdl;*.okt;*.dmf;*.ptm;*.mdr;*.med;*.ams;*.dbm;*.dsm;*.mid;*.rmi;*.smf;*.umx;*.amf;*.psm;*.mt2|" + "Compressed Modules (*.mdz;*.s3z;*.xmz;*.itz)|*.mdz;*.s3z;*.xmz;*.itz;*.mdr;*.zip;*.rar;*.lha|" + #endif // -! NEW_FEATURE#0023 - "Compressed Modules (*.mdz;*.s3z;*.xmz;*.itz)|*.mdz;*.s3z;*.xmz;*.itz;*.mdr;*.zip;*.rar;*.lha|" "ProTracker Modules (*.mod,*.nst)|*.mod;mod.*;*.mdz;*.nst;*.m15|" "ScreamTracker Modules (*.s3m,*.stm)|*.s3m;*.stm;*.s3z|" "FastTracker Modules (*.xm)|*.xm;*.xmz|" @@ -1677,6 +1682,8 @@ "http://www.surina.net/soundtouch/|" "Hermann Seib for his example VST Host implementation|" "http://www.hermannseib.com/english/vsthost.htm|" + "Ian Luck for UNMO3|" + "http://www.un4seen.com/mo3.html|" "Pel K. Txnder for the scrolling credits control :)|" "http://tinyurl.com/4yze8|" "The people at Modplug forums for crucial contribution|" Modified: trunk/OpenMPT/mptrack/Stdafx.h =================================================================== --- trunk/OpenMPT/mptrack/Stdafx.h 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/Stdafx.h 2009-01-29 20:46:51 UTC (rev 248) @@ -77,6 +77,9 @@ // (HACK) Define to build without VST support; makes build possible without VST SDK. //#define NO_VST + +// Define to build without MO3 support. +//#define NO_MO3_SUPPORT void Log(LPCSTR format,...); Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -58,7 +58,7 @@ ON_COMMAND(ID_EDIT_SELECTCOLUMN,OnEditSelectColumn) ON_COMMAND(ID_EDIT_SELECTCOLUMN2,OnSelectCurrentColumn) ON_COMMAND(ID_EDIT_FIND, OnEditFind) - ON_COMMAND(ID_EDIT_FIND, OnEditGoto) + ON_COMMAND(ID_EDIT_GOTO_MENU, OnEditGoto) ON_COMMAND(ID_EDIT_FINDNEXT, OnEditFindNext) ON_COMMAND(ID_EDIT_RECSELECT, OnRecordSelect) // -> CODE#0012 @@ -2409,7 +2409,7 @@ p = pSndFile->Patterns[m_nPattern] + r * pSndFile->m_nChannels + c; // If a note or an instr is present on the row, do the change, if required. // Do not set instr if note and instr are both blank. - if ( (p->note||p->instr) && (p->instr!=nIns) ) { + if ( ((p->note > 0 && p->note < NOTE_NOTECUT) ||p->instr) && (p->instr!=nIns) ) { p->instr = nIns; bModified = TRUE; } Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -155,7 +155,7 @@ if (m_pDataTree) { // Create Midi Library - m_hMidiLib = InsertItem("Midi Library", IMAGE_FOLDER, IMAGE_FOLDER, TVI_ROOT, TVI_LAST); + m_hMidiLib = InsertItem("MIDI Library", IMAGE_FOLDER, IMAGE_FOLDER, TVI_ROOT, TVI_LAST); for (UINT iMidGrp=0; iMidGrp<17; iMidGrp++) { m_tiMidiGrp[iMidGrp] = InsertItem(szMidiGroupNames[iMidGrp], IMAGE_FOLDER, IMAGE_FOLDER, m_hMidiLib, TVI_LAST); @@ -2163,8 +2163,8 @@ AppendMenu(hMenu, MF_SEPARATOR, NULL, ""); case MODITEM_HDR_MIDILIB: case MODITEM_HDR_MIDIGROUP: - AppendMenu(hMenu, MF_STRING, ID_IMPORT_MIDILIB, "&Import Midi Library"); - AppendMenu(hMenu, MF_STRING, ID_EXPORT_MIDILIB, "E&xport Midi Library"); + AppendMenu(hMenu, MF_STRING, ID_IMPORT_MIDILIB, "&Import MIDI Library"); + AppendMenu(hMenu, MF_STRING, ID_EXPORT_MIDILIB, "E&xport MIDI Library"); bSep = TRUE; break; Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/mptrack.rc 2009-01-29 20:46:51 UTC (rev 248) @@ -106,10 +106,10 @@ MENUITEM "Save &As...", ID_FILE_SAVE_AS MENUITEM "Save as &Wave...", ID_FILE_SAVEASWAVE MENUITEM "Save as M&P3...", ID_FILE_SAVEASMP3 - MENUITEM "Export as M&idi...", ID_FILE_SAVEMIDI + MENUITEM "Export as M&IDI...", ID_FILE_SAVEMIDI MENUITEM "Export &unraped...", ID_FILE_SAVECOMPAT MENUITEM SEPARATOR - MENUITEM "Import &midi Library...", ID_IMPORT_MIDILIB + MENUITEM "Import &MIDI Library...", ID_IMPORT_MIDILIB MENUITEM "Add Sound &Bank...", ID_ADD_SOUNDBANK MENUITEM SEPARATOR MENUITEM "Recent File", ID_FILE_MRU_FILE1, GRAYED @@ -122,7 +122,7 @@ MENUITEM "P&lay from start\tF6", ID_PLAYER_PLAYFROMSTART MENUITEM "&Stop\tESC", ID_PLAYER_STOP MENUITEM "P&ause\tF8", ID_PLAYER_PAUSE - MENUITEM "&Midi Record\tF9", ID_MIDI_RECORD + MENUITEM "&MIDI Record\tF9", ID_MIDI_RECORD MENUITEM SEPARATOR MENUITEM "&Estimate song length", ID_ESTIMATESONGLENGTH MENUITEM "Approx. real &BPM", ID_APPROX_BPM @@ -150,6 +150,7 @@ MENUITEM SEPARATOR MENUITEM "&Find\tCtrl+F", ID_EDIT_FIND MENUITEM "Find Next\tF3", ID_EDIT_FINDNEXT + MENUITEM "Go to...", ID_EDIT_GOTO_MENU END POPUP "&View" BEGIN @@ -198,7 +199,7 @@ MENUITEM "The Mod Archive", ID_NETLINK_MODARCHIVE END MENUITEM SEPARATOR - MENUITEM "&About MPTrack...", ID_APP_ABOUT + MENUITEM "&About OpenMPT...", ID_APP_ABOUT END END @@ -473,7 +474,7 @@ WS_VISIBLE COMBOBOX IDC_COMBO2,140,30,120,73,CBS_DROPDOWNLIST | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP - CONTROL "Apply Octave Transpose on external midi keyboard", + CONTROL "Apply Octave Transpose on external MIDI keyboard", IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,55, 185,9 CONTROL "Amplify MIDI velocity",IDC_CHECK3,"Button", @@ -882,11 +883,11 @@ WS_TABSTOP,461,37,62,131,WS_EX_CLIENTEDGE CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | 0x4d,4,4,76,17 - CTEXT "Midi / VSTi Channel",IDC_STATIC,246,116,72,12, + CTEXT "MIDI / VSTi Channel",IDC_STATIC,246,116,72,12, SS_CENTERIMAGE,WS_EX_STATICEDGE - CTEXT "Midi Program",IDC_STATIC,246,134,72,12,SS_CENTERIMAGE, + CTEXT "MIDI Program",IDC_STATIC,246,134,72,12,SS_CENTERIMAGE, WS_EX_STATICEDGE - CTEXT "Midi Bank",IDC_STATIC,245,152,72,12,SS_CENTERIMAGE, + CTEXT "MIDI Bank",IDC_STATIC,245,152,72,12,SS_CENTERIMAGE, WS_EX_STATICEDGE CTEXT "Fade Out",IDC_STATIC,8,53,72,12,SS_CENTERIMAGE, WS_EX_STATICEDGE @@ -915,7 +916,7 @@ CTEXT "Action",IDC_STATIC,246,36,59,13,SS_CENTERIMAGE, WS_EX_STATICEDGE GROUPBOX "New Note Action",IDC_STATIC,240,27,122,59 - GROUPBOX "Plugin / Midi",IDC_STATIC,240,88,216,80 + GROUPBOX "Plugin / MIDI",IDC_STATIC,240,88,216,80 GROUPBOX "Sample Quality",IDC_STATIC,3,118,123,50 CTEXT "Ramping",IDC_STATIC,7,133,39,13,SS_CENTERIMAGE, WS_EX_STATICEDGE @@ -1598,15 +1599,15 @@ IDD_MOD2MIDI DIALOG 0, 0, 247, 87 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Midi Conversion Setup" +CAPTION "MIDI Conversion Setup" FONT 8, "MS Sans Serif" BEGIN GROUPBOX "",IDC_STATIC,4,4,184,80 LTEXT "Instrument:",IDC_STATIC,10,12,67,8 COMBOBOX IDC_COMBO1,23,22,158,114,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Midi Channel:",IDC_STATIC,10,39,46,8 - LTEXT "Midi Program / Percussion:",IDC_STATIC,81,39,97,8 + LTEXT "MIDI Channel:",IDC_STATIC,10,39,46,8 + LTEXT "MIDI Program / Percussion:",IDC_STATIC,81,39,97,8 COMBOBOX IDC_COMBO2,10,49,66,114,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO3,81,49,100,114,CBS_DROPDOWNLIST | WS_VSCROLL | @@ -2466,7 +2467,7 @@ STRINGTABLE BEGIN ID_PATTERN_PLAYROW "Play current row\nPlay Row" - ID_IMPORT_MIDILIB "Defines the default midi library used when importing midi files" + ID_IMPORT_MIDILIB "Defines the default MIDI library used when importing MIDI files" ID_CLEANUP_REARRANGE "Rearrange all patterns so that they are sorted in the order list\nRearrange Patterns" END @@ -2476,7 +2477,7 @@ ID_ADD_SOUNDBANK "Add a new DLS sound bank" ID_ORDERLIST_INSERT "Insert a pattern in the order list\nInsert Pattern" ID_ORDERLIST_DELETE "Remove a pattern from the order list\nRemove Pattern" - ID_MIDI_RECORD "Record from an external Midi keyboard\nMidi Record" + ID_MIDI_RECORD "Record from an external MIDI keyboard\nMIDI Record" END STRINGTABLE @@ -2515,7 +2516,7 @@ STRINGTABLE BEGIN ID_SAMPLE_TRIM "Delete everything except the current selection\nTrim Sample" - ID_FILE_SAVEMIDI "Export the current song to a standard midi file" + ID_FILE_SAVEMIDI "Export the current song to a standard MIDI file" ID_NETLINK_FORUMS "Go to the Modplug Central Music Forums" ID_INSTRUMENT_SAMPLEMAP "Edit the sample map" ID_NETLINK_PLUGINS "Go to KVR Audio to download plugins" @@ -2553,6 +2554,11 @@ IDS_OPERATION_FAIL "Operation failed." END +STRINGTABLE +BEGIN + ID_EDIT_GOTO_MENU "Go to row / channel / pattern / order" +END + #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// @@ -2620,45 +2626,44 @@ // Dialog // -IDD_MIDIPARAMCONTROL DIALOGEX 0, 0, 388, 190 +IDD_MIDIPARAMCONTROL DIALOGEX 0, 0, 392, 202 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "MIDI mapping" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 +FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - DEFPUSHBUTTON "Close",IDOK,334,2,50,14 - LISTBOX IDC_LIST1,3,100,343,82,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | + DEFPUSHBUTTON "Close",IDOK,335,10,50,14 + LISTBOX IDC_LIST1,5,115,325,82,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - CONTROL "",IDC_CHECKACTIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, - 29,10,12,10 - COMBOBOX IDC_COMBO_CHANNEL,6,35,36,65,CBS_DROPDOWNLIST | + CONTROL "Active",IDC_CHECKACTIVE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,15,20,42,10 + COMBOBOX IDC_COMBO_CHANNEL,15,45,36,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBO_EVENT,51,35,104,73,CBS_DROPDOWNLIST | + COMBOBOX IDC_COMBO_EVENT,61,45,104,73,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBO_CONTROLLER,160,35,130,90,CBS_DROPDOWNLIST | + COMBOBOX IDC_COMBO_CONTROLLER,171,45,150,90,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Channel",IDC_STATIC,5,25,27,8 - LTEXT "Event",IDC_STATIC,51,25,20,8 - LTEXT "Controller",IDC_STATIC,163,23,32,8 - LTEXT "Plugin",IDC_STATIC,7,50,20,8 - LTEXT "Parameter",IDC_STATIC,164,51,34,8 - COMBOBOX IDC_COMBO_PLUGIN,7,60,139,76,CBS_DROPDOWNLIST | + LTEXT "Channel",IDC_STATIC,15,35,27,8 + LTEXT "Event",IDC_STATIC,61,35,20,8 + LTEXT "Controller",IDC_STATIC,171,35,32,8 + LTEXT "Plugin",IDC_STATIC,15,60,20,8 + LTEXT "Parameter",IDC_STATIC,171,60,34,8 + COMBOBOX IDC_COMBO_PLUGIN,15,70,150,76,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBO_PARAM,161,60,149,83,CBS_DROPDOWNLIST | + COMBOBOX IDC_COMBO_PARAM,171,70,149,83,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "MIDI learn",IDC_CHECK_MIDILEARN,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,337,25,47,11 - PUSHBUTTON "Add",IDC_BUTTON_ADD,344,44,40,12 - PUSHBUTTON "Replace",IDC_BUTTON_REPLACE,344,61,40,12 - PUSHBUTTON "Remove",IDC_BUTTON_REMOVE,344,78,40,12 - EDITTEXT IDC_EDIT1,9,77,114,12,ES_AUTOHSCROLL | ES_READONLY - LTEXT "Active",IDC_STATIC,6,10,21,8 + BS_AUTOCHECKBOX | WS_TABSTOP,335,30,47,11 + PUSHBUTTON "Add",IDC_BUTTON_ADD,175,90,45,12 + PUSHBUTTON "Replace",IDC_BUTTON_REPLACE,225,90,45,12 + PUSHBUTTON "Remove",IDC_BUTTON_REMOVE,275,90,45,12 + EDITTEXT IDC_EDIT1,15,90,114,12,ES_AUTOHSCROLL | ES_READONLY CONTROL "Capture",IDC_CHECKCAPTURE,"Button",BS_AUTOCHECKBOX | - BS_LEFTTEXT | WS_TABSTOP,49,9,39,10 - GROUPBOX "",IDC_STATIC,2,2,324,93 - CONTROL "",IDC_SPINMOVEMAPPING,"msctls_updown32",0x0,357,119,17, - 37 + WS_TABSTOP,65,20,39,10 + GROUPBOX "Current mapping",IDC_STATIC,5,5,325,105 + CONTROL "",IDC_SPINMOVEMAPPING,"msctls_updown32",0x0,330,115,11, + 80 END IDD_TUNING DIALOGEX 0, 0, 512, 240 @@ -2730,10 +2735,10 @@ WS_EX_STATICEDGE END -IDD_CHANNELMANAGER DIALOGEX 0, 0, 523, 230 +IDD_CHANNELMANAGER DIALOGEX 0, 0, 523, 231 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE | WS_EX_APPWINDOW +EXSTYLE WS_EX_TOOLWINDOW CAPTION "Channel manager" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -2795,7 +2800,7 @@ GROUPBOX "Audio",IDC_STATIC,16,38,182,100 COMBOBOX IDC_COMBO1,21,48,86,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Midi",IDC_STATIC,219,38,182,100 + GROUPBOX "MIDI",IDC_STATIC,219,38,182,100 LISTBOX IDC_LIST3,21,63,86,68,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO2,109,48,86,30,CBS_DROPDOWN | CBS_SORT | @@ -2834,9 +2839,9 @@ BEGIN IDD_MIDIPARAMCONTROL, DIALOG BEGIN - RIGHTMARGIN, 384 + RIGHTMARGIN, 388 TOPMARGIN, 2 - BOTTOMMARGIN, 189 + BOTTOMMARGIN, 201 END IDD_TUNING, DIALOG Modified: trunk/OpenMPT/mptrack/mptrack.vcproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack.vcproj 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/mptrack.vcproj 2009-01-29 20:46:51 UTC (rev 248) @@ -289,6 +289,9 @@ RelativePath="..\soundlib\load_mid.cpp"> </File> <File + RelativePath="..\soundlib\Load_mo3.cpp"> + </File> + <File RelativePath="..\soundlib\Load_mod.cpp"> </File> <File Modified: trunk/OpenMPT/mptrack/resource.h =================================================================== --- trunk/OpenMPT/mptrack/resource.h 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/mptrack/resource.h 2009-01-29 20:46:51 UTC (rev 248) @@ -1050,6 +1050,7 @@ #define ID_NETLINK_OPENMPTWIKI_GERMAN 59213 #define ID_NETLINK_MODARCHIVE 59214 #define ID_PATTERN_DUPLICATECHANNEL 59216 +#define ID_EDIT_GOTO_MENU 59220 // Next default values for new objects // @@ -1057,7 +1058,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 516 -#define _APS_NEXT_COMMAND_VALUE 59217 +#define _APS_NEXT_COMMAND_VALUE 59221 #define _APS_NEXT_CONTROL_VALUE 2341 #define _APS_NEXT_SYMED_VALUE 901 #endif Added: trunk/OpenMPT/soundlib/Load_mo3.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mo3.cpp (rev 0) +++ trunk/OpenMPT/soundlib/Load_mo3.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -0,0 +1,76 @@ +/* + * This source code is public domain. + * + * Purpose: Load MO3-packed modules using unmo3.dll + * Authors: Johannes Schultz + * OpenMPT devs +*/ + +#include "stdafx.h" +#include "sndfile.h" + + + +// decode a MO3 file (returns the same "exit codes" as UNMO3.EXE, eg. 0=success) +// IN: data/len = MO3 data/len +// OUT: data/len = decoded data/len (if successful) +typedef int (WINAPI * UNMO3_DECODE)(void **data, int *len); +// free the data returned by UNMO3_Decode +typedef void (WINAPI * UNMO3_FREE)(void *data); + + +BOOL CSoundFile::ReadMO3(LPCBYTE lpStream, const DWORD dwMemLength) +//----------------------------------------------------------- +{ + // no valid MO3 file (magic bytes: "MO3") + if(dwMemLength < 3 || lpStream[0] != 'M' || lpStream[1] != 'O' || lpStream[2] != '3') + return FALSE; + +#ifdef NO_MO3_SUPPORT + UNREFERENCED_PARAMETER(dwMemLength); + AfxMessageBox(GetStrI18N(__TEXT("The file appears to be a MO3 file, but this OpenMPT build does not support loading MO3 files."))); + return false; +#else + BOOL b_result = false; // result of trying to load the module, false == fail. + + int iLen = static_cast<int>(dwMemLength); + void ** mo3Stream = (void **)&lpStream; + + // try to load unmo3.dll dynamically. + HMODULE unmo3 = LoadLibrary(_TEXT("unmo3.dll")); + if(unmo3 == NULL) // Didn't succeed. + { + AfxMessageBox(GetStrI18N(_TEXT("Loading MO3 file failed because unmo3.dll could not be loaded.")), MB_ICONINFORMATION); + } + else //case: dll loaded succesfully. + { + UNMO3_DECODE UNMO3_Decode = (UNMO3_DECODE)GetProcAddress(unmo3, "UNMO3_Decode"); + UNMO3_FREE UNMO3_Free = (UNMO3_FREE)GetProcAddress(unmo3, "UNMO3_Free"); + + if(UNMO3_Decode != NULL && UNMO3_Free != NULL) { + if(UNMO3_Decode(mo3Stream, &iLen) == 0) { + /* if decoding was successful, mo3Stream and iLen will keep the new + pointers now. */ + + if(iLen > 0) + { + b_result = true; + if ((!ReadXM((const BYTE *)*mo3Stream, (DWORD)iLen)) + && (!ReadIT((const BYTE *)*mo3Stream, (DWORD)iLen)) + && (!ReadS3M((const BYTE *)*mo3Stream, (DWORD)iLen)) + #ifndef FASTSOUNDLIB + && (!ReadMTM((const BYTE *)*mo3Stream, (DWORD)iLen)) + #endif + && (!ReadMod((const BYTE *)*mo3Stream, (DWORD)iLen))) b_result = false; + } + + UNMO3_Free(*mo3Stream); + } + } + FreeLibrary(unmo3); + } + return b_result; +#endif // NO_MO3_SUPPORT +} + + Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2009-01-29 20:46:51 UTC (rev 248) @@ -29,7 +29,11 @@ #define UNRAR_SUPPORT #define UNLHA_SUPPORT #define ZIPPED_MOD_SUPPORT -LPCSTR glpszModExtensions = "mod|s3m|xm|it|stm|nst|ult|669|wow|mtm|med|far|mdl|ams|dsm|amf|okt|dmf|ptm|psm|mt2|umx"; +LPCSTR glpszModExtensions = "mod|s3m|xm|it|stm|nst|ult|669|wow|mtm|med|far|mdl|ams|dsm|amf|okt|dmf|ptm|psm|mt2|umx" +#ifndef NO_UNMO3_SUPPORT +"|mo3" +#endif +; //Should there be mptm? #endif // NO_ARCHIVE_SUPPORT #else // NO_COPYRIGHT: EarSaver only loads mod/s3m/xm/it/wav @@ -587,6 +591,7 @@ #endif // MODPLUG_TRACKER #endif #endif // MODPLUG_BASIC_SUPPORT + && (!ReadMO3(lpStream, dwMemLength)) && (!ReadMod(lpStream, dwMemLength))) m_nType = MOD_TYPE_NONE; #ifdef ZIPPED_MOD_SUPPORT if ((!m_lpszSongComments) && (archive.GetComments(FALSE))) Modified: trunk/OpenMPT/soundlib/Sndfile.h =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h 2009-01-23 18:49:52 UTC (rev 247) +++ trunk/OpenMPT/soundlib/Sndfile.h 2009-01-29 20:46:51 UTC (rev 248) @@ -1067,6 +1067,7 @@ BOOL ReadPSM(LPCBYTE lpStream, DWORD dwMemLength); BOOL ReadJ2B(LPCBYTE lpStream, DWORD dwMemLength); BOOL ReadUMX(LPCBYTE lpStream, DWORD dwMemLength); + BOOL ReadMO3(LPCBYTE lpStream, const DWORD dwMemLength); BOOL ReadMID(LPCBYTE lpStream, DWORD dwMemLength); // Save Functions #ifndef MODPLUG_NO_FILESAVE This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |