+2001-12-20 Masanao Izumo <mo@goice.co.jp>
+
+ * timidity/playmidi.c: Bug fix.
+ * interface/ncurs_c.c: Chaged from 3 to 4 digits in audio queue
+ monitor.
+ * timidity/common.c: Fixed security probrem
+
+2001-11-28 Miloslav Trmac <mitr@volny.cz>
+
+ * interface/{dumb_c.c,slang_c.c,xaw_c.c,xskin_c.c}:
+ Fixed some probrems.
+
+2001-11-19 Eric A. Welsh <ewelsh@ccb.wustl.edu>
+
+ * timidity/playmidi.c:
+ Fixed a bug and reduced voice cancellation in Chorus Mode 2.
+ Mod files and drums can still cancel on some full Left/Right pans.
+
+ * timidity/mod.c:
+ Portas are now handled correctly for Ultimate Soundtracker mods.
+
+
+2001-11-10 Daisuke Nagano <breeze.nagano@nifty.ne.jp>
+
+ * doc/C/timidity.1: Updated.
+
+2001-11-05 Saito <timidity@flashmail.com>
+
+ * timidity/sndfont.c:
+ Updates do_lowpass().
+
+2001-10-25 Takashi Iwai <tiwai@suse.de>
+
+ * timidity/sndfont.c: Bug fix.
+
+2001-10-23 Lalit Chhabra <LChhabra@iee.org>
+
+ * timidity/sun_a.c:
+ Modified the sun_a.c file so that it checks for the AUDIODEV
+ environment variable and sets the sun audio device accordingly.
+
+2001-10-19 Saito <timidity@flashmail.com>
+
+ * timidity/{mix.c,mix.h,playmidi.c,playmidi.h,readmidi.c,readmidi.h,
+ reverb.c,reverb.h,tables.c,tables.h}:
+ - Updates Win32GUI version.
+ - Improved GS SysEx
+ - Added attack/release/decay-time(CC/NRPN tone/NRPN dram)
+ - Added drum level
+ - Added CC#94 pseudo delay (like chorus method)
+ - Adjusted reverb level
+ - Added resonance filter
+ - Modified enverope attack
+ - Adjusted velocity
+ - Supported user drumset (SC-88)
+ - Added some GS SysEx'es.
+
+2001-10-10 Frederic LOYER <loyer@ensta.fr>
+
+ * timidity/sffile.h: Bug fix.
+ Change uint8 pitchCorrection to int8 pitchCorrection.
+
2001-10-09 Masanao Izumo <mo@goice.co.jp>
* Windows: Use w32_a.c instead of w32g_a.c
- autoconf 2.52
- libtool 1.4.2
+
+
2001-06-25 Forever shall I be. <zinx@magenet.net>
* Vorbis 1.0 support.
- The tcl interface doesn't like filenames with white space.
(but doesn't mind if it happens in the config file ?).
+
+Private notes:
+
+@mail 35
+timidity-io.c:
+http://www.mega-tokyo.com/cgi-bin/yabb/YaBB.pl?board=SIERRA_AGI_SCI&action=display&num=990734937
+
+SEQ_DEFINEBUF(128);
+#define seqbuf_dump timidity_seqbuf_dump
+
+¤È¤¤¤¦¹Ô¤òÁÞÆþ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡©
+
+@mail 36
+BSD ¥é¥¤¥»¥ó¥¹¤Ç»È¤¤¤¿¤¤¡£
+
+@mail 37
+timidity -idqqqqqqq /home/bryce/tmp/test.midi
+¤Ç¤â
+mcop warning: user defined signal handler found for SIG_PIPE, overriding
+¤Èɽ¼¨¤µ¤ì¤Æ¤·¤Þ¤¦¡£
+
+-> 'q' ¥ª¥×¥·¥ç¥ó¤¬Â¿¤¤¤È¤¤Ï stderr,stdout ¤ò /dev/null ¤Ë¥ê¥À¥¤¥ì¥¯¥È
+
+@mail 41
+alsa 0.9 Âбþ
+
+@mail 46
+-io ¤È¤¤¤¦ organ ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òºî¤ê¤¿¤¤¡£
+#define INTERACTIVE_INTERFACE_IDS "kmqagrwA"
+
+¤Ë o ¤òÄɲ䷤ʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¡©
+
])
# end of gtk.m4
+
+
+# Configure paths for libogg
+# Jack Moffitt <jack@icecast.org> 10-21-2000
+# Shamelessly stolen from Owen Taylor and Manish Singh
+
+dnl AM_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS
+dnl
+AC_DEFUN(AM_PATH_OGG,
+[dnl
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(ogg-prefix,[ --with-ogg-prefix=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="")
+AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes)
+
+ if test "x$ogg_prefix" != "x"; then
+ ogg_args="$ogg_args --prefix=$ogg_prefix"
+ OGG_CFLAGS="-I$ogg_prefix/include"
+ OGG_LIBS="-L$ogg_prefix/lib"
+ elif test "x$prefix" != "xNONE"; then
+ ogg_args="$ogg_args --prefix=$prefix"
+ OGG_CFLAGS="-I$prefix/include"
+ OGG_LIBS="-L$prefix/lib"
+ fi
+
+ OGG_LIBS="$OGG_LIBS -logg"
+
+ AC_MSG_CHECKING(for Ogg)
+ no_ogg=""
+
+
+ if test "x$enable_oggtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $OGG_CFLAGS"
+ LIBS="$LIBS $OGG_LIBS"
+dnl
+dnl Now check if the installed Ogg is sufficiently new.
+dnl
+ rm -f conf.oggtest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ogg/ogg.h>
+
+int main ()
+{
+ system("touch conf.oggtest");
+ return 0;
+}
+
+],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+
+ if test "x$no_ogg" = "x" ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$1], , :, [$1])
+ else
+ AC_MSG_RESULT(no)
+ if test -f conf.oggtest ; then
+ :
+ else
+ echo "*** Could not run Ogg test program, checking why..."
+ CFLAGS="$CFLAGS $OGG_CFLAGS"
+ LIBS="$LIBS $OGG_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <ogg/ogg.h>
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding Ogg or finding the wrong"
+ echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means Ogg was incorrectly installed"
+ echo "*** or that you have moved Ogg since it was installed. In the latter case, you"
+ echo "*** may want to edit the ogg-config script: $OGG_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ OGG_CFLAGS=""
+ OGG_LIBS=""
+ ifelse([$2], , :, [$2])
+ fi
+ AC_SUBST(OGG_CFLAGS)
+ AC_SUBST(OGG_LIBS)
+ rm -f conf.oggtest
+])
+
+# end of ogg.m4
+
+
+# Configure paths for libvorbis
+# Jack Moffitt <jack@icecast.org> 10-21-2000
+# Shamelessly stolen from Owen Taylor and Manish Singh
+
+dnl AM_PATH_VORBIS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libvorbis, and define VORBIS_CFLAGS and VORBIS_LIBS
+dnl
+AC_DEFUN(AM_PATH_VORBIS,
+[dnl
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(vorbis-prefix,[ --with-vorbis-prefix=PFX Prefix where libvorbis is installed (optional)], vorbis_prefix="$withval", vorbis_prefix="")
+AC_ARG_ENABLE(vorbistest, [ --disable-vorbistest Do not try to compile and run a test Vorbis program],, enable_vorbistest=yes)
+
+ if test "x$vorbis_prefix" != "x" ; then
+ vorbis_args="$vorbis_args --prefix=$vorbis_prefix"
+ VORBIS_CFLAGS="-I$vorbis_prefix/include"
+ VORBIS_LIBDIR="-L$vorbis_prefix/lib"
+ elif test "x$prefix" != "xNONE"; then
+ vorbis_args="$vorbis_args --prefix=$prefix"
+ VORBIS_CFLAGS="-I$prefix/include"
+ VORBIS_LIBDIR="-L$prefix/lib"
+ fi
+
+ VORBIS_LIBS="$VORBIS_LIBDIR -lvorbis -lm"
+ VORBISFILE_LIBS="-lvorbisfile"
+ VORBISENC_LIBS="-lvorbisenc"
+
+ AC_MSG_CHECKING(for Vorbis)
+ no_vorbis=""
+
+
+ if test "x$enable_vorbistest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $VORBIS_CFLAGS"
+ LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
+dnl
+dnl Now check if the installed Vorbis is sufficiently new.
+dnl
+ rm -f conf.vorbistest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <vorbis/codec.h>
+
+int main ()
+{
+ system("touch conf.vorbistest");
+ return 0;
+}
+
+],, no_vorbis=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+
+ if test "x$no_vorbis" = "x" ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$1], , :, [$1])
+ else
+ AC_MSG_RESULT(no)
+ if test -f conf.vorbistest ; then
+ :
+ else
+ echo "*** Could not run Vorbis test program, checking why..."
+ CFLAGS="$CFLAGS $VORBIS_CFLAGS"
+ LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <vorbis/codec.h>
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding Vorbis or finding the wrong"
+ echo "*** version of Vorbis. If it is not finding Vorbis, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means Vorbis was incorrectly installed"
+ echo "*** or that you have moved Vorbis since it was installed." ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ VORBIS_CFLAGS=""
+ VORBIS_LIBS=""
+ VORBISFILE_LIBS=""
+ VORBISENC_LIBS=""
+ ifelse([$2], , :, [$2])
+ fi
+ AC_SUBST(VORBIS_CFLAGS)
+ AC_SUBST(VORBIS_LIBS)
+ AC_SUBST(VORBISFILE_LIBS)
+ AC_SUBST(VORBISENC_LIBS)
+ rm -f conf.vorbistest
+])
+
+# end of vorbis.m4
\ No newline at end of file
# end of gtk.m4
+
+# Configure paths for libogg
+# Jack Moffitt <jack@icecast.org> 10-21-2000
+# Shamelessly stolen from Owen Taylor and Manish Singh
+
+dnl AM_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS
+dnl
+AC_DEFUN(AM_PATH_OGG,
+[dnl
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(ogg-prefix,[ --with-ogg-prefix=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="")
+AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes)
+
+ if test "x$ogg_prefix" != "x"; then
+ ogg_args="$ogg_args --prefix=$ogg_prefix"
+ OGG_CFLAGS="-I$ogg_prefix/include"
+ OGG_LIBS="-L$ogg_prefix/lib"
+ elif test "x$prefix" != "xNONE"; then
+ ogg_args="$ogg_args --prefix=$prefix"
+ OGG_CFLAGS="-I$prefix/include"
+ OGG_LIBS="-L$prefix/lib"
+ fi
+
+ OGG_LIBS="$OGG_LIBS -logg"
+
+ AC_MSG_CHECKING(for Ogg)
+ no_ogg=""
+
+
+ if test "x$enable_oggtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $OGG_CFLAGS"
+ LIBS="$LIBS $OGG_LIBS"
+dnl
+dnl Now check if the installed Ogg is sufficiently new.
+dnl
+ rm -f conf.oggtest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ogg/ogg.h>
+
+int main ()
+{
+ system("touch conf.oggtest");
+ return 0;
+}
+
+],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+
+ if test "x$no_ogg" = "x" ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$1], , :, [$1])
+ else
+ AC_MSG_RESULT(no)
+ if test -f conf.oggtest ; then
+ :
+ else
+ echo "*** Could not run Ogg test program, checking why..."
+ CFLAGS="$CFLAGS $OGG_CFLAGS"
+ LIBS="$LIBS $OGG_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <ogg/ogg.h>
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding Ogg or finding the wrong"
+ echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means Ogg was incorrectly installed"
+ echo "*** or that you have moved Ogg since it was installed. In the latter case, you"
+ echo "*** may want to edit the ogg-config script: $OGG_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ OGG_CFLAGS=""
+ OGG_LIBS=""
+ ifelse([$2], , :, [$2])
+ fi
+ AC_SUBST(OGG_CFLAGS)
+ AC_SUBST(OGG_LIBS)
+ rm -f conf.oggtest
+])
+
+# end of ogg.m4
+
+
+# Configure paths for libvorbis
+# Jack Moffitt <jack@icecast.org> 10-21-2000
+# Shamelessly stolen from Owen Taylor and Manish Singh
+
+dnl AM_PATH_VORBIS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libvorbis, and define VORBIS_CFLAGS and VORBIS_LIBS
+dnl
+AC_DEFUN(AM_PATH_VORBIS,
+[dnl
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(vorbis-prefix,[ --with-vorbis-prefix=PFX Prefix where libvorbis is installed (optional)], vorbis_prefix="$withval", vorbis_prefix="")
+AC_ARG_ENABLE(vorbistest, [ --disable-vorbistest Do not try to compile and run a test Vorbis program],, enable_vorbistest=yes)
+
+ if test "x$vorbis_prefix" != "x" ; then
+ vorbis_args="$vorbis_args --prefix=$vorbis_prefix"
+ VORBIS_CFLAGS="-I$vorbis_prefix/include"
+ VORBIS_LIBDIR="-L$vorbis_prefix/lib"
+ elif test "x$prefix" != "xNONE"; then
+ vorbis_args="$vorbis_args --prefix=$prefix"
+ VORBIS_CFLAGS="-I$prefix/include"
+ VORBIS_LIBDIR="-L$prefix/lib"
+ fi
+
+ VORBIS_LIBS="$VORBIS_LIBDIR -lvorbis -lm"
+ VORBISFILE_LIBS="-lvorbisfile"
+ VORBISENC_LIBS="-lvorbisenc"
+
+ AC_MSG_CHECKING(for Vorbis)
+ no_vorbis=""
+
+
+ if test "x$enable_vorbistest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $VORBIS_CFLAGS"
+ LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
+dnl
+dnl Now check if the installed Vorbis is sufficiently new.
+dnl
+ rm -f conf.vorbistest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <vorbis/codec.h>
+
+int main ()
+{
+ system("touch conf.vorbistest");
+ return 0;
+}
+
+],, no_vorbis=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+
+ if test "x$no_vorbis" = "x" ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$1], , :, [$1])
+ else
+ AC_MSG_RESULT(no)
+ if test -f conf.vorbistest ; then
+ :
+ else
+ echo "*** Could not run Vorbis test program, checking why..."
+ CFLAGS="$CFLAGS $VORBIS_CFLAGS"
+ LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <vorbis/codec.h>
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding Vorbis or finding the wrong"
+ echo "*** version of Vorbis. If it is not finding Vorbis, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means Vorbis was incorrectly installed"
+ echo "*** or that you have moved Vorbis since it was installed." ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ VORBIS_CFLAGS=""
+ VORBIS_LIBS=""
+ VORBISFILE_LIBS=""
+ VORBISENC_LIBS=""
+ ifelse([$2], , :, [$2])
+ fi
+ AC_SUBST(VORBIS_CFLAGS)
+ AC_SUBST(VORBIS_LIBS)
+ AC_SUBST(VORBISFILE_LIBS)
+ AC_SUBST(VORBISENC_LIBS)
+ rm -f conf.vorbistest
+])
+
+# end of vorbis.m4
# serial 3
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
])
AC_SUBST(lispdir)])
-# Configure paths for libogg
-# Jack Moffitt <jack@icecast.org> 10-21-2000
-# Shamelessly stolen from Owen Taylor and Manish Singh
-
-dnl AM_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS
-dnl
-AC_DEFUN(AM_PATH_OGG,
-[dnl
-dnl Get the cflags and libraries
-dnl
-AC_ARG_WITH(ogg-prefix,[ --with-ogg-prefix=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="")
-AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes)
-
- if test "x$ogg_prefix" != "x"; then
- ogg_args="$ogg_args --prefix=$ogg_prefix"
- OGG_CFLAGS="-I$ogg_prefix/include"
- OGG_LIBS="-L$ogg_prefix/lib"
- elif test "x$prefix" != "xNONE"; then
- ogg_args="$ogg_args --prefix=$prefix"
- OGG_CFLAGS="-I$prefix/include"
- OGG_LIBS="-L$prefix/lib"
- fi
-
- OGG_LIBS="$OGG_LIBS -logg"
-
- AC_MSG_CHECKING(for Ogg)
- no_ogg=""
-
-
- if test "x$enable_oggtest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $OGG_CFLAGS"
- LIBS="$LIBS $OGG_LIBS"
-dnl
-dnl Now check if the installed Ogg is sufficiently new.
-dnl
- rm -f conf.oggtest
- AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ogg/ogg.h>
-
-int main ()
-{
- system("touch conf.oggtest");
- return 0;
-}
-
-],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
-
- if test "x$no_ogg" = "x" ; then
- AC_MSG_RESULT(yes)
- ifelse([$1], , :, [$1])
- else
- AC_MSG_RESULT(no)
- if test -f conf.oggtest ; then
- :
- else
- echo "*** Could not run Ogg test program, checking why..."
- CFLAGS="$CFLAGS $OGG_CFLAGS"
- LIBS="$LIBS $OGG_LIBS"
- AC_TRY_LINK([
-#include <stdio.h>
-#include <ogg/ogg.h>
-], [ return 0; ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding Ogg or finding the wrong"
- echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means Ogg was incorrectly installed"
- echo "*** or that you have moved Ogg since it was installed. In the latter case, you"
- echo "*** may want to edit the ogg-config script: $OGG_CONFIG" ])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- OGG_CFLAGS=""
- OGG_LIBS=""
- ifelse([$2], , :, [$2])
- fi
- AC_SUBST(OGG_CFLAGS)
- AC_SUBST(OGG_LIBS)
- rm -f conf.oggtest
-])
-
-# Configure paths for libvorbis
-# Jack Moffitt <jack@icecast.org> 10-21-2000
-# Shamelessly stolen from Owen Taylor and Manish Singh
-
-dnl AM_PATH_VORBIS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for libvorbis, and define VORBIS_CFLAGS and VORBIS_LIBS
-dnl
-AC_DEFUN(AM_PATH_VORBIS,
-[dnl
-dnl Get the cflags and libraries
-dnl
-AC_ARG_WITH(vorbis-prefix,[ --with-vorbis-prefix=PFX Prefix where libvorbis is installed (optional)], vorbis_prefix="$withval", vorbis_prefix="")
-AC_ARG_ENABLE(vorbistest, [ --disable-vorbistest Do not try to compile and run a test Vorbis program],, enable_vorbistest=yes)
-
- if test "x$vorbis_prefix" != "x" ; then
- vorbis_args="$vorbis_args --prefix=$vorbis_prefix"
- VORBIS_CFLAGS="-I$vorbis_prefix/include"
- VORBIS_LIBDIR="-L$vorbis_prefix/lib"
- elif test "x$prefix" != "xNONE"; then
- vorbis_args="$vorbis_args --prefix=$prefix"
- VORBIS_CFLAGS="-I$prefix/include"
- VORBIS_LIBDIR="-L$prefix/lib"
- fi
-
- VORBIS_LIBS="$VORBIS_LIBDIR -lvorbis -lm"
- VORBISFILE_LIBS="-lvorbisfile"
- VORBISENC_LIBS="-lvorbisenc"
-
- AC_MSG_CHECKING(for Vorbis)
- no_vorbis=""
-
-
- if test "x$enable_vorbistest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $VORBIS_CFLAGS"
- LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
-dnl
-dnl Now check if the installed Vorbis is sufficiently new.
-dnl
- rm -f conf.vorbistest
- AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <vorbis/codec.h>
-
-int main ()
-{
- system("touch conf.vorbistest");
- return 0;
-}
-
-],, no_vorbis=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
-
- if test "x$no_vorbis" = "x" ; then
- AC_MSG_RESULT(yes)
- ifelse([$1], , :, [$1])
- else
- AC_MSG_RESULT(no)
- if test -f conf.vorbistest ; then
- :
- else
- echo "*** Could not run Vorbis test program, checking why..."
- CFLAGS="$CFLAGS $VORBIS_CFLAGS"
- LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
- AC_TRY_LINK([
-#include <stdio.h>
-#include <vorbis/codec.h>
-], [ return 0; ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding Vorbis or finding the wrong"
- echo "*** version of Vorbis. If it is not finding Vorbis, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means Vorbis was incorrectly installed"
- echo "*** or that you have moved Vorbis since it was installed." ])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- VORBIS_CFLAGS=""
- VORBIS_LIBS=""
- VORBISFILE_LIBS=""
- VORBISENC_LIBS=""
- ifelse([$2], , :, [$2])
- fi
- AC_SUBST(VORBIS_CFLAGS)
- AC_SUBST(VORBIS_LIBS)
- AC_SUBST(VORBISFILE_LIBS)
- AC_SUBST(VORBISENC_LIBS)
- rm -f conf.vorbistest
-])
-
\r
/* In VDS Macro AAA=BBB is not available. */\r
#define __W32__\r
-#define TIMID_VERSION "2.11.0-pre2"\r
+#define TIMID_VERSION "2.11.0-pre3"\r
#define DEFAULT_PATH ".\\"\r
#define AU_W32\r
#define WINSOCK\r
# Define the identity of the package.
PACKAGE=TiMidity++
-VERSION=2.11.0-pre2
+VERSION=2.11.0-pre3
cat >>confdefs.h <<EOF
#define PACKAGE "$PACKAGE"
AC_INIT(timidity/timidity.c)
SHELL=${CONFIG_SHELL-/bin/sh}
AC_CANONICAL_SYSTEM
-AM_INIT_AUTOMAKE(TiMidity++, 2.11.0-pre2)
+AM_INIT_AUTOMAKE(TiMidity++, 2.11.0-pre3)
dnl To use CONTAINS() macro (See acinclude.m4)
CONTAINS_INIT
-.TH TiMidity++ 1 "Jan 06 1999" "1.0.0"
+.TH TiMidity++ 1 "Nov 10 2001" "2.11.0"
.SH NAME
TiMidity++ \- MIDI to WAV converter and player
.SH SYNOPSIS
.P
.SH FILENAME
-You can use the following expressions in \fBfilename\fP fields
+You can use following expressions in \fBfilename\fP fields
to specify the location of the file:
.TP
.B \-
you can use it even if on MS Windows environment.
.PP
-TiMidity can handle the following archive format:
+TiMidity can handle following archive formats:
.RS
.TP
\fBtar\fP (*.tar)
.TP
\fBzip\fP (*.zip)
.TP
-.fBlzh\fP (*.lzh, *.lha)
+\fBlzh\fP (*.lzh, *.lha)
(lh0, lh1, lh2, lh3, lh4, lh5, lh6, lzs, lz5, lz4 are available)
.RE
.RE
In this case TiMidity recognize the MIME Multi\-part message, and
extract the articles contains MIDI files and play.
.br
-The following MIME\-type are allowed:
+Following MIME\-types are allowed:
.RS
.TP
.B uu\-encoded file
.P
.SH INPUT FILE
-Timidity can handle the following file formats:
+Timidity can handle following file formats:
.TP
\fB .MID\fP ( Format 0, 1, 2 )
Standard MIDI File
.P
.SH OPTIONS
-The following command line optinos are accepted by TiMidity:
+Following command line optinos are accepted by TiMidity:
.TP
.B \-A \fIamplification\fP
.TP
.BI \-E " mode"
-Set TiMidity extend modes. The following modes are available
+Set TiMidity extend modes. Following modes are available
(capitalized switch means disable this feature):
.RS
.TP
.B w/W
-Enables/disables modulation controlling.
+Enable/disable modulation controlling.
.TP
.B p/P
-Enables/disables portamento controlling.
+Enable/disable portamento controlling.
.TP
.B v/V
-Enables/disables NRPM vibration.
-.TP
-.B r/R
-Enables/disables reverb effect controlling.
-.TP
-.B c/C
-Enables/disables chorus effect controlling.
-.TP
-.BI c " ratio"
-Sets the chorus effect value of all channels to \fIratio\fP.
+Enable/disable NRPM vibration.
.TP
.B s/S
-Enables/disables channel pressure controlling.
+Enable/disable channel pressure controlling.
.TP
.B t/T
-Enables/disables tracing all Text Meta Events.
+Enable/disable tracing all Text Meta Events.
.TP
.B o/O
-Accepts/rejects pronouncing multiple same notes.
+Accept/reject pronouncing multiple same notes.
.TP
.BI m " HH"
Sets the manufacture ID to \fIHH\fP ( \fIHH\fP is the two hex-digits ).
In addition if \fIHH\fP is \fIGM/gm\fP , \fIGS/gs\fP or \fIXG/xg\fP
that are same as to \fI41\fP , \fI43\fP and \fI7e\fP.
.TP
+.BI b " n"
+Use tone bank \fIn\fP as the default.
+.TP
.BI B " bank"
Sets the bank number of all channels to \fIbank\fP.
+.TP
+.BI F " args"
+For effects. See below.
.RE
.TP
.TP
.B \-h
-Show this help message.
+Show help message.
.TP
.BI \-I " voice" [/c]
Selects the user interfaces from the compiled\-in
alternatives. \fIinterface\fP must be begun with one of the
supported interface identifiers. Run TiMidity with
-the \-h option to see a list. The following identifiers
+the \-h option to see a list. Following identifiers
may be available:
.RS
.TP
.TP
.B Interface options
Option characters may be added immediately
-after the interface identifier. The following
+after the interface identifier. Following
options are recognized:
.PP
.TP
Selects the output mode from the compiled-in alternatives.
mode must begin with one of the supported
output mode identifiers. Run TiMidity with the -h
-option to see a list. The following identifiers
-should be available in all versions:
+option to see the list. Following identifiers
+are available in all versions:
.RS
.TP
.B \-Od
.TP
.B "Format options"
Option characters may be added immediately after the mode identifier
-to change the output format. The following options are recognized:
+to change the output format. Following options are recognized:
.RS
.LP
.TP
stdout.
.TP
+.BI \-P
+Use patch file for all programs.
+
+.TP
.BI \-p " voices"
Sets polyphony (maximum number of simultaneous voices) to
\fIvoices\fP.
.TP
+.BI \-p " a"
+Toggle automatic polyphony reduction.
+
+.TP
.BI \-Q " channel"
Causes \fIchannel\fP to be quiet.
If \fIchannel\fP is negative, channel \-\fIchannel\fP is turned back on.
If \fIchannel\fP is 0, all channels are turned on.
+
+.TP
+.BI \-q " m/n"
+Specify audio buffer in seconds.
+m:Maxmum buffer, n:Filled to start (default is 5.0/100%)
+(size of 100% equals device buffer size)
.TP
-.BI \-R " msec"
-Enables Pseudo Reverb Mode. \fImsec\fP are envelope release time.
+.BI \-R " n"
+Enables Pseudo Reverb Mode.
+It sets every instrument's release to n ms. If n=0, n is set to 800(default).
.RE
.TP
-.B \-r
-This options causes another reverb effects.
-
-.TP
.BI \-S " size"
Sets the re-sample cache size to \fIsize\fP bytes.
If \fIsize\fP equals to 0 any sample caches are disabled.
.TP
.BI -t " code"
-Sets output coding of Japanese text. \fIcode\fP are the following:
+Sets output coding of Japanese text. \fIcode\fP are following:
.RS
.TP
.B auto
.B ascii
Transrates non-ascii code to period.
.TP
+.B nocnv
+No conversion
+.TP
+.B 1251
+Convert from windows-1251 to koi8-r
+.TP
.B euc
Outputs by EUC(Japan) coding.
.TP
.RE
.TP
+.BI \-T " n"
+Adjust tempo to n%; 120=play MOD files with an NTSC Amiga's timing
+
+.TP
.B \-U
-Instructs TiMidity to unload all instruments from memory between
-MIDI files. This can reduce memory requirements when playing many
+Unload all instruments from memory between MIDI files.
+This can reduce memory requirements when playing many
files in succession.
.TP
.BI \-w " mode"
-Extend mode for MS\-Windows. The following options are available:
+Extend mode for MS\-Windows. Following options are available:
.RS
.TP
.BI \-w "r"
.TP
.BI d="n"
Emulates timing(\fB@WAIT\fP,\fB@WMODE\fP) bugs of the original MIMPI player.
-The emulate level is following:
+The emulate level are following:
.RS
.TP
.B -WRd=0
useful to define a tuning different from the occidental temperate scale.
.P
+.SH EFFECT OPTIONS
+In \fI-EF <arg>\fP option, you can specify following effect options:
+.br
+.RS
+.TP
+.BI -EFdelay= "l"
+Left delay
+.TP
+.BI -EFdelay= "r"
+Right delay
+.TP
+.BI -EFdelay= "b"
+Rotate left & right
+.TP
+.BI -EFdelay= "0"
+Disabled delay effect
+.TP
+.BI -EFchorus= "1[,level]"
+Enable MIDI chorus effect control
+.br
+`level' is optional to specify chorus level [0..127]
+.TP
+.BI -EFchorus= "2[,level]"
+Surround sound, chorus detuned to a lesser degree.
+.br
+`level' is optional to specify chorus level [0..127] (default).
+.TP
+.BI -EFreverb= "0"
+Disable MIDI reverb effect control
+.TP
+.BI -EFreverb= "1[,level]"
+Enable MIDI reverb effect control
+.br
+`level' is optional to specify reverb level [0..127]
+This effect is only available in stereo (default).
+.TP
+.BI -EFreverb= "2"
+Global reverb effect
+.TP
+.BI -EFns= "n"
+Enable the n th degree noiseshaping filter. n:[0..4]
+.br
+This effect is only available for 8-bit linear encoding
+.RE
+
+.P
.SH SEE ALSO
lsmidiprog(1), mididump(1), patinfo(1), sf2text(1), wav2pat(1), timidity.cfg(5)
.P
English version of this man page is written by
-NAGANO Daisuke <breeze_geo@geocities.co.jp>.
+NAGANO Daisuke breeze.nagano@nifty.ne.jp>.
.br
If any comments or suggestions or claims :) about this man page you have,
please tell me it.
tcltk_dep = @tcltk_dep@
timidity_LDFLAGS = @timidity_LDFLAGS@
-@ENABLE_EMACS_TRUE@ELFILES = @ELFILES@
ELFILES = @ELFILES@
+@ENABLE_EMACS_TRUE@ELFILES = @ELFILES@
###
### For dynamic interfaces
###
-@NEEDDLOPEN_TRUE@dynamic_targets = @dynamic_targets@
dynamic_targets = @dynamic_targets@
+@NEEDDLOPEN_TRUE@dynamic_targets = @dynamic_targets@
SUFFIXES = .ptcl .tcl .@so@
if(lyric[0] == ME_CHORUS_TEXT || lyric[0] == ME_INSERT_TEXT)
fprintf(outfp, "\r");
fputs(lyric + 1, outfp);
+ fflush(outfp);
}
}
}
return;
rate = (int)(((double)(aq_filled() + aq_soft_filled()) /
devsiz) * 100 + 0.5);
- if(rate > 999)
- rate = 1000;
+ if(rate > 9999)
+ rate = 10000;
if(last_rate != rate)
{
last_rate = rate;
wmove(dftwin, VOICE_LINE + 1, 34);
- if(rate > 999)
- wprintw(dftwin, " Audio queue:***%% ");
+ if(rate > 9999)
+ wprintw(dftwin, " Audio queue:****%% ");
else
- wprintw(dftwin, " Audio queue:%3d%% ", rate);
+ wprintw(dftwin, " Audio queue:%4d%% ", rate);
scr_modified_flag = 1;
}
}
}
}
- SLsmg_printfrc(lyric_row,0,comment_indicator_buffer);
+ SLsmg_printfrc(lyric_row,0,"%s",comment_indicator_buffer);
ctl_refresh();
reuse_mblock(&tmpbuffer);
indicator_last_update = get_current_calender_time();
-/*\r
- TiMidity++ -- MIDI to WAVE converter and player\r
- Copyright (C) 1999-2001 Masanao Izumo <mo@goice.co.jp>\r
- Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>\r
-\r
- This program is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- This program is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with this program; if not, write to the Free Software\r
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
-\r
- w32g_ini.c: written by Daisuke Aoki <dai@y7.net>\r
- Masanao Izumo <mo@goice.co.jp>\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-\r
-#ifdef HAVE_CONFIG_H\r
-#include "config.h"\r
-#endif /* HAVE_CONFIG_H */\r
-#include "timidity.h"\r
-#include "common.h"\r
-#include "output.h"\r
-#include "instrum.h"\r
-#include "playmidi.h"\r
-#include "w32g.h"\r
-#include "w32g_utl.h"\r
-\r
-#if MAX_CHANNELS > 32 /* FIXME */\r
-#error "MAX_CHANNELS > 32 is not supported Windows GUI version"\r
-#endif\r
-\r
-int w32g_has_ini_file;\r
-\r
-static int32 str2size(char *str)\r
-{\r
- int len = strlen(str);\r
- if(str[len - 1] == 'k' || str[len - 1] == 'K')\r
- return (int32)(1024.0 * atof(str));\r
- if(str[len - 1] == 'm' || str[len - 1] == 'M')\r
- return (int32)(1024 * 1024 * atof(str));\r
- return atoi(str);\r
-}\r
-\r
-void LoadIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st)\r
-{\r
- char buff[1024];\r
-\r
- /* [PLAYER] */\r
- IniGetKeyInt(INI_SEC_PLAYER,"InitMinimizeFlag",&(sp->InitMinimizeFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"DebugWndStartFlag",&(sp->DebugWndStartFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"ConsoleWndStartFlag",&(sp->ConsoleWndStartFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"ListWndStartFlag",&(sp->ListWndStartFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"TracerWndStartFlag",&(sp->TracerWndStartFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"DocWndStartFlag",&(sp->DocWndStartFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"WrdWndStartFlag",&(sp->WrdWndStartFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"DebugWndFlag",&(sp->DebugWndFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"ConsoleWndFlag",&(sp->ConsoleWndFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"ListWndFlag",&(sp->ListWndFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"TracerWndFlag",&(sp->TracerWndFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"DocWndFlag",&(sp->DocWndFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"WrdWndFlag",&(sp->WrdWndFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"SoundSpecWndFlag",&(sp->SoundSpecWndFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"SubWindowMax",&(sp->SubWindowMax));\r
- IniGetKeyStringN(INI_SEC_PLAYER,"ConfigFile",sp->ConfigFile,MAXPATH + 32);\r
- if(!sp->ConfigFile[0])\r
- strcpy(sp->ConfigFile, W32G_TIMIDITY_CFG);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"PlaylistFile",sp->PlaylistFile,MAXPATH + 32);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"PlaylistHistoryFile",sp->PlaylistHistoryFile,MAXPATH + 32);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"MidiFileOpenDir",sp->MidiFileOpenDir,MAXPATH + 32);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"ConfigFileOpenDir",sp->ConfigFileOpenDir,MAXPATH + 32);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"PlaylistFileOpenDir",sp->PlaylistFileOpenDir,MAXPATH + 32);\r
- IniGetKeyInt(INI_SEC_PLAYER,"PlayerThreadPriority",&(sp->PlayerThreadPriority));\r
- IniGetKeyInt(INI_SEC_PLAYER,"GUIThreadPriority",&(sp->GUIThreadPriority));\r
- IniGetKeyStringN(INI_SEC_PLAYER,"SystemFont",sp->SystemFont,256);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"PlayerFont",sp->PlayerFont,256);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"WrdFont",sp->WrdFont,256);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"DocFont",sp->DocFont,256);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"ListFont",sp->ListFont,256);\r
- IniGetKeyStringN(INI_SEC_PLAYER,"TracerFont",sp->TracerFont,256);\r
- IniGetKeyInt(INI_SEC_PLAYER,"SystemFontSize",&(sp->SystemFontSize));\r
- IniGetKeyInt(INI_SEC_PLAYER,"PlayerFontSize",&(sp->PlayerFontSize));\r
- IniGetKeyInt(INI_SEC_PLAYER,"WrdFontSize",&(sp->WrdFontSize));\r
- IniGetKeyInt(INI_SEC_PLAYER,"DocFontSize",&(sp->DocFontSize));\r
- IniGetKeyInt(INI_SEC_PLAYER,"ListFontSize",&(sp->ListFontSize));\r
- IniGetKeyInt(INI_SEC_PLAYER,"TracerFontSize",&(sp->TracerFontSize));\r
- IniGetKeyInt(INI_SEC_PLAYER,"WrdGraphicFlag",&(sp->WrdGraphicFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"TraceGraphicFlag",&(sp->TraceGraphicFlag));\r
- IniGetKeyInt(INI_SEC_PLAYER,"DocMaxSize",&(sp->DocMaxSize));\r
- IniGetKeyStringN(INI_SEC_PLAYER,"DocFileExt",sp->DocFileExt,256);\r
- IniGetKeyInt(INI_SEC_PLAYER,"PlayerLanguage",&(sp->PlayerLanguage));\r
- IniGetKeyInt(INI_SEC_PLAYER,"DocWndIndependent",&(sp->DocWndIndependent));\r
- IniGetKeyInt(INI_SEC_PLAYER,"SeachDirRecursive",&(sp->SeachDirRecursive));\r
- IniGetKeyInt(INI_SEC_PLAYER,"IniFileAutoSave",&(sp->IniFileAutoSave));\r
- IniGetKeyInt(INI_SEC_PLAYER,"SecondMode",&(sp->SecondMode));\r
-\r
- /* [TIMIDITY] */\r
- IniGetKeyInt32(INI_SEC_TIMIDITY,"amplification",&(st->amplification));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"antialiasing_allowed",&(st->antialiasing_allowed));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"buffer_fragments",&(st->buffer_fragments));\r
- IniGetKeyInt32(INI_SEC_TIMIDITY,"control_ratio",&(st->control_ratio));\r
- IniGetKeyInt32(INI_SEC_TIMIDITY,"default_drumchannels",(int32 *)&(st->default_drumchannels));\r
- IniGetKeyInt32(INI_SEC_TIMIDITY,"default_drumchannel_mask",(int32 *)&(st->default_drumchannel_mask));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_modulation_wheel",&(st->opt_modulation_wheel));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_portamento",&(st->opt_portamento));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_nrpn_vibrato",&(st->opt_nrpn_vibrato));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_channel_pressure",&(st->opt_channel_pressure));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_trace_text_meta_event",&(st->opt_trace_text_meta_event));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_overlap_voice_allow",&(st->opt_overlap_voice_allow));\r
- IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_default_mid",buff,sizeof(buff)-1);\r
- st->opt_default_mid = str2mID(buff);\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"default_tonebank",&(st->default_tonebank));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"special_tonebank",&(st->special_tonebank));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"effect_lr_mode",&(st->effect_lr_mode));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"effect_lr_delay_msec",&(st->effect_lr_delay_msec));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_reverb_control",&(st->opt_reverb_control));\r
+/*
+ TiMidity++ -- MIDI to WAVE converter and player
+ Copyright (C) 1999-2001 Masanao Izumo <mo@goice.co.jp>
+ Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ w32g_ini.c: written by Daisuke Aoki <dai@y7.net>
+ Masanao Izumo <mo@goice.co.jp>
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+#include "timidity.h"
+#include "common.h"
+#include "output.h"
+#include "instrum.h"
+#include "playmidi.h"
+#include "w32g.h"
+#include "w32g_utl.h"
+
+#if MAX_CHANNELS > 32 /* FIXME */
+#error "MAX_CHANNELS > 32 is not supported Windows GUI version"
+#endif
+
+int w32g_has_ini_file;
+
+static int32 str2size(char *str)
+{
+ int len = strlen(str);
+ if(str[len - 1] == 'k' || str[len - 1] == 'K')
+ return (int32)(1024.0 * atof(str));
+ if(str[len - 1] == 'm' || str[len - 1] == 'M')
+ return (int32)(1024 * 1024 * atof(str));
+ return atoi(str);
+}
+
+void LoadIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st)
+{
+ char buff[1024];
+
+ /* [PLAYER] */
+ IniGetKeyInt(INI_SEC_PLAYER,"InitMinimizeFlag",&(sp->InitMinimizeFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"DebugWndStartFlag",&(sp->DebugWndStartFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"ConsoleWndStartFlag",&(sp->ConsoleWndStartFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"ListWndStartFlag",&(sp->ListWndStartFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"TracerWndStartFlag",&(sp->TracerWndStartFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"DocWndStartFlag",&(sp->DocWndStartFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"WrdWndStartFlag",&(sp->WrdWndStartFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"DebugWndFlag",&(sp->DebugWndFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"ConsoleWndFlag",&(sp->ConsoleWndFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"ListWndFlag",&(sp->ListWndFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"TracerWndFlag",&(sp->TracerWndFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"DocWndFlag",&(sp->DocWndFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"WrdWndFlag",&(sp->WrdWndFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"SoundSpecWndFlag",&(sp->SoundSpecWndFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"SubWindowMax",&(sp->SubWindowMax));
+ IniGetKeyStringN(INI_SEC_PLAYER,"ConfigFile",sp->ConfigFile,MAXPATH + 32);
+ if(!sp->ConfigFile[0])
+ strcpy(sp->ConfigFile, W32G_TIMIDITY_CFG);
+ IniGetKeyStringN(INI_SEC_PLAYER,"PlaylistFile",sp->PlaylistFile,MAXPATH + 32);
+ IniGetKeyStringN(INI_SEC_PLAYER,"PlaylistHistoryFile",sp->PlaylistHistoryFile,MAXPATH + 32);
+ IniGetKeyStringN(INI_SEC_PLAYER,"MidiFileOpenDir",sp->MidiFileOpenDir,MAXPATH + 32);
+ IniGetKeyStringN(INI_SEC_PLAYER,"ConfigFileOpenDir",sp->ConfigFileOpenDir,MAXPATH + 32);
+ IniGetKeyStringN(INI_SEC_PLAYER,"PlaylistFileOpenDir",sp->PlaylistFileOpenDir,MAXPATH + 32);
+ IniGetKeyInt(INI_SEC_PLAYER,"PlayerThreadPriority",&(sp->PlayerThreadPriority));
+ IniGetKeyInt(INI_SEC_PLAYER,"GUIThreadPriority",&(sp->GUIThreadPriority));
+ IniGetKeyStringN(INI_SEC_PLAYER,"SystemFont",sp->SystemFont,256);
+ IniGetKeyStringN(INI_SEC_PLAYER,"PlayerFont",sp->PlayerFont,256);
+ IniGetKeyStringN(INI_SEC_PLAYER,"WrdFont",sp->WrdFont,256);
+ IniGetKeyStringN(INI_SEC_PLAYER,"DocFont",sp->DocFont,256);
+ IniGetKeyStringN(INI_SEC_PLAYER,"ListFont",sp->ListFont,256);
+ IniGetKeyStringN(INI_SEC_PLAYER,"TracerFont",sp->TracerFont,256);
+ IniGetKeyInt(INI_SEC_PLAYER,"SystemFontSize",&(sp->SystemFontSize));
+ IniGetKeyInt(INI_SEC_PLAYER,"PlayerFontSize",&(sp->PlayerFontSize));
+ IniGetKeyInt(INI_SEC_PLAYER,"WrdFontSize",&(sp->WrdFontSize));
+ IniGetKeyInt(INI_SEC_PLAYER,"DocFontSize",&(sp->DocFontSize));
+ IniGetKeyInt(INI_SEC_PLAYER,"ListFontSize",&(sp->ListFontSize));
+ IniGetKeyInt(INI_SEC_PLAYER,"TracerFontSize",&(sp->TracerFontSize));
+ IniGetKeyInt(INI_SEC_PLAYER,"WrdGraphicFlag",&(sp->WrdGraphicFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"TraceGraphicFlag",&(sp->TraceGraphicFlag));
+ IniGetKeyInt(INI_SEC_PLAYER,"DocMaxSize",&(sp->DocMaxSize));
+ IniGetKeyStringN(INI_SEC_PLAYER,"DocFileExt",sp->DocFileExt,256);
+ IniGetKeyInt(INI_SEC_PLAYER,"PlayerLanguage",&(sp->PlayerLanguage));
+ IniGetKeyInt(INI_SEC_PLAYER,"DocWndIndependent",&(sp->DocWndIndependent));
+ IniGetKeyInt(INI_SEC_PLAYER,"DocWndAutoPopup",&(sp->DocWndAutoPopup));
+ IniGetKeyInt(INI_SEC_PLAYER,"SeachDirRecursive",&(sp->SeachDirRecursive));
+ IniGetKeyInt(INI_SEC_PLAYER,"IniFileAutoSave",&(sp->IniFileAutoSave));
+ IniGetKeyInt(INI_SEC_PLAYER,"SecondMode",&(sp->SecondMode));
+
+ /* [TIMIDITY] */
+ IniGetKeyInt32(INI_SEC_TIMIDITY,"amplification",&(st->amplification));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"antialiasing_allowed",&(st->antialiasing_allowed));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"buffer_fragments",&(st->buffer_fragments));
+ IniGetKeyInt32(INI_SEC_TIMIDITY,"control_ratio",&(st->control_ratio));
+ IniGetKeyInt32(INI_SEC_TIMIDITY,"default_drumchannels",(int32 *)&(st->default_drumchannels));
+ IniGetKeyInt32(INI_SEC_TIMIDITY,"default_drumchannel_mask",(int32 *)&(st->default_drumchannel_mask));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_modulation_wheel",&(st->opt_modulation_wheel));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_portamento",&(st->opt_portamento));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_nrpn_vibrato",&(st->opt_nrpn_vibrato));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_channel_pressure",&(st->opt_channel_pressure));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_trace_text_meta_event",&(st->opt_trace_text_meta_event));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_overlap_voice_allow",&(st->opt_overlap_voice_allow));
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_default_mid",buff,sizeof(buff)-1);
+// st->opt_default_mid = str2mID(buff);
+ st->opt_default_mid = atoi(buff);
+ IniGetKeyInt(INI_SEC_TIMIDITY,"default_tonebank",&(st->default_tonebank));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"special_tonebank",&(st->special_tonebank));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"effect_lr_mode",&(st->effect_lr_mode));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"effect_lr_delay_msec",&(st->effect_lr_delay_msec));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_reverb_control",&(st->opt_reverb_control));
IniGetKeyInt(INI_SEC_TIMIDITY,"opt_chorus_control",&(st->opt_chorus_control));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"noise_sharp_type",&(st->noise_sharp_type));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_evil_mode",&(st->opt_evil_mode));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"adjust_panning_immediately",&(st->adjust_panning_immediately));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"fast_decay",&(st->fast_decay));\r
-#ifdef SUPPORT_SOUNDSPEC\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"view_soundspec_flag",&(st->view_soundspec_flag));\r
- IniGetKeyFloat(INI_SEC_TIMIDITY,"spectrogram_update_sec",&v_float);\r
- st->spectrogram_update_sec = v_float;\r
-#endif\r
- IniGetKeyIntArray(INI_SEC_TIMIDITY,"default_program",st->default_program,MAX_CHANNELS);\r
- IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_ctl",st->opt_ctl,sizeof(st->opt_ctl)-1);\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_realtime_playing",&(st->opt_realtime_playing));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"reduce_voice_threshold",&(st->reduce_voice_threshold));\r
- IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_playmode",st->opt_playmode,sizeof(st->opt_playmode)-1);\r
- IniGetKeyStringN(INI_SEC_TIMIDITY,"OutputName",st->OutputName,sizeof(st->OutputName)-1);\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"voices",&(st->voices));\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"auto_reduce_polyphony",&(st->auto_reduce_polyphony));\r
- IniGetKeyInt32(INI_SEC_TIMIDITY,"quietchannels",(int32 *)&(st->quietchannels));\r
- IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_qsize",st->opt_qsize,sizeof(st->opt_qsize)-1);\r
- IniGetKeyInt32(INI_SEC_TIMIDITY,"modify_release",&(st->modify_release));\r
- IniGetKeyStringN(INI_SEC_TIMIDITY,"allocate_cache_size",buff,sizeof(buff)-1);\r
- st->allocate_cache_size = str2size(buff);\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"output_rate",&(st->output_rate));\r
- IniGetKeyStringN(INI_SEC_TIMIDITY,"output_text_code",st->output_text_code,sizeof(st->output_text_code)-1);\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"free_instruments_afterwards",&(st->free_instruments_afterwards));\r
- IniGetKeyStringN(INI_SEC_TIMIDITY,"out_wrd",st->opt_wrd,sizeof(st->opt_wrd)-1);\r
-#if defined(__W32__) && defined(SMFCONV)\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"opt_rcpcv_dll",&(st->opt_rcpcv_dll));\r
-#endif\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"data_block_bits",&(st->data_block_bits));\r
- if(st->data_block_bits > AUDIO_BUFFER_BITS)\r
- st->data_block_bits = AUDIO_BUFFER_BITS;\r
- IniGetKeyInt(INI_SEC_TIMIDITY,"data_block_num",&(st->data_block_num));\r
-}\r
-\r
-void\r
-SaveIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st)\r
-{\r
- /* [PLAYER] */\r
- IniPutKeyString(INI_SEC_PLAYER,"IniVersion",IniVersion);\r
- IniPutKeyInt(INI_SEC_PLAYER,"InitMinimizeFlag",&(sp->InitMinimizeFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"DebugWndStartFlag",&(sp->DebugWndStartFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"ConsoleWndStartFlag",&(sp->ConsoleWndStartFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"ListWndStartFlag",&(sp->ListWndStartFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"TracerWndStartFlag",&(sp->TracerWndStartFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"DocWndStartFlag",&(sp->DocWndStartFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"WrdWndStartFlag",&(sp->WrdWndStartFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"DebugWndFlag",&(sp->DebugWndFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"ConsoleWndFlag",&(sp->ConsoleWndFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"ListWndFlag",&(sp->ListWndFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"TracerWndFlag",&(sp->TracerWndFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"DocWndFlag",&(sp->DocWndFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"WrdWndFlag",&(sp->WrdWndFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"SoundSpecWndFlag",&(sp->SoundSpecWndFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"SubWindowMax",&(sp->SubWindowMax));\r
- IniPutKeyStringN(INI_SEC_PLAYER,"ConfigFile",sp->ConfigFile,MAXPATH + 32);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"PlaylistFile",sp->PlaylistFile,MAXPATH + 32);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"PlaylistHistoryFile",sp->PlaylistHistoryFile,MAXPATH + 32);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"MidiFileOpenDir",sp->MidiFileOpenDir,MAXPATH + 32);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"ConfigFileOpenDir",sp->ConfigFileOpenDir,MAXPATH + 32);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"PlaylistFileOpenDir",sp->PlaylistFileOpenDir,MAXPATH + 32);\r
- IniPutKeyInt(INI_SEC_PLAYER,"PlayerThreadPriority",&(sp->PlayerThreadPriority));\r
- IniPutKeyInt(INI_SEC_PLAYER,"GUIThreadPriority",&(sp->GUIThreadPriority));\r
- IniPutKeyStringN(INI_SEC_PLAYER,"SystemFont",sp->SystemFont,256);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"PlayerFont",sp->PlayerFont,256);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"WrdFont",sp->WrdFont,256);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"DocFont",sp->DocFont,256);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"ListFont",sp->ListFont,256);\r
- IniPutKeyStringN(INI_SEC_PLAYER,"TracerFont",sp->TracerFont,256);\r
- IniPutKeyInt(INI_SEC_PLAYER,"SystemFontSize",&(sp->SystemFontSize));\r
- IniPutKeyInt(INI_SEC_PLAYER,"PlayerFontSize",&(sp->PlayerFontSize));\r
- IniPutKeyInt(INI_SEC_PLAYER,"WrdFontSize",&(sp->WrdFontSize));\r
- IniPutKeyInt(INI_SEC_PLAYER,"DocFontSize",&(sp->DocFontSize));\r
- IniPutKeyInt(INI_SEC_PLAYER,"ListFontSize",&(sp->ListFontSize));\r
- IniPutKeyInt(INI_SEC_PLAYER,"TracerFontSize",&(sp->TracerFontSize));\r
- IniPutKeyInt(INI_SEC_PLAYER,"WrdGraphicFlag",&(sp->WrdGraphicFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"TraceGraphicFlag",&(sp->TraceGraphicFlag));\r
- IniPutKeyInt(INI_SEC_PLAYER,"DocMaxSize",&(sp->DocMaxSize));\r
- IniPutKeyStringN(INI_SEC_PLAYER,"DocFileExt",sp->DocFileExt,256);\r
- IniPutKeyInt(INI_SEC_PLAYER,"PlayerLanguage",&(sp->PlayerLanguage));\r
- IniPutKeyInt(INI_SEC_PLAYER,"DocWndIndependent",&(sp->DocWndIndependent));\r
- IniPutKeyInt(INI_SEC_PLAYER,"SeachDirRecursive",&(sp->SeachDirRecursive));\r
- IniPutKeyInt(INI_SEC_PLAYER,"IniFileAutoSave",&(sp->IniFileAutoSave));\r
- IniPutKeyInt(INI_SEC_PLAYER,"SecondMode",&(sp->SecondMode));\r
-\r
-\r
- /* [TIMIDITY] */\r
- IniPutKeyInt32(INI_SEC_TIMIDITY,"amplification",&(st->amplification));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"antialiasing_allowed",&(st->antialiasing_allowed));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"buffer_fragments",&(st->buffer_fragments));\r
- IniPutKeyInt32(INI_SEC_TIMIDITY,"control_ratio",&(st->control_ratio));\r
- IniPutKeyInt32(INI_SEC_TIMIDITY,"default_drumchannels",(int32 *)&(st->default_drumchannels));\r
- IniPutKeyInt32(INI_SEC_TIMIDITY,"default_drumchannel_mask",(int32 *)&(st->default_drumchannel_mask));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_modulation_wheel",&(st->opt_modulation_wheel));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_portamento",&(st->opt_portamento));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_nrpn_vibrato",&(st->opt_nrpn_vibrato));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_channel_pressure",&(st->opt_channel_pressure));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_trace_text_meta_event",&(st->opt_trace_text_meta_event));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_overlap_voice_allow",&(st->opt_overlap_voice_allow));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_default_mid",&(st->opt_default_mid));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"default_tonebank",&(st->default_tonebank));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"special_tonebank",&(st->special_tonebank));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"effect_lr_mode",&(st->effect_lr_mode));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"effect_lr_delay_msec",&(st->effect_lr_delay_msec));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_reverb_control",&(st->opt_reverb_control));\r
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_surround_chorus",&(st->opt_surround_chorus));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_tva_attack",&(st->opt_tva_attack));\r
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_tva_decay",&(st->opt_tva_decay));\r
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_tva_release",&(st->opt_tva_release));\r
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_delay_control",&(st->opt_delay_control));\r
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_resonance",&(st->opt_resonance));\r
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_velocity_table",&(st->opt_velocity_table));\r
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_env_attack",&(st->opt_env_attack));\r
+ IniGetKeyInt(INI_SEC_TIMIDITY,"noise_sharp_type",&(st->noise_sharp_type));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_evil_mode",&(st->opt_evil_mode));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"adjust_panning_immediately",&(st->adjust_panning_immediately));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"fast_decay",&(st->fast_decay));
+#ifdef SUPPORT_SOUNDSPEC
+ IniGetKeyInt(INI_SEC_TIMIDITY,"view_soundspec_flag",&(st->view_soundspec_flag));
+ IniGetKeyFloat(INI_SEC_TIMIDITY,"spectrogram_update_sec",&v_float);
+ st->spectrogram_update_sec = v_float;
+#endif
+ IniGetKeyIntArray(INI_SEC_TIMIDITY,"default_program",st->default_program,MAX_CHANNELS);
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_ctl",st->opt_ctl,sizeof(st->opt_ctl)-1);
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_realtime_playing",&(st->opt_realtime_playing));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"reduce_voice_threshold",&(st->reduce_voice_threshold));
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_playmode",st->opt_playmode,sizeof(st->opt_playmode)-1);
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"OutputName",st->OutputName,sizeof(st->OutputName)-1);
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"OutputDirName",st->OutputDirName,sizeof(st->OutputDirName)-1);
+ IniGetKeyInt(INI_SEC_TIMIDITY,"auto_output_mode",&(st->auto_output_mode));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"voices",&(st->voices));
+ IniGetKeyInt(INI_SEC_TIMIDITY,"auto_reduce_polyphony",&(st->auto_reduce_polyphony));
+ IniGetKeyInt32(INI_SEC_TIMIDITY,"quietchannels",(int32 *)&(st->quietchannels));
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_qsize",st->opt_qsize,sizeof(st->opt_qsize)-1);
+ IniGetKeyInt32(INI_SEC_TIMIDITY,"modify_release",&(st->modify_release));
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"allocate_cache_size",buff,sizeof(buff)-1);
+ st->allocate_cache_size = str2size(buff);
+ IniGetKeyInt(INI_SEC_TIMIDITY,"output_rate",&(st->output_rate));
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"output_text_code",st->output_text_code,sizeof(st->output_text_code)-1);
+ IniGetKeyInt(INI_SEC_TIMIDITY,"free_instruments_afterwards",&(st->free_instruments_afterwards));
+ IniGetKeyStringN(INI_SEC_TIMIDITY,"out_wrd",st->opt_wrd,sizeof(st->opt_wrd)-1);
+#if defined(__W32__) && defined(SMFCONV)
+ IniGetKeyInt(INI_SEC_TIMIDITY,"opt_rcpcv_dll",&(st->opt_rcpcv_dll));
+#endif
+ IniGetKeyInt(INI_SEC_TIMIDITY,"data_block_bits",&(st->data_block_bits));
+ if(st->data_block_bits > AUDIO_BUFFER_BITS)
+ st->data_block_bits = AUDIO_BUFFER_BITS;
+ IniGetKeyInt(INI_SEC_TIMIDITY,"data_block_num",&(st->data_block_num));
+}
+
+void
+SaveIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st)
+{
+ /* [PLAYER] */
+ IniPutKeyString(INI_SEC_PLAYER,"IniVersion",IniVersion);
+ IniPutKeyInt(INI_SEC_PLAYER,"InitMinimizeFlag",&(sp->InitMinimizeFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"DebugWndStartFlag",&(sp->DebugWndStartFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"ConsoleWndStartFlag",&(sp->ConsoleWndStartFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"ListWndStartFlag",&(sp->ListWndStartFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"TracerWndStartFlag",&(sp->TracerWndStartFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"DocWndStartFlag",&(sp->DocWndStartFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"WrdWndStartFlag",&(sp->WrdWndStartFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"DebugWndFlag",&(sp->DebugWndFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"ConsoleWndFlag",&(sp->ConsoleWndFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"ListWndFlag",&(sp->ListWndFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"TracerWndFlag",&(sp->TracerWndFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"DocWndFlag",&(sp->DocWndFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"WrdWndFlag",&(sp->WrdWndFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"SoundSpecWndFlag",&(sp->SoundSpecWndFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"SubWindowMax",&(sp->SubWindowMax));
+ IniPutKeyStringN(INI_SEC_PLAYER,"ConfigFile",sp->ConfigFile,MAXPATH + 32);
+ IniPutKeyStringN(INI_SEC_PLAYER,"PlaylistFile",sp->PlaylistFile,MAXPATH + 32);
+ IniPutKeyStringN(INI_SEC_PLAYER,"PlaylistHistoryFile",sp->PlaylistHistoryFile,MAXPATH + 32);
+ IniPutKeyStringN(INI_SEC_PLAYER,"MidiFileOpenDir",sp->MidiFileOpenDir,MAXPATH + 32);
+ IniPutKeyStringN(INI_SEC_PLAYER,"ConfigFileOpenDir",sp->ConfigFileOpenDir,MAXPATH + 32);
+ IniPutKeyStringN(INI_SEC_PLAYER,"PlaylistFileOpenDir",sp->PlaylistFileOpenDir,MAXPATH + 32);
+ IniPutKeyInt(INI_SEC_PLAYER,"PlayerThreadPriority",&(sp->PlayerThreadPriority));
+ IniPutKeyInt(INI_SEC_PLAYER,"GUIThreadPriority",&(sp->GUIThreadPriority));
+ IniPutKeyStringN(INI_SEC_PLAYER,"SystemFont",sp->SystemFont,256);
+ IniPutKeyStringN(INI_SEC_PLAYER,"PlayerFont",sp->PlayerFont,256);
+ IniPutKeyStringN(INI_SEC_PLAYER,"WrdFont",sp->WrdFont,256);
+ IniPutKeyStringN(INI_SEC_PLAYER,"DocFont",sp->DocFont,256);
+ IniPutKeyStringN(INI_SEC_PLAYER,"ListFont",sp->ListFont,256);
+ IniPutKeyStringN(INI_SEC_PLAYER,"TracerFont",sp->TracerFont,256);
+ IniPutKeyInt(INI_SEC_PLAYER,"SystemFontSize",&(sp->SystemFontSize));
+ IniPutKeyInt(INI_SEC_PLAYER,"PlayerFontSize",&(sp->PlayerFontSize));
+ IniPutKeyInt(INI_SEC_PLAYER,"WrdFontSize",&(sp->WrdFontSize));
+ IniPutKeyInt(INI_SEC_PLAYER,"DocFontSize",&(sp->DocFontSize));
+ IniPutKeyInt(INI_SEC_PLAYER,"ListFontSize",&(sp->ListFontSize));
+ IniPutKeyInt(INI_SEC_PLAYER,"TracerFontSize",&(sp->TracerFontSize));
+ IniPutKeyInt(INI_SEC_PLAYER,"WrdGraphicFlag",&(sp->WrdGraphicFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"TraceGraphicFlag",&(sp->TraceGraphicFlag));
+ IniPutKeyInt(INI_SEC_PLAYER,"DocMaxSize",&(sp->DocMaxSize));
+ IniPutKeyStringN(INI_SEC_PLAYER,"DocFileExt",sp->DocFileExt,256);
+ IniPutKeyInt(INI_SEC_PLAYER,"PlayerLanguage",&(sp->PlayerLanguage));
+ IniPutKeyInt(INI_SEC_PLAYER,"DocWndIndependent",&(sp->DocWndIndependent));
+ IniPutKeyInt(INI_SEC_PLAYER,"DocWndAutoPopup",&(sp->DocWndAutoPopup));
+ IniPutKeyInt(INI_SEC_PLAYER,"SeachDirRecursive",&(sp->SeachDirRecursive));
+ IniPutKeyInt(INI_SEC_PLAYER,"IniFileAutoSave",&(sp->IniFileAutoSave));
+ IniPutKeyInt(INI_SEC_PLAYER,"SecondMode",&(sp->SecondMode));
+
+
+ /* [TIMIDITY] */
+ IniPutKeyInt32(INI_SEC_TIMIDITY,"amplification",&(st->amplification));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"antialiasing_allowed",&(st->antialiasing_allowed));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"buffer_fragments",&(st->buffer_fragments));
+ IniPutKeyInt32(INI_SEC_TIMIDITY,"control_ratio",&(st->control_ratio));
+ IniPutKeyInt32(INI_SEC_TIMIDITY,"default_drumchannels",(int32 *)&(st->default_drumchannels));
+ IniPutKeyInt32(INI_SEC_TIMIDITY,"default_drumchannel_mask",(int32 *)&(st->default_drumchannel_mask));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_modulation_wheel",&(st->opt_modulation_wheel));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_portamento",&(st->opt_portamento));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_nrpn_vibrato",&(st->opt_nrpn_vibrato));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_channel_pressure",&(st->opt_channel_pressure));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_trace_text_meta_event",&(st->opt_trace_text_meta_event));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_overlap_voice_allow",&(st->opt_overlap_voice_allow));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_default_mid",&(st->opt_default_mid));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"default_tonebank",&(st->default_tonebank));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"special_tonebank",&(st->special_tonebank));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"effect_lr_mode",&(st->effect_lr_mode));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"effect_lr_delay_msec",&(st->effect_lr_delay_msec));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_reverb_control",&(st->opt_reverb_control));
IniPutKeyInt(INI_SEC_TIMIDITY,"opt_chorus_control",&(st->opt_chorus_control));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"noise_sharp_type",&(st->noise_sharp_type));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_evil_mode",&(st->opt_evil_mode));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"adjust_panning_immediately",&(st->adjust_panning_immediately));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"fast_decay",&(st->fast_decay));\r
-#ifdef SUPPORT_SOUNDSPEC\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"view_soundspec_flag",&(st->view_soundspec_flag));\r
- v_float = st->spectrogram_update_sec;\r
- IniPutKeyFloat(INI_SEC_TIMIDITY,"spectrogram_update_sec",&v_float);\r
-#endif\r
- IniPutKeyIntArray(INI_SEC_TIMIDITY,"default_program",st->default_program,MAX_CHANNELS);\r
- IniPutKeyStringN(INI_SEC_TIMIDITY,"opt_ctl",st->opt_ctl,sizeof(st->opt_ctl));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_realtime_playing",&(st->opt_realtime_playing));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"reduce_voice_threshold",&(st->reduce_voice_threshold));\r
- IniPutKeyStringN(INI_SEC_TIMIDITY,"opt_playmode",st->opt_playmode,sizeof(st->opt_playmode));\r
- IniPutKeyStringN(INI_SEC_TIMIDITY,"OutputName",st->OutputName,sizeof(st->OutputName));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"voices",&(st->voices));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"auto_reduce_polyphony",&(st->auto_reduce_polyphony));\r
- IniPutKeyInt32(INI_SEC_TIMIDITY,"quietchannels",(int32 *)&(st->quietchannels));\r
- IniPutKeyStringN(INI_SEC_TIMIDITY,"opt_qsize",st->opt_qsize,sizeof(st->opt_qsize));\r
- IniPutKeyInt32(INI_SEC_TIMIDITY,"modify_release",&(st->modify_release));\r
- IniPutKeyInt32(INI_SEC_TIMIDITY,"allocate_cache_size",&(st->allocate_cache_size));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"output_rate",&(st->output_rate));\r
- if(st->output_rate == 0)\r
- st->output_rate = play_mode->rate;\r
- IniPutKeyStringN(INI_SEC_TIMIDITY,"output_text_code",st->output_text_code,sizeof(st->output_text_code));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"free_instruments_afterwards",&(st->free_instruments_afterwards));\r
- IniPutKeyStringN(INI_SEC_TIMIDITY,"out_wrd",st->opt_wrd,sizeof(st->opt_wrd));\r
-#if defined(__W32__) && defined(SMFCONV)\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"opt_rcpcv_dll",&(st->opt_rcpcv_dll));\r
-#endif\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"data_block_bits",&(st->data_block_bits));\r
- IniPutKeyInt(INI_SEC_TIMIDITY,"data_block_num",&(st->data_block_num));\r
- w32g_has_ini_file = 1;\r
-}\r
-\r
-// When Start TiMidity in WinMain()\r
-extern int SecondMode;\r
-static char S_IniFile[MAXPATH + 32];\r
-void FirstLoadIniFile(void)\r
-{\r
- char buffer[1024];\r
- char *prevIniFile = IniFile;\r
- char *p;\r
- IniFile = S_IniFile;\r
- if(GetModuleFileName(GetModuleHandle(0), buffer, MAXPATH))\r
- {\r
- if((p = pathsep_strrchr(buffer)) != NULL)\r
- {\r
- p++;\r
- *p = '\0';\r
- }\r
- else\r
- {\r
- buffer[0] = '.';\r
- buffer[1] = PATH_SEP;\r
- buffer[2] = '\0';\r
- }\r
- }\r
- else\r
- {\r
- buffer[0] = '.';\r
- buffer[1] = PATH_SEP;\r
- buffer[2] = '\0';\r
- }\r
- strncpy(IniFile, buffer, MAXPATH);\r
- IniFile[MAXPATH] = '\0';\r
- strcat(IniFile,"timpp32g.ini");\r
- IniGetKeyInt(INI_SEC_PLAYER,"SecondMode",&(SecondMode));\r
- IniFile = prevIniFile;\r
-}\r
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_surround_chorus",&(st->opt_surround_chorus));\r
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_tva_attack",&(st->opt_tva_attack));\r
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_tva_decay",&(st->opt_tva_decay));\r
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_tva_release",&(st->opt_tva_release));\r
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_delay_control",&(st->opt_delay_control));\r
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_resonance",&(st->opt_resonance));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_velocity_table",&(st->opt_velocity_table));\r
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_env_attack",&(st->opt_env_attack));\r
+ IniPutKeyInt(INI_SEC_TIMIDITY,"noise_sharp_type",&(st->noise_sharp_type));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_evil_mode",&(st->opt_evil_mode));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"adjust_panning_immediately",&(st->adjust_panning_immediately));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"fast_decay",&(st->fast_decay));
+#ifdef SUPPORT_SOUNDSPEC
+ IniPutKeyInt(INI_SEC_TIMIDITY,"view_soundspec_flag",&(st->view_soundspec_flag));
+ v_float = st->spectrogram_update_sec;
+ IniPutKeyFloat(INI_SEC_TIMIDITY,"spectrogram_update_sec",&v_float);
+#endif
+ IniPutKeyIntArray(INI_SEC_TIMIDITY,"default_program",st->default_program,MAX_CHANNELS);
+ IniPutKeyStringN(INI_SEC_TIMIDITY,"opt_ctl",st->opt_ctl,sizeof(st->opt_ctl));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_realtime_playing",&(st->opt_realtime_playing));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"reduce_voice_threshold",&(st->reduce_voice_threshold));
+ IniPutKeyStringN(INI_SEC_TIMIDITY,"opt_playmode",st->opt_playmode,sizeof(st->opt_playmode));
+ IniPutKeyStringN(INI_SEC_TIMIDITY,"OutputName",st->OutputName,sizeof(st->OutputName));
+ IniPutKeyStringN(INI_SEC_TIMIDITY,"OutputDirName",st->OutputDirName,sizeof(st->OutputDirName));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"auto_output_mode",&(st->auto_output_mode));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"voices",&(st->voices));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"auto_reduce_polyphony",&(st->auto_reduce_polyphony));
+ IniPutKeyInt32(INI_SEC_TIMIDITY,"quietchannels",(int32 *)&(st->quietchannels));
+ IniPutKeyStringN(INI_SEC_TIMIDITY,"opt_qsize",st->opt_qsize,sizeof(st->opt_qsize));
+ IniPutKeyInt32(INI_SEC_TIMIDITY,"modify_release",&(st->modify_release));
+ IniPutKeyInt32(INI_SEC_TIMIDITY,"allocate_cache_size",&(st->allocate_cache_size));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"output_rate",&(st->output_rate));
+ if(st->output_rate == 0)
+ st->output_rate = play_mode->rate;
+ IniPutKeyStringN(INI_SEC_TIMIDITY,"output_text_code",st->output_text_code,sizeof(st->output_text_code));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"free_instruments_afterwards",&(st->free_instruments_afterwards));
+ IniPutKeyStringN(INI_SEC_TIMIDITY,"out_wrd",st->opt_wrd,sizeof(st->opt_wrd));
+#if defined(__W32__) && defined(SMFCONV)
+ IniPutKeyInt(INI_SEC_TIMIDITY,"opt_rcpcv_dll",&(st->opt_rcpcv_dll));
+#endif
+ IniPutKeyInt(INI_SEC_TIMIDITY,"data_block_bits",&(st->data_block_bits));
+ IniPutKeyInt(INI_SEC_TIMIDITY,"data_block_num",&(st->data_block_num));
+ w32g_has_ini_file = 1;
+}
+
+// When Start TiMidity in WinMain()
+extern int SecondMode;
+static char S_IniFile[MAXPATH + 32];
+void FirstLoadIniFile(void)
+{
+ char buffer[1024];
+ char *prevIniFile = IniFile;
+ char *p;
+ IniFile = S_IniFile;
+ if(GetModuleFileName(GetModuleHandle(0), buffer, MAXPATH))
+ {
+ if((p = pathsep_strrchr(buffer)) != NULL)
+ {
+ p++;
+ *p = '\0';
+ }
+ else
+ {
+ buffer[0] = '.';
+ buffer[1] = PATH_SEP;
+ buffer[2] = '\0';
+ }
+ }
+ else
+ {
+ buffer[0] = '.';
+ buffer[1] = PATH_SEP;
+ buffer[2] = '\0';
+ }
+ strncpy(IniFile, buffer, MAXPATH);
+ IniFile[MAXPATH] = '\0';
+ strcat(IniFile,"timpp32g.ini");
+ IniGetKeyInt(INI_SEC_PLAYER,"SecondMode",&(SecondMode));
+ IniFile = prevIniFile;
+}
#include <strings.h>\r
#endif\r
//#include <dir.h>\r
+#ifdef AU_GOGO\r
+#include <musenc.h> /* for gogo */\r
+#endif\r
\r
#include "timidity.h"\r
#include "common.h"\r
#include "w32g_res.h"\r
#include "w32g_utl.h"\r
#include "w32g_pref.h"\r
+#include "gogo_a.h"\r
\r
/* TiMidity Win32GUI preference / PropertySheet */\r
\r
+extern void w32g_restart(void);\r
+extern void set_gogo_opts_use_commandline_options(char *commandline);\r
+\r
+extern void restore_voices(int save_voices);\r
+\r
volatile int PrefWndDoing = 0;\r
\r
static volatile int PrefWndSetOK = 0;\r
static int DlgOpenConfigFile(char *Filename, HWND hwnd);\r
static int DlgOpenOutputFile(char *Filename, HWND hwnd);\r
\r
+static int vorbisCofigDialog(void);\r
+static int gogoCofigDialog(void);\r
+\r
//#if defined(__CYGWIN32__) || defined(__MINGW32__)\r
#if 0 /* New version of mingw */\r
//#define pszTemplate u1.pszTemplate\r
psp[0].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_PLAYER);\r
psp[0].DUMMYUNIONNAME2.pszIcon = NULL;\r
#else\r
- psp[0].pszTemplate = MAKEINTRESOURCE(IDD_PREF_PLAYER);\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[0].pszTemplate = MAKEINTRESOURCE(IDD_PREF_PLAYER);\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[0].pszTemplate = MAKEINTRESOURCE(IDD_PREF_PLAYER_EN);\r
+ break;\r
+ }\r
psp[0].pszIcon = NULL;\r
#endif\r
#endif\r
psp[0].pfnDlgProc = PrefPlayerDialogProc;\r
- psp[0].pszTitle = (LPSTR)TEXT("Player");\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[0].pszTitle = (LPSTR)TEXT("\83v\83\8c\83C\83\84\81[");\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[0].pszTitle = (LPSTR)TEXT("Player");\r
+ break;\r
+ }\r
psp[0].lParam = 0;\r
psp[0].pfnCallback = NULL;\r
+\r
// TiMidity page1.\r
psp[1].dwSize = sizeof(PROPSHEETPAGE);\r
psp[1].dwFlags = PSP_USETITLE;\r
psp[1].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY1);\r
psp[1].DUMMYUNIONNAME2.pszIcon = NULL;\r
#else\r
- psp[1].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY1);\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[1].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY1);\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[1].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY1_EN);\r
+ break;\r
+ }\r
psp[1].pszIcon = NULL;\r
#endif\r
#endif\r
psp[1].pfnDlgProc = PrefTiMidity1DialogProc;\r
- psp[1].pszTitle = (LPSTR)TEXT("Effect");\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[1].pszTitle = (LPSTR)TEXT("\83G\83t\83F\83N\83g");\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[1].pszTitle = (LPSTR)TEXT("Effect");\r
+ break;\r
+ }\r
psp[1].lParam = 0;\r
psp[1].pfnCallback = NULL;\r
// TiMidity page2.\r
psp[2].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY2);\r
psp[2].DUMMYUNIONNAME2.pszIcon = NULL;\r
#else\r
- psp[2].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY2);\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[2].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY2);\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[2].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY2_EN);\r
+ break;\r
+ }\r
psp[2].pszIcon = NULL;\r
#endif\r
#endif\r
psp[2].pfnDlgProc = PrefTiMidity2DialogProc;\r
- psp[2].pszTitle = (LPSTR)TEXT("Misc");\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[2].pszTitle = (LPSTR)TEXT("\82»\82Ì\91¼");\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[2].pszTitle = (LPSTR)TEXT("Misc");\r
+ break;\r
+ }\r
psp[2].lParam = 0;\r
psp[2].pfnCallback = NULL;\r
// TiMidity page3.\r
psp[3].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY3);\r
psp[3].DUMMYUNIONNAME2.pszIcon = NULL;\r
#else\r
- psp[3].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY3);\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[3].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY3);\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[3].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY3_EN);\r
+ break;\r
+ }\r
psp[3].pszIcon = NULL;\r
#endif\r
#endif\r
psp[3].pfnDlgProc = PrefTiMidity3DialogProc;\r
- psp[3].pszTitle = (LPSTR)TEXT("Output");\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[3].pszTitle = (LPSTR)TEXT("\8fo\97Í");\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[3].pszTitle = (LPSTR)TEXT("Output");\r
+ break;\r
+ }\r
psp[3].lParam = 0;\r
psp[3].pfnCallback = NULL;\r
// TiMidity page4.\r
psp[4].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY4);\r
psp[4].DUMMYUNIONNAME2.pszIcon = NULL;\r
#else\r
- psp[4].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY4);\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[4].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY4);\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[4].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY4_EN);\r
+ break;\r
+ }\r
psp[4].pszIcon = NULL;\r
#endif\r
#endif\r
psp[4].pfnDlgProc = PrefTiMidity4DialogProc;\r
- psp[4].pszTitle = (LPSTR)TEXT("Channel");\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psp[4].pszTitle = (LPSTR)TEXT("\83`\83\83\83\93\83l\83\8b");\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psp[4].pszTitle = (LPSTR)TEXT("Channel");\r
+ break;\r
+ }\r
psp[4].lParam = 0;\r
psp[4].pfnCallback = NULL;\r
// Propsheetheader\r
psh.dwFlags = PSH_USEHICON | PSH_PROPSHEETPAGE | PSH_USECALLBACK;\r
psh.hwndParent = hwnd;\r
psh.hInstance = hInst;\r
- psh.pszCaption = (LPSTR)TEXT("TiMidity Win32GUI Preference");\r
+ switch(PlayerLanguage) { // \8c¾\8cê\90Ø\91Ö\r
+ case LANGUAGE_JAPANESE:\r
+ psh.pszCaption = (LPSTR)TEXT("TiMidity++ Win32GUI - \8fÚ\8d×\90Ý\92è");\r
+ break;\r
+ default:\r
+ case LANGUAGE_ENGLISH:\r
+ psh.pszCaption = (LPSTR)TEXT("TiMidity++ Win32GUI - Preference");\r
+ break;\r
+ }\r
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);\r
#if defined (__cplusplus)\r
psh.nStartPage = 0;\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOUNIQ,flag));\r
SettingCtlFlag(st_temp, 'R',\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOREFINE,flag));\r
+ SettingCtlFlag(st_temp, 'a',\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOSTART,flag));\r
SettingCtlFlag(st_temp, 'C',\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_CONTINUE,flag));\r
SettingCtlFlag(st_temp, 'd',\r
!DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_DRAG_START,flag));\r
SettingCtlFlag(st_temp, 'l',\r
!DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_LOOPING,flag));\r
+ SettingCtlFlag(st_temp, 'r',\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_RANDOM,flag));\r
}\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_SEACHDIRRECURSIVE,\r
sp_temp->SeachDirRecursive);\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_DOCWNDINDEPENDENT,\r
sp_temp->DocWndIndependent);\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_DOCWNDAUTOPOPUP,\r
+ sp_temp->DocWndAutoPopup);\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_INIFILE_AUTOSAVE,\r
sp_temp->IniFileAutoSave);\r
SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);\r
strchr(st_temp->opt_ctl + 1, 'u'));\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOREFINE,\r
strchr(st_temp->opt_ctl + 1, 'R'));\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOSTART,\r
+ strchr(st_temp->opt_ctl + 1, 'a'));\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_CONTINUE,\r
strchr(st_temp->opt_ctl + 1, 'C'));\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_DRAG_START,\r
!strchr(st_temp->opt_ctl + 1, 'd'));\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_LOOPING,\r
!strchr(st_temp->opt_ctl + 1, 'l'));\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_RANDOM,\r
+ strchr(st_temp->opt_ctl + 1, 'r'));\r
\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_SEACHDIRRECURSIVE,\r
sp_temp->SeachDirRecursive);\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_DOCWNDINDEPENDENT,\r
sp_temp->DocWndIndependent);\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_DOCWNDAUTOPOPUP,\r
+ sp_temp->DocWndAutoPopup);\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_INIFILE_AUTOSAVE,\r
sp_temp->IniFileAutoSave);\r
break;\r
// CHORUS\r
if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS,BM_GETCHECK,0,0)){\r
if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS_LEVEL,BM_GETCHECK,0,0)){\r
- st_temp->opt_chorus_control = -GetDlgItemInt(hwnd,IDC_EDIT_CHORUS,NULL,TRUE);\r
+ st_temp->opt_chorus_control = -(int)GetDlgItemInt(hwnd,IDC_EDIT_CHORUS,NULL,TRUE);\r
} else {\r
st_temp->opt_chorus_control = 1;\r
}\r
if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_GLOBAL_REVERB,BM_GETCHECK,0,0)){\r
st_temp->opt_reverb_control = 2;\r
} else if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_GETCHECK,0,0)){\r
- st_temp->opt_reverb_control = -GetDlgItemInt(hwnd,IDC_EDIT_REVERB,NULL,TRUE);\r
+ st_temp->opt_reverb_control = -(int)GetDlgItemInt(hwnd,IDC_EDIT_REVERB,NULL,TRUE);\r
} else {\r
st_temp->opt_reverb_control = 1;\r
}\r
}\r
// NOISESHARPING\r
st_temp->noise_sharp_type = GetDlgItemInt(hwnd,IDC_EDIT_NOISESHARPING,NULL,FALSE);\r
+ st_temp->opt_env_attack = GetDlgItemInt(hwnd,IDC_EDIT_ENV_ATTACK,NULL,FALSE);\r
+ st_temp->opt_velocity_table = GetDlgItemInt(hwnd,IDC_EDIT_VELOCITYTABLE,NULL,FALSE);\r
// Misc\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_MODWHEEL,st_temp->opt_modulation_wheel);\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_PORTAMENTO,st_temp->opt_portamento);\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_OVOICE,st_temp->opt_overlap_voice_allow);\r
DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TRACETEXT,st_temp->opt_trace_text_meta_event);\r
st_temp->modify_release = GetDlgItemInt(hwnd,IDC_EDIT_MODIFY_RELEASE,NULL,FALSE);\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TVAA,st_temp->opt_tva_attack);\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TVAD,st_temp->opt_tva_decay);\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TVAR,st_temp->opt_tva_release);\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_PDELAY,st_temp->opt_delay_control);\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_RESONANCE,st_temp->opt_resonance);\r
+ DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_SRCHORUS,st_temp->opt_surround_chorus);\r
SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);\r
return TRUE;\r
case PSN_RESET:\r
SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_DELAY,0);\r
// NOISESHARPING\r
SetDlgItemInt(hwnd,IDC_EDIT_NOISESHARPING,st_temp->noise_sharp_type,TRUE);\r
+ SetDlgItemInt(hwnd,IDC_EDIT_ENV_ATTACK,st_temp->opt_env_attack,TRUE);\r
+ SetDlgItemInt(hwnd,IDC_EDIT_VELOCITYTABLE,st_temp->opt_velocity_table,TRUE);\r
// Misc\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_MODWHEEL,st_temp->opt_modulation_wheel);\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_PORTAMENTO,st_temp->opt_portamento);\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CHPRESS,st_temp->opt_channel_pressure);\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_OVOICE,st_temp->opt_overlap_voice_allow);\r
DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TRACETEXT,st_temp->opt_trace_text_meta_event);\r
- SetDlgItemInt(hwnd,IDC_EDIT_MODIFY_RELEASE,st_temp->modify_release,TRUE);\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TVAA,st_temp->opt_tva_attack);\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TVAD,st_temp->opt_tva_decay);\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TVAR,st_temp->opt_tva_release);\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_PDELAY,st_temp->opt_delay_control);\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_RESONANCE,st_temp->opt_resonance);\r
+ DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_SRCHORUS,st_temp->opt_surround_chorus);\r
+ SetDlgItemInt(hwnd,IDC_EDIT_MODIFY_RELEASE,st_temp->modify_release,TRUE);\r
break;\r
default:\r
return FALSE;\r
}\r
+ break;\r
case WM_SIZE:\r
return FALSE;\r
case WM_CLOSE:\r
default:\r
return FALSE;\r
}\r
+ break;\r
case WM_SIZE:\r
return FALSE;\r
case WM_CLOSE:\r
return FALSE;\r
}\r
\r
+\r
+\r
+// IDC_COMBO_OUTPUT_MODE\r
+static char *cb_info_IDC_COMBO_OUTPUT_MODE[]= {\r
+ "\88È\89º\82Ì\83t\83@\83C\83\8b\82É\8fo\97Í",(char *)0,\r
+ "\83t\83@\83C\83\8b\96¼\82ð\8e©\93®\82Å\8c\88\92è\82µ\81A\83\\81[\83X\82Æ\93¯\82¶\83t\83H\83\8b\83_\82É\8fo\97Í",(char *)1,\r
+ "\83t\83@\83C\83\8b\96¼\82ð\8e©\93®\82Å\8c\88\92è\82µ\81A\88È\89º\82Ì\83t\83H\83\8b\83_\82É\8fo\97Í",(char *)2,\r
+ "\83t\83@\83C\83\8b\96¼\82ð\8e©\93®\82Å\8c\88\92è\82µ\81A\88È\89º\82Ì\83t\83H\83\8b\83_\82É\8fo\97Í(\83t\83H\83\8b\83_\96¼\95t\82«)",(char *)3,\r
+ NULL\r
+};\r
+\r
static BOOL APIENTRY\r
PrefTiMidity3DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)\r
{\r
switch (uMess){\r
case WM_INITDIALOG:\r
- SendDlgItemMessage(hwnd,IDC_EDIT_OUTPUT_FILE,\r
- WM_SETFONT,(WPARAM)hFontPrefWnd,MAKELPARAM(TRUE,0));\r
+ {\r
+ int i;\r
+ SendDlgItemMessage(hwnd,IDC_EDIT_OUTPUT_FILE,WM_SETFONT,(WPARAM)hFontPrefWnd,MAKELPARAM(TRUE,0));\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_RESETCONTENT,(WPARAM)0,(LPARAM)0);\r
+ for(i=0;play_mode_list[i]!=0;i++){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)play_mode_list[i]->id_name);\r
+ }\r
+ for(i=0;cb_info_IDC_COMBO_OUTPUT_MODE[i];i+=2){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_MODE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_OUTPUT_MODE[i]);\r
+ }\r
+ {\r
+ int cb_num;\r
+ for(cb_num=0;(int)cb_info_IDC_COMBO_OUTPUT_MODE[cb_num];cb_num+=2){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_MODE,CB_SETCURSEL,(WPARAM)0,(LPARAM)0);\r
+ if(st_temp->auto_output_mode==(int)cb_info_IDC_COMBO_OUTPUT_MODE[cb_num+1]){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_MODE,CB_SETCURSEL,(WPARAM)cb_num/2,(LPARAM)0);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
break;\r
case WM_COMMAND:\r
switch (LOWORD(wParam)) {\r
{\r
char filename[MAXPATH+1];\r
DWORD res;\r
+ if(st_temp->auto_output_mode>0){\r
+ break;\r
+ }\r
GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,filename,(WPARAM)MAX_PATH);\r
res = GetFileAttributes(filename);\r
if(res!=0xFFFFFFFF && !(res & FILE_ATTRIBUTE_DIRECTORY)){\r
SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,0,0);\r
}\r
break;\r
+ case IDC_BUTTON_OUTPUT_OPTIONS:\r
+ {\r
+ int num;\r
+ num = SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_GETCURSEL,(WPARAM)0,(LPARAM)0);\r
+ if(num>=0){\r
+ st_temp->opt_playmode[0]=play_mode_list[num]->id_character;\r
+ } else {\r
+ st_temp->opt_playmode[0]='d';\r
+ }\r
+ if(st_temp->opt_playmode[0]=='v'){\r
+ vorbisConfigDialog();\r
+ } else if(st_temp->opt_playmode[0]=='g'){\r
+ gogoConfigDialog();\r
+ }\r
+ }\r
+ break;\r
+ case IDC_COMBO_OUTPUT_MODE:\r
+ {\r
+ int cb_num1, cb_num2;\r
+ cb_num1 = SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_MODE,CB_GETCURSEL,(WPARAM)0,(LPARAM)0);\r
+ for(cb_num2=0;(int)cb_info_IDC_COMBO_OUTPUT_MODE[cb_num2];cb_num2+=2){\r
+ if(cb_num1*2==cb_num2){\r
+ st_temp->auto_output_mode = (int)cb_info_IDC_COMBO_OUTPUT_MODE[cb_num2+1];\r
+ break;\r
+ }\r
+ }\r
+ if(st_temp->auto_output_mode>0){\r
+ SendDlgItemMessage(hwnd,IDC_BUTTON_OUTPUT_FILE,WM_SETTEXT,0,(LPARAM)"\8fo\97Í\90æ");\r
+ SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputDirName);\r
+ } else {\r
+ SendDlgItemMessage(hwnd,IDC_BUTTON_OUTPUT_FILE,WM_SETTEXT,0,(LPARAM)"\8fo\97Í\83t\83@\83C\83\8b");\r
+ SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputName);\r
+ }\r
+ }\r
+ break;\r
default:\r
break;\r
}\r
switch (((NMHDR FAR *) lParam)->code){\r
case PSN_KILLACTIVE: {\r
int i = 0;\r
- if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_RIFF_WAVE,BM_GETCHECK,0,0)){\r
- st_temp->opt_playmode[i] = 'w';\r
- } else\r
- if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_LIST_MIDI_EVENT,BM_GETCHECK,0,0)){\r
- st_temp->opt_playmode[i] = 'l';\r
- } else\r
- if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_RAW_WAVEFORM,BM_GETCHECK,0,0)){\r
- st_temp->opt_playmode[i] = 'r';\r
- } else\r
- if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_SUN_AUDIO,BM_GETCHECK,0,0)){\r
- st_temp->opt_playmode[i] = 'u';\r
- } else\r
- if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_AIFF,BM_GETCHECK,0,0)){\r
- st_temp->opt_playmode[i] = 'a';\r
- } else\r
- st_temp->opt_playmode[i] = 'd';\r
+ int num;\r
+ num = SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_GETCURSEL,(WPARAM)0,(LPARAM)0);\r
+ if(num>=0){\r
+ st_temp->opt_playmode[i]=play_mode_list[num]->id_character;\r
+ } else {\r
+ st_temp->opt_playmode[i]='d';\r
+ }\r
i++;\r
if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_GETCHECK,0,0))\r
st_temp->opt_playmode[i++] = 'U';\r
st_temp->opt_playmode[i++] = 'M';\r
st_temp->opt_playmode[i] = '\0';\r
st_temp->output_rate = GetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,NULL,FALSE);\r
- GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputName,(WPARAM)sizeof(st_temp->OutputName));\r
+ if(st_temp->auto_output_mode==0)\r
+ GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputName,(WPARAM)sizeof(st_temp->OutputName));\r
+ else\r
+ GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputDirName,(WPARAM)sizeof(st_temp->OutputDirName));\r
+\r
SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);\r
}\r
return TRUE;\r
break;\r
case PSN_SETACTIVE: {\r
char *opt;\r
- switch(st_temp->opt_playmode[0]){\r
- case 'w':\r
- CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF,\r
- IDC_RADIOBUTTON_RIFF_WAVE);\r
- break;\r
- case 'r':\r
- CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF,\r
- IDC_RADIOBUTTON_RAW_WAVEFORM);\r
- break;\r
- case 'u':\r
- CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF,\r
- IDC_RADIOBUTTON_SUN_AUDIO);\r
- break;\r
- case 'a':\r
- CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF,\r
- IDC_RADIOBUTTON_AIFF);\r
- break;\r
- case 'l':\r
- CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF,\r
- IDC_RADIOBUTTON_LIST_MIDI_EVENT);\r
- break;\r
- case 'd':\r
- default:\r
- CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF,\r
- IDC_RADIOBUTTON_WIN32AUDIO);\r
+ int num = 0;\r
+ int i;\r
+ for(i=0;play_mode_list[i]!=0;i++){\r
+ if(st_temp->opt_playmode[0]==play_mode_list[i]->id_character){\r
+ num = i;\r
break;\r
}\r
+ }\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_SETCURSEL,(WPARAM)num,(LPARAM)0);\r
+ if(st_temp->auto_output_mode==0){\r
if(st_temp->OutputName[0]=='\0')\r
SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,TEXT("output.wav"));\r
else\r
SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,TEXT(st_temp->OutputName));\r
+ } else\r
+ SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputDirName);\r
\r
opt = st_temp->opt_playmode + 1;\r
if(strchr(opt, 'U')){\r
default:\r
return FALSE;\r
}\r
+ break;\r
case WM_SIZE:\r
return FALSE;\r
case WM_CLOSE:\r
SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr);\r
}\r
break;\r
+ case IDC_BUTTON_REVERSE:\r
+ {\r
+ NMHDR nmhdr;\r
+ nmhdr.code = PSN_KILLACTIVE;\r
+ SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr);\r
+ switch(pref_channel_mode){\r
+ case PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK:\r
+ st_temp->default_drumchannel_mask = ~st_temp->default_drumchannel_mask;\r
+ break;\r
+ case PREF_CHANNEL_MODE_QUIET_CHANNEL:\r
+ st_temp->quietchannels = ~st_temp->quietchannels;\r
+ break;\r
+ default:\r
+ case PREF_CHANNEL_MODE_DRUM_CHANNEL:\r
+ st_temp->default_drumchannels = ~st_temp->default_drumchannels;\r
+ break;\r
+ }\r
+ nmhdr.code = PSN_SETACTIVE;\r
+ SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr);\r
+ }\r
+ break;\r
default:\r
break;\r
}\r
default:\r
return FALSE;\r
}\r
+ break;\r
case WM_SIZE:\r
return FALSE;\r
case WM_CLOSE:\r
return -1;\r
}\r
}\r
+\r
+volatile int w32g_interactive_id3_tag_set = 0;\r
+int w32g_gogo_id3_tag_dialog(void)\r
+{\r
+ return 0;\r
+}\r
+\r
+\r
+#ifdef AU_GOGO\r
+///////////////////////////////////////////////////////////////////////\r
+//\r
+// gogo ConfigDialog\r
+//\r
+///////////////////////////////////////////////////////////////////////\r
+\r
+// id \82Ì\83R\83\93\83{\83{\83b\83N\83X\82Ì\8fî\95ñ\82Ì\92è\8b`\r
+#define CB_INFO_TYPE1_BEGIN(id) static int cb_info_ ## id [] = {\r
+#define CB_INFO_TYPE1_END };\r
+#define CB_INFO_TYPE2_BEGIN(id) static char * cb_info_ ## id [] = {\r
+#define CB_INFO_TYPE2_END };\r
+\r
+// cb_info_type1_\82h\82c cb_info_type2_\82h\82c \82Æ\82¢\82¤\82Ó\82¤\82É\82È\82é\81B\r
+\r
+// IDC_COMBO_OUTPUT_FORMAT\r
+CB_INFO_TYPE2_BEGIN(IDC_COMBO_OUTPUT_FORMAT)\r
+ "MP3+TAG",(char *)MC_OUTPUT_NORMAL,\r
+ "RIFF/WAVE",(char *)MC_OUTPUT_RIFF_WAVE,\r
+ "RIFF/RMP",(char *)MC_OUTPUT_RIFF_RMP,\r
+ NULL\r
+CB_INFO_TYPE2_END\r
+\r
+// IDC_COMBO_MPEG1_AUDIO_BITRATE\r
+CB_INFO_TYPE1_BEGIN(IDC_COMBO_MPEG1_AUDIO_BITRATE)\r
+ 32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1\r
+CB_INFO_TYPE1_END\r
+\r
+// IDC_COMBO_MPEG2_AUDIO_BITRATE\r
+CB_INFO_TYPE1_BEGIN(IDC_COMBO_MPEG2_AUDIO_BITRATE)\r
+ 8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1\r
+CB_INFO_TYPE1_END\r
+\r
+// IDC_COMBO_ENCODE_MODE\r
+CB_INFO_TYPE2_BEGIN(IDC_COMBO_ENCODE_MODE)\r
+ "monoral",(char *)MC_MODE_MONO,\r
+ "stereo",(char *)MC_MODE_STEREO,\r
+ "joint stereo",(char *)MC_MODE_JOINT,\r
+ "mid/side stereo",(char *)MC_MODE_MSSTEREO,\r
+ "dual channel",(char *)MC_MODE_DUALCHANNEL,\r
+ NULL\r
+CB_INFO_TYPE2_END\r
+\r
+// IDC_COMBO_EMPHASIS_TYPE\r
+CB_INFO_TYPE2_BEGIN(IDC_COMBO_EMPHASIS_TYPE)\r
+ "NONE",(char *)MC_EMP_NONE,\r
+ "50/15ms (normal CD-DA emphasis)",(char *)MC_EMP_5015MS,\r
+ "CCITT",(char *)MC_EMP_CCITT,\r
+ NULL\r
+CB_INFO_TYPE2_END\r
+\r
+// IDC_COMBO_VBR_BITRATE_LOW\r
+CB_INFO_TYPE1_BEGIN(IDC_COMBO_VBR_BITRATE_LOW)\r
+ 32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1\r
+CB_INFO_TYPE1_END\r
+\r
+// IDC_COMBO_VBR_BITRATE_HIGH\r
+CB_INFO_TYPE1_BEGIN(IDC_COMBO_VBR_BITRATE_HIGH)\r
+ 32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1\r
+CB_INFO_TYPE1_END\r
+\r
+// IDC_COMBO_VBR\r
+CB_INFO_TYPE2_BEGIN(IDC_COMBO_VBR)\r
+ "Quality 0 (320 - 32 kbps)",(char *)0,\r
+ "Quality 1 (256 - 32 kbps)",(char *)1,\r
+ "Quality 2 (256 - 32 kbps)",(char *)2,\r
+ "Quality 3 (256 - 32 kbps)",(char *)3,\r
+ "Quality 4 (256 - 32 kbps)",(char *)4,\r
+ "Quality 5 (224 - 32 kbps)",(char *)5,\r
+ "Quality 6 (192 - 32 kbps)",(char *)6,\r
+ "Quality 7 (160 - 32 kbps)",(char *)7,\r
+ "Quality 8 (128 - 32 kbps)",(char *)8,\r
+ "Quality 9 (128 - 32 kbps)",(char *)9,\r
+ NULL\r
+CB_INFO_TYPE2_END\r
+\r
+// id \82Ì\83R\83\93\83{\83{\83b\83N\83X\82ð\91I\91ð\82Ì\90Ý\92è\82·\82é\81B\r
+#define CB_SETCURSEL_TYPE1(id) \\r
+{ \\r
+ int cb_num; \\r
+ for(cb_num=0;(int)cb_info_ ## id [cb_num]>=0;cb_num++){ \\r
+ SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)0,(LPARAM)0); \\r
+ if(gogo_ConfigDialogInfo.opt ## id == (int) cb_info_ ## id [cb_num]){ \\r
+ SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)cb_num,(LPARAM)0); \\r
+ break; \\r
+ } \\r
+ } \\r
+}\r
+#define CB_SETCURSEL_TYPE2(id) \\r
+{ \\r
+ int cb_num; \\r
+ for(cb_num=0;(int)cb_info_ ## id [cb_num];cb_num+=2){ \\r
+ SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)0,(LPARAM)0); \\r
+ if(gogo_ConfigDialogInfo.opt ## id == (int) cb_info_ ## id [cb_num+1]){ \\r
+ SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)cb_num/2,(LPARAM)0); \\r
+ break; \\r
+ } \\r
+ } \\r
+}\r
+// id \82Ì\83R\83\93\83{\83{\83b\83N\83X\82Ì\91I\91ð\82ð\95Ï\90\94\82É\91ã\93ü\82·\82é\81B\r
+#define CB_GETCURSEL_TYPE1(id) \\r
+{ \\r
+ int cb_num1, cb_num2; \\r
+ cb_num1 = SendDlgItemMessage(hwnd,id,CB_GETCURSEL,(WPARAM)0,(LPARAM)0); \\r
+ for(cb_num2=0;(int)cb_info_ ## id [cb_num2]>=0;cb_num2++) \\r
+ if(cb_num1==cb_num2){ \\r
+ gogo_ConfigDialogInfo.opt ## id = (int)cb_info_ ## id [cb_num2]; \\r
+ break; \\r
+ } \\r
+}\r
+#define CB_GETCURSEL_TYPE2(id) \\r
+{ \\r
+ int cb_num1, cb_num2; \\r
+ cb_num1 = SendDlgItemMessage(hwnd,id,CB_GETCURSEL,(WPARAM)0,(LPARAM)0); \\r
+ for(cb_num2=0;(int)cb_info_ ## id [cb_num2];cb_num2+=2) \\r
+ if(cb_num1*2==cb_num2){ \\r
+ gogo_ConfigDialogInfo.opt ## id = (int)cb_info_ ## id [cb_num2+1]; \\r
+ break; \\r
+ } \\r
+}\r
+// \83`\83F\83b\83N\82³\82ê\82Ä\82¢\82é\82©\81B\r
+#define IS_CHECK(id) SendDlgItemMessage(hwnd,id,BM_GETCHECK,0,0)\r
+// \83`\83F\83b\83N\82·\82é\81B\r
+#define CHECK(id) SendDlgItemMessage(hwnd,id,BM_SETCHECK,1,0)\r
+// \83`\83F\83b\83N\82ð\82Í\82¸\82·\81B\r
+#define UNCHECK(id) SendDlgItemMessage(hwnd,id,BM_SETCHECK,0,0)\r
+// id \82Ì\83`\83F\83b\83N\83{\83b\83N\83X\82ð\90Ý\92è\82·\82é\81B\r
+#define CHECKBOX_SET(id) \\r
+ if(gogo_ConfigDialogInfo.opt ## id>0) \\r
+ SendDlgItemMessage(hwnd,id,BM_SETCHECK,1,0); \\r
+ else \\r
+ SendDlgItemMessage(hwnd,id,BM_SETCHECK,0,0); \\r
+// id \82Ì\83`\83F\83b\83N\83{\83b\83N\83X\82ð\95Ï\90\94\82É\91ã\93ü\82·\82é\81B\r
+#define CHECKBOX_GET(id) \\r
+ if(SendDlgItemMessage(hwnd,id,BM_GETCHECK,0,0)) \\r
+ gogo_ConfigDialogInfo.opt ## id = 1; \\r
+ else \\r
+ gogo_ConfigDialogInfo.opt ## id = 0; \\r
+// id \82Ì\83G\83f\83B\83b\83g\82ð\90Ý\92è\82·\82é\81B\r
+#define EDIT_SET(id) SendDlgItemMessage(hwnd,id,WM_SETTEXT,0,(LPARAM)gogo_ConfigDialogInfo.opt ## id);\r
+// id \82Ì\83G\83f\83B\83b\83g\82ð\95Ï\90\94\82É\91ã\93ü\82·\82é\81B\r
+#define EDIT_GET(id,size) SendDlgItemMessage(hwnd,id,WM_GETTEXT,(WPARAM)size,(LPARAM)gogo_ConfigDialogInfo.opt ## id);\r
+#define EDIT_GET_RANGE(id,size,min,max) \\r
+{ \\r
+ char tmpbuf[64]; \\r
+ int value; \\r
+ SendDlgItemMessage(hwnd,id,WM_GETTEXT,(WPARAM)size,(LPARAM)gogo_ConfigDialogInfo.opt ## id); \\r
+ value = atoi((char *)gogo_ConfigDialogInfo.opt ## id); \\r
+ if(value<min) value = min; \\r
+ if(value>max) value = max; \\r
+ sprintf(tmpbuf,"%d",value); \\r
+ strncpy((char *)gogo_ConfigDialogInfo.opt ## id,tmpbuf,size); \\r
+ (gogo_ConfigDialogInfo.opt ## id)[size] = '\0'; \\r
+}\r
+// \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø\89»\r
+#define ENABLE_CONTROL(id) EnableWindow(GetDlgItem(hwnd,id),TRUE);\r
+// \83R\83\93\83g\83\8d\81[\83\8b\82Ì\96³\8cø\89»\r
+#define DISABLE_CONTROL(id) EnableWindow(GetDlgItem(hwnd,id),FALSE);\r
+\r
+static void gogoConfigDialogProcControlEnableDisable(HWND hwnd);\r
+static void gogoConfigDialogProcControlApply(HWND hwnd);\r
+static void gogoConfigDialogProcControlReset(HWND hwnd);\r
+static int gogo_ConfigDialogInfoLock();\r
+static int gogo_ConfigDialogInfoUnLock();\r
+static HANDLE hgogoConfigDailog = NULL;\r
+static BOOL APIENTRY gogoConfigDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)\r
+{\r
+ char buff[1024];\r
+ switch (uMess){\r
+ case WM_INITDIALOG:\r
+ {\r
+ int i;\r
+ // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8f\89\8aú\89»\r
+ for(i=0;cb_info_IDC_COMBO_OUTPUT_FORMAT[i];i+=2){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_FORMAT,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_OUTPUT_FORMAT[i]);\r
+ }\r
+ for(i=0;cb_info_IDC_COMBO_MPEG1_AUDIO_BITRATE[i]>=0;i++){\r
+ sprintf(buff,"%d kbit/sec",cb_info_IDC_COMBO_MPEG1_AUDIO_BITRATE[i]);\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_MPEG1_AUDIO_BITRATE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)buff);\r
+ }\r
+ for(i=0;cb_info_IDC_COMBO_MPEG2_AUDIO_BITRATE[i]>=0;i++){\r
+ sprintf(buff,"%d kbit/sec",cb_info_IDC_COMBO_MPEG2_AUDIO_BITRATE[i]);\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_MPEG2_AUDIO_BITRATE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)buff);\r
+ }\r
+ for(i=0;cb_info_IDC_COMBO_ENCODE_MODE[i];i+=2){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_ENCODE_MODE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_ENCODE_MODE[i]);\r
+ }\r
+ for(i=0;cb_info_IDC_COMBO_EMPHASIS_TYPE[i];i+=2){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_EMPHASIS_TYPE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_EMPHASIS_TYPE[i]);\r
+ }\r
+ for(i=0;cb_info_IDC_COMBO_VBR_BITRATE_LOW[i]>=0;i++){\r
+ sprintf(buff,"%d kbit/sec",cb_info_IDC_COMBO_VBR_BITRATE_LOW[i]);\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_VBR_BITRATE_LOW,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)buff);\r
+ }\r
+ for(i=0;cb_info_IDC_COMBO_VBR_BITRATE_HIGH[i]>=0;i++){\r
+ sprintf(buff,"%d kbit/sec",cb_info_IDC_COMBO_VBR_BITRATE_HIGH[i]);\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_VBR_BITRATE_HIGH,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)buff);\r
+ }\r
+ for(i=0;cb_info_IDC_COMBO_VBR[i];i+=2){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_VBR,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_VBR[i]);\r
+ }\r
+ // \90Ý\92è\r
+ gogoConfigDialogProcControlReset(hwnd);\r
+ }\r
+ break;\r
+ case WM_COMMAND:\r
+ switch (LOWORD(wParam)) {\r
+ case IDCLOSE:\r
+ SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);\r
+ break;\r
+ case IDOK:\r
+ gogoConfigDialogProcControlApply(hwnd);\r
+ SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);\r
+ break;\r
+ case IDCANCEL:\r
+ SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);\r
+ break;\r
+ case IDC_BUTTON_APPLY:\r
+ gogoConfigDialogProcControlApply(hwnd);\r
+ break;\r
+ case IDC_CHECK_DEFAULT:\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_CHECK_COMMANDLINE_OPTS:\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_EDIT_COMMANDLINE_OPTION:\r
+ break;\r
+ case IDC_CHECK_OUTPUT_FORMAT:\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_COMBO_OUTPUT_FORMAT:\r
+ break;\r
+ case IDC_CHECK_MPEG1AUDIOBITRATE:\r
+ if(IS_CHECK(IDC_CHECK_MPEG1AUDIOBITRATE)){\r
+ CHECK(IDC_CHECK_MPEG2AUDIOBITRATE);\r
+ UNCHECK(IDC_CHECK_VBR);\r
+ UNCHECK(IDC_CHECK_VBR_BITRATE);\r
+ } else {\r
+ UNCHECK(IDC_CHECK_MPEG2AUDIOBITRATE);\r
+ }\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_COMBO_MPEG1_AUDIO_BITRATE:\r
+ break;\r
+ case IDC_CHECK_MPEG2AUDIOBITRATE:\r
+ if(IS_CHECK(IDC_CHECK_MPEG2AUDIOBITRATE)){\r
+ CHECK(IDC_CHECK_MPEG1AUDIOBITRATE);\r
+ UNCHECK(IDC_CHECK_VBR);\r
+ UNCHECK(IDC_CHECK_VBR_BITRATE);\r
+ } else {\r
+ UNCHECK(IDC_CHECK_MPEG1AUDIOBITRATE);\r
+ }\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_COMBO_MPEG2_AUDIO_BITRATE:\r
+ break;\r
+ case IDC_CHECK_ENHANCED_LOW_PASS_FILTER:\r
+ if(IS_CHECK(IDC_CHECK_ENHANCED_LOW_PASS_FILTER)){\r
+ UNCHECK(IDC_CHECK_16KHZ_LOW_PASS_FILTER);\r
+ }\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_EDIT_LPF_PARA1:\r
+ break;\r
+ case IDC_EDIT_LPF_PARA2:\r
+ break;\r
+ case IDC_CHECK_ENCODE_MODE:\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_COMBO_ENCODE_MODE:\r
+ break;\r
+ case IDC_CHECK_EMPHASIS_TYPE:\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_COMBO_EMPHASIS_TYPE:\r
+ break;\r
+ case IDC_CHECK_OUTFREQ:\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_EDIT_OUTFREQ:\r
+ break;\r
+ case IDC_CHECK_MSTHRESHOLD:\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_EDIT_MSTHRESHOLD_THRESHOLD:\r
+ break;\r
+ case IDC_EDIT_MSTHRESHOLD_MSPOWER:\r
+ break;\r
+ case IDC_CHECK_USE_CPU_OPTS:\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_CHECK_CPUMMX:\r
+ break;\r
+ case IDC_CHECK_CPUSSE:\r
+ break;\r
+ case IDC_CHECK_CPU3DNOW:\r
+ break;\r
+ case IDC_CHECK_CPUE3DNOW:\r
+ break;\r
+ case IDC_CHECK_VBR:\r
+ if(IS_CHECK(IDC_CHECK_VBR)){\r
+ UNCHECK(IDC_COMBO_MPEG1_AUDIO_BITRATE);\r
+ UNCHECK(IDC_COMBO_MPEG2_AUDIO_BITRATE);\r
+ }\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_COMBO_VBR:\r
+ break;\r
+ case IDC_CHECK_VBR_BITRATE:\r
+ if(IS_CHECK(IDC_CHECK_VBR_BITRATE)){\r
+ CHECK(IDC_CHECK_VBR);\r
+ UNCHECK(IDC_COMBO_MPEG1_AUDIO_BITRATE);\r
+ UNCHECK(IDC_COMBO_MPEG2_AUDIO_BITRATE);\r
+ }\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_COMBO_VBR_BITRATE_LOW:\r
+ break;\r
+ case IDC_COMBO_VBR_BITRATE_HIGH:\r
+ break;\r
+ case IDC_CHECK_USEPSY:\r
+ break;\r
+ case IDC_CHECK_VERIFY:\r
+ break;\r
+ case IDC_CHECK_16KHZ_LOW_PASS_FILTER:\r
+ if(IS_CHECK(IDC_CHECK_16KHZ_LOW_PASS_FILTER)){\r
+ UNCHECK(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);\r
+ }\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ break;\r
+ case WM_NOTIFY:\r
+ break;\r
+ case WM_SIZE:\r
+ return FALSE;\r
+ case WM_CLOSE:\r
+ gogo_ConfigDialogInfoSaveINI();\r
+//MessageBox(NULL,"CLOSE","CLOSE",MB_OK);\r
+ DestroyWindow(hwnd);\r
+ break;\r
+ case WM_DESTROY:\r
+ hgogoConfigDailog = NULL;\r
+//MessageBox(NULL,"DESTROY","DESTROY",MB_OK);\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ return FALSE;\r
+}\r
+\r
+// \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø / \96³\8cø\89»\r
+static void gogoConfigDialogProcControlEnableDisable(HWND hwnd)\r
+{\r
+ ENABLE_CONTROL(IDC_CHECK_DEFAULT);\r
+ if(IS_CHECK(IDC_CHECK_DEFAULT)){\r
+ DISABLE_CONTROL(IDC_CHECK_COMMANDLINE_OPTS);\r
+ DISABLE_CONTROL(IDC_EDIT_COMMANDLINE_OPTION);\r
+ DISABLE_CONTROL(IDC_CHECK_OUTPUT_FORMAT);\r
+ DISABLE_CONTROL(IDC_COMBO_OUTPUT_FORMAT);\r
+ DISABLE_CONTROL(IDC_CHECK_MPEG1AUDIOBITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);\r
+ DISABLE_CONTROL(IDC_CHECK_MPEG2AUDIOBITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);\r
+ DISABLE_CONTROL(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);\r
+ DISABLE_CONTROL(IDC_EDIT_LPF_PARA1);\r
+ DISABLE_CONTROL(IDC_EDIT_LPF_PARA2);\r
+ DISABLE_CONTROL(IDC_CHECK_ENCODE_MODE);\r
+ DISABLE_CONTROL(IDC_COMBO_ENCODE_MODE);\r
+ DISABLE_CONTROL(IDC_CHECK_EMPHASIS_TYPE);\r
+ DISABLE_CONTROL(IDC_COMBO_EMPHASIS_TYPE);\r
+ DISABLE_CONTROL(IDC_CHECK_OUTFREQ);\r
+ DISABLE_CONTROL(IDC_EDIT_OUTFREQ);\r
+ DISABLE_CONTROL(IDC_CHECK_MSTHRESHOLD);\r
+ DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_THRESHOLD);\r
+ DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_MSPOWER);\r
+ DISABLE_CONTROL(IDC_CHECK_USE_CPU_OPTS);\r
+ DISABLE_CONTROL(IDC_CHECK_CPUMMX);\r
+ DISABLE_CONTROL(IDC_CHECK_CPUSSE);\r
+ DISABLE_CONTROL(IDC_CHECK_CPU3DNOW);\r
+ DISABLE_CONTROL(IDC_CHECK_CPUE3DNOW);\r
+ DISABLE_CONTROL(IDC_CHECK_VBR);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR);\r
+ DISABLE_CONTROL(IDC_CHECK_VBR_BITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);\r
+ DISABLE_CONTROL(IDC_CHECK_USEPSY);\r
+ DISABLE_CONTROL(IDC_CHECK_VERIFY);\r
+ DISABLE_CONTROL(IDC_CHECK_16KHZ_LOW_PASS_FILTER);\r
+ } else {\r
+ ENABLE_CONTROL(IDC_CHECK_COMMANDLINE_OPTS);\r
+ if(IS_CHECK(IDC_CHECK_COMMANDLINE_OPTS)){\r
+ ENABLE_CONTROL(IDC_EDIT_COMMANDLINE_OPTION);\r
+ DISABLE_CONTROL(IDC_CHECK_OUTPUT_FORMAT);\r
+ DISABLE_CONTROL(IDC_COMBO_OUTPUT_FORMAT);\r
+ DISABLE_CONTROL(IDC_CHECK_MPEG1AUDIOBITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);\r
+ DISABLE_CONTROL(IDC_CHECK_MPEG2AUDIOBITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);\r
+ DISABLE_CONTROL(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);\r
+ DISABLE_CONTROL(IDC_EDIT_LPF_PARA1);\r
+ DISABLE_CONTROL(IDC_EDIT_LPF_PARA2);\r
+ DISABLE_CONTROL(IDC_CHECK_ENCODE_MODE);\r
+ DISABLE_CONTROL(IDC_COMBO_ENCODE_MODE);\r
+ DISABLE_CONTROL(IDC_CHECK_EMPHASIS_TYPE);\r
+ DISABLE_CONTROL(IDC_COMBO_EMPHASIS_TYPE);\r
+ DISABLE_CONTROL(IDC_CHECK_OUTFREQ);\r
+ DISABLE_CONTROL(IDC_EDIT_OUTFREQ);\r
+ DISABLE_CONTROL(IDC_CHECK_MSTHRESHOLD);\r
+ DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_THRESHOLD);\r
+ DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_MSPOWER);\r
+ DISABLE_CONTROL(IDC_CHECK_USE_CPU_OPTS);\r
+ DISABLE_CONTROL(IDC_CHECK_CPUMMX);\r
+ DISABLE_CONTROL(IDC_CHECK_CPUSSE);\r
+ DISABLE_CONTROL(IDC_CHECK_CPU3DNOW);\r
+ DISABLE_CONTROL(IDC_CHECK_CPUE3DNOW);\r
+ DISABLE_CONTROL(IDC_CHECK_VBR);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR);\r
+ DISABLE_CONTROL(IDC_CHECK_VBR_BITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);\r
+ DISABLE_CONTROL(IDC_CHECK_USEPSY);\r
+ DISABLE_CONTROL(IDC_CHECK_VERIFY);\r
+ DISABLE_CONTROL(IDC_CHECK_16KHZ_LOW_PASS_FILTER);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_EDIT_COMMANDLINE_OPTION);\r
+ ENABLE_CONTROL(IDC_CHECK_OUTPUT_FORMAT);\r
+ if(IS_CHECK(IDC_CHECK_OUTPUT_FORMAT)){\r
+ ENABLE_CONTROL(IDC_COMBO_OUTPUT_FORMAT);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_COMBO_OUTPUT_FORMAT);\r
+ }\r
+ ENABLE_CONTROL(IDC_CHECK_16KHZ_LOW_PASS_FILTER);\r
+ ENABLE_CONTROL(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);\r
+ if(IS_CHECK(IDC_CHECK_16KHZ_LOW_PASS_FILTER)){\r
+ UNCHECK(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);\r
+ DISABLE_CONTROL(IDC_EDIT_LPF_PARA1);\r
+ DISABLE_CONTROL(IDC_EDIT_LPF_PARA2);\r
+ } else {\r
+ if(IS_CHECK(IDC_CHECK_ENHANCED_LOW_PASS_FILTER)){\r
+ UNCHECK(IDC_CHECK_16KHZ_LOW_PASS_FILTER);\r
+ ENABLE_CONTROL(IDC_EDIT_LPF_PARA1);\r
+ ENABLE_CONTROL(IDC_EDIT_LPF_PARA2);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_EDIT_LPF_PARA1);\r
+ DISABLE_CONTROL(IDC_EDIT_LPF_PARA2);\r
+ }\r
+ }\r
+ ENABLE_CONTROL(IDC_CHECK_ENCODE_MODE);\r
+ if(IS_CHECK(IDC_CHECK_ENCODE_MODE)){\r
+ ENABLE_CONTROL(IDC_COMBO_ENCODE_MODE);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_COMBO_ENCODE_MODE);\r
+ }\r
+ ENABLE_CONTROL(IDC_CHECK_EMPHASIS_TYPE);\r
+ if(IS_CHECK(IDC_CHECK_EMPHASIS_TYPE)){\r
+ ENABLE_CONTROL(IDC_COMBO_EMPHASIS_TYPE);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_COMBO_EMPHASIS_TYPE);\r
+ }\r
+ ENABLE_CONTROL(IDC_CHECK_OUTFREQ);\r
+ if(IS_CHECK(IDC_CHECK_OUTFREQ)){\r
+ ENABLE_CONTROL(IDC_EDIT_OUTFREQ);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_EDIT_OUTFREQ);\r
+ }\r
+ ENABLE_CONTROL(IDC_CHECK_MSTHRESHOLD);\r
+ if(IS_CHECK(IDC_CHECK_MSTHRESHOLD)){\r
+ ENABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_THRESHOLD);\r
+ ENABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_MSPOWER);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_THRESHOLD);\r
+ DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_MSPOWER);\r
+ }\r
+ ENABLE_CONTROL(IDC_CHECK_USE_CPU_OPTS);\r
+ if(IS_CHECK(IDC_CHECK_USE_CPU_OPTS)){\r
+ ENABLE_CONTROL(IDC_CHECK_CPUMMX);\r
+ ENABLE_CONTROL(IDC_CHECK_CPUSSE);\r
+ ENABLE_CONTROL(IDC_CHECK_CPU3DNOW);\r
+ ENABLE_CONTROL(IDC_CHECK_CPUE3DNOW);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_CHECK_CPUMMX);\r
+ DISABLE_CONTROL(IDC_CHECK_CPUSSE);\r
+ DISABLE_CONTROL(IDC_CHECK_CPU3DNOW);\r
+ DISABLE_CONTROL(IDC_CHECK_CPUE3DNOW);\r
+ }\r
+ ENABLE_CONTROL(IDC_CHECK_VBR);\r
+ ENABLE_CONTROL(IDC_CHECK_MPEG1AUDIOBITRATE);\r
+ ENABLE_CONTROL(IDC_CHECK_MPEG2AUDIOBITRATE);\r
+ if(IS_CHECK(IDC_CHECK_VBR)){\r
+ ENABLE_CONTROL(IDC_COMBO_VBR);\r
+ ENABLE_CONTROL(IDC_CHECK_VBR_BITRATE);\r
+ if(IS_CHECK(IDC_CHECK_VBR_BITRATE)){\r
+ ENABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);\r
+ ENABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);\r
+ }\r
+ UNCHECK(IDC_CHECK_MPEG1AUDIOBITRATE);\r
+ UNCHECK(IDC_CHECK_MPEG2AUDIOBITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);\r
+ } else {\r
+ UNCHECK(IDC_CHECK_VBR_BITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR);\r
+ DISABLE_CONTROL(IDC_CHECK_VBR_BITRATE);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);\r
+ DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);\r
+ if(IS_CHECK(IDC_CHECK_MPEG1AUDIOBITRATE)){\r
+ ENABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);\r
+ }\r
+ if(IS_CHECK(IDC_CHECK_MPEG2AUDIOBITRATE)){\r
+ ENABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);\r
+ } else {\r
+ DISABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);\r
+ }\r
+ }\r
+ ENABLE_CONTROL(IDC_CHECK_USEPSY);\r
+ ENABLE_CONTROL(IDC_CHECK_VERIFY);\r
+ }\r
+ }\r
+}\r
+\r
+static void gogoConfigDialogProcControlReset(HWND hwnd)\r
+{\r
+ // \83R\83\93\83{\83{\83b\83N\83X\82Ì\91I\91ð\90Ý\92è\r
+ CB_SETCURSEL_TYPE2(IDC_COMBO_OUTPUT_FORMAT)\r
+ CB_SETCURSEL_TYPE1(IDC_COMBO_MPEG1_AUDIO_BITRATE)\r
+ CB_SETCURSEL_TYPE1(IDC_COMBO_MPEG2_AUDIO_BITRATE)\r
+ CB_SETCURSEL_TYPE2(IDC_COMBO_ENCODE_MODE)\r
+ CB_SETCURSEL_TYPE2(IDC_COMBO_EMPHASIS_TYPE)\r
+ CB_SETCURSEL_TYPE1(IDC_COMBO_VBR_BITRATE_LOW)\r
+ CB_SETCURSEL_TYPE1(IDC_COMBO_VBR_BITRATE_HIGH)\r
+ CB_SETCURSEL_TYPE2(IDC_COMBO_VBR)\r
+ // \83`\83F\83b\83N\83{\83b\83N\83X\82Ì\90Ý\92è\r
+ CHECKBOX_SET(IDC_CHECK_DEFAULT)\r
+ CHECKBOX_SET(IDC_CHECK_COMMANDLINE_OPTS)\r
+ CHECKBOX_SET(IDC_CHECK_OUTPUT_FORMAT)\r
+ CHECKBOX_SET(IDC_CHECK_MPEG1AUDIOBITRATE)\r
+ CHECKBOX_SET(IDC_CHECK_MPEG2AUDIOBITRATE)\r
+ CHECKBOX_SET(IDC_CHECK_ENHANCED_LOW_PASS_FILTER)\r
+ CHECKBOX_SET(IDC_CHECK_ENCODE_MODE)\r
+ CHECKBOX_SET(IDC_CHECK_EMPHASIS_TYPE)\r
+ CHECKBOX_SET(IDC_CHECK_OUTFREQ)\r
+ CHECKBOX_SET(IDC_CHECK_MSTHRESHOLD)\r
+ CHECKBOX_SET(IDC_CHECK_USE_CPU_OPTS)\r
+ CHECKBOX_SET(IDC_CHECK_CPUMMX)\r
+ CHECKBOX_SET(IDC_CHECK_CPUSSE)\r
+ CHECKBOX_SET(IDC_CHECK_CPU3DNOW)\r
+ CHECKBOX_SET(IDC_CHECK_CPUE3DNOW)\r
+ CHECKBOX_SET(IDC_CHECK_VBR)\r
+ CHECKBOX_SET(IDC_CHECK_VBR_BITRATE)\r
+ CHECKBOX_SET(IDC_CHECK_USEPSY)\r
+ CHECKBOX_SET(IDC_CHECK_VERIFY)\r
+ CHECKBOX_SET(IDC_CHECK_16KHZ_LOW_PASS_FILTER)\r
+ // \83G\83f\83B\83b\83g\82Ì\90Ý\92è\r
+ EDIT_SET(IDC_EDIT_OUTFREQ)\r
+ EDIT_SET(IDC_EDIT_MSTHRESHOLD_THRESHOLD)\r
+ EDIT_SET(IDC_EDIT_MSTHRESHOLD_MSPOWER)\r
+ EDIT_SET(IDC_EDIT_COMMANDLINE_OPTION)\r
+ EDIT_SET(IDC_EDIT_LPF_PARA1)\r
+ EDIT_SET(IDC_EDIT_LPF_PARA2)\r
+ // \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø / \96³\8cø\89»\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+}\r
+\r
+static void gogoConfigDialogProcControlApply(HWND hwnd)\r
+{\r
+ // \83R\83\93\83{\83{\83b\83N\83X\82Ì\91I\91ð\90Ý\92è\r
+ CB_GETCURSEL_TYPE2(IDC_COMBO_OUTPUT_FORMAT)\r
+ CB_GETCURSEL_TYPE1(IDC_COMBO_MPEG1_AUDIO_BITRATE)\r
+ CB_GETCURSEL_TYPE1(IDC_COMBO_MPEG2_AUDIO_BITRATE)\r
+ CB_GETCURSEL_TYPE2(IDC_COMBO_ENCODE_MODE)\r
+ CB_GETCURSEL_TYPE2(IDC_COMBO_EMPHASIS_TYPE)\r
+ CB_GETCURSEL_TYPE1(IDC_COMBO_VBR_BITRATE_LOW)\r
+ CB_GETCURSEL_TYPE1(IDC_COMBO_VBR_BITRATE_HIGH)\r
+ CB_GETCURSEL_TYPE2(IDC_COMBO_VBR)\r
+ // \83`\83F\83b\83N\83{\83b\83N\83X\82Ì\90Ý\92è\r
+ CHECKBOX_GET(IDC_CHECK_DEFAULT)\r
+ CHECKBOX_GET(IDC_CHECK_COMMANDLINE_OPTS)\r
+ CHECKBOX_GET(IDC_CHECK_OUTPUT_FORMAT)\r
+ CHECKBOX_GET(IDC_CHECK_MPEG1AUDIOBITRATE)\r
+ CHECKBOX_GET(IDC_CHECK_MPEG2AUDIOBITRATE)\r
+ CHECKBOX_GET(IDC_CHECK_ENHANCED_LOW_PASS_FILTER)\r
+ CHECKBOX_GET(IDC_CHECK_ENCODE_MODE)\r
+ CHECKBOX_GET(IDC_CHECK_EMPHASIS_TYPE)\r
+ CHECKBOX_GET(IDC_CHECK_OUTFREQ)\r
+ CHECKBOX_GET(IDC_CHECK_MSTHRESHOLD)\r
+ CHECKBOX_GET(IDC_CHECK_USE_CPU_OPTS)\r
+ CHECKBOX_GET(IDC_CHECK_CPUMMX)\r
+ CHECKBOX_GET(IDC_CHECK_CPUSSE)\r
+ CHECKBOX_GET(IDC_CHECK_CPU3DNOW)\r
+ CHECKBOX_GET(IDC_CHECK_CPUE3DNOW)\r
+ CHECKBOX_GET(IDC_CHECK_VBR)\r
+ CHECKBOX_GET(IDC_CHECK_VBR_BITRATE)\r
+ CHECKBOX_GET(IDC_CHECK_USEPSY)\r
+ CHECKBOX_GET(IDC_CHECK_VERIFY)\r
+ CHECKBOX_GET(IDC_CHECK_16KHZ_LOW_PASS_FILTER)\r
+ // \83G\83f\83B\83b\83g\82Ì\90Ý\92è\r
+ EDIT_GET_RANGE(IDC_EDIT_OUTFREQ,6,4000,65000)\r
+ EDIT_GET_RANGE(IDC_EDIT_MSTHRESHOLD_THRESHOLD,4,0,100)\r
+ EDIT_GET_RANGE(IDC_EDIT_MSTHRESHOLD_MSPOWER,4,0,100)\r
+ EDIT_GET(IDC_EDIT_COMMANDLINE_OPTION,1024)\r
+ EDIT_GET_RANGE(IDC_EDIT_LPF_PARA1,4,0,100)\r
+ EDIT_GET_RANGE(IDC_EDIT_LPF_PARA2,4,0,100)\r
+ // \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø / \96³\8cø\89»\r
+ gogoConfigDialogProcControlEnableDisable(hwnd);\r
+ // \83\8a\83Z\83b\83g\r
+ gogoConfigDialogProcControlReset(hwnd);\r
+}\r
+\r
+#undef CB_INFO_TYPE1_BEGIN\r
+#undef CB_INFO_TYPE1_END\r
+#undef CB_INFO_TYPE2_BEGIN\r
+#undef CB_INFO_TYPE2_END\r
+#undef CB_SETCURSEL_TYPE1\r
+#undef CB_SETCURSEL_TYPE2\r
+#undef CB_GETCURSEL_TYPE1\r
+#undef CB_GETCURSEL_TYPE2\r
+#undef CHECKBOX_SET\r
+#undef CHECKBOX_GET\r
+#undef EDIT_SET\r
+#undef EDIT_GET\r
+#undef EDIT_GET_RANGE\r
+\r
+#endif\r
+\r
+int gogoConfigDialog(void)\r
+{\r
+#ifdef AU_GOGO\r
+ if(!IsWindow(hgogoConfigDailog))\r
+ hgogoConfigDailog = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG_GOGO),(HWND)hPrefWnd,gogoConfigDialogProc);\r
+ ShowWindow(hgogoConfigDailog,SW_SHOW);\r
+#endif\r
+ return 0;\r
+}\r
+\r
+#ifdef AU_GOGO\r
+\r
+static int gogo_ConfigDialogInfoLock()\r
+{\r
+ return 0;\r
+}\r
+static int gogo_ConfigDialogInfoUnLock()\r
+{\r
+ return 0;\r
+}\r
+\r
+volatile gogo_ConfigDialogInfo_t gogo_ConfigDialogInfo;\r
+\r
+int gogo_ConfigDialogInfoInit(void)\r
+{\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_DEFAULT = 1;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_COMMANDLINE_OPTS = 0;\r
+ gogo_ConfigDialogInfo.optIDC_EDIT_COMMANDLINE_OPTION[0] = '\0';\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_OUTPUT_FORMAT = 1;\r
+ gogo_ConfigDialogInfo.optIDC_COMBO_OUTPUT_FORMAT = MC_OUTPUT_NORMAL;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_MPEG1AUDIOBITRATE = 1;\r
+ gogo_ConfigDialogInfo.optIDC_COMBO_MPEG1_AUDIO_BITRATE = 160;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_MPEG2AUDIOBITRATE = 1;\r
+ gogo_ConfigDialogInfo.optIDC_COMBO_MPEG2_AUDIO_BITRATE = 80;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_ENHANCED_LOW_PASS_FILTER = 0;\r
+ strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_LPF_PARA1,"55");\r
+ strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_LPF_PARA2,"70");\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_ENCODE_MODE = 1;\r
+ gogo_ConfigDialogInfo.optIDC_COMBO_ENCODE_MODE = MC_MODE_STEREO;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_EMPHASIS_TYPE = 1;\r
+ gogo_ConfigDialogInfo.optIDC_COMBO_EMPHASIS_TYPE = MC_EMP_NONE;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_OUTFREQ = 0;\r
+ strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_OUTFREQ,"44100");\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_MSTHRESHOLD = 0;\r
+ strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_MSTHRESHOLD_THRESHOLD,"75");\r
+ strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_MSTHRESHOLD_MSPOWER,"66");\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_USE_CPU_OPTS = 0;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_CPUMMX = 0;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_CPUSSE = 0;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_CPU3DNOW = 0;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_CPUE3DNOW = 0;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_VBR = 0;\r
+ gogo_ConfigDialogInfo.optIDC_COMBO_VBR = 0;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_VBR_BITRATE = 0;\r
+ gogo_ConfigDialogInfo.optIDC_COMBO_VBR_BITRATE_LOW = 32;\r
+ gogo_ConfigDialogInfo.optIDC_COMBO_VBR_BITRATE_HIGH = 320;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_USEPSY = 1;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_VERIFY = 0;\r
+ gogo_ConfigDialogInfo.optIDC_CHECK_16KHZ_LOW_PASS_FILTER = 1;\r
+ return 0;\r
+}\r
+\r
+int gogo_ConfigDialogInfoApply(void)\r
+{\r
+ gogo_ConfigDialogInfoLock();\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_DEFAULT>0){\r
+ gogo_opts_reset();\r
+ gogo_ConfigDialogInfoUnLock();\r
+ return 0;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_COMMANDLINE_OPTS>0){\r
+ gogo_opts_reset();\r
+ set_gogo_opts_use_commandline_options((char *)gogo_ConfigDialogInfo.optIDC_EDIT_COMMANDLINE_OPTION);\r
+ gogo_ConfigDialogInfoUnLock();\r
+ return 0;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_OUTPUT_FORMAT>0){\r
+ gogo_opts.optOUTPUT_FORMAT = gogo_ConfigDialogInfo.optIDC_COMBO_OUTPUT_FORMAT;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_MPEG1AUDIOBITRATE>0){\r
+ gogo_opts.optBITRATE1 = gogo_ConfigDialogInfo.optIDC_COMBO_MPEG1_AUDIO_BITRATE;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_MPEG2AUDIOBITRATE>0){\r
+ gogo_opts.optBITRATE2 = gogo_ConfigDialogInfo.optIDC_COMBO_MPEG2_AUDIO_BITRATE;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_ENHANCED_LOW_PASS_FILTER>0){\r
+ gogo_opts.optENHANCEDFILTER_A = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_LPF_PARA1);\r
+ gogo_opts.optENHANCEDFILTER_B = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_LPF_PARA2);\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_ENCODE_MODE>0){\r
+ gogo_opts.optENCODEMODE = gogo_ConfigDialogInfo.optIDC_COMBO_ENCODE_MODE;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_EMPHASIS_TYPE>0){\r
+ gogo_opts.optEMPHASIS = gogo_ConfigDialogInfo.optIDC_COMBO_EMPHASIS_TYPE;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_OUTFREQ>0){\r
+ gogo_opts.optOUTFREQ = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_OUTFREQ);\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_MSTHRESHOLD>0){\r
+ gogo_opts.optMSTHRESHOLD_threshold = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_MSTHRESHOLD_THRESHOLD);\r
+ gogo_opts.optMSTHRESHOLD_mspower = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_MSTHRESHOLD_MSPOWER);\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_USE_CPU_OPTS>0){\r
+ gogo_opts.optUSEMMX = gogo_ConfigDialogInfo.optIDC_CHECK_CPUMMX;\r
+ gogo_opts.optUSEKNI = gogo_ConfigDialogInfo.optIDC_CHECK_CPUSSE;\r
+ gogo_opts.optUSE3DNOW = gogo_ConfigDialogInfo.optIDC_CHECK_CPU3DNOW;\r
+ gogo_opts.optUSEE3DNOW = gogo_ConfigDialogInfo.optIDC_CHECK_CPUE3DNOW;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_VBR>0){\r
+ gogo_opts.optVBR = gogo_ConfigDialogInfo.optIDC_COMBO_VBR;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_VBR_BITRATE>0){\r
+ gogo_opts.optVBRBITRATE_low = gogo_ConfigDialogInfo.optIDC_COMBO_VBR_BITRATE_LOW;\r
+ gogo_opts.optVBRBITRATE_high = gogo_ConfigDialogInfo.optIDC_COMBO_VBR_BITRATE_HIGH;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_USEPSY>0){\r
+ gogo_opts.optUSEPSY = TRUE;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_VERIFY>0){\r
+ gogo_opts.optVERIFY = TRUE;\r
+ }\r
+ if(gogo_ConfigDialogInfo.optIDC_CHECK_16KHZ_LOW_PASS_FILTER>0){\r
+ gogo_opts.optUSELPF16 = TRUE;\r
+ }\r
+// gogo_opts.optINPFREQ; // SYSTEM USE(\83V\83X\83e\83\80\82Å\8eg\97p\82·\82é\82©\82ç\8ew\92è\82Å\82«\82È\82¢)\r
+// gogo_opts.optSTARTOFFSET; // SYSTEM USE\r
+// gogo_opts.optADDTAGnum; // SYSTEM USE\r
+// gogo_opts.optADDTAG_len[64]; // SYSTEM USE\r
+// gogo_opts.optADDTAG_buf[64]; // SYSTEM USE\r
+// gogo_opts.optCPU; // PREPAIRING(\8f\80\94õ\92\86)\r
+// gogo_opts.optBYTE_SWAP; // SYSTEM USE\r
+// gogo_opts.opt8BIT_PCM; // SYSTEM USE\r
+// gogo_opts.optMONO_PCM; // SYSTEM USE\r
+// gogo_opts.optTOWNS_SND; // SYSTEM USE\r
+// gogo_opts.optTHREAD_PRIORITY; // PREPARING\r
+// gogo_opts.optREADTHREAD_PRIORITY; // PREPARING\r
+// gogo_opts.optOUTPUTDIR[1024]; // SYSTEM USE\r
+// gogo_opts.output_name[1024]; // SYSTEM USE\r
+ gogo_ConfigDialogInfoUnLock();\r
+ return 0;\r
+}\r
+\r
+#define SEC_GOGO "gogo"\r
+int gogo_ConfigDialogInfoSaveINI(void)\r
+{\r
+ char *section = SEC_GOGO;\r
+ char *inifile = timidity_output_inifile;\r
+ char buffer[1024];\r
+#define NUMSAVE(name) \\r
+ sprintf(buffer,"%d",gogo_ConfigDialogInfo. ## name ); \\r
+ WritePrivateProfileString(section, #name ,buffer,inifile);\r
+#define STRSAVE(name) \\r
+ WritePrivateProfileString(section,(char *) #name ,(char *)gogo_ConfigDialogInfo. ## name ,inifile);\r
+ NUMSAVE(optIDC_CHECK_DEFAULT)\r
+ NUMSAVE(optIDC_CHECK_COMMANDLINE_OPTS)\r
+ STRSAVE(optIDC_EDIT_COMMANDLINE_OPTION)\r
+ NUMSAVE(optIDC_CHECK_OUTPUT_FORMAT)\r
+ NUMSAVE(optIDC_COMBO_OUTPUT_FORMAT)\r
+ NUMSAVE(optIDC_CHECK_MPEG1AUDIOBITRATE)\r
+ NUMSAVE(optIDC_COMBO_MPEG1_AUDIO_BITRATE)\r
+ NUMSAVE(optIDC_CHECK_MPEG2AUDIOBITRATE)\r
+ NUMSAVE(optIDC_COMBO_MPEG2_AUDIO_BITRATE)\r
+ NUMSAVE(optIDC_CHECK_ENHANCED_LOW_PASS_FILTER)\r
+ STRSAVE(optIDC_EDIT_LPF_PARA1)\r
+ STRSAVE(optIDC_EDIT_LPF_PARA2)\r
+ NUMSAVE(optIDC_CHECK_ENCODE_MODE)\r
+ NUMSAVE(optIDC_COMBO_ENCODE_MODE)\r
+ NUMSAVE(optIDC_CHECK_EMPHASIS_TYPE)\r
+ NUMSAVE(optIDC_COMBO_EMPHASIS_TYPE)\r
+ NUMSAVE(optIDC_CHECK_OUTFREQ)\r
+ STRSAVE(optIDC_EDIT_OUTFREQ)\r
+ NUMSAVE(optIDC_CHECK_MSTHRESHOLD)\r
+ STRSAVE(optIDC_EDIT_MSTHRESHOLD_THRESHOLD)\r
+ STRSAVE(optIDC_EDIT_MSTHRESHOLD_MSPOWER)\r
+ NUMSAVE(optIDC_CHECK_USE_CPU_OPTS)\r
+ NUMSAVE(optIDC_CHECK_CPUMMX)\r
+ NUMSAVE(optIDC_CHECK_CPUSSE)\r
+ NUMSAVE(optIDC_CHECK_CPU3DNOW)\r
+ NUMSAVE(optIDC_CHECK_CPUE3DNOW)\r
+ NUMSAVE(optIDC_CHECK_VBR)\r
+ NUMSAVE(optIDC_COMBO_VBR)\r
+ NUMSAVE(optIDC_CHECK_VBR_BITRATE)\r
+ NUMSAVE(optIDC_COMBO_VBR_BITRATE_LOW)\r
+ NUMSAVE(optIDC_COMBO_VBR_BITRATE_HIGH)\r
+ NUMSAVE(optIDC_CHECK_USEPSY)\r
+ NUMSAVE(optIDC_CHECK_VERIFY)\r
+ NUMSAVE(optIDC_CHECK_16KHZ_LOW_PASS_FILTER)\r
+ WritePrivateProfileString(NULL,NULL,NULL,inifile); // Write Flush\r
+#undef NUMSAVE\r
+#undef STRSAVE\r
+ return 0;\r
+}\r
+int gogo_ConfigDialogInfoLoadINI(void)\r
+{\r
+ char *section = SEC_GOGO;\r
+ char *inifile = timidity_output_inifile;\r
+ int num;\r
+ char buffer[1024];\r
+#define NUMLOAD(name) \\r
+ num = GetPrivateProfileInt(section, #name ,-1,inifile); \\r
+ if(num!=-1) gogo_ConfigDialogInfo. ## name = num;\r
+#define STRLOAD(name,len) \\r
+ GetPrivateProfileString(section,(char *) #name ,"",buffer,len,inifile); \\r
+ buffer[len-1] = '\0'; \\r
+ if(buffer[0]!=0) \\r
+ strcpy((char *)gogo_ConfigDialogInfo. ## name ,buffer);\r
+ gogo_ConfigDialogInfoLock();\r
+ NUMLOAD(optIDC_CHECK_DEFAULT)\r
+ NUMLOAD(optIDC_CHECK_COMMANDLINE_OPTS)\r
+ STRLOAD(optIDC_EDIT_COMMANDLINE_OPTION,1024)\r
+ NUMLOAD(optIDC_CHECK_OUTPUT_FORMAT)\r
+ NUMLOAD(optIDC_COMBO_OUTPUT_FORMAT)\r
+ NUMLOAD(optIDC_CHECK_MPEG1AUDIOBITRATE)\r
+ NUMLOAD(optIDC_COMBO_MPEG1_AUDIO_BITRATE)\r
+ NUMLOAD(optIDC_CHECK_MPEG2AUDIOBITRATE)\r
+ NUMLOAD(optIDC_COMBO_MPEG2_AUDIO_BITRATE)\r
+ NUMLOAD(optIDC_CHECK_ENHANCED_LOW_PASS_FILTER)\r
+ STRLOAD(optIDC_EDIT_LPF_PARA1,4)\r
+ STRLOAD(optIDC_EDIT_LPF_PARA2,4)\r
+ NUMLOAD(optIDC_CHECK_ENCODE_MODE)\r
+ NUMLOAD(optIDC_COMBO_ENCODE_MODE)\r
+ NUMLOAD(optIDC_CHECK_EMPHASIS_TYPE)\r
+ NUMLOAD(optIDC_COMBO_EMPHASIS_TYPE)\r
+ NUMLOAD(optIDC_CHECK_OUTFREQ)\r
+ STRLOAD(optIDC_EDIT_OUTFREQ,6)\r
+ NUMLOAD(optIDC_CHECK_MSTHRESHOLD)\r
+ STRLOAD(optIDC_EDIT_MSTHRESHOLD_THRESHOLD,4)\r
+ STRLOAD(optIDC_EDIT_MSTHRESHOLD_MSPOWER,4)\r
+ NUMLOAD(optIDC_CHECK_USE_CPU_OPTS)\r
+ NUMLOAD(optIDC_CHECK_CPUMMX)\r
+ NUMLOAD(optIDC_CHECK_CPUSSE)\r
+ NUMLOAD(optIDC_CHECK_CPU3DNOW)\r
+ NUMLOAD(optIDC_CHECK_CPUE3DNOW)\r
+ NUMLOAD(optIDC_CHECK_VBR)\r
+ NUMLOAD(optIDC_COMBO_VBR)\r
+ NUMLOAD(optIDC_CHECK_VBR_BITRATE)\r
+ NUMLOAD(optIDC_COMBO_VBR_BITRATE_LOW)\r
+ NUMLOAD(optIDC_COMBO_VBR_BITRATE_HIGH)\r
+ NUMLOAD(optIDC_CHECK_USEPSY)\r
+ NUMLOAD(optIDC_CHECK_VERIFY)\r
+ NUMLOAD(optIDC_CHECK_16KHZ_LOW_PASS_FILTER)\r
+#undef NUMLOAD\r
+#undef STRLOAD\r
+ gogo_ConfigDialogInfoUnLock();\r
+ return 0;\r
+}\r
+\r
+#endif // AU_GOGO\r
+\r
+\r
+#ifdef AU_VORBIS\r
+///////////////////////////////////////////////////////////////////////\r
+//\r
+// vorbis ConfigDialog\r
+//\r
+///////////////////////////////////////////////////////////////////////\r
+\r
+volatile vorbis_ConfigDialogInfo_t vorbis_ConfigDialogInfo;\r
+\r
+// id \82Ì\83R\83\93\83{\83{\83b\83N\83X\82Ì\8fî\95ñ\82Ì\92è\8b`\r
+#define CB_INFO_TYPE1_BEGIN(id) static int cb_info_ ## id [] = {\r
+#define CB_INFO_TYPE1_END };\r
+#define CB_INFO_TYPE2_BEGIN(id) static char * cb_info_ ## id [] = {\r
+#define CB_INFO_TYPE2_END };\r
+\r
+// cb_info_type1_\82h\82c cb_info_type2_\82h\82c \82Æ\82¢\82¤\82Ó\82¤\82É\82È\82é\81B\r
+\r
+// IDC_COMBO_MODE\r
+CB_INFO_TYPE2_BEGIN(IDC_COMBO_MODE)\r
+ "\83f\83t\83H\83\8b\83g(\96ñ128kbps VBR)",(char *)0,\r
+ "\96ñ112kbps VBR",(char *)1,\r
+ "\96ñ128kbps VBR",(char *)2,\r
+ "\96ñ160kbps VBR",(char *)3,\r
+ "\96ñ192kbps VBR",(char *)4,\r
+ "\96ñ256kbps VBR",(char *)5,\r
+ "\96ñ350kbps VBR",(char *)6,\r
+ NULL\r
+CB_INFO_TYPE2_END\r
+\r
+// id \82Ì\83R\83\93\83{\83{\83b\83N\83X\82ð\91I\91ð\82Ì\90Ý\92è\82·\82é\81B\r
+#define CB_SETCURSEL_TYPE1(id) \\r
+{ \\r
+ int cb_num; \\r
+ for(cb_num=0;(int)cb_info_ ## id [cb_num]>=0;cb_num++){ \\r
+ SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)0,(LPARAM)0); \\r
+ if(vorbis_ConfigDialogInfo.opt ## id == (int) cb_info_ ## id [cb_num]){ \\r
+ SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)cb_num,(LPARAM)0); \\r
+ break; \\r
+ } \\r
+ } \\r
+}\r
+#define CB_SETCURSEL_TYPE2(id) \\r
+{ \\r
+ int cb_num; \\r
+ for(cb_num=0;(int)cb_info_ ## id [cb_num];cb_num+=2){ \\r
+ SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)0,(LPARAM)0); \\r
+ if(vorbis_ConfigDialogInfo.opt ## id == (int) cb_info_ ## id [cb_num+1]){ \\r
+ SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)cb_num/2,(LPARAM)0); \\r
+ break; \\r
+ } \\r
+ } \\r
+}\r
+// id \82Ì\83R\83\93\83{\83{\83b\83N\83X\82Ì\91I\91ð\82ð\95Ï\90\94\82É\91ã\93ü\82·\82é\81B\r
+#define CB_GETCURSEL_TYPE1(id) \\r
+{ \\r
+ int cb_num1, cb_num2; \\r
+ cb_num1 = SendDlgItemMessage(hwnd,id,CB_GETCURSEL,(WPARAM)0,(LPARAM)0); \\r
+ for(cb_num2=0;(int)cb_info_ ## id [cb_num2]>=0;cb_num2++) \\r
+ if(cb_num1==cb_num2){ \\r
+ vorbis_ConfigDialogInfo.opt ## id = (int)cb_info_ ## id [cb_num2]; \\r
+ break; \\r
+ } \\r
+}\r
+#define CB_GETCURSEL_TYPE2(id) \\r
+{ \\r
+ int cb_num1, cb_num2; \\r
+ cb_num1 = SendDlgItemMessage(hwnd,id,CB_GETCURSEL,(WPARAM)0,(LPARAM)0); \\r
+ for(cb_num2=0;(int)cb_info_ ## id [cb_num2];cb_num2+=2) \\r
+ if(cb_num1*2==cb_num2){ \\r
+ vorbis_ConfigDialogInfo.opt ## id = (int)cb_info_ ## id [cb_num2+1]; \\r
+ break; \\r
+ } \\r
+}\r
+// \83`\83F\83b\83N\82³\82ê\82Ä\82¢\82é\82©\81B\r
+#define IS_CHECK(id) SendDlgItemMessage(hwnd,id,BM_GETCHECK,0,0)\r
+// \83`\83F\83b\83N\82·\82é\81B\r
+#define CHECK(id) SendDlgItemMessage(hwnd,id,BM_SETCHECK,1,0)\r
+// \83`\83F\83b\83N\82ð\82Í\82¸\82·\81B\r
+#define UNCHECK(id) SendDlgItemMessage(hwnd,id,BM_SETCHECK,0,0)\r
+// id \82Ì\83`\83F\83b\83N\83{\83b\83N\83X\82ð\90Ý\92è\82·\82é\81B\r
+#define CHECKBOX_SET(id) \\r
+ if(vorbis_ConfigDialogInfo.opt ## id>0) \\r
+ SendDlgItemMessage(hwnd,id,BM_SETCHECK,1,0); \\r
+ else \\r
+ SendDlgItemMessage(hwnd,id,BM_SETCHECK,0,0); \\r
+// id \82Ì\83`\83F\83b\83N\83{\83b\83N\83X\82ð\95Ï\90\94\82É\91ã\93ü\82·\82é\81B\r
+#define CHECKBOX_GET(id) \\r
+ if(SendDlgItemMessage(hwnd,id,BM_GETCHECK,0,0)) \\r
+ vorbis_ConfigDialogInfo.opt ## id = 1; \\r
+ else \\r
+ vorbis_ConfigDialogInfo.opt ## id = 0; \\r
+// id \82Ì\83G\83f\83B\83b\83g\82ð\90Ý\92è\82·\82é\81B\r
+#define EDIT_SET(id) SendDlgItemMessage(hwnd,id,WM_SETTEXT,0,(LPARAM)vorbis_ConfigDialogInfo.opt ## id);\r
+// id \82Ì\83G\83f\83B\83b\83g\82ð\95Ï\90\94\82É\91ã\93ü\82·\82é\81B\r
+#define EDIT_GET(id,size) SendDlgItemMessage(hwnd,id,WM_GETTEXT,(WPARAM)size,(LPARAM)vorbis_ConfigDialogInfo.opt ## id);\r
+#define EDIT_GET_RANGE(id,size,min,max) \\r
+{ \\r
+ char tmpbuf[64]; \\r
+ int value; \\r
+ SendDlgItemMessage(hwnd,id,WM_GETTEXT,(WPARAM)size,(LPARAM)vorbis_ConfigDialogInfo.opt ## id); \\r
+ value = atoi((char *)vorbis_ConfigDialogInfo.opt ## id); \\r
+ if(value<min) value = min; \\r
+ if(value>max) value = max; \\r
+ sprintf(tmpbuf,"%d",value); \\r
+ strncpy((char *)vorbis_ConfigDialogInfo.opt ## id,tmpbuf,size); \\r
+ (vorbis_ConfigDialogInfo.opt ## id)[size] = '\0'; \\r
+}\r
+// \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø\89»\r
+#define ENABLE_CONTROL(id) EnableWindow(GetDlgItem(hwnd,id),TRUE);\r
+// \83R\83\93\83g\83\8d\81[\83\8b\82Ì\96³\8cø\89»\r
+#define DISABLE_CONTROL(id) EnableWindow(GetDlgItem(hwnd,id),FALSE);\r
+\r
+\r
+static void vorbisConfigDialogProcControlEnableDisable(HWND hwnd);\r
+static void vorbisConfigDialogProcControlApply(HWND hwnd);\r
+static void vorbisConfigDialogProcControlReset(HWND hwnd);\r
+static int vorbis_ConfigDialogInfoLock();\r
+static int vorbis_ConfigDialogInfoUnLock();\r
+static HANDLE hvorbisConfigDailog = NULL;\r
+static BOOL APIENTRY vorbisConfigDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)\r
+{\r
+ switch (uMess){\r
+ case WM_INITDIALOG:\r
+ {\r
+ int i;\r
+ // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8f\89\8aú\89»\r
+ for(i=0;cb_info_IDC_COMBO_MODE[i];i+=2){\r
+ SendDlgItemMessage(hwnd,IDC_COMBO_MODE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_MODE[i]);\r
+ }\r
+ // \90Ý\92è\r
+ vorbisConfigDialogProcControlReset(hwnd);\r
+ }\r
+ break;\r
+ case WM_COMMAND:\r
+ switch (LOWORD(wParam)) {\r
+ case IDCLOSE:\r
+ SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);\r
+ break;\r
+ case IDOK:\r
+ vorbisConfigDialogProcControlApply(hwnd);\r
+ SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);\r
+ break;\r
+ case IDCANCEL:\r
+ SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);\r
+ break;\r
+ case IDC_BUTTON_APPLY:\r
+ vorbisConfigDialogProcControlApply(hwnd);\r
+ break;\r
+ case IDC_CHECK_DEFAULT:\r
+ vorbisConfigDialogProcControlEnableDisable(hwnd);\r
+ break;\r
+ case IDC_COMBO_MODE:\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ break;\r
+ case WM_NOTIFY:\r
+ break;\r
+ case WM_SIZE:\r
+ return FALSE;\r
+ case WM_CLOSE:\r
+ vorbis_ConfigDialogInfoSaveINI();\r
+ DestroyWindow(hwnd);\r
+ break;\r
+ case WM_DESTROY:\r
+ hvorbisConfigDailog = NULL;\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ return FALSE;\r
+}\r
+\r
+// \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø / \96³\8cø\89»\r
+static void vorbisConfigDialogProcControlEnableDisable(HWND hwnd)\r
+{\r
+ ENABLE_CONTROL(IDC_CHECK_DEFAULT);\r
+ if(IS_CHECK(IDC_CHECK_DEFAULT)){\r
+ DISABLE_CONTROL(IDC_COMBO_MODE);\r
+ } else {\r
+ ENABLE_CONTROL(IDC_COMBO_MODE);\r
+ }\r
+}\r
+\r
+static void vorbisConfigDialogProcControlReset(HWND hwnd)\r
+{\r
+ // \83R\83\93\83{\83{\83b\83N\83X\82Ì\91I\91ð\90Ý\92è\r
+ CB_SETCURSEL_TYPE2(IDC_COMBO_MODE)\r
+ // \83`\83F\83b\83N\83{\83b\83N\83X\82Ì\90Ý\92è\r
+ CHECKBOX_SET(IDC_CHECK_DEFAULT)\r
+ // \83G\83f\83B\83b\83g\82Ì\90Ý\92è\r
+ // \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø / \96³\8cø\89»\r
+ vorbisConfigDialogProcControlEnableDisable(hwnd);\r
+}\r
+\r
+static void vorbisConfigDialogProcControlApply(HWND hwnd)\r
+{\r
+ // \83R\83\93\83{\83{\83b\83N\83X\82Ì\91I\91ð\90Ý\92è\r
+ CB_GETCURSEL_TYPE2(IDC_COMBO_MODE)\r
+ // \83`\83F\83b\83N\83{\83b\83N\83X\82Ì\90Ý\92è\r
+ CHECKBOX_GET(IDC_CHECK_DEFAULT)\r
+ // \83G\83f\83B\83b\83g\82Ì\90Ý\92è\r
+ // \83R\83\93\83g\83\8d\81[\83\8b\82Ì\97L\8cø / \96³\8cø\89»\r
+ vorbisConfigDialogProcControlEnableDisable(hwnd);\r
+ // \83\8a\83Z\83b\83g\r
+ vorbisConfigDialogProcControlReset(hwnd);\r
+}\r
+\r
+#undef CB_INFO_TYPE1_BEGIN\r
+#undef CB_INFO_TYPE1_END\r
+#undef CB_INFO_TYPE2_BEGIN\r
+#undef CB_INFO_TYPE2_END\r
+#undef CB_SETCURSEL_TYPE1\r
+#undef CB_SETCURSEL_TYPE2\r
+#undef CB_GETCURSEL_TYPE1\r
+#undef CB_GETCURSEL_TYPE2\r
+#undef CHECKBOX_SET\r
+#undef CHECKBOX_GET\r
+#undef EDIT_SET\r
+#undef EDIT_GET\r
+#undef EDIT_GET_RANGE\r
+\r
+#endif\r
+\r
+int vorbisConfigDialog(void)\r
+{\r
+#ifdef AU_VORBIS\r
+ if(!IsWindow(hvorbisConfigDailog))\r
+ hvorbisConfigDailog = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG_VORBIS),(HWND)hPrefWnd,vorbisConfigDialogProc);\r
+ ShowWindow(hvorbisConfigDailog,SW_SHOW);\r
+#endif\r
+ return 0;\r
+}\r
+\r
+#ifdef AU_VORBIS\r
+\r
+static int vorbis_ConfigDialogInfoLock()\r
+{\r
+ return 0;\r
+}\r
+static int vorbis_ConfigDialogInfoUnLock()\r
+{\r
+ return 0;\r
+}\r
+\r
+int vorbis_ConfigDialogInfoInit(void)\r
+{\r
+ vorbis_ConfigDialogInfo.optIDC_CHECK_DEFAULT = 1;\r
+ vorbis_ConfigDialogInfo.optIDC_COMBO_MODE = 0;\r
+ return 0;\r
+}\r
+\r
+extern volatile int ogg_vorbis_mode;\r
+int vorbis_ConfigDialogInfoApply(void)\r
+{\r
+ vorbis_ConfigDialogInfoLock();\r
+ if(vorbis_ConfigDialogInfo.optIDC_CHECK_DEFAULT>0){\r
+// vorbis_opts_reset();\r
+ vorbis_ConfigDialogInfoUnLock();\r
+ return 0;\r
+ }\r
+ ogg_vorbis_mode = vorbis_ConfigDialogInfo.optIDC_COMBO_MODE;\r
+ vorbis_ConfigDialogInfoUnLock();\r
+ return 0;\r
+}\r
+\r
+#define SEC_VORBIS "vorbis"\r
+int vorbis_ConfigDialogInfoSaveINI(void)\r
+{\r
+ char *section = SEC_VORBIS;\r
+ char *inifile = timidity_output_inifile;\r
+ char buffer[1024];\r
+// int len;\r
+#define NUMSAVE(name) \\r
+ sprintf(buffer,"%d",vorbis_ConfigDialogInfo. ## name ); \\r
+ WritePrivateProfileString(section, #name ,buffer,inifile);\r
+//#define STRSAVE(name,len) \\r
+// WritePrivateProfileString(section,(char *) #name ,(char *)vorbis_ConfigDialogInfo. ## name ,inifile);\r
+ NUMSAVE(optIDC_CHECK_DEFAULT)\r
+ NUMSAVE(optIDC_COMBO_MODE)\r
+ WritePrivateProfileString(NULL,NULL,NULL,inifile); // Write Flush\r
+#undef NUMSAVE\r
+//#undef STRSAVE\r
+ return 0;\r
+}\r
+int vorbis_ConfigDialogInfoLoadINI(void)\r
+{\r
+ char *section = SEC_VORBIS;\r
+ char *inifile = timidity_output_inifile;\r
+ int num;\r
+// char buffer[1024];\r
+#define NUMLOAD(name) \\r
+ num = GetPrivateProfileInt(section, #name ,-1,inifile); \\r
+ if(num!=-1) vorbis_ConfigDialogInfo. ## name = num;\r
+//#define STRLOAD(name,len) \\r
+// GetPrivateProfileString(section,(char *) #name ,"",buffer,len,inifile); \\r
+// buffer[len-1] = '\0'; \\r
+// if(buffer[0]!=0) \\r
+// strcpy((char *)vorbis_ConfigDialogInfo. ## name ,buffer);\r
+ vorbis_ConfigDialogInfoLock();\r
+ NUMLOAD(optIDC_CHECK_DEFAULT)\r
+ NUMLOAD(optIDC_COMBO_MODE)\r
+#undef NUMLOAD\r
+//#undef STRLOAD\r
+ vorbis_ConfigDialogInfoUnLock();\r
+ return 0;\r
+}\r
+\r
+#endif // AU_VORBIS\r
// Used by w32g_res.rc\r
//\r
#define IDD_DIALOG_SEARCHBOX 102\r
+#define IDD_DIALOG_VORBIS 103\r
+#define IDD_DIALOG_GOGO 104\r
+#define IDD_PREF_PLAYER_EN 106\r
+#define IDD_PREF_TIMIDITY1_EN 107\r
+#define IDD_PREF_TIMIDITY2_EN 108\r
+#define IDD_PREF_TIMIDITY3_EN 109\r
+#define IDD_PREF_TIMIDITY4_EN 110\r
+#define IDD_DIALOG_MAIN_EN 111\r
+#define IDM_MENU_MAIN_EN 112\r
#define IDC_CHECK_SEACHDIRRECURSIVE 1001\r
#define IDC_CHECK_DOCWNDINDEPENDENT 1002\r
#define IDC_CHECK_INIFILE_AUTOSAVE 1003\r
#define IDD_DIALOG_WAVEFORM 1004\r
+#define IDC_CHECK_DOCWNDAUTOPOPUP 1004\r
#define IDC_CHECKBOX_CHORUS_LEVEL 1005\r
#define IDC_CHECKBOX_GLOBAL_REVERB 1006\r
#define IDC_CHECKBOX_REVERB_LEVEL 1007\r
#define IDC_CHECKBOX_CH01 1008\r
+#define IDC_CHECKBOX_SRCHORUS 1008\r
#define IDC_CHECKBOX_CH02 1009\r
+#define IDC_CHECKBOX_RESONANCE 1009\r
#define IDC_CHECKBOX_CH03 1010\r
#define IDC_CHECKBOX_CH04 1011\r
#define IDC_CHECKBOX_CH05 1012\r
#define IDC_EDIT_CONTROL_RATIO 1092\r
#define IDC_EDIT_MODIFY_RELEASE 1093\r
#define IDC_EDIT_AMPLIFICATION 1094\r
+#define IDC_EDIT_ENV_ATTACK 1094\r
#define IDC_EDIT_CACHE_SIZE 1095\r
+#define IDC_EDIT_AUTOMAXIMIZE 1095\r
+#define IDC_EDIT_VELOCITYTABLE 1095\r
#define IDC_EDIT_SPECIAL_TONEBANK 1097\r
#define IDC_CHECKBOX_NOT_LOOPING 1097\r
#define IDC_EDIT_DEFAULT_TONEBANK 1098\r
+#define IDC_CHECKBOX_AUTOSTART 1098\r
#define IDC_EDIT_REDUCE_VOICE 1099\r
+#define IDC_CHECKBOX_RANDOM 1099\r
#define IDC_EDIT_CTL_VEBOSITY 1100\r
#define IDC_EDIT_DELAY 1101\r
#define IDC_RADIOBUTTON_DELAY_LEFT 1102\r
#define IDC_RADIOBUTTON_GS 1195\r
#define IDC_RADIOBUTTON_XG 1196\r
#define IDC_EDIT1 2000\r
+#define IDC_EDIT2 2001\r
#define IDC_EDIT_NUM 2002\r
+#define IDC_EDIT3 2002\r
+#define IDC_BUTTON_REVERSE 2003\r
+#define IDC_COMBO_OUTPUT 2004\r
+#define IDC_BUTTON_OUTPUT_OPTIONS 2005\r
+#define IDC_CHECK_DEFAULT 2007\r
+#define IDC_COMBO_MODE 2008\r
+#define IDC_CHECK_USE_TAG 2009\r
+#define IDC_COMBO_OUTPUT_FORMAT 2013\r
+#define IDC_CHECK_COMMANDLINE_OPTS 2015\r
+#define IDC_EDIT_COMMANDLINE_OPTION 2016\r
+#define IDC_COMBO_MPEG1_AUDIO_BITRATE 2017\r
+#define IDC_COMBO_MPEG2_AUDIO_BITRATE 2018\r
+#define IDC_COMBO_VBR_BITRATE_LOW 2019\r
+#define IDC_COMBO_VBR_BITRATE_HIGH 2020\r
+#define IDC_CHECK_16KHZ_LOW_PASS_FILTER 2021\r
+#define IDC_CHECK_ENHANCED_LOW_PASS_FILTER 2022\r
+#define IDC_EDIT_LPF_PARA1 2023\r
+#define IDC_EDIT_LPF_PARA2 2024\r
+#define IDC_COMBO_ENCODE_MODE 2025\r
+#define IDC_CHECK_USEPSY 2026\r
+#define IDC_CHECK_CPUMMX 2027\r
+#define IDC_CHECK_CPUSSE 2028\r
+#define IDC_CHECK_CPU3DNOW 2029\r
+#define IDC_CHECK_CPUE3DNOW 2030\r
+#define IDC_COMBO_EMPHASIS_TYPE 2031\r
+#define IDC_COMBO_VBR 2033\r
+#define IDC_CHECK_VBR 2034\r
+#define IDC_CHECK_OUTFREQ 2035\r
+#define IDC_EDIT_OUTFREQ 2036\r
+#define IDC_CHECK_MSTHRESHOLD 2037\r
+#define IDC_EDIT_MSTHRESHOLD_THRESHOLD 2038\r
+#define IDC_EDIT_MSTHRESHOLD_MSPOWER 2039\r
+#define IDC_CHECK_VERIFY 2040\r
+#define IDC_BUTTON_APPLY 2041\r
+#define IDC_COMBO_OUTPUT_MODE 2042\r
+#define IDC_CHECK_USE_CPU_OPTS 2043\r
+#define IDC_CHECK_MPEG1AUDIOBITRATE 2045\r
+#define IDC_CHECK_MPEG2AUDIOBITRATE 2046\r
+#define IDC_CHECK_VBR_BITRATE 2047\r
+#define IDC_CHECK_OUTPUT_FORMAT 2048\r
+#define IDC_CHECK_ENCODE_MODE 2049\r
+#define IDC_CHECK_EMPHASIS_TYPE 2050\r
+#define IDC_CHECKBOX_TVAA 2057\r
+#define IDC_CHECKBOX_TVAD 2058\r
+#define IDC_CHECKBOX_TVAR 2059\r
+#define IDC_CHECKBOX_PDELAY 2060\r
#define IDC_STATIC -1\r
\r
// Next default values for new objects\r
// \r
#ifdef APSTUDIO_INVOKED\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NEXT_RESOURCE_VALUE 103\r
-#define _APS_NEXT_COMMAND_VALUE 40001\r
-#define _APS_NEXT_CONTROL_VALUE 2003\r
+#define _APS_NEXT_RESOURCE_VALUE 113\r
+#define _APS_NEXT_COMMAND_VALUE 40002\r
+#define _APS_NEXT_CONTROL_VALUE 2061\r
#define _APS_NEXT_SYMED_VALUE 101\r
#endif\r
#endif\r
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | \r
WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU\r
EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_NOPARENTNOTIFY | WS_EX_ACCEPTFILES | \r
- WS_EX_LEFTSCROLLBAR | WS_EX_APPWINDOW\r
+ WS_EX_APPWINDOW\r
CAPTION "TiMidity++ Win32GUI"\r
MENU IDM_MENU_MAIN\r
-FONT 8, "MS Sans Serif", 0, 0\r
+FONT 8, "MS Sans Serif", 0, 0, 0x1\r
BEGIN\r
CONTROL "ToolBarMain",IDC_TOOLBARWINDOW_MAIN,"ToolbarWindow32",\r
WS_TABSTOP | 0x14c,2,46,112,17\r
CONTROL "",IDC_RECT_CANVAS,"Static",SS_GRAYFRAME,220,0,68,44\r
END\r
\r
-#endif // Æ°Ä×Ù resources\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-// \93ú\96{\8cê resources\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r
-#ifdef _WIN32\r
-LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT\r
-#pragma code_page(932)\r
-#endif //_WIN32\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Dialog\r
-//\r
-\r
-IDD_DIALOG_DEBUG DIALOGEX 0, 0, 240, 240\r
-STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Debug Window (TiMidity Win32GUI)"\r
-FONT 9, "Times New Roman", 400, 0\r
-BEGIN\r
- PUSHBUTTON "C L E A R",IDCLEAR,72,164,68,16,BS_CENTER\r
- CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button",\r
- BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,20,164,36,16\r
- CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,16,164,44,16\r
- PUSHBUTTON "E X I T",IDC_BUTTON_EXIT,144,164,48,16,BS_CENTER | \r
- WS_DISABLED\r
- PUSHBUTTON "ExitProcess",IDC_BUTTON_EXITPROCESS,196,164,40,16,\r
- BS_CENTER\r
- CONTROL "Frame2",-1,"Static",SS_ETCHEDFRAME,0,184,240,1\r
- PUSHBUTTON "Heaps Check",IDC_BUTTON_HEAP_CHECK,4,188,50,16,\r
- BS_CENTER\r
- PUSHBUTTON "Variables Check",IDC_BUTTON_VARIABLES_CHECK,60,188,50,\r
- 16,BS_CENTER\r
- EDITTEXT IDC_EDIT,0,0,240,160,ES_MULTILINE | ES_AUTOVSCROLL | \r
- ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
- WS_VSCROLL | WS_HSCROLL\r
-END\r
-\r
-IDD_DIALOG_CONSOLE DIALOGEX 0, 0, 243, 184\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Console Window (TiMidity Win32GUI)"\r
-FONT 9, "\82l\82r \82o\96¾\92©", 0, 0\r
-BEGIN\r
- PUSHBUTTON "C L E A R",IDCLEAR,140,167,96,16,BS_CENTER\r
- EDITTEXT IDC_EDIT_VERBOSITY,44,167,16,16,ES_OEMCONVERT\r
- CONTROL "VALID",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | \r
- BS_LEFTTEXT | WS_TABSTOP,92,167,32,16\r
- CONTROL "",-1,"Static",SS_ETCHEDFRAME,4,167,80,16\r
- EDITTEXT IDC_EDIT,0,0,242,160,ES_MULTILINE | ES_AUTOVSCROLL | \r
- ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
- WS_VSCROLL | WS_HSCROLL,WS_EX_STATICEDGE\r
- PUSHBUTTON "VERBOSITY",IDC_BUTTON_VERBOSITY,4,167,40,16,BS_CENTER,\r
- WS_EX_CLIENTEDGE\r
- PUSHBUTTON "<<",IDC_BUTTON_DEC,60,167,12,16,BS_CENTER\r
- PUSHBUTTON ">>",IDC_BUTTON_INC,72,167,12,16,BS_CENTER\r
- CONTROL "",-1,"Static",SS_ETCHEDFRAME,88,167,41,16\r
-END\r
-\r
-IDD_DIALOG_CONSOLE_EN DIALOGEX 0, 0, 247, 181\r
-STYLE DS_MODALFRAME | DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Console Window (TiMidity Win32GUI)"\r
-FONT 8, "Times New Roman"\r
-BEGIN\r
- PUSHBUTTON "C L E A R",IDCLEAR,150,165,90,15,BS_CENTER\r
- EDITTEXT IDC_EDIT_VERBOSITY,50,165,21,15,ES_OEMCONVERT\r
- CONTROL "VALID",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | \r
- BS_LEFTTEXT | WS_TABSTOP,110,165,32,15\r
- CONTROL "",-1,"Static",SS_ETCHEDFRAME,5,165,96,16\r
- EDITTEXT IDC_EDIT,0,0,245,160,ES_MULTILINE | ES_AUTOVSCROLL | \r
- ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
- WS_VSCROLL | WS_HSCROLL,WS_EX_STATICEDGE\r
- PUSHBUTTON "VERBOSITY",IDC_BUTTON_VERBOSITY,4,165,46,15,BS_CENTER,\r
- WS_EX_CLIENTEDGE\r
- PUSHBUTTON "<<",IDC_BUTTON_DEC,70,165,15,16,BS_CENTER\r
- PUSHBUTTON ">>",IDC_BUTTON_INC,85,165,15,16,BS_CENTER\r
- CONTROL "",-1,"Static",SS_ETCHEDFRAME,105,165,40,16\r
-END\r
-\r
-IDD_DIALOG_DOC DIALOG DISCARDABLE 0, 0, 302, 257\r
-STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
-CAPTION "Document Window (TiMidity Win32GUI)"\r
-FONT 9, "\82l\82r \96¾\92©"\r
-BEGIN\r
- EDITTEXT IDC_EDIT_FILENAME,100,240,150,16,ES_CENTER | ES_READONLY\r
- PUSHBUTTON "<<",IDC_BUTTON_PREV,255,240,20,16,BS_CENTER\r
- PUSHBUTTON ">>",IDC_BUTTON_NEXT,275,240,20,16,BS_CENTER\r
- EDITTEXT IDC_EDIT,0,0,295,220,ES_MULTILINE | ES_AUTOVSCROLL | \r
- ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
- WS_VSCROLL | WS_HSCROLL\r
- EDITTEXT IDC_EDIT_INFO,0,240,95,16,ES_READONLY\r
-END\r
-\r
-IDD_DIALOG_DOC_EN DIALOG DISCARDABLE 0, 0, 241, 180\r
-STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
-CAPTION "Document Window (TiMidity Win32GUI)"\r
-FONT 9, "Times New Roman"\r
-BEGIN\r
- EDITTEXT IDC_EDIT_FILENAME,60,168,140,12,ES_CENTER | ES_READONLY\r
- PUSHBUTTON "<<",IDC_BUTTON_PREV,204,168,16,12,BS_CENTER\r
- PUSHBUTTON ">>",IDC_BUTTON_NEXT,220,168,16,12,BS_CENTER\r
- EDITTEXT IDC_EDIT,0,0,236,160,ES_MULTILINE | ES_AUTOVSCROLL | \r
- ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
- WS_VSCROLL | WS_HSCROLL\r
- EDITTEXT IDC_EDIT_INFO,0,168,56,12,ES_READONLY\r
-END\r
-\r
-IDD_DIALOG_WRD DIALOGEX 0, 0, 320, 220\r
-STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Wrd Tracer Window (TiMidity Win32GUI)"\r
-FONT 9, "Times New Roman", 400, 0\r
-BEGIN\r
- PUSHBUTTON "FLUSH",IDFLUSH,256,200,60,16,BS_CENTER\r
- CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button",\r
- BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,16,200,36,16\r
- CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,12,200,44,16\r
-END\r
-\r
-IDD_DIALOG_SOUNDSPEC DIALOGEX 0, 0, 240, 180\r
-STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Sound Spec Window (TiMidity Win32GUI)"\r
-FONT 9, "Times New Roman", 400, 0\r
-BEGIN\r
- PUSHBUTTON "C L E A R",IDCLEAR,136,164,96,16,BS_CENTER\r
- CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button",\r
- BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,20,164,36,16\r
- CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,16,164,44,16\r
-END\r
-\r
-IDD_DIALOG_TRACER DIALOGEX 0, 0, 320, 220\r
-STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Tracer Window (TiMidity Win32GUI)"\r
-FONT 9, "Times New Roman", 400, 0\r
-BEGIN\r
- PUSHBUTTON "FLUSH",IDFLUSH,256,200,60,16,BS_CENTER\r
- CONTROL "VALID",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | \r
- BS_LEFTTEXT | WS_TABSTOP,16,200,36,16\r
- CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,12,200,44,16\r
-END\r
-\r
-IDD_DIALOG_SIMPLE_LIST DIALOGEX 0, 0, 242, 187\r
-STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
-EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_ACCEPTFILES\r
-CAPTION "List Window (TiMidity Win32GUI)"\r
-FONT 9, "\82l\82r \82o\96¾\92©"\r
-BEGIN\r
- LISTBOX IDC_LISTBOX_PLAYLIST,0,0,241,172,LBS_HASSTRINGS | \r
- LBS_WANTKEYBOARDINPUT | LBS_DISABLENOSCROLL | WS_VSCROLL | \r
- WS_HSCROLL | WS_TABSTOP\r
- PUSHBUTTON "DOC",IDC_BUTTON_DOC,65,175,40,12,BS_CENTER\r
- PUSHBUTTON "CLEAR",IDC_BUTTON_CLEAR,200,175,42,12,BS_CENTER\r
- PUSHBUTTON "REFINE",IDC_BUTTON_REFINE,155,175,30,12,BS_CENTER\r
- PUSHBUTTON "UNIQ",IDC_BUTTON_UNIQ,125,175,30,12,BS_CENTER\r
- EDITTEXT IDC_EDIT_NUM,5,175,45,12,ES_READONLY\r
-END\r
-\r
-IDD_DIALOG_SIMPLE_LIST_EN DIALOGEX 0, 0, 242, 187\r
-STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
-EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_ACCEPTFILES\r
-CAPTION "List Window (TiMidity Win32GUI)"\r
-FONT 9, "Times New Roman"\r
-BEGIN\r
- LISTBOX IDC_LISTBOX_PLAYLIST,0,0,241,170,LBS_HASSTRINGS | \r
- LBS_WANTKEYBOARDINPUT | LBS_DISABLENOSCROLL | WS_VSCROLL | \r
- WS_HSCROLL | WS_TABSTOP\r
- PUSHBUTTON "DOC",IDC_BUTTON_DOC,55,175,45,10,BS_CENTER\r
- PUSHBUTTON "CLEAR",IDC_BUTTON_CLEAR,190,175,46,10,BS_CENTER\r
- PUSHBUTTON "REFINE",IDC_BUTTON_REFINE,145,175,29,10,BS_CENTER\r
- PUSHBUTTON "UNIQ",IDC_BUTTON_UNIQ,115,175,31,10,BS_CENTER\r
- EDITTEXT IDC_EDIT_NUM,5,175,45,12,ES_READONLY\r
-END\r
-\r
-IDD_PREF_PLAYER DIALOG DISCARDABLE 0, 0, 212, 92\r
+IDD_PREF_PLAYER_EN DIALOG DISCARDABLE 0, 0, 212, 92\r
STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
WS_POPUP | WS_VISIBLE | WS_CAPTION\r
FONT 9, "Times New Roman"\r
BS_AUTOCHECKBOX | WS_TABSTOP,8,72,52,8\r
END\r
\r
-IDD_PREF_TIMIDITY1 DIALOG DISCARDABLE 0, 0, 212, 92\r
+IDD_PREF_TIMIDITY1_EN DIALOG DISCARDABLE 0, 0, 212, 92\r
STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
WS_POPUP | WS_VISIBLE | WS_CAPTION\r
FONT 9, "Times New Roman"\r
EDITTEXT IDC_EDIT_MODIFY_RELEASE,180,76,28,10\r
END\r
\r
-IDD_PREF_TIMIDITY2 DIALOG DISCARDABLE 0, 0, 212, 92\r
+IDD_PREF_TIMIDITY2_EN DIALOG DISCARDABLE 0, 0, 212, 92\r
STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
WS_POPUP | WS_VISIBLE | WS_CAPTION\r
FONT 9, "Times New Roman"\r
EDITTEXT IDC_EDIT_CONTROL_RATIO,160,52,24,10\r
END\r
\r
-IDD_PREF_TIMIDITY3 DIALOG DISCARDABLE 0, 0, 212, 92\r
+IDD_PREF_TIMIDITY3_EN DIALOG DISCARDABLE 0, 0, 212, 92\r
STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
WS_POPUP | WS_VISIBLE | WS_CAPTION\r
FONT 9, "Times New Roman"\r
PUSHBUTTON "DEL",IDC_BUTTON_OUTPUT_FILE_DEL,188,72,16,12,BS_CENTER\r
END\r
\r
-IDD_PREF_TIMIDITY4 DIALOGEX 0, 0, 212, 92\r
+IDD_PREF_TIMIDITY4_EN DIALOGEX 0, 0, 212, 92\r
STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
WS_POPUP | WS_VISIBLE | WS_CAPTION\r
-FONT 9, "Times New Roman", 0, 0\r
+FONT 9, "Times New Roman", 0, 0, 0x1\r
BEGIN\r
CONTROL "Ch01",IDC_CHECKBOX_CH01,"Button",BS_AUTOCHECKBOX | \r
WS_TABSTOP,8,12,28,8\r
BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,136,60,64,16\r
END\r
\r
+IDD_DIALOG_MAIN_EN DIALOGEX 0, 0, 308, 64\r
+STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | \r
+ WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU\r
+EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_NOPARENTNOTIFY | WS_EX_ACCEPTFILES | \r
+ WS_EX_APPWINDOW\r
+CAPTION "TiMidity++ Win32GUI"\r
+MENU IDM_MENU_MAIN_EN\r
+FONT 8, "MS Sans Serif", 0, 0, 0x1\r
+BEGIN\r
+ CONTROL "ToolBarMain",IDC_TOOLBARWINDOW_MAIN,"ToolbarWindow32",\r
+ WS_TABSTOP | 0x14c,2,46,112,17\r
+ CONTROL "ToolBarSubWnd",IDC_TOOLBARWINDOW_SUBWND,"ToolbarWindow32",\r
+ WS_TABSTOP | 0x44,112,46,80,16\r
+ SCROLLBAR IDC_SCROLLBAR_PROGRESS,190,48,100,12,WS_DISABLED\r
+ SCROLLBAR IDC_SCROLLBAR_VOLUME,292,0,12,60,SBS_VERT\r
+ CONTROL "",IDC_RECT_PANEL,"Static",SS_GRAYFRAME | SS_SUNKEN,0,0,\r
+ 220,44\r
+ CONTROL "",IDC_RECT_CANVAS,"Static",SS_GRAYFRAME,220,0,68,44\r
+END\r
+\r
+#endif // Æ°Ä×Ù resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// \93ú\96{\8cê resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT\r
+#pragma code_page(932)\r
+#endif //_WIN32\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Dialog\r
+//\r
+\r
+IDD_DIALOG_DEBUG DIALOG DISCARDABLE 0, 0, 240, 240\r
+STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Debug Window (TiMidity Win32GUI)"\r
+FONT 9, "Times New Roman"\r
+BEGIN\r
+ PUSHBUTTON "C L E A R",IDCLEAR,72,164,68,16,BS_CENTER\r
+ CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,20,164,36,16\r
+ CONTROL "",-1,"Static",SS_ETCHEDFRAME,16,164,44,16\r
+ PUSHBUTTON "E X I T",IDC_BUTTON_EXIT,144,164,48,16,BS_CENTER | \r
+ WS_DISABLED\r
+ PUSHBUTTON "ExitProcess",IDC_BUTTON_EXITPROCESS,196,164,40,16,\r
+ BS_CENTER\r
+ CONTROL "",-1,"Static",SS_ETCHEDHORZ,0,184,240,1\r
+ PUSHBUTTON "Heaps Check",IDC_BUTTON_HEAP_CHECK,4,188,50,16,\r
+ BS_CENTER\r
+ PUSHBUTTON "Variables Check",IDC_BUTTON_VARIABLES_CHECK,60,188,50,\r
+ 16,BS_CENTER\r
+ EDITTEXT IDC_EDIT,0,0,240,160,ES_MULTILINE | ES_AUTOVSCROLL | \r
+ ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
+ WS_VSCROLL | WS_HSCROLL\r
+END\r
+\r
+IDD_DIALOG_CONSOLE DIALOGEX 0, 0, 243, 184\r
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
+CAPTION "\83R\83\93\83\\81[\83\8b (TiMidity++ Win32GUI)"\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N", 0, 0, 0x1\r
+BEGIN\r
+ PUSHBUTTON "\83N\83\8a\83A",IDCLEAR,140,167,96,16,BS_CENTER\r
+ EDITTEXT IDC_EDIT_VERBOSITY,44,167,16,16,ES_OEMCONVERT\r
+ CONTROL "\97L\8cø",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | \r
+ BS_LEFTTEXT | WS_TABSTOP,97,167,27,16\r
+ CONTROL "",-1,"Static",SS_ETCHEDFRAME,4,167,80,16\r
+ EDITTEXT IDC_EDIT,0,0,242,160,ES_MULTILINE | ES_AUTOVSCROLL | \r
+ ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
+ WS_VSCROLL | WS_HSCROLL,WS_EX_STATICEDGE\r
+ PUSHBUTTON "\83\8c\83x\83\8b",IDC_BUTTON_VERBOSITY,4,167,40,16,BS_CENTER,\r
+ WS_EX_CLIENTEDGE\r
+ PUSHBUTTON "<<",IDC_BUTTON_DEC,60,167,12,16,BS_CENTER\r
+ PUSHBUTTON ">>",IDC_BUTTON_INC,72,167,12,16,BS_CENTER\r
+ CONTROL "",-1,"Static",SS_ETCHEDFRAME,93,167,38,16\r
+END\r
+\r
+IDD_DIALOG_CONSOLE_EN DIALOGEX 0, 0, 247, 181\r
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Console Window (TiMidity Win32GUI)"\r
+FONT 8, "Times New Roman", 0, 0, 0x1\r
+BEGIN\r
+ PUSHBUTTON "C L E A R",IDCLEAR,150,165,90,15,BS_CENTER\r
+ EDITTEXT IDC_EDIT_VERBOSITY,50,165,21,15,ES_OEMCONVERT\r
+ CONTROL "VALID",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | \r
+ BS_LEFTTEXT | WS_TABSTOP,110,165,32,15\r
+ CONTROL "",-1,"Static",SS_ETCHEDFRAME,5,165,96,16\r
+ EDITTEXT IDC_EDIT,0,0,245,160,ES_MULTILINE | ES_AUTOVSCROLL | \r
+ ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
+ WS_VSCROLL | WS_HSCROLL,WS_EX_STATICEDGE\r
+ PUSHBUTTON "VERBOSITY",IDC_BUTTON_VERBOSITY,4,165,46,15,BS_CENTER,\r
+ WS_EX_CLIENTEDGE\r
+ PUSHBUTTON "<<",IDC_BUTTON_DEC,70,165,15,16,BS_CENTER\r
+ PUSHBUTTON ">>",IDC_BUTTON_INC,85,165,15,16,BS_CENTER\r
+ CONTROL "",-1,"Static",SS_ETCHEDFRAME,105,165,40,16\r
+END\r
+\r
+IDD_DIALOG_DOC DIALOG DISCARDABLE 0, 0, 302, 257\r
+STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+CAPTION "\83h\83L\83\85\83\81\83\93\83g (TiMidity++ Win32GUI)"\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
+BEGIN\r
+ EDITTEXT IDC_EDIT_FILENAME,100,240,150,16,ES_CENTER | ES_READONLY\r
+ PUSHBUTTON "<<",IDC_BUTTON_PREV,255,240,20,16,BS_CENTER\r
+ PUSHBUTTON ">>",IDC_BUTTON_NEXT,275,240,20,16,BS_CENTER\r
+ EDITTEXT IDC_EDIT,0,0,295,220,ES_MULTILINE | ES_AUTOVSCROLL | \r
+ ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
+ WS_VSCROLL | WS_HSCROLL\r
+ EDITTEXT IDC_EDIT_INFO,0,240,95,16,ES_READONLY\r
+END\r
+\r
+IDD_DIALOG_DOC_EN DIALOG DISCARDABLE 0, 0, 241, 180\r
+STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+CAPTION "Document Window (TiMidity Win32GUI)"\r
+FONT 9, "Times New Roman"\r
+BEGIN\r
+ EDITTEXT IDC_EDIT_FILENAME,60,168,140,12,ES_CENTER | ES_READONLY\r
+ PUSHBUTTON "<<",IDC_BUTTON_PREV,204,168,16,12,BS_CENTER\r
+ PUSHBUTTON ">>",IDC_BUTTON_NEXT,220,168,16,12,BS_CENTER\r
+ EDITTEXT IDC_EDIT,0,0,236,160,ES_MULTILINE | ES_AUTOVSCROLL | \r
+ ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | \r
+ WS_VSCROLL | WS_HSCROLL\r
+ EDITTEXT IDC_EDIT_INFO,0,168,56,12,ES_READONLY\r
+END\r
+\r
+IDD_DIALOG_WRD DIALOGEX 0, 0, 320, 220\r
+STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Wrd Tracer Window (TiMidity Win32GUI)"\r
+FONT 9, "Times New Roman", 400, 0, 0x1\r
+BEGIN\r
+ PUSHBUTTON "FLUSH",IDFLUSH,256,200,60,16,BS_CENTER\r
+ CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,16,200,36,16\r
+ CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,12,200,44,16\r
+END\r
+\r
+IDD_DIALOG_SOUNDSPEC DIALOG DISCARDABLE 0, 0, 240, 180\r
+STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Sound Spec Window (TiMidity Win32GUI)"\r
+FONT 9, "Times New Roman"\r
+BEGIN\r
+ PUSHBUTTON "C L E A R",IDCLEAR,136,164,96,16,BS_CENTER\r
+ CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,20,164,36,16\r
+ CONTROL "",-1,"Static",SS_ETCHEDFRAME,16,164,44,16\r
+END\r
+\r
+IDD_DIALOG_TRACER DIALOGEX 0, 0, 320, 220\r
+STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Tracer Window (TiMidity Win32GUI)"\r
+FONT 9, "Times New Roman", 400, 0, 0x1\r
+BEGIN\r
+ PUSHBUTTON "FLUSH",IDFLUSH,256,200,60,16,BS_CENTER\r
+ CONTROL "VALID",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | \r
+ BS_LEFTTEXT | WS_TABSTOP,16,200,36,16\r
+ CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,12,200,44,16\r
+END\r
+\r
+IDD_DIALOG_SIMPLE_LIST DIALOGEX 0, 0, 242, 187\r
+STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_ACCEPTFILES\r
+CAPTION "\83v\83\8c\83C\83\8a\83X\83g (TiMidity++ Win32GUI)"\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N", 0, 0, 0x1\r
+BEGIN\r
+ LISTBOX IDC_LISTBOX_PLAYLIST,0,0,241,172,LBS_HASSTRINGS | \r
+ LBS_WANTKEYBOARDINPUT | LBS_DISABLENOSCROLL | WS_VSCROLL | \r
+ WS_HSCROLL | WS_TABSTOP\r
+ PUSHBUTTON "\83h\83L\83\85\83\81\83\93\83g",IDC_BUTTON_DOC,54,175,43,12,BS_CENTER\r
+ PUSHBUTTON "\83N\83\8a\83A",IDC_BUTTON_CLEAR,200,175,42,12,BS_CENTER\r
+ PUSHBUTTON "\89\89\91t\82Ì\82Ý",IDC_BUTTON_REFINE,154,175,37,12,BS_CENTER\r
+ PUSHBUTTON "\8fd\95¡\8dí\8f\9c",IDC_BUTTON_UNIQ,105,175,38,12,BS_CENTER\r
+ EDITTEXT IDC_EDIT_NUM,5,175,45,12,ES_READONLY\r
+END\r
+\r
+IDD_DIALOG_SIMPLE_LIST_EN DIALOGEX 0, 0, 242, 187\r
+STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
+EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_ACCEPTFILES\r
+CAPTION "List Window (TiMidity Win32GUI)"\r
+FONT 9, "Times New Roman", 0, 0, 0x1\r
+BEGIN\r
+ LISTBOX IDC_LISTBOX_PLAYLIST,0,0,241,170,LBS_HASSTRINGS | \r
+ LBS_WANTKEYBOARDINPUT | LBS_DISABLENOSCROLL | WS_VSCROLL | \r
+ WS_HSCROLL | WS_TABSTOP\r
+ PUSHBUTTON "DOC",IDC_BUTTON_DOC,55,175,45,10,BS_CENTER\r
+ PUSHBUTTON "CLEAR",IDC_BUTTON_CLEAR,190,175,46,10,BS_CENTER\r
+ PUSHBUTTON "REFINE",IDC_BUTTON_REFINE,145,175,29,10,BS_CENTER\r
+ PUSHBUTTON "UNIQ",IDC_BUTTON_UNIQ,115,175,31,10,BS_CENTER\r
+ EDITTEXT IDC_EDIT_NUM,5,175,45,12,ES_READONLY\r
+END\r
+\r
+IDD_PREF_PLAYER DIALOG DISCARDABLE 0, 0, 199, 155\r
+STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_POPUP | WS_VISIBLE | \r
+ WS_CAPTION\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
+BEGIN\r
+ PUSHBUTTON "\90Ý\92è\83t\83@\83C\83\8b",IDC_BUTTON_CONFIG_FILE,3,11,52,14,\r
+ BS_CENTER\r
+ EDITTEXT IDC_EDIT_CONFIG_FILE,62,10,137,16,ES_AUTOHSCROLL | \r
+ ES_OEMCONVERT\r
+ GROUPBOX "\83v\83\8c\83C\83\84\81[",IDC_GROUPBOX_PLAYERMODE,2,32,106,61,\r
+ WS_GROUP\r
+ CONTROL "\91S\8bÈ\89\89\91t\8cã\8fI\97¹",IDC_CHECKBOX_AUTOQUIT,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,117,44,61,8\r
+ CONTROL "\8fd\95¡\93o\98^\82ð\96h\8e~",IDC_CHECKBOX_AUTOUNIQ,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,117,56,59,8\r
+ CONTROL "\89\89\91t\83t\83@\83C\83\8b\82Ì\82Ý\93o\98^",IDC_CHECKBOX_AUTOREFINE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,117,68,75,8\r
+ GROUPBOX "\8c¾\8cê",IDC_GROUPBOX_LANGUAGE,160,101,40,38,WS_GROUP\r
+ CONTROL "\93ú\96{\8cê",IDC_RADIOBUTTON_JAPANESE,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,163,113,30,8\r
+ CONTROL "\89p\8cê",IDC_RADIOBUTTON_ENGLISH,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,163,126,25,8\r
+ CONTROL "\88ê\8bÈ\89\89\91t\82µ\82Ä\92â\8e~",IDC_CHECKBOX_NOT_CONTINUE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,7,44,64,8\r
+ CONTROL "\83h\83\89\83b\83O&&\83h\83\8d\83b\83v\82Å\8dÄ\90¶\82µ\82È\82¢",\r
+ IDC_CHECKBOX_NOT_DRAG_START,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,7,56,97,8\r
+ GROUPBOX "\83t\83H\83\8b\83_",IDC_STATIC,83,101,70,23\r
+ CONTROL "\8dÄ\8bA\93I\82É\92T\8dõ",IDC_CHECK_SEACHDIRRECURSIVE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,88,111,51,10\r
+ GROUPBOX "\83h\83L\83\85\83\81\83\93\83g",IDC_STATIC,2,101,75,38\r
+ CONTROL "\8e©\93®\95\\8e¦\82µ\82È\82¢",IDC_CHECK_DOCWNDINDEPENDENT,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,112,56,8\r
+ GROUPBOX "\90Ý\92è",IDC_STATIC,83,130,70,25\r
+ CONTROL "\90Ý\92è\82Ì\8e©\93®\95Û\91¶",IDC_CHECK_INIFILE_AUTOSAVE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,88,140,59,10\r
+ CONTROL "\83\8a\83s\81[\83g\82µ\82È\82¢",IDC_CHECKBOX_NOT_LOOPING,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,7,68,51,8\r
+ CONTROL "\83I\81[\83g\83X\83^\81[\83g",IDC_CHECKBOX_AUTOSTART,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,7,80,56,8\r
+ CONTROL "\83\89\83\93\83_\83\80\8dÄ\90¶",IDC_CHECKBOX_RANDOM,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,117,80,50,8\r
+ CONTROL "\83|\83b\83v\83A\83b\83v",IDC_CHECK_DOCWNDAUTOPOPUP,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,124,59,10\r
+ GROUPBOX "\83v\83\8c\83C\83\8a\83X\83g",IDC_STATIC,112,32,85,61\r
+END\r
+\r
+IDD_PREF_TIMIDITY1 DIALOG DISCARDABLE 0, 0, 210, 191\r
+STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
+ WS_POPUP | WS_VISIBLE | WS_CAPTION\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
+BEGIN\r
+ CONTROL "\83R\81[\83\89\83X",IDC_CHECKBOX_CHORUS,"Button",BS_AUTOCHECKBOX | \r
+ BS_LEFT | BS_TOP | WS_TABSTOP,6,17,41,10\r
+ CONTROL "\83R\81[\83\89\83X\83\8c\83x\83\8b\8ew\92è",IDC_CHECKBOX_CHORUS_LEVEL,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,101,17,73,10\r
+ CONTROL "\83\8a\83o\81[\83u",IDC_CHECKBOX_REVERB,"Button",BS_AUTOCHECKBOX | \r
+ BS_LEFT | BS_TOP | WS_TABSTOP,6,31,41,10\r
+ CONTROL "\83O\83\8d\81[\83o\83\8b\83\8a\83o\81[\83u",IDC_CHECKBOX_GLOBAL_REVERB,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,101,46,74,10\r
+ CONTROL "\83\8a\83o\81[\83u\83\8c\83x\83\8b\8ew\92è",IDC_CHECKBOX_REVERB_LEVEL,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,101,31,74,10\r
+ EDITTEXT IDC_EDIT_REVERB,177,31,24,10,ES_NUMBER\r
+ CONTROL "L&&R \83f\83B\83\8c\83C",IDC_CHECKBOX_DELAY,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP,101,61,\r
+ 57,10\r
+ CONTROL "\8d¶",IDC_RADIOBUTTON_DELAY_LEFT,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,109,76,23,10\r
+ CONTROL "\89E",IDC_RADIOBUTTON_DELAY_RIGHT,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,135,76,23,10\r
+ CONTROL "\89ñ\93]",IDC_RADIOBUTTON_DELAY_CENTER,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,161,76,30,10\r
+ LTEXT "\92x\89\84(msec)",IDC_STATIC,113,91,35,8,NOT WS_GROUP | \r
+ WS_TABSTOP\r
+ EDITTEXT IDC_EDIT_DELAY,151,89,32,10,ES_NUMBER\r
+ LTEXT "\83m\83C\83Y\83V\83F\83C\83s\83\93\83O (0..4)",IDC_STATIC,101,117,74,8,NOT \r
+ WS_GROUP | WS_TABSTOP\r
+ EDITTEXT IDC_EDIT_NOISESHARPING,178,115,16,10,ES_NUMBER\r
+ CONTROL "\83\82\83W\83\85\83\8c\81[\83V\83\87\83\93",IDC_CHECKBOX_MODWHEEL,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,45,63,10\r
+ CONTROL "\83|\83\8b\83^\83\81\83\93\83g",IDC_CHECKBOX_PORTAMENTO,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,59,50,10\r
+ CONTROL "NRPN \83r\83u\83\89\81[\83g",IDC_CHECKBOX_NRPNVIB,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,73,65,10\r
+ CONTROL "\83`\83\83\83\93\83l\83\8b\83v\83\8c\83b\83V\83\83\81[",IDC_CHECKBOX_CHPRESS,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,87,80,10\r
+ CONTROL "\93¯\88ê\89¹\82Ì\8fd\95¡\82ð\8b\96\82·",IDC_CHECKBOX_OVOICE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,115,77,10\r
+ CONTROL "\83e\83L\83X\83g\83\81\83^\83C\83x\83\93\83g",IDC_CHECKBOX_TRACETEXT,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,101,73,10\r
+ LTEXT "\8ec\8b¿\8cø\89Ê(0..1000)",IDC_STATIC,101,105,52,8,NOT WS_GROUP | \r
+ WS_TABSTOP\r
+ EDITTEXT IDC_EDIT_MODIFY_RELEASE,155,103,28,10\r
+ GROUPBOX "GM/GS/XG",IDC_STATIC,1,3,91,182\r
+ GROUPBOX "\93Á\8eê",IDC_STATIC,97,3,113,187\r
+ CONTROL "\83A\83^\83b\83N\81E\83^\83C\83\80",IDC_CHECKBOX_TVAA,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,129,59,10\r
+ CONTROL "\83f\83B\83P\83C\81E\83^\83C\83\80",IDC_CHECKBOX_TVAD,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,143,61,10\r
+ CONTROL "\83\8a\83\8a\81[\83X\81E\83^\83C\83\80",IDC_CHECKBOX_TVAR,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,157,61,10\r
+ EDITTEXT IDC_EDIT_CHORUS,177,16,24,10,ES_NUMBER\r
+ CONTROL "\83f\83B\83\8c\83C",IDC_CHECKBOX_PDELAY,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,6,171,39,10\r
+ CONTROL "\83T\83\89\83E\83\93\83h\83R\81[\83\89\83X",IDC_CHECKBOX_SRCHORUS,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,101,130,70,10\r
+ CONTROL "\8bU\83\8c\83]\83i\83\93\83X",IDC_CHECKBOX_RESONANCE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,101,146,53,10\r
+ EDITTEXT IDC_EDIT_ENV_ATTACK,161,160,28,10\r
+ EDITTEXT IDC_EDIT_VELOCITYTABLE,178,174,28,10\r
+ LTEXT "\83A\83^\83b\83N\83^\83C\83v (0..3)",IDC_STATIC,101,162,56,8,NOT \r
+ WS_GROUP | WS_TABSTOP\r
+ LTEXT "\83x\83\8d\83V\83e\83B\83e\81[\83u\83\8b (0..2)",IDC_STATIC,101,175,72,8,NOT \r
+ WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PREF_TIMIDITY2 DIALOG DISCARDABLE 0, 0, 213, 141\r
+STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
+ WS_POPUP | WS_VISIBLE | WS_CAPTION\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
+BEGIN\r
+ LTEXT "\8dÅ\91å\93¯\8e\9e\94\89¹\90\94(\83{\83C\83X)",IDC_STATIC,6,19,71,8,NOT \r
+ WS_GROUP\r
+ EDITTEXT IDC_EDIT_VOICES,78,19,24,12,ES_NUMBER\r
+ LTEXT "\83{\83\8a\83\85\81[\83\80(%)",IDC_STATIC,6,33,40,8,NOT WS_GROUP\r
+ EDITTEXT IDC_EDIT_AMPLIFICATION,47,31,24,12\r
+ CONTROL "\88ê\8bÈ\96\88\82É\83p\83b\83`\82ð\83A\83\93\83\8d\81[\83h",IDC_CHECKBOX_FREE_INST,\r
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP,\r
+ 6,75,92,10\r
+ CONTROL "\83A\83\93\83`\83G\83C\83\8a\83A\83X",IDC_CHECKBOX_ANTIALIAS,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP,6,49,62,\r
+ 10\r
+ CONTROL "\89\89\91t\92\86\82É\83p\83b\83`\82ð\83\8d\81[\83h",IDC_CHECKBOX_LOADINST_PLAYING,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,63,83,10\r
+ LTEXT "\83L\83\83\83b\83V\83\85\97e\97Ê",IDC_STATIC,117,19,44,8,NOT WS_GROUP\r
+ EDITTEXT IDC_EDIT_CACHE_SIZE,162,17,39,12\r
+ CONTROL "\94\89¹\90\94\82ð\8e©\93®\92²\90®",IDC_CHECKBOX_REDUCE_VOICE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,89,67,8\r
+ LTEXT "\95W\8f\80\82Ì\83o\83\93\83N",IDC_STATIC,117,37,41,8,NOT WS_GROUP\r
+ EDITTEXT IDC_EDIT_DEFAULT_TONEBANK,158,35,24,12\r
+ CONTROL "\83o\83\93\83N\8b\90§",IDC_CHECKBOX_SPECIAL_TONEBANK,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,117,54,43,8\r
+ EDITTEXT IDC_EDIT_SPECIAL_TONEBANK,161,52,24,12\r
+ CONTROL "GM",IDC_RADIOBUTTON_GM,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,14,117,22,8\r
+ CONTROL "GS",IDC_RADIOBUTTON_GS,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,39,117,20,8\r
+ CONTROL "XG",IDC_RADIOBUTTON_XG,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,63,117,20,8\r
+ CONTROL "\83g\83\8c\81[\83X\83\82\81[\83h",IDC_CHECKBOX_CTL_TRACE_PLAYING,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,117,88,54,8\r
+ LTEXT "\83R\83\93\83\\81[\83\8b\83\8c\83x\83\8b",IDC_STATIC,117,105,51,8,NOT WS_GROUP\r
+ EDITTEXT IDC_EDIT_CTL_VEBOSITY,170,103,20,12\r
+ LTEXT "\90§\8cä\83\8c\81[\83g",IDC_STATIC,117,72,32,8,NOT WS_GROUP\r
+ EDITTEXT IDC_EDIT_CONTROL_RATIO,149,70,24,12\r
+ GROUPBOX "\95W\8f\80\82Å\97\98\97p\82·\82é\8bK\8ai",IDC_GROUPBOX_DEFAULT_MIDI_TYPE,6,\r
+ 105,87,27\r
+ GROUPBOX "\8d\82\93x\82È\90Ý\92è",IDC_STATIC,111,3,100,119\r
+ GROUPBOX "\8dÄ\90¶",IDC_STATIC,1,3,107,133\r
+END\r
+\r
+IDD_PREF_TIMIDITY3 DIALOG DISCARDABLE 0, 0, 205, 181\r
+STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
+ WS_POPUP | WS_VISIBLE | WS_CAPTION\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
+BEGIN\r
+ GROUPBOX "\8fo\97Í",IDC_STATIC,1,0,203,180,WS_GROUP | WS_TABSTOP\r
+ GROUPBOX "\8fo\97Í\83\82\81[\83h",IDC_STATIC,4,14,171,33,WS_GROUP | \r
+ WS_TABSTOP\r
+ CONTROL "8\83r\83b\83g",IDC_CHECKBOX_8BITS,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,8,23,29,8\r
+ CONTROL "16\83r\83b\83g",IDC_CHECKBOX_16BITS,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,8,35,32,8\r
+ CONTROL "U-Law",IDC_CHECKBOX_ULAW,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,23,31,8\r
+ CONTROL "A-Law",IDC_CHECKBOX_ALAW,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,35,31,8\r
+ CONTROL "\95\84\8d\86\95t\82«",IDC_CHECKBOX_SIGNED,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,77,23,37,8\r
+ CONTROL "\95\84\8d\86\96³\82µ",IDC_CHECKBOX_UNSIGNED,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,77,35,37,8\r
+ CONTROL "\83o\83C\83g\94½\93]",IDC_CHECKBOX_BYTESWAP,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,23,43,8\r
+ CONTROL "Linear PCM",IDC_CHECKBOX_LINEAR,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,35,45,8\r
+ GROUPBOX "\83`\83\83\83\93\83l\83\8b",IDC_STATIC,4,55,45,33,WS_GROUP | WS_TABSTOP\r
+ CONTROL "\83X\83e\83\8c\83I",IDC_RADIO_STEREO,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,8,65,36,10\r
+ CONTROL "\83\82\83m\83\89\83\8b",IDC_RADIO_MONO,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,8,77,35,8\r
+ LTEXT "\83T\83\93\83v\83\8b\83\8c\81[\83g(Hz)",IDC_STATIC,65,60,56,8,WS_TABSTOP\r
+ EDITTEXT IDC_EDIT_SAMPLE_RATE,122,58,32,10,ES_NUMBER | WS_GROUP\r
+ PUSHBUTTON "L",IDC_BUTTON_LOW,65,73,8,14,BS_CENTER\r
+ PUSHBUTTON "M",IDC_BUTTON_MIDDLE,73,73,10,14,BS_CENTER\r
+ PUSHBUTTON "H",IDC_BUTTON_HIGH,84,73,10,14,BS_CENTER\r
+ PUSHBUTTON "4",IDC_BUTTON_4,95,73,8,14,BS_CENTER\r
+ PUSHBUTTON "8",IDC_BUTTON_8,103,73,8,14,BS_CENTER\r
+ PUSHBUTTON "16",IDC_BUTTON_16,111,73,12,14,BS_CENTER\r
+ PUSHBUTTON "24",IDC_BUTTON_24,123,73,12,14,BS_CENTER\r
+ PUSHBUTTON "32",IDC_BUTTON_32,135,73,12,14,BS_CENTER\r
+ PUSHBUTTON "40",IDC_BUTTON_40,147,73,12,14,BS_CENTER\r
+ PUSHBUTTON "48",IDC_BUTTON_48,159,73,12,14,BS_CENTER\r
+ GROUPBOX "\8fo\97Í\95û\96@",IDC_GROUPBOX_OUTPUT,4,102,193,49,WS_GROUP | \r
+ WS_TABSTOP\r
+ PUSHBUTTON "\8fo\97Í\83t\83@\83C\83\8b",IDC_BUTTON_OUTPUT_FILE,4,156,42,14,\r
+ BS_CENTER | WS_GROUP\r
+ EDITTEXT IDC_EDIT_OUTPUT_FILE,47,156,130,15,ES_AUTOHSCROLL | \r
+ ES_OEMCONVERT | WS_GROUP\r
+ PUSHBUTTON "\8dí\8f\9c",IDC_BUTTON_OUTPUT_FILE_DEL,178,156,19,14,\r
+ BS_CENTER\r
+ COMBOBOX IDC_COMBO_OUTPUT,8,116,151,64,CBS_DROPDOWNLIST | \r
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ PUSHBUTTON "\83I\83v\83V\83\87\83\93",IDC_BUTTON_OUTPUT_OPTIONS,160,115,34,14\r
+ COMBOBOX IDC_COMBO_OUTPUT_MODE,8,134,186,72,CBS_DROPDOWNLIST | \r
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+END\r
+\r
+IDD_PREF_TIMIDITY4 DIALOG DISCARDABLE 0, 0, 181, 143\r
+STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | \r
+ WS_POPUP | WS_VISIBLE | WS_CAPTION\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
+BEGIN\r
+ CONTROL "Ch01",IDC_CHECKBOX_CH01,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,16,28,8\r
+ CONTROL "Ch02",IDC_CHECKBOX_CH02,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,24,28,8\r
+ CONTROL "Ch03",IDC_CHECKBOX_CH03,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,32,28,8\r
+ CONTROL "Ch04",IDC_CHECKBOX_CH04,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,40,28,8\r
+ CONTROL "Ch05",IDC_CHECKBOX_CH05,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,48,28,8\r
+ CONTROL "Ch06",IDC_CHECKBOX_CH06,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,56,28,8\r
+ CONTROL "Ch07",IDC_CHECKBOX_CH07,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,64,28,8\r
+ CONTROL "Ch08",IDC_CHECKBOX_CH08,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,10,72,28,8\r
+ CONTROL "Ch09",IDC_CHECKBOX_CH09,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,16,28,8\r
+ CONTROL "Ch10",IDC_CHECKBOX_CH10,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,24,28,8\r
+ CONTROL "Ch11",IDC_CHECKBOX_CH11,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,32,28,8\r
+ CONTROL "Ch12",IDC_CHECKBOX_CH12,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,40,28,8\r
+ CONTROL "Ch13",IDC_CHECKBOX_CH13,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,48,28,8\r
+ CONTROL "Ch14",IDC_CHECKBOX_CH14,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,56,28,8\r
+ CONTROL "Ch15",IDC_CHECKBOX_CH15,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,64,28,8\r
+ CONTROL "Ch16",IDC_CHECKBOX_CH16,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,41,72,28,8\r
+ CONTROL "Ch17",IDC_CHECKBOX_CH17,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,73,16,28,8\r
+ CONTROL "Ch18",IDC_CHECKBOX_CH18,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,73,24,28,8\r
+ CONTROL "Ch19",IDC_CHECKBOX_CH19,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,73,32,28,8\r
+ CONTROL "Ch20",IDC_CHECKBOX_CH20,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,73,40,28,8\r
+ CONTROL "Ch21",IDC_CHECKBOX_CH21,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,73,48,28,8\r
+ CONTROL "Ch22",IDC_CHECKBOX_CH22,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,73,56,28,8\r
+ CONTROL "Ch23",IDC_CHECKBOX_CH23,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,73,64,28,8\r
+ CONTROL "Ch24",IDC_CHECKBOX_CH24,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,73,72,28,8\r
+ CONTROL "Ch25",IDC_CHECKBOX_CH25,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,106,16,28,8\r
+ CONTROL "Ch26",IDC_CHECKBOX_CH26,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,106,24,28,8\r
+ CONTROL "Ch27",IDC_CHECKBOX_CH27,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,106,32,28,8\r
+ CONTROL "Ch28",IDC_CHECKBOX_CH28,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,106,40,28,8\r
+ CONTROL "Ch29",IDC_CHECKBOX_CH29,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,106,48,28,8\r
+ CONTROL "Ch30",IDC_CHECKBOX_CH30,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,106,56,28,8\r
+ CONTROL "Ch31",IDC_CHECKBOX_CH31,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,106,64,28,8\r
+ CONTROL "Ch32",IDC_CHECKBOX_CH32,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,106,72,28,8\r
+ CONTROL "\83f\83t\83H\83\8b\83g\82Ì\83h\83\89\83\80\83`\83\83\83\93\83l\83\8b",IDC_CHECKBOX_DRUM_CHANNEL,\r
+ "Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,9,87,\r
+ 95,13\r
+ CONTROL "\83h\83\89\83\80\83p\81[\83g\8e©\93®\94F\8e¯\82ð\96³\8e\8b\82·\82é\83`\83\83\83\93\83l\83\8b",\r
+ IDC_CHECKBOX_DRUM_CHANNEL_MASK,"Button",BS_AUTOCHECKBOX | \r
+ BS_PUSHLIKE | WS_TABSTOP,9,105,137,14\r
+ CONTROL "\83~\83\85\81[\83g\82·\82é\83`\83\83\83\93\83l\83\8b",IDC_CHECKBOX_QUIET_CHANNEL,\r
+ "Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,9,\r
+ 124,76,13\r
+ PUSHBUTTON "\91S\82Ä\94½\93]",IDC_BUTTON_REVERSE,141,18,31,61\r
+ GROUPBOX "\83`\83\83\83\93\83l\83\8b",IDC_STATIC,1,3,179,138\r
+END\r
+\r
IDD_DIALOG_WAVEFORM DIALOGEX 0, 0, 240, 120\r
STYLE DS_MODALFRAME | DS_3DLOOK | WS_VISIBLE | WS_CAPTION\r
EXSTYLE WS_EX_DLGMODALFRAME\r
-FONT 9, "Times New Roman", 400, 0\r
+FONT 9, "Times New Roman", 400, 0, 0x1\r
BEGIN\r
END\r
\r
EDITTEXT IDC_EDIT1,7,7,169,24,ES_AUTOHSCROLL | ES_OEMCONVERT\r
END\r
\r
+IDD_DIALOG_VORBIS DIALOG DISCARDABLE 0, 0, 197, 93\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Ogg Vorbis \90Ý\92è\83_\83C\83A\83\8d\83O"\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
+BEGIN\r
+ CONTROL "\83f\83t\83H\83\8b\83g\90Ý\92è",IDC_CHECK_DEFAULT,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,0,56,10\r
+ COMBOBOX IDC_COMBO_MODE,25,13,123,56,CBS_DROPDOWNLIST | CBS_SORT | \r
+ WS_VSCROLL | WS_TABSTOP\r
+ LTEXT "\83^\83C\83g\83\8b",IDC_STATIC,4,49,23,8\r
+ EDITTEXT IDC_EDIT1,41,48,152,14,ES_AUTOHSCROLL | WS_DISABLED\r
+ LTEXT "\83A\81[\83e\83B\83X\83g",IDC_STATIC,4,63,36,8\r
+ EDITTEXT IDC_EDIT2,41,76,152,14,ES_AUTOHSCROLL | WS_DISABLED\r
+ LTEXT "\83A\83\8b\83o\83\80",IDC_STATIC,4,77,27,8\r
+ EDITTEXT IDC_EDIT3,41,62,152,14,ES_AUTOHSCROLL | WS_DISABLED\r
+ CONTROL "\8e\9f\82Ì\8fî\95ñ\82ð\8f\91\82«\8d\9e\82Þ",IDC_CHECK_USE_TAG,"Button",\r
+ BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,4,32,73,10\r
+ LTEXT "\83\82\81[\83h",IDC_STATIC,4,16,18,8\r
+ PUSHBUTTON "OK",IDOK,152,2,40,12\r
+ PUSHBUTTON "\83L\83\83\83\93\83Z\83\8b",IDCANCEL,152,30,40,12\r
+ PUSHBUTTON "\93K\97p",IDC_BUTTON_APPLY,152,14,40,11\r
+END\r
+\r
+IDD_DIALOG_GOGO DIALOG DISCARDABLE 0, 0, 346, 196\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "MP3(\8cß\8cã\82Ì\82±\81`\82¾) \90Ý\92è\83_\83C\83A\83\8d\83O"\r
+FONT 8, "\82l\82r \82o\83S\83V\83b\83N"\r
+BEGIN\r
+ DEFPUSHBUTTON "OK",IDOK,173,179,50,14\r
+ PUSHBUTTON "\83L\83\83\83\93\83Z\83\8b",IDCANCEL,285,179,50,14\r
+ COMBOBOX IDC_COMBO_OUTPUT_FORMAT,4,36,72,64,CBS_DROPDOWNLIST | \r
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ CONTROL "\83f\83t\83H\83\8b\83g\90Ý\92è",IDC_CHECK_DEFAULT,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,0,80,10\r
+ CONTROL "\83R\83}\83\93\83h\83\89\83C\83\93\83I\83v\83V\83\87\83\93",IDC_CHECK_COMMANDLINE_OPTS,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,12,86,10\r
+ EDITTEXT IDC_EDIT_COMMANDLINE_OPTION,91,10,232,14,ES_AUTOHSCROLL\r
+ COMBOBOX IDC_COMBO_MPEG1_AUDIO_BITRATE,6,72,76,76,\r
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ COMBOBOX IDC_COMBO_MPEG2_AUDIO_BITRATE,87,72,76,76,\r
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ COMBOBOX IDC_COMBO_VBR_BITRATE_LOW,6,119,76,64,CBS_DROPDOWNLIST | \r
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ LTEXT "VBR - \8dÅ\8d\82",IDC_STATIC,86,110,55,8\r
+ COMBOBOX IDC_COMBO_VBR_BITRATE_HIGH,86,119,76,64,CBS_DROPDOWNLIST | \r
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ CONTROL "16KHz \83\8d\81[\83p\83X\83t\83B\83\8b\83^",IDC_CHECK_16KHZ_LOW_PASS_FILTER,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,176,57,89,8\r
+ CONTROL "\83G\83\93\83n\83\93\83X\83g\83\8d\81[\83p\83X\83t\83B\83\8b\83^",\r
+ IDC_CHECK_ENHANCED_LOW_PASS_FILTER,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,176,68,104,8\r
+ EDITTEXT IDC_EDIT_LPF_PARA1,200,77,28,12\r
+ EDITTEXT IDC_EDIT_LPF_PARA2,251,77,28,12\r
+ LTEXT "para1",IDC_STATIC,183,79,16,8\r
+ LTEXT "para2",IDC_STATIC,233,79,16,8\r
+ COMBOBOX IDC_COMBO_ENCODE_MODE,172,36,84,60,CBS_DROPDOWNLIST | \r
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ CONTROL "\90S\97\9d\89ð\90Í",IDC_CHECK_USEPSY,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,176,90,42,10\r
+ CONTROL "MMX",IDC_CHECK_CPUMMX,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,193,151,29,10\r
+ CONTROL "SSE",IDC_CHECK_CPUSSE,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,193,163,27,10\r
+ CONTROL "3DNOW",IDC_CHECK_CPU3DNOW,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,227,151,39,10\r
+ CONTROL "E3DNOW",IDC_CHECK_CPUE3DNOW,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,227,163,40,10\r
+ COMBOBOX IDC_COMBO_EMPHASIS_TYPE,268,36,76,64,CBS_DROPDOWNLIST | \r
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+ COMBOBOX IDC_COMBO_VBR,37,92,124,72,CBS_DROPDOWNLIST | CBS_SORT | \r
+ WS_VSCROLL | WS_TABSTOP\r
+ CONTROL "VBR",IDC_CHECK_VBR,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,6,94,29,10\r
+ CONTROL "\8eü\94g\90\94",IDC_CHECK_OUTFREQ,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,88,28,35,8\r
+ EDITTEXT IDC_EDIT_OUTFREQ,88,36,72,12\r
+ CONTROL "J-Stereo\82Å\82Ì Stereo/MS-Stereo \82Ì\90Ø\91Ö\82¦\90§\8cä",\r
+ IDC_CHECK_MSTHRESHOLD,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,176,103,167,8\r
+ EDITTEXT IDC_EDIT_MSTHRESHOLD_THRESHOLD,200,112,28,12\r
+ EDITTEXT IDC_EDIT_MSTHRESHOLD_MSPOWER,252,112,28,12\r
+ LTEXT "para1",IDC_STATIC,183,114,16,8\r
+ LTEXT "para2",IDC_STATIC,233,114,16,8\r
+ CONTROL "\83x\83\8a\83t\83@\83C",IDC_CHECK_VERIFY,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,176,127,45,10\r
+ PUSHBUTTON "\93K\97p",IDC_BUTTON_APPLY,229,179,50,14\r
+ CONTROL "\88È\89º\82Ì\96½\97ß\82ð\8eg\82¤",IDC_CHECK_USE_CPU_OPTS,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,176,140,68,8\r
+ CONTROL "MPEG1Audio",IDC_CHECK_MPEG1AUDIOBITRATE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,64,80,8\r
+ CONTROL "MPEG2Audio",IDC_CHECK_MPEG2AUDIOBITRATE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,87,64,80,8\r
+ CONTROL "VBR - \8dÅ\92á",IDC_CHECK_VBR_BITRATE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,6,110,67,8\r
+ CONTROL "\8fo\97Í\83t\83H\81[\83}\83b\83g",IDC_CHECK_OUTPUT_FORMAT,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,4,28,64,8\r
+ CONTROL "\83\82\81[\83h",IDC_CHECK_ENCODE_MODE,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,172,28,34,8\r
+ CONTROL "\83G\83\93\83t\83@\83V\83X",IDC_CHECK_EMPHASIS_TYPE,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,268,28,62,8\r
+ GROUPBOX "\83r\83b\83g\83\8c\81[\83g",IDC_STATIC,2,55,167,86\r
+END\r
+\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
// Menu\r
//\r
\r
-IDM_MENU_MAIN MENU DISCARDABLE \r
+IDM_MENU_MAIN_EN MENU DISCARDABLE \r
BEGIN\r
POPUP "File(&F)"\r
BEGIN\r
END\r
END\r
\r
+IDM_MENU_MAIN MENU DISCARDABLE \r
+BEGIN\r
+ POPUP "\83t\83@\83C\83\8b(&F)"\r
+ BEGIN\r
+ MENUITEM "\83t\83@\83C\83\8b\82ð\8aJ\82(&F)", IDM_MFOPENFILE\r
+ MENUITEM "\83t\83H\83\8b\83_\82ð\8aJ\82(&D)", IDM_MFOPENDIR\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "\83v\83\8c\83C\83\8a\83X\83g\82ð\8aJ\82(&P)", IDM_MFLOADPLAYLIST\r
+ MENUITEM "\83v\83\8c\83C\83\8a\83X\83g\82ð\95Û\91¶(&S)", IDM_MFSAVEPLAYLISTAS\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "\8fI\97¹(&X)", IDM_MFEXIT\r
+ END\r
+ POPUP "\90Ý\92è(&C)"\r
+ BEGIN\r
+ MENUITEM "\8fÚ\8d×\90Ý\92è(&P)", IDM_SETTING\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "\90Ý\92è\93Ç\8d\9e(&L)", IDM_MCLOADINIFILE\r
+ MENUITEM "\90Ý\92è\95Û\91¶(&S)", IDM_MCSAVEINIFILE\r
+ END\r
+ POPUP "\83E\83B\83\93\83h\83E(&W)"\r
+ BEGIN\r
+ MENUITEM "\83v\83\8c\83C\83\8a\83X\83g(&L)", IDM_MWPLAYLIST\r
+ MENUITEM "\83g\83\8c\81[\83T(&T)", IDM_MWTRACER, GRAYED\r
+ MENUITEM "\83h\83L\83\85\83\81\83\93\83g(&D)", IDM_MWDOCUMENT\r
+ MENUITEM "WRD(&W)", IDM_MWWRDTRACER, GRAYED\r
+ MENUITEM "Sound Spectogram(&S)", IDM_MWSOUNDSPEC, GRAYED\r
+ MENUITEM "\83R\83\93\83\\81[\83\8b(&C)", IDM_MWCONSOLE\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "\83f\83o\83b\83O(&B)", IDM_MWDEBUG\r
+ END\r
+ POPUP "\83w\83\8b\83v(&H)"\r
+ BEGIN\r
+ MENUITEM "\83g\83s\83b\83N(&T)", IDM_MHTOPIC, GRAYED\r
+ MENUITEM "\83w\83\8b\83v(&H)", IDM_MHHELP, GRAYED\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "TiMidity\82É\82Â\82¢\82Ä(&T)", IDM_MHTIMIDITY\r
+ MENUITEM "\83o\81[\83W\83\87\83\93\8fî\95ñ(&V)", IDM_MHVERSION\r
+ END\r
+END\r
+\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
BOTTOMMARGIN, 179\r
END\r
\r
+ IDD_PREF_PLAYER, DIALOG\r
+ BEGIN\r
+ RIGHTMARGIN, 197\r
+ BOTTOMMARGIN, 99\r
+ END\r
+\r
+ IDD_PREF_TIMIDITY1, DIALOG\r
+ BEGIN\r
+ RIGHTMARGIN, 145\r
+ BOTTOMMARGIN, 148\r
+ END\r
+\r
+ IDD_PREF_TIMIDITY2, DIALOG\r
+ BEGIN\r
+ RIGHTMARGIN, 209\r
+ BOTTOMMARGIN, 122\r
+ END\r
+\r
+ IDD_PREF_TIMIDITY3, DIALOG\r
+ BEGIN\r
+ RIGHTMARGIN, 190\r
+ BOTTOMMARGIN, 138\r
+ END\r
+\r
+ IDD_PREF_TIMIDITY4, DIALOG\r
+ BEGIN\r
+ RIGHTMARGIN, 168\r
+ BOTTOMMARGIN, 125\r
+ END\r
+\r
IDD_DIALOG_SEARCHBOX, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
TOPMARGIN, 7\r
BOTTOMMARGIN, 47\r
END\r
+\r
+ IDD_DIALOG_VORBIS, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 190\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 86\r
+ END\r
+\r
+ IDD_DIALOG_GOGO, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 339\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 189\r
+ END\r
END\r
#endif // APSTUDIO_INVOKED\r
\r
\r
+#ifndef _MAC\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Version\r
+//\r
+\r
+VS_VERSION_INFO VERSIONINFO\r
+ FILEVERSION 2,10,0,4\r
+ PRODUCTVERSION 2,10,0,4\r
+ FILEFLAGSMASK 0x3fL\r
+#ifdef _DEBUG\r
+ FILEFLAGS 0x1L\r
+#else\r
+ FILEFLAGS 0x0L\r
+#endif\r
+ FILEOS 0x40004L\r
+ FILETYPE 0x1L\r
+ FILESUBTYPE 0x0L\r
+BEGIN\r
+ BLOCK "StringFileInfo"\r
+ BEGIN\r
+ BLOCK "000004e4"\r
+ BEGIN\r
+ VALUE "Comments", "\0"\r
+ VALUE "CompanyName", "\0"\r
+ VALUE "FileDescription", "timw32g\0"\r
+ VALUE "FileVersion", "2, 10, 0, 4\0"\r
+ VALUE "InternalName", "timw32g\0"\r
+ VALUE "LegalCopyright", "Copyright (C) 1999,2001 Masanao Izumo <mo@goice.co.jp>\r\nCopyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>\0"\r
+ VALUE "LegalTrademarks", "\0"\r
+ VALUE "OriginalFilename", "timw32g.exe\0"\r
+ VALUE "PrivateBuild", "\0"\r
+ VALUE "ProductName", "TiMidity++ Win32GUI Version\0"\r
+ VALUE "ProductVersion", "2, 10, 0, 4\0"\r
+ VALUE "SpecialBuild", "\0"\r
+ END\r
+ END\r
+ BLOCK "VarFileInfo"\r
+ BEGIN\r
+ VALUE "Translation", 0x0, 1252\r
+ END\r
+END\r
+\r
+#endif // !_MAC\r
+\r
+\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
// String Table\r
-/*\r
- TiMidity++ -- MIDI to WAVE converter and player\r
- Copyright (C) 1999-2001 Masanao Izumo <mo@goice.co.jp>\r
- Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>\r
-\r
- This program is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- This program is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with this program; if not, write to the Free Software\r
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
-\r
- w32g_utl.c: written by Daisuke Aoki <dai@y7.net>\r
- Masanao Izumo <mo@goice.co.jp>\r
-*/\r
-\r
-\r
-#ifdef HAVE_CONFIG_H\r
-#include "config.h"\r
-#endif /* HAVE_CONFIG_H */\r
-\r
-#include <stdlib.h>\r
-#include <stdio.h>\r
-#ifndef NO_STRING_H\r
-#include <string.h>\r
-#else\r
-#include <strings.h>\r
-#endif\r
-#include <ctype.h>\r
-\r
-#include "timidity.h"\r
-#include "common.h"\r
-#include "instrum.h"\r
-#include "playmidi.h"\r
-#include "readmidi.h"\r
-#include "output.h"\r
-#include "controls.h"\r
+/*
+ TiMidity++ -- MIDI to WAVE converter and player
+ Copyright (C) 1999-2001 Masanao Izumo <mo@goice.co.jp>
+ Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ w32g_utl.c: written by Daisuke Aoki <dai@y7.net>
+ Masanao Izumo <mo@goice.co.jp>
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include <stdlib.h>
+#include <stdio.h>
+#ifndef NO_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#include <ctype.h>
+
+#include "timidity.h"
+#include "common.h"
+#include "instrum.h"
+#include "playmidi.h"
+#include "readmidi.h"
+#include "output.h"
+#include "controls.h"
#include "recache.h"\r
-#ifdef SUPPORT_SOUNDSPEC\r
-#include "soundspec.h"\r
-#endif /* SUPPORT_SOUNDSPEC */\r
-#include "wrd.h"\r
-#include "w32g.h"\r
-#include "w32g_utl.h"\r
-#include <sys/stat.h>\r
-#include "strtab.h"\r
-#include "url.h"\r
-\r
-extern int opt_default_mid;\r
-extern int effect_lr_mode;\r
-extern int effect_lr_delay_msec;\r
-extern char def_instr_name[];\r
-extern int opt_control_ratio;\r
-extern char *opt_aq_max_buff;\r
-extern char *opt_aq_fill_buff;\r
-extern int opt_evil_mode;\r
-extern int opt_buffer_fragments;\r
-extern int32 opt_output_rate;\r
-extern int PlayerLanguage;\r
-extern volatile int data_block_bits;\r
-extern volatile int data_block_num;\r
-extern int DocWndIndependent;\r
-extern int SeachDirRecursive;\r
-extern int IniFileAutoSave;\r
-extern int SecondMode;\r
-\r
-//*****************************************************************************/\r
-// ini\r
-\r
-// INI file\r
-CHAR *INI_INVALID = "INVALID PARAMETER";\r
-CHAR *INI_SEC_PLAYER = "PLAYER";\r
-CHAR *INI_SEC_TIMIDITY = "TIMIDITY";\r
-#define INI_MAXLEN 1024\r
-\r
-int\r
-IniGetKeyInt32(char *section, char *key,int32 *n)\r
-{\r
- CHAR buffer[INI_MAXLEN];\r
- GetPrivateProfileString\r
- (section,key,INI_INVALID,buffer,INI_MAXLEN-1,IniFile);\r
- if(strcasecmp(buffer,INI_INVALID)){\r
- *n =atol(buffer);\r
- return 0;\r
- } else\r
- return 1;\r
-}\r
-\r
-int\r
-IniGetKeyInt32Array(char *section, char *key, int32 *n, int arraysize)\r
-{\r
- int i;\r
- int ret = 0;\r
- CHAR buffer[INI_MAXLEN];\r
- char keybuffer[INI_MAXLEN];\r
- for(i=0;i<arraysize;i++){\r
- sprintf(keybuffer,"%s%d",key,i);\r
- GetPrivateProfileString\r
- (section,keybuffer,INI_INVALID,buffer,INI_MAXLEN-1,IniFile);\r
- if(strcasecmp(buffer,INI_INVALID))\r
- *n =atol(buffer);\r
- else\r
- ret++;\r
- }\r
- return ret;\r
-}\r
-\r
-int\r
-IniGetKeyInt(char *section, char *key, int *n)\r
-{\r
- return IniGetKeyInt32(section, key, (int32 *)n);\r
-}\r
-\r
-int\r
-IniGetKeyFloat(char *section, char *key, FLOAT_T *n)\r
-{\r
- CHAR buffer[INI_MAXLEN];\r
- GetPrivateProfileString(section, key, INI_INVALID, buffer,\r
- INI_MAXLEN-1, IniFile);\r
- if(strcasecmp(buffer, INI_INVALID))\r
- {\r
- *n = (FLOAT_T)atof(buffer);\r
- return 0;\r
- }\r
- else\r
- return 1;\r
-}\r
-\r
-int\r
-IniGetKeyChar(char *section, char *key, char *c)\r
-{\r
- char buffer[64];\r
- if(IniGetKeyStringN(section,key,buffer,60))\r
- return 1;\r
- else {\r
- *c = buffer[0];\r
- return 0;\r
- }\r
-}\r
-\r
-int\r
-IniGetKeyIntArray(char *section, char *key, int *n, int arraysize)\r
-{\r
- return IniGetKeyInt32Array(section,key,(int32 *)n, arraysize);\r
-}\r
-\r
-int\r
-IniGetKeyString(char *section, char *key,char *str)\r
-{\r
- CHAR buffer[INI_MAXLEN];\r
- GetPrivateProfileString\r
- (section,key,INI_INVALID,buffer,INI_MAXLEN-1,IniFile);\r
- if(strcasecmp(buffer,INI_INVALID)){\r
- strcpy(str,buffer);\r
- return 0;\r
- } else\r
- return 1;\r
-}\r
-\r
-int\r
-IniGetKeyStringN(char *section, char *key,char *str, int size)\r
-{\r
- CHAR buffer[INI_MAXLEN];\r
- GetPrivateProfileString\r
- (section,key,INI_INVALID,buffer,INI_MAXLEN-1,IniFile);\r
- if(strcasecmp(buffer,INI_INVALID)){\r
- strncpy(str,buffer,size);\r
- return 0;\r
- } else\r
- return 1;\r
-}\r
-\r
-int\r
-IniPutKeyInt32(char *section, char *key,int32 *n)\r
-{\r
- CHAR buffer[INI_MAXLEN];\r
- sprintf(buffer,"%ld",*n);\r
- WritePrivateProfileString\r
- (section,key,buffer,IniFile);\r
- return 0;\r
-}\r
-\r
-int\r
-IniPutKeyInt32Array(char *section, char *key, int32 *n, int arraysize)\r
-{\r
- int i;\r
- CHAR buffer[INI_MAXLEN];\r
- CHAR keybuffer[INI_MAXLEN];\r
- for(i=0;i<arraysize;i++){\r
- sprintf(buffer,"%ld",n[i]);\r
- sprintf(keybuffer,"%s%d",key,i);\r
- WritePrivateProfileString(section,keybuffer,buffer,IniFile);\r
- }\r
- return 0;\r
-}\r
-\r
-int\r
-IniPutKeyInt(char *section, char *key, int *n)\r
-{\r
- return IniPutKeyInt32(section, key, (int32 *)n);\r
-}\r
-\r
-int\r
-IniPutKeyChar(char *section, char *key, char *c)\r
-{\r
- char buffer[64];\r
- sprintf(buffer,"%c",*c);\r
- return IniPutKeyStringN(section,key,buffer,60);\r
-}\r
-\r
-int\r
-IniPutKeyIntArray(char *section, char *key, int *n, int arraysize)\r
-{\r
- return IniPutKeyInt32Array(section,key,(int32 *)n, arraysize);\r
-}\r
-\r
-int\r
-IniPutKeyString(char *section, char *key, char *str)\r
-{\r
- WritePrivateProfileString(section,key,str,IniFile);\r
- return 0;\r
-}\r
-\r
-int\r
-IniPutKeyStringN(char *section, char *key, char *str, int size)\r
-{\r
- WritePrivateProfileString(section,key,str,IniFile);\r
- return 0;\r
-}\r
-\r
-int\r
-IniPutKeyFloat(char *section, char *key,FLOAT_T n)\r
-{\r
- CHAR buffer[INI_MAXLEN];\r
- sprintf(buffer,"%f", (double)n);\r
- WritePrivateProfileString(section, key, buffer, IniFile);\r
- return 0;\r
-}\r
-\r
-// LoadIniFile() , SaveIniFile()\r
-// ***************************************************************************\r
-// Setting\r
-\r
-#define SetFlag(flag) (!!(flag))\r
-\r
-static long SetValue(int32 value, int32 min, int32 max)\r
-{\r
- int32 v = value;\r
- if(v < min) v = min;\r
- else if( v > max) v = max;\r
- return v;\r
-}\r
-\r
-void\r
-ApplySettingPlayer(SETTING_PLAYER *sp)\r
-{\r
- InitMinimizeFlag = SetFlag(sp->InitMinimizeFlag);\r
- DebugWndStartFlag = SetFlag(sp->DebugWndStartFlag);\r
- ConsoleWndStartFlag = SetFlag(sp->ConsoleWndStartFlag);\r
- ListWndStartFlag = SetFlag(sp->ListWndStartFlag);\r
- TracerWndStartFlag = SetFlag(sp->TracerWndStartFlag);\r
- DocWndStartFlag = SetFlag(sp->DocWndStartFlag);\r
- WrdWndStartFlag = SetFlag(sp->WrdWndStartFlag);\r
- DebugWndFlag = SetFlag(sp->DebugWndFlag);\r
- ConsoleWndFlag = SetFlag(sp->ConsoleWndFlag);\r
- ListWndFlag = SetFlag(sp->ListWndFlag);\r
- TracerWndFlag = SetFlag(sp->TracerWndFlag);\r
- DocWndFlag = SetFlag(sp->DocWndFlag);\r
- WrdWndFlag = SetFlag(sp->WrdWndFlag);\r
- SoundSpecWndFlag = SetFlag(sp->SoundSpecWndFlag);\r
- SubWindowMax = SetValue(sp->SubWindowMax,1,10);\r
- strncpy(ConfigFile,sp->ConfigFile,MAXPATH + 31);\r
- ConfigFile[MAXPATH + 31] = '\0';\r
- strncpy(PlaylistFile,sp->PlaylistFile,MAXPATH + 31);\r
- PlaylistFile[MAXPATH + 31] = '\0';\r
- strncpy(PlaylistHistoryFile,sp->PlaylistHistoryFile,MAXPATH + 31);\r
- PlaylistHistoryFile[MAXPATH + 31] = '\0';\r
- strncpy(MidiFileOpenDir,sp->MidiFileOpenDir,MAXPATH + 31);\r
- MidiFileOpenDir[MAXPATH + 31] = '\0';\r
- strncpy(ConfigFileOpenDir,sp->ConfigFileOpenDir,MAXPATH + 31);\r
- ConfigFileOpenDir[MAXPATH + 31] = '\0';\r
- strncpy(PlaylistFileOpenDir,sp->PlaylistFileOpenDir,MAXPATH + 31);\r
- PlaylistFileOpenDir[MAXPATH + 31] = '\0';\r
- PlayerThreadPriority = sp->PlayerThreadPriority;\r
- GUIThreadPriority = sp->GUIThreadPriority;\r
- TraceGraphicFlag = SetFlag(sp->TraceGraphicFlag);\r
- // fonts ...\r
- SystemFontSize = sp->SystemFontSize;\r
- PlayerFontSize = sp->PlayerFontSize;\r
- WrdFontSize = sp->WrdFontSize;\r
- DocFontSize = sp->DocFontSize;\r
- ListFontSize = sp->ListFontSize;\r
- TracerFontSize = sp->TracerFontSize;\r
- strncpy(SystemFont,sp->SystemFont,255);\r
- SystemFont[255] = '\0';\r
- strncpy(PlayerFont,sp->PlayerFont,255);\r
- PlayerFont[255] = '\0';\r
- strncpy(WrdFont,sp->WrdFont,255);\r
- WrdFont[255] = '\0';\r
- strncpy(DocFont,sp->DocFont,255);\r
- DocFont[255] = '\0';\r
- strncpy(ListFont,sp->ListFont,255);\r
- ListFont[255] = '\0';\r
- strncpy(TracerFont,sp->TracerFont,255);\r
- TracerFont[255] = '\0';\r
- // Apply font functions ...\r
-\r
- PlayerLanguage = sp->PlayerLanguage;\r
- DocWndIndependent = sp->DocWndIndependent; \r
- SeachDirRecursive = sp->SeachDirRecursive;\r
- IniFileAutoSave = sp->IniFileAutoSave;\r
- SecondMode = sp->SecondMode;\r
-}\r
-\r
-void\r
-SaveSettingPlayer(SETTING_PLAYER *sp)\r
-{\r
- sp->InitMinimizeFlag = SetFlag(InitMinimizeFlag);\r
- sp->DebugWndStartFlag = SetFlag(DebugWndStartFlag);\r
- sp->ConsoleWndStartFlag = SetFlag(ConsoleWndStartFlag);\r
- sp->ListWndStartFlag = SetFlag(ListWndStartFlag);\r
- sp->TracerWndStartFlag = SetFlag(TracerWndStartFlag);\r
- sp->DocWndStartFlag = SetFlag(DocWndStartFlag);\r
- sp->WrdWndStartFlag = SetFlag(WrdWndStartFlag);\r
- sp->DebugWndFlag = SetFlag(DebugWndFlag);\r
- sp->ConsoleWndFlag = SetFlag(ConsoleWndFlag);\r
- sp->ListWndFlag = SetFlag(ListWndFlag);\r
- sp->TracerWndFlag = SetFlag(TracerWndFlag);\r
- sp->DocWndFlag = SetFlag(DocWndFlag);\r
- sp->WrdWndFlag = SetFlag(WrdWndFlag);\r
- sp->SoundSpecWndFlag = SetFlag(SoundSpecWndFlag);\r
- sp->SubWindowMax = SetValue(SubWindowMax,1,10);\r
- strncpy(sp->ConfigFile,ConfigFile,MAXPATH + 31);\r
- (sp->ConfigFile)[MAXPATH + 31] = '\0';\r
- strncpy(sp->PlaylistFile,PlaylistFile,MAXPATH + 31);\r
- (sp->PlaylistFile)[MAXPATH + 31] = '\0';\r
- strncpy(sp->PlaylistHistoryFile,PlaylistHistoryFile,MAXPATH + 31);\r
- (sp->PlaylistHistoryFile)[MAXPATH + 31] = '\0';\r
- strncpy(sp->MidiFileOpenDir,MidiFileOpenDir,MAXPATH + 31);\r
- (sp->MidiFileOpenDir)[MAXPATH + 31] = '\0';\r
- strncpy(sp->ConfigFileOpenDir,ConfigFileOpenDir,MAXPATH + 31);\r
- (sp->ConfigFileOpenDir)[MAXPATH + 31] = '\0';\r
- strncpy(sp->PlaylistFileOpenDir,PlaylistFileOpenDir,MAXPATH + 31);\r
- (sp->PlaylistFileOpenDir)[MAXPATH + 31] = '\0';\r
- sp->PlayerThreadPriority = PlayerThreadPriority;\r
- sp->GUIThreadPriority = GUIThreadPriority;\r
- sp->WrdGraphicFlag = SetFlag(WrdGraphicFlag);\r
- sp->TraceGraphicFlag = SetFlag(TraceGraphicFlag);\r
- // fonts ...\r
- sp->SystemFontSize = SystemFontSize;\r
- sp->PlayerFontSize = PlayerFontSize;\r
- sp->WrdFontSize = WrdFontSize;\r
- sp->DocFontSize = DocFontSize;\r
- sp->ListFontSize = ListFontSize;\r
- sp->TracerFontSize = TracerFontSize;\r
- strncpy(sp->SystemFont,SystemFont,255);\r
- sp->SystemFont[255] = '\0';\r
- strncpy(sp->PlayerFont,PlayerFont,255);\r
- sp->PlayerFont[255] = '\0';\r
- strncpy(sp->WrdFont,WrdFont,255);\r
- sp->WrdFont[255] = '\0';\r
- strncpy(sp->DocFont,DocFont,255);\r
- DocFont[255] = '\0';\r
- strncpy(sp->ListFont,ListFont,255);\r
- sp->ListFont[255] = '\0';\r
- strncpy(sp->TracerFont,TracerFont,255);\r
- sp->TracerFont[255] = '\0';\r
- sp->PlayerLanguage = PlayerLanguage;\r
- sp->DocWndIndependent = DocWndIndependent; \r
- sp->SeachDirRecursive = SeachDirRecursive;\r
- sp->IniFileAutoSave = IniFileAutoSave;\r
- sp->SecondMode = SecondMode;\r
-}\r
-\r
-extern int set_play_mode(char *cp);\r
-extern int set_tim_opt(int c, char *optarg);\r
-extern int set_ctl(char *cp);\r
-extern int set_wrd(char *w);\r
-\r
-#if defined(__W32__) && defined(SMFCONV)\r
-extern int opt_rcpcv_dll;\r
-#endif /* SMFCONV */\r
-extern char *wrdt_open_opts;\r
-\r
-static int is_device_output_ID(int id)\r
-{\r
- return id == 'd' || id == 'n' || id == 'e';\r
-}\r
-\r
-void\r
-ApplySettingTiMidity(SETTING_TIMIDITY *st)\r
-{\r
- int i;\r
- char buffer[INI_MAXLEN];\r
-\r
- /* Player must be stopped.\r
- * DANGER to apply settings while playing.\r
- */\r
- amplification = SetValue(st->amplification, 0, MAX_AMPLIFICATION);\r
- antialiasing_allowed = SetFlag(st->antialiasing_allowed);\r
- if(st->buffer_fragments == -1)\r
- opt_buffer_fragments = -1;\r
- else\r
- opt_buffer_fragments = SetValue(st->buffer_fragments, 3, 1000);\r
- default_drumchannels = st->default_drumchannels;\r
- default_drumchannel_mask = st->default_drumchannel_mask;\r
- opt_modulation_wheel = SetFlag(st->opt_modulation_wheel);\r
- opt_portamento = SetFlag(st->opt_portamento);\r
- opt_nrpn_vibrato = SetFlag(st->opt_nrpn_vibrato);\r
- opt_channel_pressure = SetFlag(st->opt_channel_pressure);\r
- opt_trace_text_meta_event = SetFlag(st->opt_trace_text_meta_event);\r
- opt_overlap_voice_allow = SetFlag(st->opt_overlap_voice_allow);\r
- opt_default_mid = st->opt_default_mid;\r
- default_tonebank = st->default_tonebank;\r
- special_tonebank = st->special_tonebank;\r
- effect_lr_mode = st->effect_lr_mode;\r
- effect_lr_delay_msec = st->effect_lr_delay_msec;\r
- opt_reverb_control = st->opt_reverb_control;\r
+#include "tables.h"
+#ifdef SUPPORT_SOUNDSPEC
+#include "soundspec.h"
+#endif /* SUPPORT_SOUNDSPEC */
+#include "wrd.h"
+#include "w32g.h"
+#include "w32g_utl.h"
+#include <sys/stat.h>
+#include "strtab.h"
+#include "url.h"
+
+extern int opt_default_mid;
+extern int effect_lr_mode;
+extern int effect_lr_delay_msec;
+extern char def_instr_name[];
+extern int opt_control_ratio;
+extern char *opt_aq_max_buff;
+extern char *opt_aq_fill_buff;
+extern int opt_evil_mode;
+extern int opt_buffer_fragments;
+extern int32 opt_output_rate;
+extern int PlayerLanguage;
+extern volatile int data_block_bits;
+extern volatile int data_block_num;
+extern int DocWndIndependent;
+extern int DocWndAutoPopup;
+extern int SeachDirRecursive;
+extern int IniFileAutoSave;
+extern int SecondMode;
+
+//*****************************************************************************/
+// ini
+
+// INI file
+CHAR *INI_INVALID = "INVALID PARAMETER";
+CHAR *INI_SEC_PLAYER = "PLAYER";
+CHAR *INI_SEC_TIMIDITY = "TIMIDITY";
+#define INI_MAXLEN 1024
+
+int
+IniGetKeyInt32(char *section, char *key,int32 *n)
+{
+ CHAR buffer[INI_MAXLEN];
+ GetPrivateProfileString
+ (section,key,INI_INVALID,buffer,INI_MAXLEN-1,IniFile);
+ if(strcasecmp(buffer,INI_INVALID)){
+ *n =atol(buffer);
+ return 0;
+ } else
+ return 1;
+}
+
+int
+IniGetKeyInt32Array(char *section, char *key, int32 *n, int arraysize)
+{
+ int i;
+ int ret = 0;
+ CHAR buffer[INI_MAXLEN];
+ char keybuffer[INI_MAXLEN];
+ for(i=0;i<arraysize;i++){
+ sprintf(keybuffer,"%s%d",key,i);
+ GetPrivateProfileString
+ (section,keybuffer,INI_INVALID,buffer,INI_MAXLEN-1,IniFile);
+ if(strcasecmp(buffer,INI_INVALID))
+ *n =atol(buffer);
+ else
+ ret++;
+ }
+ return ret;
+}
+
+int
+IniGetKeyInt(char *section, char *key, int *n)
+{
+ return IniGetKeyInt32(section, key, (int32 *)n);
+}
+
+int
+IniGetKeyFloat(char *section, char *key, FLOAT_T *n)
+{
+ CHAR buffer[INI_MAXLEN];
+ GetPrivateProfileString(section, key, INI_INVALID, buffer,
+ INI_MAXLEN-1, IniFile);
+ if(strcasecmp(buffer, INI_INVALID))
+ {
+ *n = (FLOAT_T)atof(buffer);
+ return 0;
+ }
+ else
+ return 1;
+}
+
+int
+IniGetKeyChar(char *section, char *key, char *c)
+{
+ char buffer[64];
+ if(IniGetKeyStringN(section,key,buffer,60))
+ return 1;
+ else {
+ *c = buffer[0];
+ return 0;
+ }
+}
+
+int
+IniGetKeyIntArray(char *section, char *key, int *n, int arraysize)
+{
+ return IniGetKeyInt32Array(section,key,(int32 *)n, arraysize);
+}
+
+int
+IniGetKeyString(char *section, char *key,char *str)
+{
+ CHAR buffer[INI_MAXLEN];
+ GetPrivateProfileString
+ (section,key,INI_INVALID,buffer,INI_MAXLEN-1,IniFile);
+ if(strcasecmp(buffer,INI_INVALID)){
+ strcpy(str,buffer);
+ return 0;
+ } else
+ return 1;
+}
+
+int
+IniGetKeyStringN(char *section, char *key,char *str, int size)
+{
+ CHAR buffer[INI_MAXLEN];
+ GetPrivateProfileString
+ (section,key,INI_INVALID,buffer,INI_MAXLEN-1,IniFile);
+ if(strcasecmp(buffer,INI_INVALID)){
+ strncpy(str,buffer,size);
+ return 0;
+ } else
+ return 1;
+}
+
+int
+IniPutKeyInt32(char *section, char *key,int32 *n)
+{
+ CHAR buffer[INI_MAXLEN];
+ sprintf(buffer,"%ld",*n);
+ WritePrivateProfileString
+ (section,key,buffer,IniFile);
+ return 0;
+}
+
+int
+IniPutKeyInt32Array(char *section, char *key, int32 *n, int arraysize)
+{
+ int i;
+ CHAR buffer[INI_MAXLEN];
+ CHAR keybuffer[INI_MAXLEN];
+ for(i=0;i<arraysize;i++){
+ sprintf(buffer,"%ld",n[i]);
+ sprintf(keybuffer,"%s%d",key,i);
+ WritePrivateProfileString(section,keybuffer,buffer,IniFile);
+ }
+ return 0;
+}
+
+int
+IniPutKeyInt(char *section, char *key, int *n)
+{
+ return IniPutKeyInt32(section, key, (int32 *)n);
+}
+
+int
+IniPutKeyChar(char *section, char *key, char *c)
+{
+ char buffer[64];
+ sprintf(buffer,"%c",*c);
+ return IniPutKeyStringN(section,key,buffer,60);
+}
+
+int
+IniPutKeyIntArray(char *section, char *key, int *n, int arraysize)
+{
+ return IniPutKeyInt32Array(section,key,(int32 *)n, arraysize);
+}
+
+int
+IniPutKeyString(char *section, char *key, char *str)
+{
+ WritePrivateProfileString(section,key,str,IniFile);
+ return 0;
+}
+
+int
+IniPutKeyStringN(char *section, char *key, char *str, int size)
+{
+ WritePrivateProfileString(section,key,str,IniFile);
+ return 0;
+}
+
+int
+IniPutKeyFloat(char *section, char *key,FLOAT_T n)
+{
+ CHAR buffer[INI_MAXLEN];
+ sprintf(buffer,"%f", (double)n);
+ WritePrivateProfileString(section, key, buffer, IniFile);
+ return 0;
+}
+
+// LoadIniFile() , SaveIniFile()
+// ***************************************************************************
+// Setting
+
+#define SetFlag(flag) (!!(flag))
+
+static long SetValue(int32 value, int32 min, int32 max)
+{
+ int32 v = value;
+ if(v < min) v = min;
+ else if( v > max) v = max;
+ return v;
+}
+
+void
+ApplySettingPlayer(SETTING_PLAYER *sp)
+{
+ InitMinimizeFlag = SetFlag(sp->InitMinimizeFlag);
+ DebugWndStartFlag = SetFlag(sp->DebugWndStartFlag);
+ ConsoleWndStartFlag = SetFlag(sp->ConsoleWndStartFlag);
+ ListWndStartFlag = SetFlag(sp->ListWndStartFlag);
+ TracerWndStartFlag = SetFlag(sp->TracerWndStartFlag);
+ DocWndStartFlag = SetFlag(sp->DocWndStartFlag);
+ WrdWndStartFlag = SetFlag(sp->WrdWndStartFlag);
+ DebugWndFlag = SetFlag(sp->DebugWndFlag);
+ ConsoleWndFlag = SetFlag(sp->ConsoleWndFlag);
+ ListWndFlag = SetFlag(sp->ListWndFlag);
+ TracerWndFlag = SetFlag(sp->TracerWndFlag);
+ DocWndFlag = SetFlag(sp->DocWndFlag);
+ WrdWndFlag = SetFlag(sp->WrdWndFlag);
+ SoundSpecWndFlag = SetFlag(sp->SoundSpecWndFlag);
+ SubWindowMax = SetValue(sp->SubWindowMax,1,10);
+ strncpy(ConfigFile,sp->ConfigFile,MAXPATH + 31);
+ ConfigFile[MAXPATH + 31] = '\0';
+ strncpy(PlaylistFile,sp->PlaylistFile,MAXPATH + 31);
+ PlaylistFile[MAXPATH + 31] = '\0';
+ strncpy(PlaylistHistoryFile,sp->PlaylistHistoryFile,MAXPATH + 31);
+ PlaylistHistoryFile[MAXPATH + 31] = '\0';
+ strncpy(MidiFileOpenDir,sp->MidiFileOpenDir,MAXPATH + 31);
+ MidiFileOpenDir[MAXPATH + 31] = '\0';
+ strncpy(ConfigFileOpenDir,sp->ConfigFileOpenDir,MAXPATH + 31);
+ ConfigFileOpenDir[MAXPATH + 31] = '\0';
+ strncpy(PlaylistFileOpenDir,sp->PlaylistFileOpenDir,MAXPATH + 31);
+ PlaylistFileOpenDir[MAXPATH + 31] = '\0';
+ PlayerThreadPriority = sp->PlayerThreadPriority;
+ GUIThreadPriority = sp->GUIThreadPriority;
+ TraceGraphicFlag = SetFlag(sp->TraceGraphicFlag);
+ // fonts ...
+ SystemFontSize = sp->SystemFontSize;
+ PlayerFontSize = sp->PlayerFontSize;
+ WrdFontSize = sp->WrdFontSize;
+ DocFontSize = sp->DocFontSize;
+ ListFontSize = sp->ListFontSize;
+ TracerFontSize = sp->TracerFontSize;
+ strncpy(SystemFont,sp->SystemFont,255);
+ SystemFont[255] = '\0';
+ strncpy(PlayerFont,sp->PlayerFont,255);
+ PlayerFont[255] = '\0';
+ strncpy(WrdFont,sp->WrdFont,255);
+ WrdFont[255] = '\0';
+ strncpy(DocFont,sp->DocFont,255);
+ DocFont[255] = '\0';
+ strncpy(ListFont,sp->ListFont,255);
+ ListFont[255] = '\0';
+ strncpy(TracerFont,sp->TracerFont,255);
+ TracerFont[255] = '\0';
+ // Apply font functions ...
+
+ DocMaxSize = sp->DocMaxSize;
+ strncpy(DocFileExt,sp->DocFileExt,255);
+ DocFileExt[255] = '\0';
+ PlayerLanguage = sp->PlayerLanguage;
+ DocWndIndependent = sp->DocWndIndependent;
+ DocWndAutoPopup = sp->DocWndAutoPopup;
+ SeachDirRecursive = sp->SeachDirRecursive;
+ IniFileAutoSave = sp->IniFileAutoSave;
+ SecondMode = sp->SecondMode;
+}
+
+void
+SaveSettingPlayer(SETTING_PLAYER *sp)
+{
+ sp->InitMinimizeFlag = SetFlag(InitMinimizeFlag);
+ sp->DebugWndStartFlag = SetFlag(DebugWndStartFlag);
+ sp->ConsoleWndStartFlag = SetFlag(ConsoleWndStartFlag);
+ sp->ListWndStartFlag = SetFlag(ListWndStartFlag);
+ sp->TracerWndStartFlag = SetFlag(TracerWndStartFlag);
+ sp->DocWndStartFlag = SetFlag(DocWndStartFlag);
+ sp->WrdWndStartFlag = SetFlag(WrdWndStartFlag);
+ sp->DebugWndFlag = SetFlag(DebugWndFlag);
+ sp->ConsoleWndFlag = SetFlag(ConsoleWndFlag);
+ sp->ListWndFlag = SetFlag(ListWndFlag);
+ sp->TracerWndFlag = SetFlag(TracerWndFlag);
+ sp->DocWndFlag = SetFlag(DocWndFlag);
+ sp->WrdWndFlag = SetFlag(WrdWndFlag);
+ sp->SoundSpecWndFlag = SetFlag(SoundSpecWndFlag);
+ sp->SubWindowMax = SetValue(SubWindowMax,1,10);
+ strncpy(sp->ConfigFile,ConfigFile,MAXPATH + 31);
+ (sp->ConfigFile)[MAXPATH + 31] = '\0';
+ strncpy(sp->PlaylistFile,PlaylistFile,MAXPATH + 31);
+ (sp->PlaylistFile)[MAXPATH + 31] = '\0';
+ strncpy(sp->PlaylistHistoryFile,PlaylistHistoryFile,MAXPATH + 31);
+ (sp->PlaylistHistoryFile)[MAXPATH + 31] = '\0';
+ strncpy(sp->MidiFileOpenDir,MidiFileOpenDir,MAXPATH + 31);
+ (sp->MidiFileOpenDir)[MAXPATH + 31] = '\0';
+ strncpy(sp->ConfigFileOpenDir,ConfigFileOpenDir,MAXPATH + 31);
+ (sp->ConfigFileOpenDir)[MAXPATH + 31] = '\0';
+ strncpy(sp->PlaylistFileOpenDir,PlaylistFileOpenDir,MAXPATH + 31);
+ (sp->PlaylistFileOpenDir)[MAXPATH + 31] = '\0';
+ sp->PlayerThreadPriority = PlayerThreadPriority;
+ sp->GUIThreadPriority = GUIThreadPriority;
+ sp->WrdGraphicFlag = SetFlag(WrdGraphicFlag);
+ sp->TraceGraphicFlag = SetFlag(TraceGraphicFlag);
+ // fonts ...
+ sp->SystemFontSize = SystemFontSize;
+ sp->PlayerFontSize = PlayerFontSize;
+ sp->WrdFontSize = WrdFontSize;
+ sp->DocFontSize = DocFontSize;
+ sp->ListFontSize = ListFontSize;
+ sp->TracerFontSize = TracerFontSize;
+ strncpy(sp->SystemFont,SystemFont,255);
+ sp->SystemFont[255] = '\0';
+ strncpy(sp->PlayerFont,PlayerFont,255);
+ sp->PlayerFont[255] = '\0';
+ strncpy(sp->WrdFont,WrdFont,255);
+ sp->WrdFont[255] = '\0';
+ strncpy(sp->DocFont,DocFont,255);
+ DocFont[255] = '\0';
+ strncpy(sp->ListFont,ListFont,255);
+ sp->ListFont[255] = '\0';
+ strncpy(sp->TracerFont,TracerFont,255);
+ sp->TracerFont[255] = '\0';
+ sp->DocMaxSize = DocMaxSize;
+ strncpy(sp->DocFileExt,DocFileExt,255);
+ sp->DocFileExt[255] = '\0';
+ sp->PlayerLanguage = PlayerLanguage;
+ sp->DocWndIndependent = DocWndIndependent;
+ sp->DocWndAutoPopup = DocWndAutoPopup;
+ sp->SeachDirRecursive = SeachDirRecursive;
+ sp->IniFileAutoSave = IniFileAutoSave;
+ sp->SecondMode = SecondMode;
+}
+
+extern int set_play_mode(char *cp);
+extern int set_tim_opt(int c, char *optarg);
+extern int set_ctl(char *cp);
+extern int set_wrd(char *w);
+
+#if defined(__W32__) && defined(SMFCONV)
+extern int opt_rcpcv_dll;
+#endif /* SMFCONV */
+extern char *wrdt_open_opts;
+
+static int is_device_output_ID(int id)
+{
+ return id == 'd' || id == 'n' || id == 'e';
+}
+
+void
+ApplySettingTiMidity(SETTING_TIMIDITY *st)
+{
+ int i;
+ char buffer[INI_MAXLEN];
+
+ /* Player must be stopped.
+ * DANGER to apply settings while playing.
+ */
+ amplification = SetValue(st->amplification, 0, MAX_AMPLIFICATION);
+ antialiasing_allowed = SetFlag(st->antialiasing_allowed);
+ if(st->buffer_fragments == -1)
+ opt_buffer_fragments = -1;
+ else
+ opt_buffer_fragments = SetValue(st->buffer_fragments, 3, 1000);
+ default_drumchannels = st->default_drumchannels;
+ default_drumchannel_mask = st->default_drumchannel_mask;
+ opt_modulation_wheel = SetFlag(st->opt_modulation_wheel);
+ opt_portamento = SetFlag(st->opt_portamento);
+ opt_nrpn_vibrato = SetFlag(st->opt_nrpn_vibrato);
+ opt_channel_pressure = SetFlag(st->opt_channel_pressure);
+ opt_trace_text_meta_event = SetFlag(st->opt_trace_text_meta_event);
+ opt_overlap_voice_allow = SetFlag(st->opt_overlap_voice_allow);
+ opt_default_mid = st->opt_default_mid;
+ default_tonebank = st->default_tonebank;
+ special_tonebank = st->special_tonebank;
+ effect_lr_mode = st->effect_lr_mode;
+ effect_lr_delay_msec = st->effect_lr_delay_msec;
+ opt_reverb_control = st->opt_reverb_control;
opt_chorus_control = st->opt_chorus_control;\r
- noise_sharp_type = st->noise_sharp_type;\r
+ opt_surround_chorus = st->opt_surround_chorus;
+ noise_sharp_type = st->noise_sharp_type;
opt_evil_mode = st->opt_evil_mode;\r
- adjust_panning_immediately = SetFlag(st->adjust_panning_immediately);\r
- fast_decay = SetFlag(st->fast_decay);\r
-#ifdef SUPPORT_SOUNDSPEC\r
- view_soundspec_flag = SetFlag(st->view_soundspec_flag);\r
- spectrigram_update_sec = st->spectrigram_update_sec;\r
-#endif\r
- for(i = 0; i < MAX_CHANNELS; i++)\r
- default_program[i] = st->default_program[i];\r
- set_ctl(st->opt_ctl);\r
- opt_realtime_playing = SetFlag(st->opt_realtime_playing);\r
- reduce_voice_threshold = st->reduce_voice_threshold;\r
- set_play_mode(st->opt_playmode);\r
- strncpy(OutputName,st->OutputName,MAXPATH);\r
- if(OutputName[0] && !is_device_output_ID(play_mode->id_character))\r
- play_mode->name = OutputName;\r
- opt_output_rate = st->output_rate;\r
- if(st->output_rate)\r
- play_mode->rate = SetValue(st->output_rate,\r
- MIN_OUTPUT_RATE, MAX_OUTPUT_RATE);\r
- else if(play_mode->rate == 0)\r
- play_mode->rate = DEFAULT_RATE;\r
- voices = SetValue(st->voices, 1, MAX_VOICES);\r
- auto_reduce_polyphony = st->auto_reduce_polyphony;\r
- quietchannels = st->quietchannels;\r
- if(opt_aq_max_buff)\r
- free(opt_aq_max_buff);\r
- if(opt_aq_fill_buff)\r
- free(opt_aq_fill_buff);\r
- strcpy(buffer, st->opt_qsize);\r
- opt_aq_max_buff = buffer;\r
- opt_aq_fill_buff = strchr(opt_aq_max_buff, '/');\r
- *opt_aq_fill_buff++ = '\0';\r
- opt_aq_max_buff = safe_strdup(opt_aq_max_buff);\r
- opt_aq_fill_buff = safe_strdup(opt_aq_fill_buff);\r
- modify_release = SetValue(st->modify_release, 0, MAX_MREL);\r
- allocate_cache_size = st->allocate_cache_size;\r
- if(output_text_code)\r
- free(output_text_code);\r
- output_text_code = safe_strdup(st->output_text_code);\r
- free_instruments_afterwards = st->free_instruments_afterwards;\r
- set_wrd(st->opt_wrd);\r
-#if defined(__W32__) && defined(SMFCONV)\r
- opt_rcpcv_dll = st->opt_rcpcv_dll;\r
-#endif /* SMFCONV */\r
-\r
- opt_control_ratio = st->control_ratio;\r
- if(opt_control_ratio)\r
- control_ratio = SetValue(opt_control_ratio, 1, MAX_CONTROL_RATIO);\r
- else\r
- {\r
- control_ratio = play_mode->rate / CONTROLS_PER_SECOND;\r
- control_ratio = SetValue(control_ratio, 1, MAX_CONTROL_RATIO);\r
- }\r
- data_block_bits = st->data_block_bits;\r
- data_block_num = st->data_block_num;\r
-}\r
-\r
-void\r
-SaveSettingTiMidity(SETTING_TIMIDITY *st)\r
-{\r
- int i, j;\r
-\r
- st->amplification = SetValue(amplification, 0, MAX_AMPLIFICATION);\r
- st->antialiasing_allowed = SetFlag(antialiasing_allowed);\r
- st->buffer_fragments = opt_buffer_fragments;\r
- st->control_ratio = SetValue(opt_control_ratio, 0, MAX_CONTROL_RATIO);\r
- st->default_drumchannels = default_drumchannels;\r
- st->default_drumchannel_mask = default_drumchannel_mask;\r
- st->opt_modulation_wheel = SetFlag(opt_modulation_wheel);\r
- st->opt_portamento = SetFlag(opt_portamento);\r
- st->opt_nrpn_vibrato = SetFlag(opt_nrpn_vibrato);\r
- st->opt_channel_pressure = SetFlag(opt_channel_pressure);\r
- st->opt_trace_text_meta_event = SetFlag(opt_trace_text_meta_event);\r
- st->opt_overlap_voice_allow = SetFlag(opt_overlap_voice_allow);\r
- st->opt_default_mid = opt_default_mid;\r
- st->default_tonebank = default_tonebank;\r
- st->special_tonebank = special_tonebank;\r
- st->effect_lr_mode = effect_lr_mode;\r
- st->effect_lr_delay_msec = effect_lr_delay_msec;\r
- st->opt_reverb_control = opt_reverb_control;\r
+ opt_tva_attack = st->opt_tva_attack;\r
+ opt_tva_decay = st->opt_tva_decay;\r
+ opt_tva_release = st->opt_tva_release;\r
+ opt_delay_control = st->opt_delay_control;\r
+ opt_resonance = st->opt_resonance;\r
+ opt_env_attack = st->opt_env_attack;\r
+ opt_velocity_table = st->opt_velocity_table;
+ adjust_panning_immediately = SetFlag(st->adjust_panning_immediately);
+ fast_decay = SetFlag(st->fast_decay);
+#ifdef SUPPORT_SOUNDSPEC
+ view_soundspec_flag = SetFlag(st->view_soundspec_flag);
+ spectrigram_update_sec = st->spectrigram_update_sec;
+#endif
+ for(i = 0; i < MAX_CHANNELS; i++)
+ default_program[i] = st->default_program[i];
+ set_ctl(st->opt_ctl);
+ opt_realtime_playing = SetFlag(st->opt_realtime_playing);
+ reduce_voice_threshold = st->reduce_voice_threshold;
+ set_play_mode(st->opt_playmode);
+ strncpy(OutputName,st->OutputName,MAXPATH);
+ if(OutputName[0] && !is_device_output_ID(play_mode->id_character))
+ play_mode->name = strdup(OutputName); // \83\81\83\82\83\8a\83\8a\81[\83N\82·\82é\82©\82È\81H \82Í\82¸\82·\82Æ\82¾\82ß\82¾\82µ\81B
+ strncpy(w32g_output_dir,st->OutputDirName,MAXPATH);
+ w32g_output_dir[MAXPATH-1] = '\0';
+ w32g_auto_output_mode = st->auto_output_mode;
+ opt_output_rate = st->output_rate;
+ if(st->output_rate)
+ play_mode->rate = SetValue(st->output_rate,
+ MIN_OUTPUT_RATE, MAX_OUTPUT_RATE);
+ else if(play_mode->rate == 0)
+ play_mode->rate = DEFAULT_RATE;
+ voices = SetValue(st->voices, 1, MAX_VOICES);
+ auto_reduce_polyphony = st->auto_reduce_polyphony;
+ quietchannels = st->quietchannels;
+ if(opt_aq_max_buff)
+ free(opt_aq_max_buff);
+ if(opt_aq_fill_buff)
+ free(opt_aq_fill_buff);
+ strcpy(buffer, st->opt_qsize);
+ opt_aq_max_buff = buffer;
+ opt_aq_fill_buff = strchr(opt_aq_max_buff, '/');
+ *opt_aq_fill_buff++ = '\0';
+ opt_aq_max_buff = safe_strdup(opt_aq_max_buff);
+ opt_aq_fill_buff = safe_strdup(opt_aq_fill_buff);
+ modify_release = SetValue(st->modify_release, 0, MAX_MREL);
+ allocate_cache_size = st->allocate_cache_size;
+ if(output_text_code)
+ free(output_text_code);
+ output_text_code = safe_strdup(st->output_text_code);
+ free_instruments_afterwards = st->free_instruments_afterwards;
+ set_wrd(st->opt_wrd);
+#if defined(__W32__) && defined(SMFCONV)
+ opt_rcpcv_dll = st->opt_rcpcv_dll;
+#endif /* SMFCONV */
+
+ opt_control_ratio = st->control_ratio;
+ if(opt_control_ratio)
+ control_ratio = SetValue(opt_control_ratio, 1, MAX_CONTROL_RATIO);
+ else
+ {
+ control_ratio = play_mode->rate / CONTROLS_PER_SECOND;
+ control_ratio = SetValue(control_ratio, 1, MAX_CONTROL_RATIO);
+ }
+ data_block_bits = st->data_block_bits;
+ data_block_num = st->data_block_num;
+}
+
+void
+SaveSettingTiMidity(SETTING_TIMIDITY *st)
+{
+ int i, j;
+
+ st->amplification = SetValue(amplification, 0, MAX_AMPLIFICATION);
+ st->antialiasing_allowed = SetFlag(antialiasing_allowed);
+ st->buffer_fragments = opt_buffer_fragments;
+ st->control_ratio = SetValue(opt_control_ratio, 0, MAX_CONTROL_RATIO);
+ st->default_drumchannels = default_drumchannels;
+ st->default_drumchannel_mask = default_drumchannel_mask;
+ st->opt_modulation_wheel = SetFlag(opt_modulation_wheel);
+ st->opt_portamento = SetFlag(opt_portamento);
+ st->opt_nrpn_vibrato = SetFlag(opt_nrpn_vibrato);
+ st->opt_channel_pressure = SetFlag(opt_channel_pressure);
+ st->opt_trace_text_meta_event = SetFlag(opt_trace_text_meta_event);
+ st->opt_overlap_voice_allow = SetFlag(opt_overlap_voice_allow);
+ st->opt_default_mid = opt_default_mid;
+ st->default_tonebank = default_tonebank;
+ st->special_tonebank = special_tonebank;
+ st->effect_lr_mode = effect_lr_mode;
+ st->effect_lr_delay_msec = effect_lr_delay_msec;
+ st->opt_reverb_control = opt_reverb_control;
st->opt_chorus_control = opt_chorus_control;\r
- st->noise_sharp_type = noise_sharp_type;\r
- st->opt_evil_mode = SetFlag(opt_evil_mode);\r
- st->adjust_panning_immediately = SetFlag(adjust_panning_immediately);\r
- st->fast_decay = SetFlag(fast_decay);\r
-#ifdef SUPPORT_SOUNDSPEC\r
- st->view_soundspec_flag = SetFlag(view_soundspec_flag);\r
- st->spectrigram_update_sec = spectrigram_update_sec;\r
-#endif\r
- for(i = 0; i < MAX_CHANNELS; i++)\r
- {\r
- if(def_instr_name[0])\r
- st->default_program[i] = SPECIAL_PROGRAM;\r
- else\r
- st->default_program[i] = default_program[i];\r
- }\r
- j = 0;\r
- st->opt_ctl[j++] = ctl->id_character;\r
- for(i = 1; i < ctl->verbosity; i++)\r
- st->opt_ctl[j++] = 'v';\r
- for(i = 1; i > ctl->verbosity; i--)\r
- st->opt_ctl[j++] = 'q';\r
- if(ctl->trace_playing)\r
- st->opt_ctl[j++] = 't';\r
- if(ctl->flags & CTLF_LIST_LOOP)\r
- st->opt_ctl[j++] = 'l';\r
- if(ctl->flags & CTLF_LIST_RANDOM)\r
- st->opt_ctl[j++] = 'r';\r
- if(ctl->flags & CTLF_LIST_SORT)\r
- st->opt_ctl[j++] = 's';\r
- if(ctl->flags & CTLF_AUTOSTART)\r
- st->opt_ctl[j++] = 'a';\r
- if(ctl->flags & CTLF_AUTOEXIT)\r
- st->opt_ctl[j++] = 'x';\r
- if(ctl->flags & CTLF_DRAG_START)\r
- st->opt_ctl[j++] = 'd';\r
- if(ctl->flags & CTLF_AUTOUNIQ)\r
- st->opt_ctl[j++] = 'u';\r
- if(ctl->flags & CTLF_AUTOREFINE)\r
- st->opt_ctl[j++] = 'R';\r
- if(ctl->flags & CTLF_NOT_CONTINUE)\r
- st->opt_ctl[j++] = 'C';\r
- st->opt_ctl[j] = '\0';\r
- st->opt_realtime_playing = SetFlag(opt_realtime_playing);\r
- st->reduce_voice_threshold = reduce_voice_threshold;\r
- j = 0;\r
- st->opt_playmode[j++] = play_mode->id_character;\r
- st->opt_playmode[j++] = ((play_mode->encoding & PE_MONO) ? 'M' : 'S');\r
- st->opt_playmode[j++] = ((play_mode->encoding & PE_SIGNED) ? 's' : 'u');\r
- st->opt_playmode[j++] = ((play_mode->encoding & PE_16BIT) ? '1' : '8');\r
- if(play_mode->encoding & PE_ULAW)\r
- st->opt_playmode[j++] = 'U';\r
- else if(play_mode->encoding & PE_ALAW)\r
- st->opt_playmode[j++] = 'A';\r
- else\r
- st->opt_playmode[j++] = 'l';\r
- if(play_mode->encoding & PE_BYTESWAP)\r
- st->opt_playmode[j++] = 'x';\r
- st->opt_playmode[j] = '\0';\r
- strncpy(st->OutputName,OutputName,sizeof(st->OutputName)-1);\r
- st->voices = SetValue(voices, 1, MAX_VOICES);\r
- st->auto_reduce_polyphony = auto_reduce_polyphony;\r
- st->quietchannels = quietchannels;\r
- snprintf(st->opt_qsize,sizeof(st->opt_qsize),"%s/%s",\r
- opt_aq_max_buff,opt_aq_fill_buff);\r
- st->modify_release = SetValue(modify_release, 0, MAX_MREL);\r
- st->allocate_cache_size = allocate_cache_size;\r
- st->output_rate = opt_output_rate;\r
- if(st->output_rate == 0)\r
- {\r
- st->output_rate = play_mode->rate;\r
- if(st->output_rate == 0)\r
- st->output_rate = DEFAULT_RATE;\r
- }\r
- st->output_rate = SetValue(st->output_rate,MIN_OUTPUT_RATE,MAX_OUTPUT_RATE);\r
- strncpy(st->output_text_code,output_text_code,sizeof(st->output_text_code)-1);\r
- st->free_instruments_afterwards = free_instruments_afterwards;\r
- st->opt_wrd[0] = wrdt->id;\r
- if(wrdt_open_opts)\r
- strncpy(st->opt_wrd + 1, wrdt_open_opts, sizeof(st->opt_wrd) - 2);\r
- else\r
- st->opt_wrd[1] = '\0';\r
-#if defined(__W32__) && defined(SMFCONV)\r
- st->opt_rcpcv_dll = opt_rcpcv_dll;\r
-#endif /* SMFCONV */\r
- st->data_block_bits = data_block_bits;\r
- st->data_block_num = data_block_num;\r
-}\r
-\r
-\r
-\r
-\r
-\r
-\r
-//****************************************************************************/\r
-// ini & config\r
-\r
-static char S_IniFile[MAXPATH + 32];\r
-static char S_timidity_window_inifile[MAXPATH + 32];\r
-static char S_ConfigFile[MAXPATH + 32];\r
-static char S_PlaylistFile[MAXPATH + 32];\r
-static char S_PlaylistHistoryFile[MAXPATH + 32];\r
-static char S_MidiFileOpenDir[MAXPATH + 32];\r
-static char S_ConfigFileOpenDir[MAXPATH + 32];\r
-static char S_PlaylistFileOpenDir[MAXPATH + 32];\r
-static char S_DocFileExt[256];\r
-static char S_OutputName[MAXPATH + 32];\r
-static char *OutputName;\r
-static char S_SystemFont[256];\r
-static char S_PlayerFont[256];\r
-static char S_WrdFont[256];\r
-static char S_DocFont[256];\r
-static char S_ListFont[256];\r
-static char S_TracerFont[256];\r
-static char *SystemFont = S_SystemFont;\r
-char *PlayerFont = S_PlayerFont;\r
-static char *WrdFont = S_WrdFont;\r
-static char *DocFont = S_DocFont;\r
-static char *ListFont = S_ListFont;\r
-static char *TracerFont = S_TracerFont;\r
-\r
-//static HFONT hSystemFont = 0;\r
-//static HFONT hPlayerFont = 0;\r
-//static HFONT hWrdFont = 0;\r
-//static HFONT hDocFont = 0;\r
-//static HFONT hListFont = 0;\r
-//static HFONT hTracerFont = 0;\r
-static int SystemFontSize = 9;\r
-static int PlayerFontSize = 16;\r
-static int WrdFontSize = 16;\r
-static int DocFontSize = 16;\r
-static int ListFontSize = 16;\r
-static int TracerFontSize = 16;\r
-\r
-#define DEFAULT_DOCFILEEXT "doc;txt;hed"\r
-\r
-SETTING_PLAYER *sp_default, *sp_current, *sp_temp;\r
-SETTING_TIMIDITY *st_default, *st_current, *st_temp;\r
-extern char *timidity_window_inifile;\r
-\r
-void w32g_initialize(void)\r
-{\r
- char buffer[MAXPATH + 1024];\r
- char *p;\r
-\r
- hInst = GetModuleHandle(0);\r
- \r
- IniFile = S_IniFile;\r
- ConfigFile = S_ConfigFile;\r
- PlaylistFile = S_PlaylistFile;\r
- PlaylistHistoryFile = S_PlaylistHistoryFile;\r
- MidiFileOpenDir = S_MidiFileOpenDir;\r
- ConfigFileOpenDir = S_ConfigFileOpenDir;\r
- PlaylistFileOpenDir = S_PlaylistFileOpenDir;\r
- DocFileExt = S_DocFileExt;\r
- OutputName = S_OutputName;\r
- \r
- IniFile[0] = '\0';\r
- ConfigFile[0] = '\0';\r
- PlaylistFile[0] = '\0';\r
- PlaylistHistoryFile[0] = '\0';\r
- MidiFileOpenDir[0] = '\0';\r
- ConfigFileOpenDir[0] = '\0';\r
- PlaylistFileOpenDir[0] = '\0';\r
- OutputName[0] = '\0';\r
- strcpy(DocFileExt,DEFAULT_DOCFILEEXT);\r
- strcpy(SystemFont,"\82l\82r \96¾\92©");\r
- strcpy(PlayerFont,"\82l\82r \96¾\92©");\r
- strcpy(WrdFont,"\82l\82r \96¾\92©");\r
- strcpy(DocFont,"\82l\82r \96¾\92©");\r
- strcpy(ListFont,"\82l\82r \96¾\92©");\r
- strcpy(TracerFont,"\82l\82r \96¾\92©");\r
-\r
- if(GetModuleFileName(hInst, buffer, MAXPATH))\r
- {\r
- if((p = pathsep_strrchr(buffer)) != NULL)\r
- {\r
- p++;\r
- *p = '\0';\r
- }\r
- else\r
- {\r
- buffer[0] = '.';\r
- buffer[1] = PATH_SEP;\r
- buffer[2] = '\0';\r
- }\r
- }\r
- else\r
- {\r
- buffer[0] = '.';\r
- buffer[1] = PATH_SEP;\r
- buffer[2] = '\0';\r
- }\r
- strncpy(IniFile, buffer, MAXPATH);\r
- IniFile[MAXPATH] = '\0';\r
- strcat(IniFile,"timpp32g.ini");\r
- timidity_window_inifile = S_timidity_window_inifile;\r
- strncpy(timidity_window_inifile, buffer, 200);\r
- timidity_window_inifile[200] = '\0';\r
- strcat(timidity_window_inifile,"timidity_window.ini");\r
- st_default = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));\r
- sp_default = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));\r
- st_current = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));\r
- sp_current = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));\r
- st_temp = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));\r
- sp_temp = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));\r
-\r
- SaveSettingPlayer(sp_current);\r
- SaveSettingTiMidity(st_current);\r
- if(IniVersionCheck())\r
- {\r
- LoadIniFile(sp_current, st_current);\r
- ApplySettingPlayer(sp_current);\r
- ApplySettingTiMidity(st_current);\r
- w32g_has_ini_file = 1;\r
- }\r
- else\r
- {\r
- sprintf(buffer,\r
-"Ini file is not found, or old format is found.\n"\r
-"Do you want to initialize the ini file?\n\n"\r
-"Ini file path: %s",\r
- IniFile);\r
-\r
- if(MessageBox(0, buffer, "TiMidity Notice", MB_YESNO) == IDYES)\r
- {\r
- SaveIniFile(sp_current, st_current);\r
- w32g_has_ini_file = 1;\r
- }\r
- else\r
- {\r
- w32g_has_ini_file = 0;\r
- }\r
- }\r
-\r
- memcpy(sp_default, sp_current, sizeof(SETTING_PLAYER));\r
- memcpy(st_default, st_current, sizeof(SETTING_TIMIDITY));\r
-\r
- memcpy(sp_temp, sp_current, sizeof(SETTING_PLAYER));\r
- memcpy(st_temp, st_current, sizeof(SETTING_TIMIDITY));\r
-\r
- w32g_i_init();\r
-}\r
-\r
-int IniVersionCheck(void)\r
-{\r
- char version[INI_MAXLEN];\r
- if(IniGetKeyStringN(INI_SEC_PLAYER,"IniVersion",version,sizeof(version)-1) == 0 &&\r
- strcmp(version, IniVersion) == 0)\r
- return 1; // UnChanged\r
- return 0;\r
-}\r
-\r
-void BitBltRect(HDC dst, HDC src, RECT *rc)\r
-{\r
- BitBlt(dst, rc->left, rc->top,\r
- rc->right - rc->left, rc->bottom - rc->top,\r
- src, rc->left, rc->top, SRCCOPY);\r
-}\r
-\r
-#if 0\r
-/*\r
- * TmColor\r
- */\r
-TmColors tm_colors[TMCC_SIZE];\r
-\r
-static COLORREF WeakHalfColor(COLORREF fc, COLORREF bc)\r
-{\r
- return fc*1/3 + bc*2/3;\r
-}\r
-\r
-static COLORREF HalfColor(COLORREF fc, COLORREF bc)\r
-{\r
- return fc*1/6 + bc*5/6;\r
-}\r
-\r
-void TmInitColor(void)\r
-{\r
- int i;\r
-\r
- tm_colors[TMCC_BLACK].color = TMCCC_BLACK;\r
- tm_colors[TMCC_WHITE].color = TMCCC_WHITE;\r
- tm_colors[TMCC_RED].color = TMCCC_RED;\r
- tm_colors[TMCC_BACK].color = TMCCC_BACK;\r
- tm_colors[TMCC_LOW].color = TMCCC_LOW;\r
- tm_colors[TMCC_MIDDLE].color= TMCCC_MIDDLE;\r
- tm_colors[TMCC_HIGH].color = TMCCC_HIGH;\r
-\r
- tm_colors[TMCC_FORE_HALF].color = HalfColor(TMCCC_FORE,TMCCC_BACK);\r
- tm_colors[TMCC_FORE_WEAKHALF].color = WeakHalfColor(TMCCC_FORE,TMCCC_BACK);\r
- tm_colors[TMCC_LOW_HALF].color = HalfColor(TMCCC_LOW,TMCCC_BACK);\r
- tm_colors[TMCC_MIDDLE_HALF].color = HalfColor(TMCCC_MIDDLE,TMCCC_BACK);\r
- tm_colors[TMCC_HIGH_HALF].color = HalfColor(TMCCC_HIGH,TMCCC_BACK);\r
-\r
- for(i = 0; i < TMCC_SIZE; i++)\r
- {\r
- tm_colors[i].pen = CreatePen(PS_SOLID, 1, tm_colors[i].color);\r
- tm_colors[i].brush = CreateSolidBrush(tm_colors[i].color);\r
- }\r
-}\r
-\r
-void TmFreeColor(void)\r
-{\r
- int i;\r
- for(i = 0; i < TMCC_SIZE; i++)\r
- {\r
- if(tm_colors[i].pen != NULL)\r
- {\r
- DeleteObject(tm_colors[i].pen);\r
- DeleteObject(tm_colors[i].brush);\r
- tm_colors[i].pen = NULL;\r
- }\r
- }\r
-}\r
-\r
-void TmFillRect(HDC hdc, RECT *rc, int color)\r
-{\r
- HPEN hPen = tm_colors[color].pen;\r
- HBRUSH hBrush = tm_colors[color].brush;\r
- HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush;\r
-\r
- hgdiobj_hpen = SelectObject(hdc, hPen);\r
- hgdiobj_hbrush = SelectObject(hdc, hBrush);\r
- Rectangle(hdc, rc->left, rc->top, rc->right, rc->bottom);\r
- SelectObject(hdc, hgdiobj_hpen);\r
- SelectObject(hdc, hgdiobj_hbrush);\r
-}\r
-#endif\r
-\r
-#ifndef S_ISDIR\r
-#define S_ISDIR(mode) (((mode)&0xF000) == 0x4000)\r
-#endif /* S_ISDIR */\r
-int is_directory(char *path)\r
-{\r
- struct stat st;\r
- if(*path == '@') /* special identifire for playlist file */\r
- return 0;\r
- if(stat(path, &st) != -1)\r
- return S_ISDIR(st.st_mode);\r
- return GetFileAttributes(path) == FILE_ATTRIBUTE_DIRECTORY;\r
-}\r
-\r
-/* Return: 0: - not modified\r
- * 1: - modified\r
- */\r
-int directory_form(char *buffer)\r
-{\r
- int len;\r
-\r
- len = strlen(buffer);\r
- if(len == 0 || buffer[len - 1] == PATH_SEP)\r
- return 0;\r
- if(IS_PATH_SEP(buffer[len - 1]))\r
- len--;\r
- buffer[len++] = PATH_SEP;\r
- buffer[len] = '\0';\r
- return 1;\r
-}\r
-\r
-/* Return: 0: - not modified\r
- * 1: - modified\r
- */\r
-int nodirectory_form(char *buffer)\r
-{\r
- char *lastp = buffer + strlen(buffer);\r
- char *p = lastp;\r
-\r
- while(p > buffer && IS_PATH_SEP(*(p - 1)))\r
- p--;\r
- if(p == lastp)\r
- return 0;\r
- *p = '\0';\r
- return 1;\r
-}\r
-\r
-void SettingCtlFlag(SETTING_TIMIDITY *st, int c, int onoff)\r
-{\r
- int n;\r
- char *opt;\r
- \r
- opt = st->opt_ctl + 1;\r
- n = strlen(opt);\r
- if(onoff)\r
- {\r
- if(strchr(opt, c) != NULL)\r
- return; /* Already set */\r
- opt[n++] = c;\r
- opt[n] = '\0';\r
- }\r
- else\r
- {\r
- char *p;\r
- if((p = strchr(opt, c)) == NULL)\r
- return; /* Already removed */\r
- while(*(p + 1))\r
- {\r
- *p = *(p + 1);\r
- p++;\r
- }\r
- *p = '\0';\r
- }\r
-}\r
-\r
-\r
-\r
-\r
-int IsAvailableFilename(char *filename)\r
-{\r
- char *p = strrchr(filename,'.');\r
- if(p == NULL)\r
- return 0;\r
- if( strcasecmp(p,".lzh")==0 ||\r
- strcasecmp(p,".zip")==0 ||\r
- strcasecmp(p,".gz")==0 ||\r
- strcasecmp(p,".mid")==0 ||\r
- strcasecmp(p,".rcp")==0 ||\r
- strcasecmp(p,".r36")==0 ||\r
- strcasecmp(p,".g18")==0 ||\r
- strcasecmp(p,".g36")==0 ||\r
- strcasecmp(p,".mod")==0 ||\r
-// strcasecmp(p,".hqx")==0 ||\r
- strcasecmp(p,".tar")==0 ||\r
- strcasecmp(p,".tgz")==0 ||\r
- strcasecmp(p,".lha")==0 ||\r
- strcasecmp(p,".mime")==0 ||\r
- strcasecmp(p,".smf")==0)\r
- return 1;\r
-// if(url_check_type(filename)!=-1)\r
-// return 1;\r
- return 0;\r
-}\r
-\r
-/* ScanDirectoryFiles() works like UNIX find. */\r
-#define SCANDIR_MAX_DEPTH 32\r
-void ScanDirectoryFiles(char *basedir,\r
- int (* file_proc)(char *pathname, /* (const) */\r
- void *user_val),\r
- void *user_val)\r
-{\r
- char baselen;\r
- URL dir;\r
-\r
- static int depth = 0;\r
- static int stop_flag; /* Stop scanning if true */\r
- static int error_disp; /* Whether error is displayed or not */\r
- static char pathbuf[MAXPATH]; /* pathname buffer */\r
-\r
- if(depth == 0) /* Initialize variables at first recursive */\r
- {\r
- stop_flag = 0;\r
- error_disp = 0;\r
- strcpy(pathbuf, basedir);\r
- }\r
- else if(depth > SCANDIR_MAX_DEPTH) /* Avoid infinite recursive */\r
- {\r
- if(!error_disp)\r
- {\r
- /* Display this message at once */\r
- ctl->cmsg(CMSG_WARNING, VERB_NORMAL,\r
- "%s: Directory is too deep",\r
- basedir);\r
- error_disp = 1;\r
- }\r
- return; /* Skip scanning this directory */\r
- }\r
-\r
- directory_form(pathbuf);\r
- baselen = strlen(pathbuf);\r
- if(baselen > sizeof(pathbuf) - 16)\r
- {\r
- /* Ignore too long file name */\r
- return;\r
- }\r
-\r
- if((dir = url_dir_open(pathbuf)) == NULL)\r
- {\r
- ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "%s: Can't open directory", pathbuf);\r
- return;\r
- }\r
-\r
- if(file_proc(pathbuf, user_val))\r
- {\r
- stop_flag = 1; /* Terminate */\r
- return;\r
- }\r
-\r
- while(!stop_flag &&\r
- url_gets(dir, pathbuf + baselen, sizeof(pathbuf) - baselen - 1))\r
- {\r
- if(strcmp(pathbuf + baselen, ".") == 0 ||\r
- strcmp(pathbuf + baselen, "..") == 0)\r
- continue;\r
- if(file_proc(pathbuf, user_val))\r
- {\r
- stop_flag = 1; /* Terminate */\r
- break;\r
- }\r
- if(is_directory(pathbuf))\r
- {\r
- /* into subdirectory */\r
- depth++;\r
- ScanDirectoryFiles(pathbuf, file_proc, user_val);\r
- depth--;\r
- }\r
- }\r
- url_close(dir);\r
-}\r
-\r
-#define EXPANDDIR_MAX_SIZE 100000 /* Limit of total bytes of the file names */\r
-static int expand_dir_proc(char *filename, void *v)\r
-{\r
- void **user_val = (void **)v;\r
- StringTable *st = (StringTable *)user_val[0];\r
- int *total_size = (int *)user_val[1];\r
- char *startdir = (char *)user_val[2];\r
-\r
- if(IsAvailableFilename(filename))\r
- {\r
- if(*total_size > EXPANDDIR_MAX_SIZE)\r
- {\r
- ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "%s: There are too many files.",\r
- startdir);\r
- return 1; /* Terminate */\r
- }\r
- put_string_table(st, filename, strlen(filename));\r
- *total_size += strlen(filename);\r
- }\r
- return 0;\r
-}\r
-\r
-char **FilesExpandDir(int *p_nfiles, char **files)\r
-{\r
- StringTable st;\r
- int i;\r
-\r
- init_string_table(&st);\r
- for(i = 0; i < *p_nfiles; i++)\r
- {\r
- void *user_val[3];\r
- int total_size;\r
-\r
- total_size = 0;\r
- user_val[0] = &st;\r
- user_val[1] = &total_size;\r
- user_val[2] = files[i];\r
-\r
- if(is_directory(files[i]))\r
- ScanDirectoryFiles(files[i], expand_dir_proc, user_val);\r
- else\r
- {\r
- int len = strlen(files[i]);\r
- put_string_table(&st, files[i], len);\r
- }\r
- }\r
- *p_nfiles = st.nstring;\r
- return make_string_array(&st);\r
-\r
-}\r
+ st->opt_surround_chorus = opt_surround_chorus;\r
+ st->opt_tva_attack = opt_tva_attack;\r
+ st->opt_tva_decay = opt_tva_decay;\r
+ st->opt_tva_release = opt_tva_release;\r
+ st->opt_delay_control = opt_delay_control;\r
+ st->opt_resonance = opt_resonance;\r
+ st->opt_env_attack = opt_env_attack;\r
+ st->opt_velocity_table = opt_velocity_table;
+ st->noise_sharp_type = noise_sharp_type;
+ st->opt_evil_mode = SetFlag(opt_evil_mode);
+ st->adjust_panning_immediately = SetFlag(adjust_panning_immediately);
+ st->fast_decay = SetFlag(fast_decay);
+#ifdef SUPPORT_SOUNDSPEC
+ st->view_soundspec_flag = SetFlag(view_soundspec_flag);
+ st->spectrigram_update_sec = spectrigram_update_sec;
+#endif
+ for(i = 0; i < MAX_CHANNELS; i++)
+ {
+ if(def_instr_name[0])
+ st->default_program[i] = SPECIAL_PROGRAM;
+ else
+ st->default_program[i] = default_program[i];
+ }
+ j = 0;
+ st->opt_ctl[j++] = ctl->id_character;
+ for(i = 1; i < ctl->verbosity; i++)
+ st->opt_ctl[j++] = 'v';
+ for(i = 1; i > ctl->verbosity; i--)
+ st->opt_ctl[j++] = 'q';
+ if(ctl->trace_playing)
+ st->opt_ctl[j++] = 't';
+ if(ctl->flags & CTLF_LIST_LOOP)
+ st->opt_ctl[j++] = 'l';
+ if(ctl->flags & CTLF_LIST_RANDOM)
+ st->opt_ctl[j++] = 'r';
+ if(ctl->flags & CTLF_LIST_SORT)
+ st->opt_ctl[j++] = 's';
+ if(ctl->flags & CTLF_AUTOSTART)
+ st->opt_ctl[j++] = 'a';
+ if(ctl->flags & CTLF_AUTOEXIT)
+ st->opt_ctl[j++] = 'x';
+ if(ctl->flags & CTLF_DRAG_START)
+ st->opt_ctl[j++] = 'd';
+ if(ctl->flags & CTLF_AUTOUNIQ)
+ st->opt_ctl[j++] = 'u';
+ if(ctl->flags & CTLF_AUTOREFINE)
+ st->opt_ctl[j++] = 'R';
+ if(ctl->flags & CTLF_NOT_CONTINUE)
+ st->opt_ctl[j++] = 'C';
+ st->opt_ctl[j] = '\0';
+ st->opt_realtime_playing = SetFlag(opt_realtime_playing);
+ st->reduce_voice_threshold = reduce_voice_threshold;
+ j = 0;
+ st->opt_playmode[j++] = play_mode->id_character;
+ st->opt_playmode[j++] = ((play_mode->encoding & PE_MONO) ? 'M' : 'S');
+ st->opt_playmode[j++] = ((play_mode->encoding & PE_SIGNED) ? 's' : 'u');
+ st->opt_playmode[j++] = ((play_mode->encoding & PE_16BIT) ? '1' : '8');
+ if(play_mode->encoding & PE_ULAW)
+ st->opt_playmode[j++] = 'U';
+ else if(play_mode->encoding & PE_ALAW)
+ st->opt_playmode[j++] = 'A';
+ else
+ st->opt_playmode[j++] = 'l';
+ if(play_mode->encoding & PE_BYTESWAP)
+ st->opt_playmode[j++] = 'x';
+ st->opt_playmode[j] = '\0';
+ strncpy(st->OutputName,OutputName,sizeof(st->OutputName)-1);
+ strncpy(st->OutputDirName,w32g_output_dir,MAXPATH);
+ st->OutputDirName[MAXPATH-1] = '\0';
+ st->auto_output_mode = w32g_auto_output_mode;
+ st->voices = SetValue(voices, 1, MAX_VOICES);
+ st->auto_reduce_polyphony = auto_reduce_polyphony;
+ st->quietchannels = quietchannels;
+ snprintf(st->opt_qsize,sizeof(st->opt_qsize),"%s/%s",
+ opt_aq_max_buff,opt_aq_fill_buff);
+ st->modify_release = SetValue(modify_release, 0, MAX_MREL);
+ st->allocate_cache_size = allocate_cache_size;
+ st->output_rate = opt_output_rate;
+ if(st->output_rate == 0)
+ {
+ st->output_rate = play_mode->rate;
+ if(st->output_rate == 0)
+ st->output_rate = DEFAULT_RATE;
+ }
+ st->output_rate = SetValue(st->output_rate,MIN_OUTPUT_RATE,MAX_OUTPUT_RATE);
+ strncpy(st->output_text_code,output_text_code,sizeof(st->output_text_code)-1);
+ st->free_instruments_afterwards = free_instruments_afterwards;
+ st->opt_wrd[0] = wrdt->id;
+ if(wrdt_open_opts)
+ strncpy(st->opt_wrd + 1, wrdt_open_opts, sizeof(st->opt_wrd) - 2);
+ else
+ st->opt_wrd[1] = '\0';
+#if defined(__W32__) && defined(SMFCONV)
+ st->opt_rcpcv_dll = opt_rcpcv_dll;
+#endif /* SMFCONV */
+ st->data_block_bits = data_block_bits;
+ st->data_block_num = data_block_num;
+}
+
+
+
+
+
+
+//****************************************************************************/
+// ini & config
+
+static char S_IniFile[MAXPATH + 32];
+static char S_timidity_window_inifile[MAXPATH + 32];
+static char S_timidity_output_inifile[MAXPATH + 32];
+static char S_ConfigFile[MAXPATH + 32];
+static char S_PlaylistFile[MAXPATH + 32];
+static char S_PlaylistHistoryFile[MAXPATH + 32];
+static char S_MidiFileOpenDir[MAXPATH + 32];
+static char S_ConfigFileOpenDir[MAXPATH + 32];
+static char S_PlaylistFileOpenDir[MAXPATH + 32];
+static char S_DocFileExt[256];
+static char S_OutputName[MAXPATH + 32];
+static char *OutputName;
+static char S_w32g_output_dir[1024 + 32];
+static char S_SystemFont[256];
+static char S_PlayerFont[256];
+static char S_WrdFont[256];
+static char S_DocFont[256];
+static char S_ListFont[256];
+static char S_TracerFont[256];
+static char *SystemFont = S_SystemFont;
+char *PlayerFont = S_PlayerFont;
+static char *WrdFont = S_WrdFont;
+static char *DocFont = S_DocFont;
+static char *ListFont = S_ListFont;
+static char *TracerFont = S_TracerFont;
+
+//static HFONT hSystemFont = 0;
+//static HFONT hPlayerFont = 0;
+//static HFONT hWrdFont = 0;
+//static HFONT hDocFont = 0;
+//static HFONT hListFont = 0;
+//static HFONT hTracerFont = 0;
+static int SystemFontSize = 9;
+static int PlayerFontSize = 16;
+static int WrdFontSize = 16;
+static int DocFontSize = 16;
+static int ListFontSize = 16;
+static int TracerFontSize = 16;
+
+#define DEFAULT_DOCFILEEXT "doc;txt;hed"
+
+SETTING_PLAYER *sp_default, *sp_current, *sp_temp;
+SETTING_TIMIDITY *st_default, *st_current, *st_temp;
+char *timidity_window_inifile;
+char *timidity_output_inifile;
+
+#ifdef AU_GOGO
+extern int gogo_ConfigDialogInfoInit(void);
+extern int gogo_ConfigDialogInfoSaveINI(void);
+extern int gogo_ConfigDialogInfoLoadINI(void);
+#endif
+#ifdef AU_VORBIS
+extern int vorbis_ConfigDialogInfoInit(void);
+extern int vorbis_ConfigDialogInfoSaveINI(void);
+extern int vorbis_ConfigDialogInfoLoadINI(void);
+#endif
+
+void w32g_initialize(void)
+{
+ char buffer[MAXPATH + 1024];
+ char *p;
+
+ hInst = GetModuleHandle(0);
+
+ IniFile = S_IniFile;
+ ConfigFile = S_ConfigFile;
+ PlaylistFile = S_PlaylistFile;
+ PlaylistHistoryFile = S_PlaylistHistoryFile;
+ MidiFileOpenDir = S_MidiFileOpenDir;
+ ConfigFileOpenDir = S_ConfigFileOpenDir;
+ PlaylistFileOpenDir = S_PlaylistFileOpenDir;
+ DocFileExt = S_DocFileExt;
+ OutputName = S_OutputName;
+ w32g_output_dir = S_w32g_output_dir;
+
+ IniFile[0] = '\0';
+ ConfigFile[0] = '\0';
+ PlaylistFile[0] = '\0';
+ PlaylistHistoryFile[0] = '\0';
+ MidiFileOpenDir[0] = '\0';
+ ConfigFileOpenDir[0] = '\0';
+ PlaylistFileOpenDir[0] = '\0';
+ OutputName[0] = '\0';
+ w32g_output_dir[0] = '\0';
+
+ strcpy(DocFileExt,DEFAULT_DOCFILEEXT);
+ strcpy(SystemFont,"\82l\82r \96¾\92©");
+ strcpy(PlayerFont,"\82l\82r \96¾\92©");
+ strcpy(WrdFont,"\82l\82r \96¾\92©");
+ strcpy(DocFont,"\82l\82r \96¾\92©");
+ strcpy(ListFont,"\82l\82r \96¾\92©");
+ strcpy(TracerFont,"\82l\82r \96¾\92©");
+
+ if(GetModuleFileName(hInst, buffer, MAXPATH))
+ {
+ if((p = pathsep_strrchr(buffer)) != NULL)
+ {
+ p++;
+ *p = '\0';
+ }
+ else
+ {
+ buffer[0] = '.';
+ buffer[1] = PATH_SEP;
+ buffer[2] = '\0';
+ }
+ }
+ else
+ {
+ buffer[0] = '.';
+ buffer[1] = PATH_SEP;
+ buffer[2] = '\0';
+ }
+ // timpp32g.ini
+ strncpy(IniFile, buffer, MAXPATH);
+ IniFile[MAXPATH] = '\0';
+ strcat(IniFile,"timpp32g.ini");
+ // timidity_window.ini
+ timidity_window_inifile = S_timidity_window_inifile;
+ strncpy(timidity_window_inifile, buffer, 200);
+ timidity_window_inifile[200] = '\0';
+ strcat(timidity_window_inifile,"timidity_window.ini");
+ // timidity_output.ini
+ timidity_output_inifile = S_timidity_output_inifile;
+ strncpy(timidity_output_inifile, buffer, 200);
+ timidity_output_inifile[200] = '\0';
+ strcat(timidity_output_inifile,"timidity_output.ini");
+ //
+ st_default = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));
+ sp_default = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));
+ st_current = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));
+ sp_current = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));
+ st_temp = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY));
+ sp_temp = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER));
+
+ {
+ DWORD dwRes;
+#ifdef AU_GOGO
+ gogo_ConfigDialogInfoInit();
+#endif
+#ifdef AU_VORBIS
+ vorbis_ConfigDialogInfoInit();
+#endif
+ dwRes = GetFileAttributes(timidity_output_inifile);
+ if(dwRes==0xFFFFFFFF || dwRes & FILE_ATTRIBUTE_DIRECTORY){
+#ifdef AU_GOGO
+ gogo_ConfigDialogInfoSaveINI();
+#endif
+#ifdef AU_VORBIS
+ vorbis_ConfigDialogInfoSaveINI();
+#endif
+ } else {
+#ifdef AU_GOGO
+ gogo_ConfigDialogInfoLoadINI();
+#endif
+#ifdef AU_VORBIS
+ vorbis_ConfigDialogInfoLoadINI();
+#endif
+ }
+ }
+
+ SaveSettingPlayer(sp_current);
+ SaveSettingTiMidity(st_current);
+ if(IniVersionCheck())
+ {
+ LoadIniFile(sp_current, st_current);
+ ApplySettingPlayer(sp_current);
+ ApplySettingTiMidity(st_current);
+ w32g_has_ini_file = 1;
+ }
+ else
+ {
+ sprintf(buffer,
+"Ini file is not found, or old format is found.\n"
+"Do you want to initialize the ini file?\n\n"
+"Ini file path: %s",
+ IniFile);
+
+ if(MessageBox(0, buffer, "TiMidity Notice", MB_YESNO) == IDYES)
+ {
+ SaveIniFile(sp_current, st_current);
+ w32g_has_ini_file = 1;
+ }
+ else
+ {
+ w32g_has_ini_file = 0;
+ }
+ }
+
+ memcpy(sp_default, sp_current, sizeof(SETTING_PLAYER));
+ memcpy(st_default, st_current, sizeof(SETTING_TIMIDITY));
+
+ memcpy(sp_temp, sp_current, sizeof(SETTING_PLAYER));
+ memcpy(st_temp, st_current, sizeof(SETTING_TIMIDITY));
+
+ w32g_i_init();
+}
+
+int IniVersionCheck(void)
+{
+ char version[INI_MAXLEN];
+ if(IniGetKeyStringN(INI_SEC_PLAYER,"IniVersion",version,sizeof(version)-1) == 0 &&
+ strcmp(version, IniVersion) == 0)
+ return 1; // UnChanged
+ return 0;
+}
+
+void BitBltRect(HDC dst, HDC src, RECT *rc)
+{
+ BitBlt(dst, rc->left, rc->top,
+ rc->right - rc->left, rc->bottom - rc->top,
+ src, rc->left, rc->top, SRCCOPY);
+}
+
+#if 0
+/*
+ * TmColor
+ */
+TmColors tm_colors[TMCC_SIZE];
+
+static COLORREF WeakHalfColor(COLORREF fc, COLORREF bc)
+{
+ return fc*1/3 + bc*2/3;
+}
+
+static COLORREF HalfColor(COLORREF fc, COLORREF bc)
+{
+ return fc*1/6 + bc*5/6;
+}
+
+void TmInitColor(void)
+{
+ int i;
+
+ tm_colors[TMCC_BLACK].color = TMCCC_BLACK;
+ tm_colors[TMCC_WHITE].color = TMCCC_WHITE;
+ tm_colors[TMCC_RED].color = TMCCC_RED;
+ tm_colors[TMCC_BACK].color = TMCCC_BACK;
+ tm_colors[TMCC_LOW].color = TMCCC_LOW;
+ tm_colors[TMCC_MIDDLE].color= TMCCC_MIDDLE;
+ tm_colors[TMCC_HIGH].color = TMCCC_HIGH;
+
+ tm_colors[TMCC_FORE_HALF].color = HalfColor(TMCCC_FORE,TMCCC_BACK);
+ tm_colors[TMCC_FORE_WEAKHALF].color = WeakHalfColor(TMCCC_FORE,TMCCC_BACK);
+ tm_colors[TMCC_LOW_HALF].color = HalfColor(TMCCC_LOW,TMCCC_BACK);
+ tm_colors[TMCC_MIDDLE_HALF].color = HalfColor(TMCCC_MIDDLE,TMCCC_BACK);
+ tm_colors[TMCC_HIGH_HALF].color = HalfColor(TMCCC_HIGH,TMCCC_BACK);
+
+ for(i = 0; i < TMCC_SIZE; i++)
+ {
+ tm_colors[i].pen = CreatePen(PS_SOLID, 1, tm_colors[i].color);
+ tm_colors[i].brush = CreateSolidBrush(tm_colors[i].color);
+ }
+}
+
+void TmFreeColor(void)
+{
+ int i;
+ for(i = 0; i < TMCC_SIZE; i++)
+ {
+ if(tm_colors[i].pen != NULL)
+ {
+ DeleteObject(tm_colors[i].pen);
+ DeleteObject(tm_colors[i].brush);
+ tm_colors[i].pen = NULL;
+ }
+ }
+}
+
+void TmFillRect(HDC hdc, RECT *rc, int color)
+{
+ HPEN hPen = tm_colors[color].pen;
+ HBRUSH hBrush = tm_colors[color].brush;
+ HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush;
+
+ hgdiobj_hpen = SelectObject(hdc, hPen);
+ hgdiobj_hbrush = SelectObject(hdc, hBrush);
+ Rectangle(hdc, rc->left, rc->top, rc->right, rc->bottom);
+ SelectObject(hdc, hgdiobj_hpen);
+ SelectObject(hdc, hgdiobj_hbrush);
+}
+#endif
+
+#ifndef S_ISDIR
+#define S_ISDIR(mode) (((mode)&0xF000) == 0x4000)
+#endif /* S_ISDIR */
+int is_directory(char *path)
+{
+ struct stat st;
+ if(*path == '@') /* special identifire for playlist file */
+ return 0;
+ if(stat(path, &st) != -1)
+ return S_ISDIR(st.st_mode);
+ return GetFileAttributes(path) == FILE_ATTRIBUTE_DIRECTORY;
+}
+
+/* Return: 0: - not modified
+ * 1: - modified
+ */
+int directory_form(char *buffer)
+{
+ int len;
+
+ len = strlen(buffer);
+ if(len == 0 || buffer[len - 1] == PATH_SEP)
+ return 0;
+ if(IS_PATH_SEP(buffer[len - 1]))
+ len--;
+ buffer[len++] = PATH_SEP;
+ buffer[len] = '\0';
+ return 1;
+}
+
+/* Return: 0: - not modified
+ * 1: - modified
+ */
+int nodirectory_form(char *buffer)
+{
+ char *lastp = buffer + strlen(buffer);
+ char *p = lastp;
+
+ while(p > buffer && IS_PATH_SEP(*(p - 1)))
+ p--;
+ if(p == lastp)
+ return 0;
+ *p = '\0';
+ return 1;
+}
+
+void SettingCtlFlag(SETTING_TIMIDITY *st, int c, int onoff)
+{
+ int n;
+ char *opt;
+
+ opt = st->opt_ctl + 1;
+ n = strlen(opt);
+ if(onoff)
+ {
+ if(strchr(opt, c) != NULL)
+ return; /* Already set */
+ opt[n++] = c;
+ opt[n] = '\0';
+ }
+ else
+ {
+ char *p;
+ if((p = strchr(opt, c)) == NULL)
+ return; /* Already removed */
+ while(*(p + 1))
+ {
+ *p = *(p + 1);
+ p++;
+ }
+ *p = '\0';
+ }
+}
+
+
+
+
+int IsAvailableFilename(char *filename)
+{
+ char *p = strrchr(filename,'.');
+ if(p == NULL)
+ return 0;
+ if( strcasecmp(p,".lzh")==0 ||
+ strcasecmp(p,".zip")==0 ||
+ strcasecmp(p,".gz")==0 ||
+ strcasecmp(p,".mid")==0 ||
+ strcasecmp(p,".rcp")==0 ||
+ strcasecmp(p,".r36")==0 ||
+ strcasecmp(p,".g18")==0 ||
+ strcasecmp(p,".g36")==0 ||
+ strcasecmp(p,".mod")==0 ||
+// strcasecmp(p,".hqx")==0 ||
+ strcasecmp(p,".tar")==0 ||
+ strcasecmp(p,".tgz")==0 ||
+ strcasecmp(p,".lha")==0 ||
+ strcasecmp(p,".mime")==0 ||
+ strcasecmp(p,".smf")==0)
+ return 1;
+// if(url_check_type(filename)!=-1)
+// return 1;
+ return 0;
+}
+
+/* ScanDirectoryFiles() works like UNIX find. */
+#define SCANDIR_MAX_DEPTH 32
+void ScanDirectoryFiles(char *basedir,
+ int (* file_proc)(char *pathname, /* (const) */
+ void *user_val),
+ void *user_val)
+{
+ char baselen;
+ URL dir;
+
+ static int depth = 0;
+ static int stop_flag; /* Stop scanning if true */
+ static int error_disp; /* Whether error is displayed or not */
+ static char pathbuf[MAXPATH]; /* pathname buffer */
+
+ if(depth == 0) /* Initialize variables at first recursive */
+ {
+ stop_flag = 0;
+ error_disp = 0;
+ strcpy(pathbuf, basedir);
+ }
+ else if(depth > SCANDIR_MAX_DEPTH) /* Avoid infinite recursive */
+ {
+ if(!error_disp)
+ {
+ /* Display this message at once */
+ ctl->cmsg(CMSG_WARNING, VERB_NORMAL,
+ "%s: Directory is too deep",
+ basedir);
+ error_disp = 1;
+ }
+ return; /* Skip scanning this directory */
+ }
+
+ directory_form(pathbuf);
+ baselen = strlen(pathbuf);
+ if(baselen > sizeof(pathbuf) - 16)
+ {
+ /* Ignore too long file name */
+ return;
+ }
+
+ if((dir = url_dir_open(pathbuf)) == NULL)
+ {
+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "%s: Can't open directory", pathbuf);
+ return;
+ }
+
+ if(file_proc(pathbuf, user_val))
+ {
+ stop_flag = 1; /* Terminate */
+ return;
+ }
+
+ while(!stop_flag &&
+ url_gets(dir, pathbuf + baselen, sizeof(pathbuf) - baselen - 1))
+ {
+ if(strcmp(pathbuf + baselen, ".") == 0 ||
+ strcmp(pathbuf + baselen, "..") == 0)
+ continue;
+ if(file_proc(pathbuf, user_val))
+ {
+ stop_flag = 1; /* Terminate */
+ break;
+ }
+ if(is_directory(pathbuf))
+ {
+ /* into subdirectory */
+ depth++;
+ ScanDirectoryFiles(pathbuf, file_proc, user_val);
+ depth--;
+ }
+ }
+ url_close(dir);
+}
+
+#define EXPANDDIR_MAX_SIZE 100000 /* Limit of total bytes of the file names */
+static int expand_dir_proc(char *filename, void *v)
+{
+ void **user_val = (void **)v;
+ StringTable *st = (StringTable *)user_val[0];
+ int *total_size = (int *)user_val[1];
+ char *startdir = (char *)user_val[2];
+
+ if(IsAvailableFilename(filename))
+ {
+ if(*total_size > EXPANDDIR_MAX_SIZE)
+ {
+ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "%s: There are too many files.",
+ startdir);
+ return 1; /* Terminate */
+ }
+ put_string_table(st, filename, strlen(filename));
+ *total_size += strlen(filename);
+ }
+ return 0;
+}
+
+char **FilesExpandDir(int *p_nfiles, char **files)
+{
+ StringTable st;
+ int i;
+
+ init_string_table(&st);
+ for(i = 0; i < *p_nfiles; i++)
+ {
+ void *user_val[3];
+ int total_size;
+
+ total_size = 0;
+ user_val[0] = &st;
+ user_val[1] = &total_size;
+ user_val[2] = files[i];
+
+ if(is_directory(files[i]))
+ ScanDirectoryFiles(files[i], expand_dir_proc, user_val);
+ else
+ {
+ int len = strlen(files[i]);
+ put_string_table(&st, files[i], len);
+ }
+ }
+ *p_nfiles = st.nstring;
+ return make_string_array(&st);
+
+}
-/*\r
- TiMidity++ -- MIDI to WAVE converter and player\r
- Copyright (C) 1999-2001 Masanao Izumo <mo@goice.co.jp>\r
- Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>\r
-\r
- This program is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- This program is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with this program; if not, write to the Free Software\r
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
-*/\r
-\r
-#ifndef ___W32G_UTL_H_\r
-#define ___W32G_UTL_H_\r
-\r
-// ini & config\r
-#define IniVersion "2.2"\r
-typedef struct SETTING_PLAYER_ {\r
-// Main Window\r
- int InitMinimizeFlag;\r
-// SubWindow Starting Create Flag\r
- int DebugWndStartFlag;\r
- int ConsoleWndStartFlag;\r
- int ListWndStartFlag;\r
- int TracerWndStartFlag;\r
- int DocWndStartFlag;\r
- int WrdWndStartFlag;\r
-// SubWindow Starting Valid Flag\r
- int DebugWndFlag;\r
- int ConsoleWndFlag;\r
- int ListWndFlag;\r
- int TracerWndFlag;\r
- int DocWndFlag;\r
- int WrdWndFlag;\r
- int SoundSpecWndFlag;\r
-// SubWindow Max Numer\r
- int SubWindowMax;\r
-// Default File\r
- char ConfigFile[MAXPATH + 32];\r
- char PlaylistFile[MAXPATH + 32];\r
- char PlaylistHistoryFile[MAXPATH + 32];\r
-// Default Dir\r
- char MidiFileOpenDir[MAXPATH + 32];\r
- char ConfigFileOpenDir[MAXPATH + 32];\r
- char PlaylistFileOpenDir[MAXPATH + 32];\r
-// Thread Priority\r
- int PlayerThreadPriority;\r
- int GUIThreadPriority;\r
-// Font\r
- char SystemFont[256];\r
- char PlayerFont[256];\r
- char WrdFont[256];\r
- char DocFont[256];\r
- char ListFont[256];\r
- char TracerFont[256];\r
- int SystemFontSize;\r
- int PlayerFontSize;\r
- int WrdFontSize;\r
- int DocFontSize;\r
- int ListFontSize;\r
- int TracerFontSize;\r
-// Misc.\r
- int WrdGraphicFlag;\r
- int TraceGraphicFlag;\r
- int DocMaxSize;\r
- char DocFileExt[256];\r
-// End.\r
- int PlayerLanguage;\r
- int DocWndIndependent; \r
- int SeachDirRecursive;\r
- int IniFileAutoSave;\r
- int SecondMode;\r
-// End.\r
-} SETTING_PLAYER;\r
-\r
-typedef struct SETTING_TIMIDITY_ {\r
- // Parameter from command line options.\r
-\r
- int32 amplification; // A\r
- int antialiasing_allowed; // a\r
- int buffer_fragments; // B\r
- int32 control_ratio; // C\r
- // c (ignore)\r
- ChannelBitMask default_drumchannels, default_drumchannel_mask; // D\r
- // d (ignore)\r
-\r
- // E...\r
- int opt_modulation_wheel; // E w/W\r
- int opt_portamento; // E p/P\r
- int opt_nrpn_vibrato; // E v/V\r
- int opt_channel_pressure; // E s/S\r
- int opt_trace_text_meta_event; // E t/T\r
- int opt_overlap_voice_allow;// E o/O\r
- int opt_default_mid; // E mXX\r
- int default_tonebank; // E b\r
- int special_tonebank; // E B\r
- int effect_lr_mode; // E Fdelay\r
- int effect_lr_delay_msec; // E Fdelay\r
- int opt_reverb_control; // E Freverb\r
- int opt_chorus_control; // E Fchorus\r
+/*
+ TiMidity++ -- MIDI to WAVE converter and player
+ Copyright (C) 1999-2001 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef ___W32G_UTL_H_
+#define ___W32G_UTL_H_
+
+// ini & config
+#define IniVersion "2.2"
+typedef struct SETTING_PLAYER_ {
+// Main Window
+ int InitMinimizeFlag;
+// SubWindow Starting Create Flag
+ int DebugWndStartFlag;
+ int ConsoleWndStartFlag;
+ int ListWndStartFlag;
+ int TracerWndStartFlag;
+ int DocWndStartFlag;
+ int WrdWndStartFlag;
+// SubWindow Starting Valid Flag
+ int DebugWndFlag;
+ int ConsoleWndFlag;
+ int ListWndFlag;
+ int TracerWndFlag;
+ int DocWndFlag;
+ int WrdWndFlag;
+ int SoundSpecWndFlag;
+// SubWindow Max Numer
+ int SubWindowMax;
+// Default File
+ char ConfigFile[MAXPATH + 32];
+ char PlaylistFile[MAXPATH + 32];
+ char PlaylistHistoryFile[MAXPATH + 32];
+// Default Dir
+ char MidiFileOpenDir[MAXPATH + 32];
+ char ConfigFileOpenDir[MAXPATH + 32];
+ char PlaylistFileOpenDir[MAXPATH + 32];
+// Thread Priority
+ int PlayerThreadPriority;
+ int GUIThreadPriority;
+// Font
+ char SystemFont[256];
+ char PlayerFont[256];
+ char WrdFont[256];
+ char DocFont[256];
+ char ListFont[256];
+ char TracerFont[256];
+ int SystemFontSize;
+ int PlayerFontSize;
+ int WrdFontSize;
+ int DocFontSize;
+ int ListFontSize;
+ int TracerFontSize;
+// Misc.
+ int WrdGraphicFlag;
+ int TraceGraphicFlag;
+ int DocMaxSize;
+ char DocFileExt[256];
+// End.
+ int PlayerLanguage;
+ int DocWndIndependent;
+ int DocWndAutoPopup;
+ int SeachDirRecursive;
+ int IniFileAutoSave;
+ int SecondMode;
+// End.
+} SETTING_PLAYER;
+
+typedef struct SETTING_TIMIDITY_ {
+ // Parameter from command line options.
+
+ int32 amplification; // A
+ int antialiasing_allowed; // a
+ int buffer_fragments; // B
+ int32 control_ratio; // C
+ // c (ignore)
+ ChannelBitMask default_drumchannels, default_drumchannel_mask; // D
+ // d (ignore)
+
+ // E...
+ int opt_modulation_wheel; // E w/W
+ int opt_portamento; // E p/P
+ int opt_nrpn_vibrato; // E v/V
+ int opt_channel_pressure; // E s/S
+ int opt_trace_text_meta_event; // E t/T
+ int opt_overlap_voice_allow;// E o/O
+ int opt_default_mid; // E mXX
+ int default_tonebank; // E b
+ int special_tonebank; // E B
+ int effect_lr_mode; // E Fdelay
+ int effect_lr_delay_msec; // E Fdelay
+ int opt_reverb_control; // E Freverb
+ int opt_chorus_control; // E Fchorus
int noise_sharp_type; // E Fns\r
-\r
- int opt_evil_mode; // e\r
- int adjust_panning_immediately; // F\r
- int fast_decay; // f\r
-#ifdef SUPPORT_SOUNDSPEC\r
- int view_soundspec_flag; // g\r
- double spectrogram_update_sec; // g\r
-#endif\r
- // h (ignore)\r
- int default_program[MAX_CHANNELS]; // I\r
- char opt_ctl[16]; // i\r
- int opt_realtime_playing; // j\r
- int reduce_voice_threshold; // k\r
- // L (ignore)\r
- char opt_playmode[16]; // O\r
- char OutputName[MAXPATH + 32]; // o : string\r
- // P (ignore)\r
- int voices; // p\r
- int auto_reduce_polyphony; // pa\r
- ChannelBitMask quietchannels; // Q\r
- char opt_qsize[16]; // q\r
- int32 modify_release; // R\r
- int32 allocate_cache_size; // S\r
- int output_rate; // s\r
- char output_text_code[16]; // t\r
- int free_instruments_afterwards; // U\r
- char opt_wrd[16]; // W\r
-#if defined(__W32__) && defined(SMFCONV)\r
- int opt_rcpcv_dll; // wr, wR\r
-#endif\r
- // x (ignore)\r
- // Z (ignore)\r
- /* for w32g_a.c */\r
- int data_block_bits;\r
- int data_block_num;\r
-//?? int waveout_data_block_size;\r
-} SETTING_TIMIDITY;\r
-\r
-// #### obsoleted\r
-#define PLAYERMODE_AUTOQUIT 0x0001\r
-#define PLAYERMODE_AUTOREFINE 0x0002\r
-#define PLAYERMODE_AUTOUNIQ 0x0004\r
-#define PLAYERMODE_NOT_CONTINUE 0x0008\r
-#define PLAYERMODE_NOT_DRAG_START 0x0010\r
-\r
-\r
-extern char *OutputName;\r
-\r
-extern void LoadIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st);\r
-extern void SaveIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st);\r
-\r
-extern SETTING_PLAYER *sp_default, *sp_current, *sp_temp;\r
-extern SETTING_TIMIDITY *st_default, *st_current, *st_temp;\r
-extern CHAR *INI_INVALID;\r
-extern CHAR *INI_SEC_PLAYER;\r
-extern CHAR *INI_SEC_TIMIDITY;\r
-extern char *SystemFont;\r
-extern char *PlayerFont;\r
-extern char *WrdFont;\r
-extern char *DocFont;\r
-extern char *ListFont;\r
-extern char *TracerFont;\r
-extern HFONT hSystemFont;\r
-extern HFONT hPlayerFont;\r
-extern HFONT hWrdFont;\r
-extern HFONT hDocFont;\r
-extern HFONT hListFont;\r
-extern HFONT hTracerFont;\r
-extern int SystemFontSize;\r
-extern int PlayerFontSize;\r
-extern int WrdFontSize;\r
-extern int DocFontSize;\r
-extern int ListFontSize;\r
-extern int TracerFontSize;\r
-\r
-extern int IniGetKeyInt32(char *section, char *key,int32 *n);\r
-extern int IniGetKeyInt32Array(char *section, char *key, int32 *n, int arraysize);\r
-extern int IniGetKeyInt(char *section, char *key, int *n);\r
-extern int IniGetKeyChar(char *section, char *key, char *c);\r
-extern int IniGetKeyIntArray(char *section, char *key, int *n, int arraysize);\r
-extern int IniGetKeyString(char *section, char *key,char *str);\r
-extern int IniGetKeyStringN(char *section, char *key,char *str, int size);\r
-extern int IniGetKeyFloat(char *section, char *key, FLOAT_T *n);\r
-extern int IniPutKeyInt32(char *section, char *key,int32 *n);\r
-extern int IniPutKeyInt32Array(char *section, char *key, int32 *n, int arraysize);\r
-extern int IniPutKeyInt(char *section, char *key, int *n);\r
-extern int IniPutKeyChar(char *section, char *key, char *c);\r
-extern int IniPutKeyIntArray(char *section, char *key, int *n, int arraysize);\r
-extern int IniPutKeyString(char *section, char *key, char *str);\r
-extern int IniPutKeyStringN(char *section, char *key, char *str, int size);\r
-extern int IniPutKeyFloat(char *section, char *key, FLOAT_T n);\r
-extern void ApplySettingPlayer(SETTING_PLAYER *sp);\r
-extern void SaveSettingPlayer(SETTING_PLAYER *sp);\r
-extern void ApplySettingTiMidity(SETTING_TIMIDITY *st);\r
-extern void SaveSettingTiMidity(SETTING_TIMIDITY *st);\r
-extern void SettingCtlFlag(SETTING_TIMIDITY *st, int opt_id, int onoff);\r
-extern int IniVersionCheck(void);\r
-extern void BitBltRect(HDC dst, HDC src, RECT *rc);\r
-#if 0\r
-extern TmColors tm_colors[ /* TMCC_SIZE */ ];\r
-#define TmCc(c) (tm_colors[c].color)\r
-extern void TmInitColor(void);\r
-extern void TmFreeColor(void);\r
-extern void TmFillRect(HDC hdc, RECT *rc, int color);\r
-#endif\r
-extern void w32g_initialize(void);\r
-extern int is_directory(char *path);\r
-extern int directory_form(char *path_in_out);\r
-\r
-#endif /* ___W32G_UTL_H_ */\r
+ int opt_surround_chorus; // E ?
+ int opt_tva_attack; // E ?\r
+ int opt_tva_decay; // E ?\r
+ int opt_tva_release; // E ?\r
+ int opt_delay_control; // E ?\r
+ int opt_resonance; // E ?\r
+ int opt_env_attack; // E ?\r
+ int opt_velocity_table; // E ?
+ int opt_evil_mode; // e
+ int adjust_panning_immediately; // F
+ int fast_decay; // f
+#ifdef SUPPORT_SOUNDSPEC
+ int view_soundspec_flag; // g
+ double spectrogram_update_sec; // g
+#endif
+ // h (ignore)
+ int default_program[MAX_CHANNELS]; // I
+ char opt_ctl[30]; // i
+ int opt_realtime_playing; // j
+ int reduce_voice_threshold; // k
+ // L (ignore)
+ char opt_playmode[16]; // O
+ char OutputName[MAXPATH + 32]; // o : string
+ char OutputDirName[MAXPATH + 32]; // o : string
+ int auto_output_mode;
+ // P (ignore)
+ int voices; // p
+ int auto_reduce_polyphony; // pa
+ ChannelBitMask quietchannels; // Q
+ char opt_qsize[16]; // q
+ int32 modify_release; // R
+ int32 allocate_cache_size; // S
+ int output_rate; // s
+ char output_text_code[16]; // t
+ int free_instruments_afterwards; // U
+ char opt_wrd[16]; // W
+#if defined(__W32__) && defined(SMFCONV)
+ int opt_rcpcv_dll; // wr, wR
+#endif
+ // x (ignore)
+ // Z (ignore)
+ /* for w32g_a.c */
+ int data_block_bits;
+ int data_block_num;
+//?? int waveout_data_block_size;
+} SETTING_TIMIDITY;
+
+// #### obsoleted
+#define PLAYERMODE_AUTOQUIT 0x0001
+#define PLAYERMODE_AUTOREFINE 0x0002
+#define PLAYERMODE_AUTOUNIQ 0x0004
+#define PLAYERMODE_NOT_CONTINUE 0x0008
+#define PLAYERMODE_NOT_DRAG_START 0x0010
+
+
+extern char *OutputName;
+
+extern void LoadIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st);
+extern void SaveIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st);
+
+extern SETTING_PLAYER *sp_default, *sp_current, *sp_temp;
+extern SETTING_TIMIDITY *st_default, *st_current, *st_temp;
+extern CHAR *INI_INVALID;
+extern CHAR *INI_SEC_PLAYER;
+extern CHAR *INI_SEC_TIMIDITY;
+extern char *SystemFont;
+extern char *PlayerFont;
+extern char *WrdFont;
+extern char *DocFont;
+extern char *ListFont;
+extern char *TracerFont;
+extern HFONT hSystemFont;
+extern HFONT hPlayerFont;
+extern HFONT hWrdFont;
+extern HFONT hDocFont;
+extern HFONT hListFont;
+extern HFONT hTracerFont;
+extern int SystemFontSize;
+extern int PlayerFontSize;
+extern int WrdFontSize;
+extern int DocFontSize;
+extern int ListFontSize;
+extern int TracerFontSize;
+
+extern int IniGetKeyInt32(char *section, char *key,int32 *n);
+extern int IniGetKeyInt32Array(char *section, char *key, int32 *n, int arraysize);
+extern int IniGetKeyInt(char *section, char *key, int *n);
+extern int IniGetKeyChar(char *section, char *key, char *c);
+extern int IniGetKeyIntArray(char *section, char *key, int *n, int arraysize);
+extern int IniGetKeyString(char *section, char *key,char *str);
+extern int IniGetKeyStringN(char *section, char *key,char *str, int size);
+extern int IniGetKeyFloat(char *section, char *key, FLOAT_T *n);
+extern int IniPutKeyInt32(char *section, char *key,int32 *n);
+extern int IniPutKeyInt32Array(char *section, char *key, int32 *n, int arraysize);
+extern int IniPutKeyInt(char *section, char *key, int *n);
+extern int IniPutKeyChar(char *section, char *key, char *c);
+extern int IniPutKeyIntArray(char *section, char *key, int *n, int arraysize);
+extern int IniPutKeyString(char *section, char *key, char *str);
+extern int IniPutKeyStringN(char *section, char *key, char *str, int size);
+extern int IniPutKeyFloat(char *section, char *key, FLOAT_T n);
+extern void ApplySettingPlayer(SETTING_PLAYER *sp);
+extern void SaveSettingPlayer(SETTING_PLAYER *sp);
+extern void ApplySettingTiMidity(SETTING_TIMIDITY *st);
+extern void SaveSettingTiMidity(SETTING_TIMIDITY *st);
+extern void SettingCtlFlag(SETTING_TIMIDITY *st, int opt_id, int onoff);
+extern int IniVersionCheck(void);
+extern void BitBltRect(HDC dst, HDC src, RECT *rc);
+#if 0
+extern TmColors tm_colors[ /* TMCC_SIZE */ ];
+#define TmCc(c) (tm_colors[c].color)
+extern void TmInitColor(void);
+extern void TmFreeColor(void);
+extern void TmFillRect(HDC hdc, RECT *rc, int color);
+#endif
+extern void w32g_initialize(void);
+extern int is_directory(char *path);
+extern int directory_form(char *path_in_out);
+
+extern char *timidity_window_inifile;
+extern char *timidity_output_inifile;
+
+#endif /* ___W32G_UTL_H_ */
{
if(lyric[1] == '/' || lyric[1] == '\\')
{
- strcpy(lyric_buf, lyric + 2);
+ strncpy(lyric_buf, lyric + 2, sizeof(lyric_buf) - 1);
a_pipe_write_msg(lyric_buf);
lyric_col = strlen(lyric_buf);
}
{
lyric_buf[0] = 'L';
lyric_buf[1] = ' ';
- sprintf(lyric_buf + 2, "%s", lyric + 2);
+ snprintf(lyric_buf + 2, sizeof (lyric_buf) - 2, "%s", lyric + 2);
xskin_pipe_write(lyric_buf);
lyric_col = strlen(lyric + 2) + 2;
}
lyric_buf[0] = 'L';
lyric_buf[1] = ' ';
if(lyric[2] == 'L')
- sprintf(lyric_buf + 2, "Language: %s", lyric + 3);
+ snprintf(lyric_buf + 2, sizeof (lyric_buf) - 2, "Language: %s", lyric + 3);
else if(lyric[2] == 'T')
- sprintf(lyric_buf + 2, "Title: %s", lyric + 3);
+ snprintf(lyric_buf + 2, sizeof (lyric_buf) - 2, "Title: %s", lyric + 3);
else
- sprintf(lyric_buf + 2, "%s", lyric + 1);
+ snprintf(lyric_buf + 2, sizeof (lyric_buf) - 2, "%s", lyric + 1);
xskin_pipe_write(lyric_buf);
}
else
{
lyric_buf[0] = 'L';
lyric_buf[1] = ' ';
- sprintf(lyric_buf + lyric_col, lyric + 1);
+ snprintf(lyric_buf + lyric_col, sizeof (lyric_buf) - lyric_col, "%s", lyric + 1);
xskin_pipe_write(lyric_buf);
lyric_col += strlen(lyric + 1);
}
{
if(lyric[0] == ME_CHORUS_TEXT || lyric[0] == ME_INSERT_TEXT)
lyric_col = 0;
- sprintf(lyric_buf + lyric_col, lyric + 1);
+ snprintf(lyric_buf + lyric_col, sizeof (lyric_buf) - lyric_col, "%s", lyric + 1);
xskin_pipe_write(lyric_buf);
}
}
#include <stdlib.h>
#include <stdarg.h>
#include <time.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
#ifndef NO_STRING_H
#include <string.h>
#else
#include "nkflib.h"
#include "wrd.h"
#include "strtab.h"
+#include "support.h"
/* RAND_MAX must defined in stdlib.h
* Why RAND_MAX is not defined at SunOS?
#define RAND_MAX ((1<<15)-1)
#endif
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
/* #define MIME_CONVERSION */
char *program_name, current_filename[1024];
"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"
};
-static int url_copyfile(URL url, char *path)
+
+#ifndef TMP_MAX
+#define TMP_MAX 238328
+#endif
+
+int
+tmdy_mkstemp(char *tmpl)
{
- FILE *fp;
- char buff[BUFSIZ];
- int n;
-
- if((fp = fopen(path, "wb")) == NULL)
- return -1;
- while((n = url_read(url, buff, sizeof(buff))) > 0)
- fwrite(buff, 1, n, fp);
- fclose(fp);
- return 0;
+ char *XXXXXX;
+ static uint32 value;
+ uint32 random_time_bits;
+ int count, fd = -1;
+ int save_errno = errno;
+
+ /* These are the characters used in temporary filenames. */
+ static const char letters[] =
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+
+ /* This is where the Xs start. */
+ XXXXXX = strstr(tmpl, "XXXXXX");
+ if (XXXXXX == NULL) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ /* Get some more or less random data. */
+#if HAVE_GETTIMEOFDAY
+ {
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ random_time_bits = (uint32)((tv.tv_usec << 16) ^ tv.tv_sec);
+ }
+#else
+ random_time_bits = (uint32)time(NULL);
+#endif
+
+ value += random_time_bits ^ getpid();
+
+ for (count = 0; count < TMP_MAX; value += 7777, ++count) {
+ uint32 v = value;
+
+ /* Fill in the random bits. */
+ XXXXXX[0] = letters[v % 62];
+ v /= 62;
+ XXXXXX[1] = letters[v % 62];
+ v /= 62;
+ XXXXXX[2] = letters[v % 62];
+
+ v = (v << 16) ^ value;
+ XXXXXX[3] = letters[v % 62];
+ v /= 62;
+ XXXXXX[4] = letters[v % 62];
+ v /= 62;
+ XXXXXX[5] = letters[v % 62];
+
+ fd = open(tmpl, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR);
+
+ if (fd >= 0) {
+ errno = save_errno;
+ return fd;
+ }
+ if (errno != EEXIST)
+ return -1;
+ }
+
+ /* We got out of the loop because we ran out of combinations to try. */
+ errno = EEXIST;
+ return -1;
}
-static char *make_temp_filename(char *ext)
-{
- static char buff[1024], *tmpdir;
- static int cnt;
- if(ext == NULL)
- ext = "";
+static char *
+url_dumpfile(URL url, const char *ext)
+{
+ char filename[1024];
+ char *tmpdir;
+ int fd;
+ FILE *fp;
+ int n;
+ char buff[BUFSIZ];
#ifdef TMPDIR
- tmpdir = TMPDIR;
+ tmpdir = TMPDIR;
#else
- tmpdir = getenv("TMPDIR");
+ tmpdir = getenv("TMPDIR");
#endif
- if(tmpdir == NULL || strlen(tmpdir) == 0)
- tmpdir = PATH_STRING "tmp" PATH_STRING;
- if(IS_PATH_SEP(tmpdir[strlen(tmpdir) - 1]))
- sprintf(buff, "%stimidity-tmp%d-%d%s",
- tmpdir, cnt++, (int)getpid(), ext);
- else
- sprintf(buff, "%s" PATH_STRING "timidity-tmp%d-%d%s",
- tmpdir, cnt++, (int)getpid(), ext);
- return buff;
+ if(tmpdir == NULL || strlen(tmpdir) == 0)
+ tmpdir = PATH_STRING "tmp" PATH_STRING;
+ if(IS_PATH_SEP(tmpdir[strlen(tmpdir) - 1]))
+ snprintf(filename, sizeof(filename), "%sXXXXXX.%s", tmpdir, ext);
+ else
+ snprintf(filename, sizeof(filename), "%s" PATH_STRING "XXXXXX.%s",
+ tmpdir, ext);
+
+ fd = tmdy_mkstemp(filename);
+
+ if (fd == -1)
+ return NULL;
+
+ if ((fp = fdopen(fd, "w")) == NULL) {
+ close(fd);
+ unlink(filename);
+ return NULL;
+ }
+
+ while((n = url_read(url, buff, sizeof(buff))) > 0)
+ fwrite(buff, 1, n, fp);
+ fclose(fp);
+ return safe_strdup(filename);
}
+
/* Try to open a file for reading. If the filename ends in one of the
defined compressor extensions, pipe the file through the decompressor */
struct timidity_file *try_to_open(char *name, int decompress)
{
if(!check_file_extension(name, *dec, 0))
continue;
- tmpname = make_temp_filename(*dec);
- unlink(tmpname); /* For security */
- tf->tmpname = safe_strdup(tmpname);
- if(url_copyfile(tf->url, tmpname) == -1)
- {
+
+ tf->tmpname = url_dumpfile(tf->url, *dec);
+ if (tf->tmpname == NULL) {
close_file(tf);
return NULL;
}
+
url_close(tf->url);
- sprintf(tmp, *(dec+1), tf->tmpname);
+ snprintf(tmp, sizeof(tmp), *(dec+1), tf->tmpname);
if((tf->url = url_pipe_open(tmp)) == NULL)
{
close_file(tf);
{
if(!check_file_extension(name, *dec, 0))
continue;
- tmpname = make_temp_filename(*dec);
- unlink(tmpname); /* For security */
- tf->tmpname = safe_strdup(tmpname);
- if(url_copyfile(tf->url, tmpname) == -1)
- {
+
+ tf->tmpname = url_dumpfile(tf->url, *dec);
+ if (tf->tmpname == NULL) {
close_file(tf);
return NULL;
}
+
url_close(tf->url);
sprintf(tmp, *(dec+1), tf->tmpname);
if((tf->url = url_pipe_open(tmp)) == NULL)
/* Returns 1 if envelope runs out */
int recompute_envelope(int v)
{
- int stage, ch;
- int32 rate, offset;
+ int stage,ch;
+ int32 rate,offset,ch_rate;
Voice *vp = &voice[v];
stage = vp->envelope_stage;
- if(stage > 5)
- {
- voice_ran_out(v);
- return 1;
+ if(stage > 5) {
+ voice_ran_out(v);
+ return 1;
}
- if(stage > 2 && vp->envelope_volume <= 0)
- {
- /* Remove silent voice in the release stage */
- voice_ran_out(v);
- return 1;
+ if(stage > 2 && vp->envelope_volume <= 0) {
+ voice_ran_out(v); /* Remove silent voice in the release stage */
+ return 1;
}
-
- if(stage == 3 &&
- (vp->sample->modes & MODES_ENVELOPE) &&
- (vp->status & (VOICE_ON | VOICE_SUSTAINED)))
- {
- /* EAW -- Routine to decay the sustain envelope
- *
- * Disabled if !min_sustain_time or if there is no loop.
- * If calculated decay rate is larger than the regular
- * stage 3 rate, use the stage 3 rate instead.
- * min_sustain_time is given in msec, and is the time
- * it will take to decay a note at maximum volume.
- * 2000-3000 msec seem to be decent values to use.
- *
- * 08/24/00 changed behavior to not begin the decay until
- * after the sample plays past it's loop start
- *
- */
-
- if(min_sustain_time <= 0) /* Default behavior */
- {
- /* Freeze envelope until note turns off */
- vp->envelope_increment = 0;
- }
- else if((vp->status & VOICE_SUSTAINED) &&
- (vp->sample->modes & MODES_LOOPING) &&
- (vp->sample_offset - vp->sample->loop_start >= 0))
- {
- if(min_sustain_time == 1)
- goto next_stage; /* Go to next stage.
- * The sustain stage is ignored.
- */
-
- /* Set envelope volume target to zero.
- * This cause to be vp->envelope_volume <= 0, then the
- * voice will be removed. The next stage never come.
- */
- vp->envelope_target = 0;
-
- /* Calculate the release phase speed.
- * (1073741823000 == (2^(15+15)-1) * 1000)
- */
- rate = (int32)(-1073741823000.0 * control_ratio /
- (min_sustain_time * play_mode->rate));
- vp->envelope_increment = -vp->sample->envelope_rate[3];
- /* use the slower of the two rates */
- if(vp->envelope_increment < rate)
- vp->envelope_increment = rate;
- if(!vp->envelope_increment)
- vp->envelope_increment = -1; /* Avoid freezing */
- }
- else /* it's not decaying, so freeze it */
- {
- /* tiny value to make other functions happy, freeze note */
- vp->envelope_increment = 1;
-
- /* this will cause update_envelope(v) to undo the +1 inc. */
- vp->envelope_target = vp->envelope_volume;
- }
- return 0;
+
+ if(stage == 3 &&
+ (vp->sample->modes & MODES_ENVELOPE) &&
+ (vp->status & (VOICE_ON | VOICE_SUSTAINED))) {
+ /* EAW -- Routine to decay the sustain envelope
+ *
+ * Disabled if !min_sustain_time or if there is no loop.
+ * If calculated decay rate is larger than the regular
+ * stage 3 rate, use the stage 3 rate instead.
+ * min_sustain_time is given in msec, and is the time
+ * it will take to decay a note at maximum volume.
+ * 2000-3000 msec seem to be decent values to use.
+ *
+ * 08/24/00 changed behavior to not begin the decay until
+ * after the sample plays past it's loop start
+ *
+ */
+ if(min_sustain_time <= 0) { /* Default behavior */
+ vp->envelope_increment = 0; /* Freeze envelope until note turns off */
+ } else if((vp->status & VOICE_SUSTAINED) &&
+ (vp->sample->modes & MODES_LOOPING) &&
+ (vp->sample_offset - vp->sample->loop_start >= 0)) {
+ if(min_sustain_time == 1) {goto next_stage;} /* The sustain stage is ignored. */
+ vp->envelope_target = 0;
+ /* Calculate the release phase speed.
+ * (1073741823000 == (2^(15+15)-1) * 1000) */
+ rate = (int32)(-1073741823000.0 * control_ratio /
+ (min_sustain_time * play_mode->rate));
+ ch = vp->channel;
+ vp->envelope_increment = -vp->sample->envelope_rate[2];
+ /* use the slower of the two rates */
+ if(vp->envelope_increment < rate) {vp->envelope_increment = rate;}
+ if(!vp->envelope_increment) {vp->envelope_increment = -1;} /* Avoid freezing */
+ } else { /* it's not decaying, so freeze it */
+ /* tiny value to make other functions happy, freeze note */
+ vp->envelope_increment = 1;
+ /* this will cause update_envelope(v) to undo the +1 inc. */
+ vp->envelope_target = vp->envelope_volume;
+ }
+ return 0;
}
- next_stage:
- vp->envelope_stage = stage + 1;
-
- offset = vp->sample->envelope_offset[stage];
- if(vp->envelope_volume == offset ||
- (stage > 2 && vp->envelope_volume < offset))
- return recompute_envelope(v);
+next_stage:
+ vp->envelope_stage = stage + 1;
- rate = 0;
- ch = vp->channel;
- if(ISDRUMCHANNEL(ch))
- {
- int note;
+ offset = vp->sample->envelope_offset[stage];
+ if(vp->envelope_volume == offset || (stage > 2 && vp->envelope_volume < offset)) {
+ return recompute_envelope(v);
+ }
- note = vp->note;
- if(channel[ch].drums[note] != NULL)
- rate = channel[ch].drums[note]->drum_envelope_rate[stage];
- }
- else
- rate = channel[ch].envelope_rate[stage];
- if(rate == 0)
+ rate = 0;
+ ch_rate = 0;
+ ch = vp->channel;
rate = vp->sample->envelope_rate[stage];
+ if(ISDRUMCHANNEL(ch)) {
+ int note;
+ note = vp->note;
+ if(channel[ch].drums[note] != NULL) {
+ ch_rate = channel[ch].drums[note]->drum_envelope_rate[stage];
+ if(ch_rate > 0) {rate = rate * 63 / (63 + ch_rate);}
+ else if(ch_rate < 0) {
+ if(ch_rate == -64) {return recompute_envelope(v);}
+ rate = rate * 64 / (64 + ch_rate);
+ }
+ }
+ } else {
+ ch_rate = channel[ch].envelope_rate[stage];
+ if(ch_rate > 0) {rate = rate * 63 / (63 + ch_rate);}
+ else if(channel[ch].envelope_rate[stage] < 0) {
+ if(channel[ch].envelope_rate[stage] == -64) {return recompute_envelope(v);}
+ rate = rate * 64 / (64 + ch_rate);
+ }
+ }
- vp->envelope_target = offset;
- vp->envelope_increment = rate;
- if(vp->envelope_target < vp->envelope_volume)
- vp->envelope_increment = -vp->envelope_increment;
- return 0;
+ vp->envelope_target = offset;
+ vp->envelope_increment = rate;
+ if(vp->envelope_target < vp->envelope_volume) {vp->envelope_increment = -vp->envelope_increment;}
+ return 0;
}
int apply_envelope_to_amp(int v)
}
if (voice[v].sample->modes & MODES_ENVELOPE)
{
- lamp *= vol_table[voice[v].envelope_volume>>23];
- ramp *= vol_table[voice[v].envelope_volume>>23];
+ if(voice[v].envelope_stage > 1) {
+ lamp *= vol_table[voice[v].envelope_volume>>23];
+ ramp *= vol_table[voice[v].envelope_volume>>23];
+ } else {
+ lamp *= attack_vol_table[voice[v].envelope_volume>>23];
+ ramp *= attack_vol_table[voice[v].envelope_volume>>23];
+ }
}
la = (int32)TIM_FSCALE(lamp,AMP_BITS);
-
if (la>MAX_AMP_VALUE)
la=MAX_AMP_VALUE;
{
if (voice[v].tremolo_phase_increment)
lamp *= voice[v].tremolo_volume;
- if (voice[v].sample->modes & MODES_ENVELOPE)
- lamp *= vol_table[voice[v].envelope_volume>>23];
+ if (voice[v].sample->modes & MODES_ENVELOPE) {
+ if(voice[v].envelope_stage > 1) {
+ lamp *= vol_table[voice[v].envelope_volume>>23];
+ } else {
+ lamp *= attack_vol_table[voice[v].envelope_volume>>23];
+ }
+ }
la = (int32)TIM_FSCALE(lamp,AMP_BITS);
-
if (la>MAX_AMP_VALUE)
la=MAX_AMP_VALUE;
if((voice[v].status & (VOICE_OFF | VOICE_SUSTAINED)) &&
#include "output.h"
#include "controls.h"
#include "unimod.h"
+#include "unimod_priv.h"
#include "mod2midi.h"
static BOOL mod_do_play (MODULE *);
static void
pt_playeffects (void)
{
- UBYTE dat, c;
+ UBYTE dat, c, oldc = 0;
while ((c = UniGetByte ()))
{
int oldsliding = a->sliding;
a->sliding = 0;
+
+ /* libunimod doesn't *quite* do Ultimate Soundtracker portas correctly */
+ if (strcmp(of.modtype, "Ultimate Soundtracker") == 0)
+ {
+ if (c == 5 && oldc == 4)
+ {
+ oldc = 5;
+ a->sliding = oldsliding;
+ UniSkipOpcode (c);
+ continue;
+ }
+ oldc = c;
+ if (c == 3 || c == 4)
+ c++;
+ }
+
switch (c)
{
case UNI_PTEFFECT0:
#include "reverb.h"
#include "wrd.h"
#include "aq.h"
+#include "freq.h"
+
+#define ABORT_AT_FATAL 1 /*#################*/
+#define MYCHECK(s) do { if(s == 0) { printf("## L %d\n", __LINE__); abort(); } } while(0)
extern VOLATILE int intr;
#define PLAY_INTERLEAVE_SEC 1.0
#define PORTAMENTO_TIME_TUNING (1.0 / 5000.0)
#define PORTAMENTO_CONTROL_RATIO 256 /* controls per sec */
-#define DEFAULT_CHORUS_DELAY1 0.02
-#define DEFAULT_CHORUS_DELAY2 0.003
+/*#define DEFAULT_CHORUS_DELAY1 0.02
+#define DEFAULT_CHORUS_DELAY2 0.003*/
+double DEFAULT_CHORUS_DELAY1 = 0.02;
+double DEFAULT_CHORUS_DELAY2 = 0.003;
#define CHORUS_OPPOSITE_THRESHOLD 32
-#define CHORUS_VELOCITY_TUNING1 0.7
-#define CHORUS_VELOCITY_TUNING2 0.6
+/*#define CHORUS_VELOCITY_TUNING1 0.7
+#define CHORUS_VELOCITY_TUNING2 0.6*/
+double CHORUS_VELOCITY_TUNING1 = 0.7;
+double CHORUS_VELOCITY_TUNING2 = 0.6;
#define EOT_PRESEARCH_LEN 32
#define SPEED_CHANGE_RATE 1.0594630943592953 /* 2^(1/12) */
#endif /* REVERB_CONTROL_ALLOW */
#ifdef CHORUS_CONTROL_ALLOW
-int opt_chorus_control = 2;
+int opt_chorus_control = 1;
#else
int opt_chorus_control = 0;
#endif /* CHORUS_CONTROL_ALLOW */
-int opt_surround_chorus = 0;
+int opt_surround_chorus = 1;
#ifdef GM_CHANNEL_PRESSURE_ALLOW
int opt_channel_pressure = 1;
int opt_overlap_voice_allow = 0;
#endif /* OVERLAP_VOICE_ALLOW */
+/* TVA Env. Attack,Decay,Release... */
+int opt_tva_attack = 0;
+int opt_tva_decay = 0;
+int opt_tva_release = 0;
+int opt_delay_control = 0;
+int opt_resonance = 0;
+int opt_env_attack = 0; /* 0:linear, 1:exponential1, 2:exponential2, 3:logarithmic */
+
+
int voices=DEFAULT_VOICES, upper_voices;
int32
d[i]->drum_panning = NO_PANNING;
memset(d[i]->drum_envelope_rate, 0,
sizeof(d[i]->drum_envelope_rate));
+ d[i]->drum_level = 1;
+ d[i]->note = 0;
+ d[i]->delay_level = 0;
+ d[i]->chorus_level = 0;
+ d[i]->reverb_level = 0;
}
}
else
d[note]->drum_panning = NO_PANNING;
memset(d[note]->drum_envelope_rate, 0,
sizeof(d[note]->drum_envelope_rate));
+ d[note]->drum_level = 1;
+ d[note]->note = 0;
+ d[note]->delay_level = 0;
+ d[note]->chorus_level = 0;
+ d[note]->reverb_level = 0;
}
}
else
channel[c].chorus_level = -opt_chorus_control;
channel[c].mono = 0;
+ channel[c].delay_level = 0;
+ channel[c].resonance_level = 0;
}
static void redraw_controllers(int c)
void recompute_freq(int v)
{
- int ch=voice[v].channel;
+ int ch=voice[v].channel,note=voice[v].note;
int
sign=(voice[v].sample_increment < 0), /* for bidirectional loops */
pb=channel[ch].pitchbend;
double a;
int32 tuning = 0;
+
if(!voice[v].sample->sample_rate)
return;
if(!voice[v].porta_control_ratio)
{
- if(tuning == 0 && pb == 0x2000)
- voice[v].frequency = voice[v].orig_frequency;
+ if(tuning == 0 && pb == 0x2000) {
+ voice[v].frequency = voice[v].orig_frequency;
+ }
else
{
pb -= 0x2000;
voice[v].cache = NULL;
}
+
a = TIM_FSCALE(((double)voice[v].sample->sample_rate * voice[v].frequency) /
((double)voice[v].sample->root_freq * play_mode->rate),
FRACTION_BITS) + 0.5;
+
+ if(sign)
+ a = -a; /* need to preserve the loop direction */
+
+ voice[v].sample_increment = (int32)a;
#ifdef ABORT_AT_FATAL
- if((int32)a == 0)
- {
+ if (voice[v].sample_increment == 0) {
fprintf(stderr, "Invalid sample increment a=%e %ld %ld %ld %ld%s\n",
a, (long)voice[v].sample->sample_rate, (long)voice[v].frequency,
(long)voice[v].sample->root_freq, (long)play_mode->rate,
abort();
}
#endif /* ABORT_AT_FATAL */
-
- if(sign)
- a = -a; /* need to preserve the loop direction */
-
- voice[v].sample_increment = (int32)a;
}
static void recompute_amp(int v)
{
FLOAT_T tempamp;
- tempamp = ((FLOAT_T)master_volume *
- voice[v].velocity *
- voice[v].sample->volume *
- channel[voice[v].channel].volume *
- channel[voice[v].channel].expression); /* 21 bits */
+ tempamp = ((FLOAT_T)master_volume *
+ velocity_table[voice[v].velocity] *
+ voice[v].sample->volume *
+ channel[voice[v].channel].volume *
+ channel[voice[v].channel].expression); /* 21 bits */
+
+ /* Level of Drum */
+ if(ISDRUMCHANNEL(voice[v].channel)
+ && channel[voice[v].channel].drums[voice[v].note] != NULL
+ && channel[voice[v].channel].drums[voice[v].note]->drum_level != 1) {
+ tempamp *= channel[voice[v].channel].drums[voice[v].note]->drum_level;
+ }
if(!(play_mode->encoding & PE_MONO))
{
{
j = vlist[0] = find_voice(e);
voice[j].orig_frequency = f;
+ MYCHECK(voice[j].orig_frequency);
voice[j].sample = splist;
voice[j].status = VOICE_ON;
return 1;
{
j = vlist[nv] = find_voice(e);
voice[j].orig_frequency = f;
+ MYCHECK(voice[j].orig_frequency);
voice[j].sample = sp;
voice[j].status = VOICE_ON;
nv++;
note = ip->sample->note_to_use;
i = vlist[0] = find_voice(e);
voice[i].orig_frequency = freq_table[note];
+ /* NRPN Coarse Pitch of Drum (GS) */
+ if(ISDRUMCHANNEL(ch) &&
+ channel[ch].drums[note] != NULL &&
+ channel[ch].drums[note]->note) {
+ voice[i].orig_frequency = freq_table[channel[ch].drums[note]->note];
+ }
voice[i].sample = ip->sample;
voice[i].status = VOICE_ON;
return 1;
voice[j].cache = NULL;
}
}
-
return nv;
}
}
}
+static void set_envelope_time(int ch,int val,int stage)
+{
+ val = val & 0x7F;
+ if(play_system_mode != GS_SYSTEM_MODE) {
+ val = val / 2 + 32;
+ }
+ val -= 64;
+ if(channel[ch].mapID == SC_55_TONE_MAP) {
+ val *= 1.23;
+ if(val > 63) {val = 63;}
+ else if(val < -64) {val = -64;}
+ }
+ switch(stage) {
+ case 0: // Attack
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Attack Time (CH:%d VALUE:%d)",ch,val);
+ break;
+ case 1: // Decay
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Decay Time (CH:%d VALUE:%d)",ch,val);
+ break;
+ case 3: // Release
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Release Time (CH:%d VALUE:%d)",ch,val);
+ break;
+ default:
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"? Time (CH:%d VALUE:%d)",ch,val);
+ }
+ channel[ch].envelope_rate[stage] = val;
+}
+
+static void new_flanger_voice(int v1, int level1,int level2)
+{
+ int v2,i,fb_loop,level,ch,pan;
+ double delay,width;
+ int32 orig_frequency;
+
+ ch = voice[v1].channel;
+ fb_loop = abs(level2) / 16;
+ level = (level2 + 64) >> 2;
+ level1 += rand() % 64 - 32;
+ width = 1.0 - level1 * 0.01;
+
+ delay = 0;
+ if((v2 = find_free_voice()) == -1) {return;}
+ delay += width;
+ voice[v2] = voice[v1]; /* copy all parameters */
+ voice[v2].delay += (int)(play_mode->rate * delay / 1000);
+ pan = rand() % 8 - 4;
+ voice[v2].panning += pan;
+ orig_frequency = voice[v1].orig_frequency;
+ orig_frequency *= bend_fine[level];
+ voice[v2].orig_frequency = orig_frequency;
+ voice[v2].cache = NULL;
+ recompute_amp(v2);
+ apply_envelope_to_amp(v2);
+ recompute_freq(v2);
+ for(i=0;i<fb_loop;i++) {
+ delay += width;
+ if((v2 = find_free_voice()) == -1) {return;}
+ voice[v2] = voice[v1];
+ voice[v2].delay += (int)(play_mode->rate * delay / 1000);
+ pan = rand() % 8 - 4;
+ voice[v2].panning += pan;
+ orig_frequency *= bend_fine[level];
+ voice[v2].orig_frequency = orig_frequency;
+ voice[v2].cache = NULL;
+ recompute_amp(v2);
+ apply_envelope_to_amp(v2);
+ recompute_freq(v2);
+ }
+}
+
+
+static void new_delay_voice(int v1, int level)
+{
+ int v2,i,fb_loop,ch=voice[v1].channel;
+ int32 orig_frequency;
+ double delay,vol,fb_ratio;
+ uint8 pan;
+ struct delay_status_t *status = get_delay_status();
+ double threshold = 1.0;
+
+ /* NRPN Delay Send Level of Drum */
+ if(ISDRUMCHANNEL(ch) && channel[ch].drums[voice[v1].note] != NULL) {
+ level *= (FLOAT_T)channel[ch].drums[voice[v1].note]->delay_level / 127.0;
+ }
+
+ fb_loop = status->fb_loop;
+ fb_ratio = status->fb_ratio;
+
+ vol = voice[v1].velocity * level * status->level_ratio_center;
+ if (vol > threshold) { /* First Delay */
+ delay = 0;
+ if((v2 = find_free_voice()) == -1) {return;}
+ orig_frequency = voice[v1].orig_frequency;
+ orig_frequency *= bend_fine[level >> 2];
+ voice[v2].orig_frequency = orig_frequency;
+ voice[v2].cache = NULL;
+ delay += status->time_center;
+ voice[v2] = voice[v1]; /* copy all parameters */
+ voice[v2].velocity = (uint8)vol;
+ voice[v2].delay += (int)(play_mode->rate * delay / 1000);
+ recompute_amp(v2);
+ apply_envelope_to_amp(v2);
+ recompute_freq(v2);
+ for(i=0;i<fb_loop;i++) { /* Feedback */
+ vol *= fb_ratio;
+ delay += status->time_center;
+ if(vol < threshold) {break;}
+ if((v2 = find_free_voice()) == -1) {return;}
+ orig_frequency *= bend_fine[level >> 2];
+ voice[v2].orig_frequency = orig_frequency;
+ voice[v2].cache = NULL;
+ voice[v2] = voice[v1]; /* copy all parameters */
+ voice[v2].velocity = (uint8)vol;
+ voice[v2].delay += (int)(play_mode->rate * delay / 1000);
+ recompute_amp(v2);
+ apply_envelope_to_amp(v2);
+ recompute_freq(v2);
+ }
+ }
+
+ if(status->level_left) {
+ vol = voice[v1].velocity * level * status->level_ratio_left;
+ if (vol > threshold) { /* First Delay */
+ delay = 0;
+ pan = voice[v1].panning - 64;
+ if((v2 = find_free_voice()) == -1) {return;}
+ orig_frequency = voice[v1].orig_frequency;
+ orig_frequency *= bend_fine[level >> 2];
+ voice[v2].orig_frequency = orig_frequency;
+ voice[v2].cache = NULL;
+ delay += status->time_left;
+ voice[v2] = voice[v1]; /* copy all parameters */
+ voice[v2].velocity = (uint8)vol;
+ voice[v2].delay += (int)(play_mode->rate * delay / 1000);
+ voice[v2].panning = pan;
+ recompute_amp(v2);
+ apply_envelope_to_amp(v2);
+ recompute_freq(v2);
+ for(i=0;i<fb_loop;i++) { /* Feedback */
+ vol *= fb_ratio;
+ delay += status->time_left;
+ if(vol < threshold) {break;}
+ if((v2 = find_free_voice()) == -1) {return;}
+ orig_frequency *= bend_fine[level >> 2];
+ voice[v2].orig_frequency = orig_frequency;
+ voice[v2].cache = NULL;
+ voice[v2] = voice[v1]; /* copy all parameters */
+ voice[v2].velocity = (uint8)vol;
+ voice[v2].delay += (int)(play_mode->rate * delay / 1000);
+ voice[v2].panning = pan;
+ recompute_amp(v2);
+ apply_envelope_to_amp(v2);
+ recompute_freq(v2);
+ }
+ }
+ }
+
+ if(status->level_right) {
+ vol = voice[v1].velocity * level * status->level_ratio_right;
+ if (vol > threshold) { /* First Delay */
+ delay = 0;
+ pan = voice[v1].panning - 64;
+ if((v2 = find_free_voice()) == -1) {return;}
+ orig_frequency = voice[v1].orig_frequency;
+ orig_frequency *= bend_fine[level >> 2];
+ voice[v2].orig_frequency = orig_frequency;
+ voice[v2].cache = NULL;
+ delay += status->time_right;
+ voice[v2] = voice[v1]; /* copy all parameters */
+ voice[v2].velocity = (uint8)vol;
+ voice[v2].delay += (int)(play_mode->rate * delay / 1000);
+ voice[v2].panning = pan;
+ recompute_amp(v2);
+ apply_envelope_to_amp(v2);
+ recompute_freq(v2);
+ for(i=0;i<fb_loop;i++) { /* Feedback */
+ vol *= fb_ratio;
+ delay += status->time_right;
+ if(vol < threshold) {break;}
+ if((v2 = find_free_voice()) == -1) {return;}
+ orig_frequency *= bend_fine[level >> 2];
+ voice[v2].orig_frequency = orig_frequency;
+ voice[v2].cache = NULL;
+ voice[v2] = voice[v1]; /* copy all parameters */
+ voice[v2].velocity = (uint8)vol;
+ voice[v2].delay += (int)(play_mode->rate * delay / 1000);
+ voice[v2].panning = pan;
+ recompute_amp(v2);
+ apply_envelope_to_amp(v2);
+ recompute_freq(v2);
+ }
+ }
+ }
+}
+
static void new_chorus_voice(int v1, int level)
{
int v2, ch;
uint8 vol;
+ struct chorus_status_t *status = get_chorus_status();
+
+ printf("## level %d\n", level);
if((v2 = find_free_voice()) == -1)
return;
vol = voice[v1].velocity;
voice[v2] = voice[v1]; /* copy all parameters */
+ /* NRPN Chorus Send Level of Drum */
+ if(ISDRUMCHANNEL(ch) && channel[ch].drums[voice[v1].note] != NULL) {
+ level *= (FLOAT_T)channel[ch].drums[voice[v1].note]->chorus_level / 127.0;
+ }
+
/* Choose lower voice index for base voice (v1) */
if(v1 > v2)
{
voice[v2].orig_frequency *= bend_fine[level];
else
voice[v2].orig_frequency /= bend_fine[level];
+
+ MYCHECK(voice[v2].orig_frequency);
+
voice[v2].cache = NULL;
/* set panning & delay */
int v2, ch, panlevel;
uint8 vol, pan;
double delay;
+ struct chorus_status_t *status = get_chorus_status();
if((v2 = find_free_voice()) == -1)
return;
ch = voice[v1].channel;
voice[v2] = voice[v1];
+ /* NRPN Chorus Send Level of Drum */
+ if(ISDRUMCHANNEL(ch) && channel[ch].drums[voice[v1].note] != NULL) {
+ level *= (FLOAT_T)channel[ch].drums[voice[v1].note]->chorus_level / 127.0;
+ }
+
+ /* for our purposes, hard left will be equal to 1 instead of 0 */
+ pan = voice[v1].panning;
+ if (!pan) pan = 1;
+
/* Choose lower voice index for base voice (v1) */
if(v1 > v2)
{
voice[v2].cache = NULL;
}
+ MYCHECK(voice[v2].orig_frequency);
+
+ /* Try to keep the delayed voice from cancelling out the other voice */
+ /* Don't bother with trying to figure out drum pitches... */
+ /* Don't bother with mod files for the same reason... */
+ /* Drums and mods could be fixed, but pitch detection is too expensive */
+ delay = DEFAULT_CHORUS_DELAY2;
+ if (!ISDRUMCHANNEL(voice[v1].channel) &&
+ current_file_info->file_type != IS_MOD_FILE &&
+ current_file_info->file_type != IS_S3M_FILE)
+ {
+ double freq, frac;
+
+ freq = pitch_freq_table[voice[v1].note];
+ delay = DEFAULT_CHORUS_DELAY2 * freq;
+ frac = delay - floor(delay);
+
+ /* force the delay away from 0.5 period */
+ if (frac < 0.5 && frac > 0.40)
+ {
+ delay = (floor(delay) + 0.40) / freq;
+ if (play_mode->encoding & ~PE_MONO)
+ delay += (0.5 - frac) * (1.0 - labs(64 - pan) / 63.0) / freq;
+ }
+ else if (frac >= 0.5 && frac < 0.60)
+ {
+ delay = (floor(delay) + 0.60) / freq;
+ if (play_mode->encoding & ~PE_MONO)
+ delay += (0.5 - frac) * (1.0 - labs(64 - pan) / 63.0) / freq;
+ }
+ else
+ delay = DEFAULT_CHORUS_DELAY2;
+ }
+
/* set panning & delay for pseudo-surround effect */
- if(play_mode->encoding & PE_MONO)
- voice[v2].delay += DEFAULT_CHORUS_DELAY2; /* delay sounds good */
+ if(play_mode->encoding & PE_MONO) /* delay sounds good */
+ voice[v2].delay += (int)(play_mode->rate * delay);
else
{
- pan = voice[v1].panning;
panlevel = 63;
if (pan - panlevel < 1) panlevel = pan - 1;
if (pan + panlevel > 127) panlevel = 127 - pan;
voice[v1].panning -= panlevel;
voice[v2].panning += panlevel;
- delay = DEFAULT_CHORUS_DELAY2;
-
/* choose which voice is delayed based on panning */
if (voice[v1].panned == PANNED_CENTER) {
/* randomly choose which voice is delayed */
#endif
if((channel[ch].chorus_level || opt_surround_chorus))
{
- if(opt_surround_chorus)
+ if(opt_surround_chorus)
new_chorus_voice_alternate(v, channel[ch].chorus_level);
- else
+ else
new_chorus_voice(v, channel[ch].chorus_level);
}
- }
+ if(channel[ch].delay_level)
+ {
+ new_delay_voice(v, channel[ch].delay_level);
+ }
+ if(channel[ch].resonance_level)
+ {
+ new_flanger_voice(v, channel[ch].cutoff_freq,channel[ch].resonance_level);
+ }
+ }
}
static void set_voice_timeout(Voice *vp, int ch, int note)
{
int panlevel;
+ if (!pan) pan = 1; /* make hard left be 1 instead of 0 */
panlevel = 63;
if (pan - panlevel < 1) panlevel = pan - 1;
if (pan + panlevel > 127) panlevel = 127 - pan;
update_channel_freq(ch);
break;
case NRPN_ADDR_0120: /* Filter cutoff frequency */
+ if(opt_resonance) {
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Pseudo Cutoff Freq (CH:%d VALUE:%d)",ch,val);
+ channel[ch].cutoff_freq = val - 64;
+ }
break;
case NRPN_ADDR_0121: /* Filter Resonance */
+ if(opt_resonance) {
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Pseudo Resonance (CH:%d VALUE:%d)",ch,val);
+ channel[ch].resonance_level = val - 64;
+ }
break;
case NRPN_ADDR_0163: /* Attack Time */
+ if(!opt_tva_attack) {break;}
+ set_envelope_time(ch,val,0);
break;
case NRPN_ADDR_0164: /* EG Decay Time */
+ if(!opt_tva_decay) { break; }
+ set_envelope_time(ch,val,1);
break;
case NRPN_ADDR_0166: /* EG Release Time */
+ if(!opt_tva_release) { break; }
+ set_envelope_time(ch,val,3);
break;
case NRPN_ADDR_1400: /* Drum Filter Cutoff (XG) */
if(play_system_mode != GS_SYSTEM_MODE)
- drumflag = 1;
+ drumflag = 1;
break;
case NRPN_ADDR_1500: /* Drum Filter Resonance (XG) */
if(play_system_mode != GS_SYSTEM_MODE)
- drumflag = 1;
+ drumflag = 1;
break;
case NRPN_ADDR_1600: /* Drum EG Attack Time (XG) */
if(play_system_mode != GS_SYSTEM_MODE)
- drumflag = 1;
+ drumflag = 1;
+ if(!opt_tva_attack) { break; }
+ val = val & 0x7F;
+ note = channel[ch].lastlrpn;
+ val -= 64;
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"XG Drum Attack Time (CH:%d NOTE:%d VALUE:%d)",ch,note,val);
+ if(channel[ch].drums[note] == NULL) {play_midi_setup_drums(ch, note);}
+ channel[ch].drums[note]->drum_envelope_rate[0] = val / 2;
break;
case NRPN_ADDR_1700: /* Drum EG Decay Time (XG) */
if(play_system_mode != GS_SYSTEM_MODE)
- drumflag = 1;
+ drumflag = 1;
+ if(!opt_tva_decay) { break; }
+ val = val & 0x7F;
+ note = channel[ch].lastlrpn;
+ val -= 64;
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"XG Drum Decay Time (CH:%d NOTE:%d VALUE:%d)",ch,note,val);
+ if(channel[ch].drums[note] == NULL) {play_midi_setup_drums(ch, note);}
+ channel[ch].drums[note]->drum_envelope_rate[1] = val / 2;
break;
- case NRPN_ADDR_1800: /* Coarse Pitch of Drum (GS)
- Fine Pitch of Drum (XG) */
+ case NRPN_ADDR_1800: /* Coarse Pitch of Drum (GS) */
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Coarse Pitch of Drum (CH:%d VALUE:%d)",ch,val);
drumflag = 1;
+ note = channel[ch].lastlrpn;
+ if(channel[ch].drums[note] == NULL) {play_midi_setup_drums(ch, note);}
+ val = val - 64 + note;
+ val = val & 0x7F;
+ channel[ch].drums[note]->note = val;
break;
- case NRPN_ADDR_1900: /* Coarse Pitch of Drum (XG) */
- if(play_system_mode != GS_SYSTEM_MODE)
- drumflag = 1;
+ case NRPN_ADDR_1900: /* Fine Pitch of Drum (XG) */
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Fine Pitch of Drum (CH:%d VALUE:%d)",ch,val);
+ drumflag = 1;
break;
- case NRPN_ADDR_1A00: /* Level of Drum */
+ case NRPN_ADDR_1A00: /* Level of Drum */
drumflag = 1;
+ note = channel[ch].lastlrpn;
+ if(val > 127) {val = 127;}
+ else if(val < 0) {val = 0;}
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Drum Instrument TVA Level (CH:%d NOTE:%d VALUE:%d)",ch,note,val);
+ if(channel[ch].drums[note] == NULL) {play_midi_setup_drums(ch, note);}
+ channel[ch].drums[note]->drum_level = (double)val / 127;
break;
case NRPN_ADDR_1C00: /* Panpot of Drum */
drumflag = 1;
adjust_drum_panning(ch, note);
break;
case NRPN_ADDR_1D00: /* Reverb Send Level of Drum */
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Reverb Send Level of Drum (CH:%d VALUE:%d)",ch,val);
drumflag = 1;
+ note = channel[ch].lastlrpn;
+ if(channel[ch].drums[note] == NULL) {play_midi_setup_drums(ch, note);}
+ channel[ch].drums[note]->reverb_level = val;
break;
case NRPN_ADDR_1E00: /* Chorus Send Level of Drum */
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Chorus Send Level of Drum (CH:%d VALUE:%d)",ch,val);
drumflag = 1;
+ note = channel[ch].lastlrpn;
+ if(channel[ch].drums[note] == NULL) {play_midi_setup_drums(ch, note);}
+ channel[ch].drums[note]->chorus_level = val;
break;
case NRPN_ADDR_1F00: /* Variation Send Level of Drum */
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Variation Send Level of Drum (CH:%d VALUE:%d)",ch,val);
drumflag = 1;
+ note = channel[ch].lastlrpn;
+ if(channel[ch].drums[note] == NULL) {play_midi_setup_drums(ch, note);}
+ channel[ch].drums[note]->delay_level = val;
break;
case RPN_ADDR_0000: /* Pitch bend sensitivity */
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Pitch Bend Sensitivity (CH:%d VALUE:%d)",ch,val);
channel[ch].pitchfactor = 0;
break;
- case RPN_ADDR_0001:
+ case RPN_ADDR_0001: /* Master Fine Tuning */
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Master Fine Tuning (CH:%d VALUE:%d)",ch,val);
channel[ch].pitchfactor = 0;
break;
- case RPN_ADDR_0002:
+ case RPN_ADDR_0002: /* Master Coarse Tuning */
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Master Coarse Tuning (CH:%d VALUE:%d)",ch,val);
channel[ch].pitchfactor = 0;
break;
case RPN_ADDR_7F7F: /* RPN reset */
break;
case ME_MODULATION_WHEEL:
+ if(play_system_mode == XG_SYSTEM_MODE) {
+ current_event->a *= 1.2;
+ } else if(channel[ch].mapID == SC_55_TONE_MAP) {
+ current_event->a *= 0.7;
+ }
channel[ch].modulation_wheel =
midi_cnv_vib_depth(current_event->a);
break;
channel[ch].chorus_level = -opt_chorus_control;
break;
+ case ME_TREMOLO_EFFECT:
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Tremolo Send (CH:%d LEVEL:%d)",ch,current_event->a);
+ break;
+
+ case ME_CELESTE_EFFECT:
+ if(opt_chorus_control) {
+ channel[ch].delay_level = current_event->a;
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Delay Send (CH:%d LEVEL:%d)",ch,current_event->a);
+ }
+ break;
+
+ case ME_ATTACK_TIME:
+ if(!opt_tva_attack) { break; }
+ set_envelope_time(ch,current_event->a,0);
+ break;
+
+ case ME_RELEASE_TIME:
+ if(!opt_tva_release) { break; }
+ set_envelope_time(ch,current_event->a,3);
+ break;
+
+ case ME_PHASER_EFFECT:
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Phaser Send (CH:%d LEVEL:%d)",ch,current_event->a);
+ break;
+
case ME_RANDOM_PAN:
channel[ch].panning = int_rand(128);
channel[ch].pan_random = 1;
skip_to(0);
ctl_updatetime(0);
jump_flag = 1;
- midi_restart_time = 0;
+ midi_restart_time = 0;
continue;
case RC_JUMP:
break;
case ME_MODULATION_WHEEL:
+ if(play_system_mode == XG_SYSTEM_MODE) {
+ ev->a *= 1.2;
+ } else if(channel[ch].mapID == SC_55_TONE_MAP) {
+ ev->a *= 0.7;
+ }
channel[ch].modulation_wheel =
midi_cnv_vib_depth(ev->a);
update_modulation_wheel(ch, channel[ch].modulation_wheel);
}
break;
+ case ME_TREMOLO_EFFECT:
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Tremolo Send (CH:%d LEVEL:%d)",ch,ev->a);
+ break;
+
+ case ME_CELESTE_EFFECT:
+ if(opt_chorus_control) {
+ channel[ch].delay_level = ev->a;
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Delay Send (CH:%d LEVEL:%d)",ch,ev->a);
+ }
+ break;
+
+ case ME_ATTACK_TIME:
+ if(!opt_tva_attack) { break; }
+ set_envelope_time(ch,ev->a,0);
+ break;
+
+ case ME_RELEASE_TIME:
+ if(!opt_tva_release) { break; }
+ set_envelope_time(ch,ev->a,3);
+ break;
+
+ case ME_PHASER_EFFECT:
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Phaser Send (CH:%d LEVEL:%d)",ch,ev->a);
+ break;
+
case ME_RPN_INC:
if(channel[ch].rpn_7f7f_flag) /* disable */
break;
rc = RC_NONE;
for(;;)
{
- midi_restart_time = 1;
+ midi_restart_time = 1;
rc = play_event(current_event);
if(rc != RC_NONE)
break;
struct DrumParts
{
int drum_panning;
- int32 drum_envelope_rate[6]; /* Not supported */
+ int32 drum_envelope_rate[6]; /* Drum Attack,Delay Time */
/* flag for drum random pan */
int pan_random;
+
+ /* Level of Drum (0~127[Level of Drum] / 100[GS default]) */
+ double drum_level;
+
+ int8 chorus_level, reverb_level, delay_level, note;
/* Not supported:
* Drum Filter Cutoff
* Drum Filter Resonance
- * Drum Attack Time
- * Drum Decay Time
* Coarse Pitch of Drum/Fine Pitch of Drum
- * Level of Drum
* Reverb Send Level of Drum
* Chorus Send Level of Drum
* Variation Send Level of Drum
>=0 reverb_level
-1: DEFAULT_REVERB_SEND_LEVEL
*/
+ int8 delay_level; /* Delay Send Level */
/* Special sample ID. (0 means Normal sample) */
uint8 special_sample;
/* flag for random pan */
int pan_random;
+
+ /* for Cutoff,Resonance */
+ int cutoff_freq;
+ int resonance_level;
+
} Channel;
/* Causes the instrument's default panning to be used. */
extern int opt_surround_chorus;
extern int opt_channel_pressure;
extern int opt_overlap_voice_allow;
+extern int opt_tva_attack;
+extern int opt_tva_decay;
+extern int opt_tva_release;
+extern int opt_delay_control;
+extern int opt_resonance;
+extern int opt_env_attack;
extern int noise_sharp_type;
extern int32 current_play_tempo;
extern int opt_realtime_playing;
#define MARKER_END_CHAR ')'
#define REDUCE_CHANNELS 16
-struct chorus_status_t
-{
- int status;
- uint8 voice_reserve[18];
- uint8 macro[3];
- uint8 pre_lpf[3];
- uint8 level[3];
- uint8 feed_back[3];
- uint8 delay[3];
- uint8 rate[3];
- uint8 depth[3];
- uint8 send_level[3];
-};
+
enum
{
CHORUS_ST_NOT_OK = 0,
static int current_read_track;
static int karaoke_format, karaoke_title_flag;
static struct chorus_status_t chorus_status;
+static struct delay_status_t delay_status;
+static struct reverb_status_t reverb_status;
+static struct insertion_effect_t insertion_effect;
static struct midi_file_info *midi_file_info = NULL;
static char **string_event_table = NULL;
static int string_event_table_size = 0;
int default_channel_program[256];
+void init_delay_status();
+void set_delay_macro(int macro);
+void recompute_delay_status();
+void init_reverb_status();
+void set_reverb_macro(int macro);
+void set_chorus_macro(int macro);
+void init_chorus_status();
+
/* MIDI ports will be merged in several channels in the future. */
static int midi_port_number;
{
current_read_track = trackno;
memset(&chorus_status, 0, sizeof(chorus_status));
+ init_reverb_status();
+ init_delay_status();
+ init_chorus_status();
if(karaoke_format == 1 && current_read_track == 2)
karaoke_format = 2; /* Start karaoke lyric */
else if(karaoke_format == 2 && current_read_track == 3)
num_events++;
}
- /* GS bank+program change */
- /* I could not find any documentation on this, so I reverse engineered
- which bytes do what from midi I have. It appears to work correctly. */
- else if(len == 11 &&
- val[0] == 0x41 && /* Roland ID */
+ /* parsing GS System Exclusive Message... */
+ /* val[4] == Parameter Address(High)
+ val[5] == Parameter Address(Middle)
+ val[6] == Parameter Address(Low)
+ val[7]... == Data...
+ val[last] == Checksum(== 128 - (sum of addresses&data bytes % 128))
+ */
+ else if(len >= 9 &&
+ val[0] == 0x41 && /* Roland ID */
val[1] == 0x10 && /* Device ID */
val[2] == 0x42 && /* GS Model ID */
- val[3] == 0x12 && /* Data Set Command */
- val[4] == 0x40 && /* I wish I knew what this was... */
- (val[5] >= 0x10 && val[5] < 0x20)) /* channel command */
- {
- uint8 p; /* Channel part number [0..15] */
-
- p = val[5] & 0x0F;
- if(p == 0)
- p = 9;
- else if(p <= 9)
- p--;
- p = MERGE_CHANNEL_PORT(p);
-
- MIDIEVENT(at, ME_TONE_BANK_MSB, p, val[7], 0);
- MIDIEVENT(at, ME_TONE_BANK_LSB, p, 1, 0); /* assume SC-55 ??? */
- MIDIEVENT(at, ME_PROGRAM, p, val[8], 0);
-
- num_events = 3;
+ val[3] == 0x12) /* Data Set Command */
+ {
+ static uint8 userdrum_prog,userdrum_map;
+ uint8 p,dp,udn;
+ int i,addr,addr_h,addr_m,addr_l;
+ p = val[5] & 0x0F;
+ if(p == 0) {p = 9;}
+ else if(p <= 9) {p--;}
+ p = MERGE_CHANNEL_PORT(p);
+
+ dp = (val[5] & 0xF0) >> 4;
+ for(i=0;i<16;i++) {
+ if(ISDRUMCHANNEL(i)) {
+ if(dp == 0) {
+ dp = i;
+ break;
+ }
+ dp = 0;
+ }
+ }
+ if(dp == 0) {dp = 9;}
+
+ udn = (val[5] & 0xF0) >> 4;
+
+ addr = (((int32)val[4])<<16 | ((int32)val[5])<<8 | (int32)val[6]);
+ addr_h = val[4];
+ addr_m = val[5];
+ addr_l = val[6];
+
+ switch(addr_h) {
+ case 0x40:
+ if((addr & 0xFFF000) == 0x401000) {
+ switch(addr & 0xFF) {
+ case 0x00:
+ MIDIEVENT(at, ME_TONE_BANK_MSB,p,val[7],0);
+ MIDIEVENT(at, ME_TONE_BANK_LSB,p,3,0);
+ MIDIEVENT(at, ME_PROGRAM,p,val[8],0);
+ num_events += 3;
+ break;
+ case 0x19:
+ MIDIEVENT(at,ME_MAINVOLUME,p,val[7],0);
+ num_events++;
+ break;
+ case 0x1A:
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Velocity Sense Depth: %02X",val[7]);
+ break;
+ case 0x1B:
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Velocity Sense Offset: %02X",val[7]);
+ break;
+ case 0x1C:
+ MIDIEVENT(at,ME_PAN,p,val[7],0);
+ num_events++;
+ break;
+ case 0x21:
+ MIDIEVENT(at,ME_CHORUS_EFFECT,p,val[7],0);
+ num_events++;
+ break;
+ case 0x22:
+ MIDIEVENT(at,ME_REVERB_EFFECT,p,val[7],0);
+ num_events++;
+ break;
+ case 0x2C:
+ MIDIEVENT(at,ME_CELESTE_EFFECT,p,val[7],0);
+ num_events++;
+ break;
+ case 0x2A:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x00,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x01,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_LSB,p,val[8],0);
+ num_events += 4;
+ break;
+ case 0x30:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x01,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x08,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ num_events += 3;
+ break;
+ case 0x31:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x01,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x09,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ num_events += 3;
+ break;
+ case 0x32:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x01,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x20,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ num_events += 3;
+ break;
+ case 0x33:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x01,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x21,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ num_events += 3;
+ break;
+ case 0x34:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x01,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x63,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ num_events += 3;
+ break;
+ case 0x35:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x01,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x64,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ num_events += 3;
+ break;
+ case 0x36:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x01,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x66,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ num_events += 3;
+ break;
+ case 0x37:
+ MIDIEVENT(at,ME_NRPN_MSB,p,0x01,0);
+ MIDIEVENT(at,ME_NRPN_LSB,p,0x0A,0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,p,val[7],0);
+ num_events += 3;
+ break;
+ }
+ } else if((addr & 0xFFFF00) == 0x400100) {
+ switch(addr & 0xFF) {
+ case 0x30:
+ set_reverb_macro(val[7]);
+ break;
+ case 0x31:
+ reverb_status.character = val[7];
+ break;
+ case 0x32:
+ reverb_status.pre_lpf = val[7];
+ break;
+ case 0x33:
+ reverb_status.level = val[7];
+ break;
+ case 0x34:
+ reverb_status.time = val[7];
+ break;
+ case 0x35:
+ reverb_status.delay_feedback = val[7];
+ break;
+ case 0x36:
+ reverb_status.pre_delay_time = val[7];
+ break;
+ case 0x50:
+ set_delay_macro(val[7]);
+ recompute_delay_status();
+ break;
+ case 0x52:
+ delay_status.time_center = delay_time_center_table[val[7]];
+ recompute_delay_status();
+ break;
+ case 0x53:
+ delay_status.time_ratio_left = (double)val[7] / 24;
+ recompute_delay_status();
+ break;
+ case 0x54:
+ delay_status.time_ratio_right = (double)val[7] / 24;
+ recompute_delay_status();
+ break;
+ case 0x55:
+ delay_status.level_center = val[7];
+ recompute_delay_status();
+ break;
+ case 0x56:
+ delay_status.level_left = val[7];
+ recompute_delay_status();
+ break;
+ case 0x57:
+ delay_status.level_right = val[7];
+ recompute_delay_status();
+ break;
+ case 0x58:
+ delay_status.level = val[7];
+ recompute_delay_status();
+ break;
+ }
+ }
+ break;
+ case 0x41:
+ switch(addr & 0xF00) {
+ case 0x100:
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x18,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x200:
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1A,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x400:
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1C,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x500:
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1D,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x600:
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1E,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x900:
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1F,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ }
+ break;
+ case 0x21: /* User Drumset */
+ switch(addr & 0xF00) {
+ case 0x100: /* Pitch Coarse */
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x18,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x200: /* Level */
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1A,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x400: /* Panpot */
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1C,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x500: /* Reverb Send Level */
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1D,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x600: /* Chorus Send Level */
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1E,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0x900: /* Delay Send Level */
+ MIDIEVENT(at,ME_NRPN_MSB,dp,0x1F,0);
+ MIDIEVENT(at,ME_NRPN_LSB,dp,val[6],0);
+ MIDIEVENT(at,ME_DATA_ENTRY_MSB,dp,val[7],0);
+ num_events += 3;
+ break;
+ case 0xA00: /* Source Map */
+ userdrum_map = val[7];
+ break;
+ case 0xB00: /* Source Prog */
+ userdrum_prog = val[7];
+ break;
+ case 0xC00: /* Source Note */
+ alloc_instrument_bank(1,64+udn);
+ if(drumset[userdrum_prog]) {
+ if(drumset[userdrum_prog]->tone[val[6]].name) {
+ drumset[64+udn]->tone[val[6]].instrument = load_instrument(1, userdrum_prog, val[7]);
+ } else {
+ drumset[64+udn]->tone[val[6]].instrument = load_instrument(1, 0, val[7]);
+ }
+ } else {
+ drumset[64+udn]->tone[val[6]].instrument = load_instrument(1, 0, val[7]);
+ }
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"User Drumset (%d %d -> %d %d)",userdrum_prog,val[7],udn+64,val[6]);
+ userdrum_prog = 0;
+ userdrum_map = 0;
+ break;
+ }
+ break;
+ }
+ if(!num_events) {
+ if((addr & 0xFFF0F0) == 0x401040) {
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"GS SysEx Scale Tuning: Not Supported");
+ }
+ }
}
return(num_events);
{
case 0x8: /* macro */
memcpy(chorus_status.macro, body, 3);
+ set_chorus_macro(val[7]);
break;
case 0x9: /* PRE-LPF */
memcpy(chorus_status.pre_lpf, body, 3);
{
int mid;
+ switch(opt_env_attack) {
+ case 1:
+ attack_vol_table = def_vol_table;
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Attack Type: Exponential1");
+ break;
+ case 2:
+ attack_vol_table = gs_vol_table;
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Attack Type: Exponential2");
+ break;
+ case 3:
+ attack_vol_table = log_vol_table;
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Attack Type: Logarithmic");
+ break;
+ default:
+ attack_vol_table = linear_vol_table;
+ ctl->cmsg(CMSG_INFO,VERB_NOISY,"Attack Type: Linear");
+ break;
+ }
+
if(opt_system_mid)
{
mid = opt_system_mid;
}
else
mid = current_file_info->mid;
-
switch(mode)
{
case GM_SYSTEM_MODE:
break;
default:
play_system_mode = DEFAULT_SYSTEM_MODE;
- vol_table = def_vol_table;
+ vol_table = def_vol_table;
break;
}
break;
bank_lsb[ch] = meep->event.a;
break;
- case ME_CHORUS_TEXT:
+ case ME_CHORUS_TEXT:
case ME_LYRIC:
case ME_MARKER:
case ME_INSERT_TEXT:
return NULL;
return string_event_table[id];
}
+
+void init_delay_status()
+{
+ delay_status.level = 0x40;
+ delay_status.level_center = 0x7F;
+ delay_status.level_left = 0;
+ delay_status.level_right = 0;
+ delay_status.time_center = 340.0;
+ delay_status.time_ratio_left = 1 / 24;
+ delay_status.time_ratio_right = 1 / 24;
+ delay_status.feed_back = 0x40;
+ delay_status.fb_loop = 0;
+ if(play_system_mode == XG_SYSTEM_MODE) {
+ delay_status.level_left = 0x7F;
+ delay_status.level_right = 0x7F;
+ }
+}
+
+void recompute_delay_status()
+{
+ delay_status.level_ratio_center = delay_status.level * delay_status.level_center / 2048383;
+ delay_status.level_ratio_left = delay_status.level * delay_status.level_left / 2048383;
+ delay_status.level_ratio_right = delay_status.level * delay_status.level_right / 2048383;
+ delay_status.time_left = delay_status.time_center * delay_status.time_ratio_left;
+ delay_status.time_right = delay_status.time_center * delay_status.time_ratio_right;
+ delay_status.time_left = delay_status.time_left & 1000;
+ delay_status.time_right = delay_status.time_right & 1000;
+ delay_status.fb_loop = delay_status.feed_back - 64;
+ if(delay_status.fb_loop < 0) {delay_status.fb_loop = -delay_status.fb_loop;}
+ delay_status.fb_ratio = 0.5 + (double)delay_status.fb_loop / 128.0;
+ delay_status.fb_loop = delay_status.fb_loop / 8;
+}
+
+void set_delay_macro(int macro)
+{
+ macro *= 10;
+ delay_status.time_center = delay_time_center_table[delay_macro_presets[macro+1]];
+ delay_status.time_ratio_left = delay_macro_presets[macro+2] / 24;
+ delay_status.time_ratio_right = delay_macro_presets[macro+3] / 24;
+ delay_status.level_center = delay_macro_presets[macro+4];
+ delay_status.level_left = delay_macro_presets[macro+5];
+ delay_status.level_right = delay_macro_presets[macro+6];
+ delay_status.level = delay_macro_presets[macro+7];
+ delay_status.feed_back = delay_macro_presets[macro+8];
+}
+
+struct delay_status_t *get_delay_status()
+{
+ return &delay_status;
+}
+
+void init_reverb_status()
+{
+ reverb_status.character = 0x04;
+ reverb_status.pre_lpf = 0;
+ reverb_status.level = 0x40;
+ reverb_status.time = 0x40;
+ reverb_status.delay_feedback = 0;
+ reverb_status.pre_delay_time = 0;
+}
+
+void set_reverb_macro(int macro)
+{
+ macro *= 6;
+ reverb_status.character = reverb_macro_presets[macro];
+ reverb_status.pre_lpf = reverb_macro_presets[macro+1];
+ reverb_status.level = reverb_macro_presets[macro+2];
+ reverb_status.time = reverb_macro_presets[macro+3];
+ reverb_status.delay_feedback = reverb_macro_presets[macro+4];
+ reverb_status.pre_delay_time = reverb_macro_presets[macro+5];
+}
+
+struct reverb_status_t *get_reverb_status()
+{
+ return &reverb_status;
+}
+
+void init_chorus_status()
+{
+ chorus_status.macro[0] = 0;
+ chorus_status.pre_lpf[0] = 0;
+ chorus_status.level[0] = 0x40;
+ chorus_status.feed_back[0] = 0x08;
+ chorus_status.delay[0] = 0x50;
+ chorus_status.rate[0] = 0x03;
+ chorus_status.depth[0] = 0x13;
+ chorus_status.send_level[0] = 0;
+}
+
+void set_chorus_macro(int macro)
+{
+ macro *= 8;
+ chorus_status.pre_lpf[0] = chorus_macro_presets[macro];
+ chorus_status.level[0] = chorus_macro_presets[macro+1];
+ chorus_status.feed_back[0] = chorus_macro_presets[macro+2];
+ chorus_status.delay[0] = chorus_macro_presets[macro+3];
+ chorus_status.rate[0] = chorus_macro_presets[macro+4];
+ chorus_status.depth[0] = chorus_macro_presets[macro+5];
+ chorus_status.send_level[0] = chorus_macro_presets[macro+6];
+}
+
+struct chorus_status_t *get_chorus_status()
+{
+ return &chorus_status;
+}
struct timidity_file *pcm_tf;
};
+struct delay_status_t
+{
+ uint8 level; /* master level */
+ uint8 level_center;
+ uint8 level_left;
+ uint8 level_right;
+ int time_center; /* (ms) */
+ double time_ratio_left; /* gs_val/24 */
+ double time_ratio_right; /* gs_val/24 */
+ int time_left;
+ int time_right;
+ uint8 feed_back; /* reserved. */
+ uint8 pre_lpf; /* reserved. */
+ double level_ratio_center;
+ double level_ratio_left;
+ double level_ratio_right;
+ int fb_loop;
+ double fb_ratio;
+};
+
+struct reverb_status_t
+{
+ uint8 character;
+ uint8 pre_lpf;
+ uint8 level;
+ uint8 time;
+ uint8 delay_feedback;
+ uint8 pre_delay_time; /* (ms) */
+};
+
+struct chorus_status_t
+{
+ int status;
+ uint8 voice_reserve[18];
+ uint8 macro[3];
+ uint8 pre_lpf[3];
+ uint8 level[3];
+ uint8 feed_back[3];
+ uint8 delay[3];
+ uint8 rate[3];
+ uint8 depth[3];
+ uint8 send_level[3];
+};
+
+struct insertion_effect_t
+{
+ uint8 type_lsb;
+ uint8 type_msb;
+ uint8 type;
+ uint8 channel[16]; /* 0:BYPASS, 1:EFX */
+ uint8 parameter[20];
+ uint8 send_reverb;
+ uint8 send_chorus;
+ uint8 send_delay;
+ uint8 control_source1;
+ uint8 control_depth1;
+ uint8 control_source2;
+ uint8 control_depth2;
+ uint8 send_eq_switch;
+};
+
+
extern int32 readmidi_set_track(int trackno, int rewindp);
extern void readmidi_add_event(MidiEvent *newev);
extern void readmidi_add_ctl_event(int32 at, int ch, int control, int val);
extern int play_system_mode;
extern FLOAT_T tempo_adjust;
+extern struct delay_status_t *get_delay_status();
+extern struct reverb_status_t *get_reverb_status();
+extern struct chorus_status_t *get_chorus_status();
+
#endif /* ___READMIDI_H_ */
#ifndef ___REVERB_H_
#define ___REVERB_H_
-#define DEFAULT_REVERB_SEND_LEVEL 54
+/* #define DEFAULT_REVERB_SEND_LEVEL 54 */
+#define DEFAULT_REVERB_SEND_LEVEL 40
extern void do_reverb(int32 *, int32);
extern void do_ch_reverb(int32 *, int32);
/* ver.2 additional info */
int32 samplerate;
uint8 originalPitch;
- uint8 pitchCorrection;
+ int8 pitchCorrection;
uint16 samplelink;
uint16 sampletype; /*1=mono, 2=right, 4=left, 8=linked, $8000=ROM*/
/* optional info */
/* from sample info */
vp->root = sp->originalPitch;
vp->tune = sp->pitchCorrection;
+ if (vp->tune >= 0x80)
+ vp->tune -= 0x100; /* correct sign */
}
/* orverride root key */
/* correct too high pitch */
if(vp->root >= vp->high + 60)
vp->root -= 60;
+
+ /* correct tune with the sustain level of modulation envelope */
+ vp->tune += ((int)tbl->val[SF_env1ToPitch] * (1000 - (int)tbl->val[SF_sustainEnv1])) / 1000;
}
static void set_rootfreq(SampleList *vp)
#define MIN_DATAVAL -32768
#endif
-/* ## FIXME */
static void do_lowpass(Sample *sp, int32 freq, FLOAT_T resonance)
{
- double A, B, C;
- sample_t *buf, pv1, pv2;
- int32 i;
+ int32 i,length;
+ FLOAT_T f,k,p,r,scale;
+ sample_t *buf;
+ sample_t y1,y2,y3,y4,oldy1,oldy2,oldy3,oldx,x;
if (freq > sp->sample_rate * 2) {
ctl->cmsg(CMSG_WARNING, VERB_NORMAL,
- "Lowpass: center must be < data rate*2");
+ "Lowpass: center freq must be < data rate * 2");
return;
}
- A = 2.0 * M_PI * freq * 2.5 / sp->sample_rate;
- B = exp(-A / sp->sample_rate);
- A *= 0.8;
- B *= 0.8;
- C = 0;
-
- if (resonance) {
- double a, b, c;
- int32 width;
- width = freq / 5;
- c = exp(-2.0 * M_PI * width / sp->sample_rate);
- b = -4.0 * c / (1+c) * cos(2.0 * M_PI * freq / sp->sample_rate);
- a = sqrt(1 - b * b / (4 * c)) * (1 - c);
- b = -b; c = -c;
-
- A += a * resonance;
- B += b;
- C = c;
- }
- pv1 = 0;
- pv2 = 0;
buf = sp->data;
+ length = sp->data_length;
- for (i = 0; i < sp->data_length; i++) {
- sample_t l = *buf;
- double d = A * l + B * pv1 + C * pv2;
- if (d > MAX_DATAVAL)
- d = MAX_DATAVAL;
- else if (d < MIN_DATAVAL)
- d = MIN_DATAVAL;
- pv2 = pv1;
-#ifndef CUTOFF_AMPTUNING
- pv1 = *buf++ = (sample_t)d;
-#else
- pv1 = (sample_t)d;
- *buf++ = (sample_t)(d * CUTOFF_AMPTUNING);
-#endif
+ y1=y2=y3=y4=oldx=oldy1=oldy2=oldy3=0;
+
+ f = 2.0 * freq / sp->sample_rate;
+ k = 3.6*f - 1.6*f*f - 1;
+ p = (k+1)*0.5;
+ scale = exp((1-p)*1.386249);
+ r = resonance * scale;
+ r /= 4;
+ y4 = buf[0];
+
+ for(i=0;i<length;i++) {
+ buf[i] -= r * y4;
+ x = buf[i];
+
+ y1=(x+oldx)*p - k*y1;
+ y2=(y1+oldy1)*p - k*y2;
+ y3=(y2+oldy2)*p - k*y3;
+ y4=(y3+oldy3)*p - k*y4;
+
+ y4 -= y4 * y4 * y4 * 0.166667;
+
+ oldx = x;
+ oldy1 = y1;
+ oldy2 = y2;
+ oldy3 = y3;
}
}
int include_enc = 0, exclude_enc = PE_BYTESWAP;
struct stat sb;
audio_info_t auinfo;
+ char *audio_dev, *audio_ctl_dev, *tmp_audio;
+
+
+ /* See if the AUDIODEV environment variable is defined, and set the
+ audio device accordingly - Lalit Chhabra 23/Oct/2001 */
+ if((audio_dev = getenv("AUDIODEV")) != NULL)
+ {
+ dpm.id_name = malloc(strlen(audio_dev));
+ dpm.name = malloc(strlen(audio_dev));
+ strcpy(dpm.name, audio_dev);
+ strcpy(dpm.id_name, audio_dev);
+
+ tmp_audio = malloc(strlen(audio_dev) + 3);
+ audio_ctl_dev = malloc(strlen(audio_dev) + 3);
+
+ strcpy(tmp_audio, audio_dev);
+ strcpy(audio_ctl_dev, strcat(tmp_audio, "ctl"));
+ }
+ else
+ {
+ audio_ctl_dev = malloc(strlen(AUDIO_CTLDEV) + 3);
+ strcpy(audio_ctl_dev, AUDIO_CTLDEV);
+ }
output_counter = play_samples_offset = 0;
/* Open the audio device */
- if((audioctl_fd = open(AUDIO_CTLDEV, O_RDWR)) < 0)
+ if((audioctl_fd = open(audio_ctl_dev, O_RDWR)) < 0)
{
ctl->cmsg(CMSG_ERROR, VERB_NORMAL,
- "%s: %s", AUDIO_CTLDEV, strerror(errno));
+ "%s: %s", audio_ctl_dev, strerror(errno));
return -1;
}
#include "config.h"
#endif /* HAVE_CONFIG_H */
#include <stdio.h>
+#include <math.h>
#include "timidity.h"
#include "common.h"
#include "tables.h"
void init_tables(void)
{
+ int i;
#ifdef LOOKUP_HACK
- int i,j,v;
+ int j,v;
mixup = (int32 *)safe_malloc(1<<(7+8+2)); /* Give your cache a workout! */
for (i=0; i<128; i++)
#endif
#endif
+
+ for(i=0;i<128;i++)
+ {
+ linear_vol_table[i] = (FLOAT_T)i / 127.0;
+ log_vol_table[i] = log10((FLOAT_T)i * 9.0 / 127.0 + 1);
+ }
+ for(i=0;i<128;i++)
+ {
+ switch(opt_velocity_table) {
+ case 0:
+ velocity_table[i] = i;
+ break;
+ case 1:
+ velocity_table[i] = ((sqrt((FLOAT_T)i/127) * 127) + i) / 2;
+ break;
+ case 2:
+ velocity_table[i] = sqrt((FLOAT_T)i/127) * 127;
+ break;
+ case 3:
+ velocity_table[i] = (((FLOAT_T)i * (FLOAT_T)i / 127) + i) / 2;
+ break;
+ case 4:
+ velocity_table[i] = (FLOAT_T)i * (FLOAT_T)i / 127;
+ break;
+ }
+ }
}
#ifdef LOOKUP_HACK
};
uint8 *_l2u = _l2u_ + 4096;
#endif /* LOOKUP_HACK */
+
+uint8 reverb_macro_presets[] =
+{ /* CHARACTER,PRE-LPF,LEVEL,TIME,DELAY FEEDBACK,PREDELAY TIME */
+ 0,3,64,80,0,0, /* 00: Room1 */
+ 1,4,64,56,0,0, /* 01: Room2 */
+ 2,0,64,64,0,0, /* 02: Room3 */
+ 3,4,64,72,0,0, /* 03: Hall1 */
+ 4,0,64,64,0,0, /* 04: Hall2 */
+ 5,0,64,88,0,0, /* 05: Plate */
+ 6,0,64,32,40,0, /* 06: Delay */
+ 7,0,64,64,32,0, /* 07: Panning Delay */
+};
+
+uint8 chorus_macro_presets[] =
+{ /* PRE-LPF,LEVEL,FEEDBACK,DELAY,RATE,DEPTH,SEND TO REVERB,SEND TO DELAY */
+ 0,64,0,112,3,5,0,0, /* 00: Chorus1 */
+ 0,64,5,80,9,19,0,0, /* 01: Chorus2 */
+ 0,64,8,80,3,19,0,0, /* 02: Chorus3 */
+ 0,64,16,64,9,16,0,0, /* 03: Chorus4 */
+ 0,64,64,127,2,24,0,0, /* 04: Feedback Chorus */
+ 0,64,112,127,1,5,0,0, /* 05: Flanger */
+ 0,64,0,127,0,127,0,0, /* 06: Short Delay */
+ 0,64,80,127,0,127,0,0, /* 07: Short Delay(Feedback) */
+};
+
+uint8 delay_macro_presets[] =
+{ /* PRE-LPF,TIME(C),RATIO(L),RATIO(R),LEVEL(C),LEVEL(L),LEVEL(R),LEVEL,FEEDBACK,LEVEL TO REVERB */
+ 0,97,1,1,127,0,0,64,79,0, /* 00: Delay1 */
+ 0,106,1,1,127,0,0,64,79,0, /* 01: Delay2 */
+ 0,115,1,1,127,0,0,64,63,0, /* 02: Delay3 */
+ 0,83,1,1,127,0,0,64,71,0, /* 03: Delay4 */
+ 0,90,12,24,0,125,60,64,73,0, /* 04: Pan Delay1 */
+ 0,109,12,24,0,125,60,64,70,0, /* 05: Pan Delay2 */
+ 0,115,12,24,0,120,64,64,72,0, /* 06: Pan Delay3 */
+ 0,93,12,24,0,120,64,64,63,0, /* 07: Pan Delay4 */
+ 0,109,12,24,0,114,60,64,60,36, /* 08: Delay to Reverb */
+ 0,110,21,31,97,127,67,64,39,0, /* 09: Pan Repeat */
+};
+
+FLOAT_T delay_time_center_table[] =
+{ /* 0x00~0x73, 0.1ms~1000ms */
+ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9,
+ 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8,
+ 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,
+ 50, 55, 60, 65, 70, 75, 80, 85, 90, 95,
+ 100, 110, 120, 130, 140, 150, 160, 170, 180, 190,
+ 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480,
+ 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000,
+};
+
+FLOAT_T pre_delay_time_table[] =
+{
+ 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9,
+ 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9,
+ 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9,
+ 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88,
+ 90, 92, 94, 96, 98, 100, 100, 100,
+};
+
+uint8 velocity_table[128];
+
+FLOAT_T linear_vol_table[128];
+FLOAT_T log_vol_table[128];
+FLOAT_T *attack_vol_table;
+int opt_velocity_table = 0;
extern int8 *iplookup;
#endif
#endif
+extern uint8 reverb_macro_presets[];
+extern uint8 chorus_macro_presets[];
+extern uint8 delay_macro_presets[];
+extern FLOAT_T delay_time_center_table[];
+extern FLOAT_T pre_delay_time_table[];
+extern uint8 velocity_table[];
+extern int opt_velocity_table;
+extern FLOAT_T linear_vol_table[];
+extern FLOAT_T log_vol_table[];
+extern FLOAT_T *attack_vol_table;
+
extern void init_tables(void);
/* Greatly reduces popping due to large volume/pan changes.
* This is definately worth the slight increase in CPU usage.
*/
-#define SMOOTH_MIXING
+/*#define SMOOTH_MIXING */
#ifdef LOOKUP_HACK
typedef int8 sample_t;
#endif /* HAVE_STRSTR */
#ifndef HAVE_STRNCASECMP
-int strncasecmp(char *s1, char *s2, unsigned int len);
+extern int strncasecmp(char *s1, char *s2, unsigned int len);
#endif /* HAVE_STRNCASECMP */
+#ifndef HAVE_MKSTEMP
+extern int mkstemp(char *template);
+#endif /* HAVE_MKSTEMP */
#endif /* ___SUPPORT_H_ */