📄 mac_dlog.c
字号:
/* TiMidity++ -- MIDI to WAVE converter and player Copyright (C) 1999-2002 Masanao Izumo <mo@goice.co.jp> Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Macintosh interface for TiMidity by T.Nogami <t-nogami@happy.email.ne.jp> mac_dlog.c Preference dialog*/#ifdef HAVE_CONFIG_H#include "config.h"#endif /* HAVE_CONFIG_H */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "timidity.h"#include "instrum.h"#include "playmidi.h"#include "output.h"#include "readmidi.h"#include "reverb.h"#include "mac_main.h"#include "mac_util.h"extern int effect_lr_mode;void mac_DefaultOption(){ play_mode->rate=DEFAULT_RATE; play_mode->encoding &= ~PE_MONO; /*stereo*/ /*play_mode->encoding |= PE_MONO;*/ /*mono*/ antialiasing_allowed=0; fast_decay=0; adjust_panning_immediately=0; free_instruments_afterwards=1; /*option -U*/ voices=DEFAULT_VOICES; control_ratio = play_mode->rate/CONTROLS_PER_SECOND; gSilentSec=3.0; mac_LogWindow.show=mac_ListWindow.show=true; mac_WrdWindow.show=mac_DocWindow.show= mac_SpecWindow.show=mac_TraceWindow.show=false; gShuffle=false; opt_modulation_wheel = 1; opt_portamento = 1; opt_nrpn_vibrato = 1;#ifdef REVERB_CONTROL_ALLOW opt_reverb_control = 1;#else opt_reverb_control = 0;#endif#ifdef CHORUS_CONTROL_ALLOW opt_chorus_control = 1;#else opt_chorus_control = 0;#endif opt_surround_chorus = 0; opt_channel_pressure = 0; opt_trace_text_meta_event = 0; opt_overlap_voice_allow = 1; effect_lr_mode=-1; //no effect modify_release=0; opt_default_mid=0x7e; //GM readmidi_wrd_mode=1; evil_level=EVIL_NORMAL; do_initial_filling=0; reduce_voice_threshold = 0; auto_reduce_polyphony = 0;}enum{iOK=1, iCancel=2, iDefault=3, iRate=5, iMono=6, iStereo=7, iFreeInstr=8, iAntiali=9, iFastDecay=10, iAdjustPanning=11, iVoices=13, iControlRaio=15, iSilent=18, iModulation_wheel = 21, iPortamento = 22, iNrpn_vibrato = 23, iReverb = 24, iReverb_setlevel = 38, iReverb_level = 39, iReverb_level_hint = 42, iChorus = 25, iChorus_setlevel = 40, iChorus_level = 41, iChorus_level_hint = 43, iChannel_pressure = 26, iText_meta_event = 27, iOverlap_voice = 28, /*iPReverb = 29,*/ iModify_release=31, iModify_release_ms=37, iModify_release_ms_hint1=30, iModify_release_ms_hint2=44, iModify_release_ms_hint3=45, iPresence_balance=32, iManufacture=33, iEvil_level=34, /*iDo_initial_filling=35,*/ iShuffle= 36 };// ******************************************static void mac_AdjustDialog( DialogRef dialog ){ //reverb if( GetDialogItemValue(dialog, iReverb)==2 ){ SetDialogItemHilite(dialog, iReverb_setlevel, kControlNoPart); }else{ SetDialogItemHilite(dialog, iReverb_setlevel, kControlInactivePart); SetDialogItemValue(dialog, iReverb_setlevel, 0); } if( GetDialogItemValue(dialog, iReverb_setlevel) ) { ShowDialogItem(dialog, iReverb_level); ShowDialogItem(dialog, iReverb_level_hint); }else{ HideDialogItem(dialog, iReverb_level); HideDialogItem(dialog, iReverb_level_hint); } //chorus if( GetDialogItemValue(dialog, iChorus)==2 ){ // activate SetDialogItemHilite(dialog, iChorus_setlevel, kControlNoPart); mySetDialogItemText(dialog, iChorus_level_hint, "\p(1..127)"); }else if( GetDialogItemValue(dialog, iChorus)==3 ){ // activate SetDialogItemHilite(dialog, iChorus_setlevel, kControlNoPart); mySetDialogItemText(dialog, iChorus_level_hint, "\p(1..63)"); }else{ // inactivate SetDialogItemHilite(dialog, iChorus_setlevel, kControlInactivePart); SetDialogItemValue(dialog, iChorus_setlevel, 0); } if( GetDialogItemValue(dialog, iChorus_setlevel) ) { ShowDialogItem(dialog, iChorus_level); ShowDialogItem(dialog, iChorus_level_hint); }else{ HideDialogItem(dialog, iChorus_level); HideDialogItem(dialog, iChorus_level_hint); } // modify release if( GetDialogItemValue(dialog, iModify_release) ) { ShowDialogItem(dialog, iModify_release_ms); ShowDialogItem(dialog, iModify_release_ms_hint1); ShowDialogItem(dialog, iModify_release_ms_hint2); ShowDialogItem(dialog, iModify_release_ms_hint3); }else{ HideDialogItem(dialog, iModify_release_ms); HideDialogItem(dialog, iModify_release_ms_hint1); HideDialogItem(dialog, iModify_release_ms_hint2); HideDialogItem(dialog, iModify_release_ms_hint3); }}// ***************************************************static void SetDialogValue(DialogRef theDialog){#define BUFSIZE 80 short value; char buf[BUFSIZE]; Str255 s; SetDialogItemValue(theDialog, iStereo, !(play_mode->encoding & PE_MONO)); SetDialogItemValue(theDialog, iMono, play_mode->encoding & PE_MONO); value=(play_mode->rate==11025? 1:(play_mode->rate==44100? 3:2)); SetDialogItemValue(theDialog, iRate, value); SetDialogItemValue(theDialog, iFreeInstr, free_instruments_afterwards); SetDialogItemValue(theDialog, iAntiali, antialiasing_allowed); SetDialogItemValue(theDialog, iFastDecay, fast_decay); SetDialogItemValue(theDialog, iAdjustPanning, adjust_panning_immediately); NumToString(voices, s); mySetDialogItemText(theDialog, iVoices, s); SelectDialogItemText(theDialog, iVoices, 0, 32000); NumToString(control_ratio, s); mySetDialogItemText(theDialog, iControlRaio, s); snprintf(buf, BUFSIZE, "%g",gSilentSec); /*use s as C string*/ mySetDialogItemText(theDialog, iSilent, c2pstr(buf)); SetDialogItemValue(theDialog, iFastDecay, fast_decay); SetDialogItemValue(theDialog, iModulation_wheel, opt_modulation_wheel); SetDialogItemValue(theDialog, iPortamento, opt_portamento); SetDialogItemValue(theDialog, iNrpn_vibrato, opt_nrpn_vibrato); SetDialogItemValue(theDialog, iChannel_pressure, opt_channel_pressure); SetDialogItemValue(theDialog, iText_meta_event, opt_trace_text_meta_event); SetDialogItemValue(theDialog, iOverlap_voice, opt_overlap_voice_allow); /*-----reverb-----*/ if( opt_reverb_control<0 ){ //Enabel SetDialogItemValue(theDialog, iReverb, 2); SetDialogItemValue(theDialog, iReverb_setlevel, 1); SetDialogItemHilite(theDialog, iReverb_setlevel, kControlNoPart); SetDialogTEValue(theDialog, iReverb_level, -opt_reverb_control); }else if( opt_reverb_control==0 || opt_reverb_control==2 ){ //Non or global SetDialogItemValue(theDialog, iReverb, opt_reverb_control+1); SetDialogItemValue(theDialog, iReverb_setlevel, 1); SetDialogItemHilite(theDialog, iReverb_setlevel, kControlInactivePart); }else{ // opt_reverb_control==1, no level SetDialogItemValue(theDialog, iReverb, 2); SetDialogItemValue(theDialog, iReverb_setlevel, 0); SetDialogItemHilite(theDialog, iReverb_setlevel, kControlNoPart); } /*-----chorus-----*/ if( opt_surround_chorus ){ SetDialogItemValue(theDialog, iChorus, 3); //surround }else if( opt_chorus_control<0 || opt_chorus_control==1 ){ SetDialogItemValue(theDialog, iChorus, 2); //Enable SetDialogItemHilite(theDialog, iChorus_setlevel, kControlNoPart); }else{ SetDialogItemValue(theDialog, iChorus, 1); //Non SetDialogItemHilite(theDialog, iChorus_setlevel, kControlInactivePart); } if( opt_chorus_control<0 ){ SetDialogItemHilite(theDialog, iChorus_setlevel, kControlNoPart); SetDialogItemValue(theDialog, iChorus_setlevel, 1); SetDialogTEValue(theDialog, iChorus_level, -opt_chorus_control); }else{ SetDialogItemValue(theDialog, iChorus_setlevel, 0); } /*-----modify_release-----*/ SetDialogItemValue(theDialog, iModify_release, (modify_release!=0) ); SetDialogTEValue(theDialog, iModify_release_ms, modify_release); SetDialogItemValue(theDialog, iPresence_balance, effect_lr_mode+2); value= ( opt_default_mid==0x41? 1: //GS opt_default_mid==0x43? 2:3 ); //XG:GM SetDialogItemValue(theDialog, iManufacture, value); SetDialogItemValue(theDialog, iEvil_level, evil_level); //SetDialogItemValue(theDialog, iDo_initial_filling, do_initial_filling); SetDialogItemValue(theDialog, iShuffle, gShuffle); mac_AdjustDialog( theDialog );}static int mac_limit_params(int var, int min_limit, int max_limit){ if( var < min_limit ) var = min_limit; if( var > max_limit ) var = max_limit; return var;}// *******************************************// mac_SetPlayOption// *******************************************OSErr mac_SetPlayOption(){ Boolean more=false; short item, value; long i; DialogRef dialog, theDialog; EventRecord event; Str255 s; theDialog=GetNewDialog(201,0,(WindowRef)-1); if( !theDialog ) return 1; else { SetDialogDefaultItem(theDialog, iOK); SetDialogCancelItem(theDialog, iCancel); SetDialogValue(theDialog); ShowWindow(GetDialogWindow(theDialog)); for(;;) { WaitNextEvent(everyEvent, &event, 1,0); /*if( event.what==mouseDown ){ short part; WindowRef window; part = FindWindow(event.where, &window); if( part==inDrag ){ DragWindow(window, event.where, &qd.screenBits.bounds); continue; } }else if(event.what==) */ if( IsDialogEvent( &event ) ) { if( StdFilterProc(dialog, &event, &item) ) /**/; else DialogSelect(&event, &dialog, &item); if( theDialog!=dialog ) continue; switch(item) { case iOK: myGetDialogItemText(dialog, iVoices, s); StringToNum(s,&i); if( i<=0 ) i=1; max_voices=MAX_SAFE_MALLOC_SIZE / sizeof(Voice); if ( i<max_voices ) max_voices=i; voices=max_voices; myGetDialogItemText(dialog, iControlRaio, s); StringToNum(s,&i); if( i<=0 ) i=22; /*i=1 cause ploblem*/ if( MAX_CONTROL_RATIO<i ) i=MAX_CONTROL_RATIO; control_ratio=i; myGetDialogItemText(dialog, iSilent, s); gSilentSec=atof(p2cstr(s)); if( gSilentSec<0 ) gSilentSec=0; if( gSilentSec>10 ) gSilentSec=10; if( GetDialogItemValue(dialog, iMono) ) play_mode->encoding |= PE_MONO; else play_mode->encoding &= ~PE_MONO; if( (value=GetDialogItemValue(dialog, iRate))==1 ) play_mode->rate=11025; else if( value==2 ) play_mode->rate=22050; else if( value==3 ) play_mode->rate=44100; else play_mode->rate=22050; free_instruments_afterwards=GetDialogItemValue(dialog, iFreeInstr)? 1:0; antialiasing_allowed= GetDialogItemValue(dialog, iAntiali)? 1:0; fast_decay= GetDialogItemValue(dialog, iFastDecay)? 1:0; adjust_panning_immediately= GetDialogItemValue(dialog, iAdjustPanning)? 1:0; opt_modulation_wheel= GetDialogItemValue(dialog, iModulation_wheel)? 1:0; opt_portamento= GetDialogItemValue(dialog, iPortamento)? 1:0; opt_nrpn_vibrato= GetDialogItemValue(dialog, iNrpn_vibrato)? 1:0; opt_channel_pressure= GetDialogItemValue(dialog, iChannel_pressure)? 1:0; opt_trace_text_meta_event= GetDialogItemValue(dialog, iText_meta_event)? 1:0; opt_overlap_voice_allow= GetDialogItemValue(dialog, iOverlap_voice)? 1:0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -