diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-12-03 11:05:10 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-12-03 11:05:10 -0600 |
commit | f7e7a923aca8be643f9ae6f7252f9fb27b3d2c3b (patch) | |
tree | 1f78ef53b206c6b4e4efc88c4849aa9f686a094d /tde-i18n-pt_BR/docs/tdemultimedia | |
parent | 85ca18776aa487b06b9d5ab7459b8f837ba637f3 (diff) | |
download | tde-i18n-f7e7a923aca8be643f9ae6f7252f9fb27b3d2c3b.tar.gz tde-i18n-f7e7a923aca8be643f9ae6f7252f9fb27b3d2c3b.zip |
Second part of prior commit
Diffstat (limited to 'tde-i18n-pt_BR/docs/tdemultimedia')
56 files changed, 24863 insertions, 0 deletions
diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/Makefile.in new file mode 100644 index 00000000000..7b111690597 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/Makefile.in @@ -0,0 +1,587 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. kio_audiocd juk artsbuilder noatun kaboodle kmid krec kmix kcontrol kscd +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=Makefile.in Makefile.am + +#>+ 2 +docs-am: + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/Makefile.in new file mode 100644 index 00000000000..5becf8a5926 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/Makefile.in @@ -0,0 +1,613 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/artsbuilder +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/artsbuilder/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=future.docbook porting.docbook glossary.docbook helping.docbook artsbuilder.docbook detail.docbook midiintro.docbook modules.docbook mcop.docbook faq.docbook midi.docbook tools.docbook Makefile.in digitalaudio.docbook references.docbook apis.docbook Makefile.am + +#>+ 2 +docs-am: glossary.docbook porting.docbook apis.docbook references.docbook mcop.docbook detail.docbook future.docbook artsbuilder.docbook digitalaudio.docbook faq.docbook modules.docbook tools.docbook midi.docbook helping.docbook midiintro.docbook + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder + @for base in glossary.docbook porting.docbook apis.docbook references.docbook mcop.docbook detail.docbook future.docbook artsbuilder.docbook digitalaudio.docbook faq.docbook modules.docbook tools.docbook midi.docbook helping.docbook midiintro.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/$$base ;\ + done + +uninstall-nls: + for base in glossary.docbook porting.docbook apis.docbook references.docbook mcop.docbook detail.docbook future.docbook artsbuilder.docbook digitalaudio.docbook faq.docbook modules.docbook tools.docbook midi.docbook helping.docbook midiintro.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in glossary.docbook porting.docbook apis.docbook references.docbook mcop.docbook detail.docbook future.docbook artsbuilder.docbook digitalaudio.docbook faq.docbook modules.docbook tools.docbook midi.docbook helping.docbook midiintro.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/artsbuilder/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/apis.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/apis.docbook new file mode 100644 index 00000000000..9e5d2b9c8d0 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/apis.docbook @@ -0,0 +1,434 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="arts-apis"> +<title +>Interfaces de Programação de Aplicativos do &arts;</title> + +<sect1 id="api-overview"> +<title +>Visão Geral</title> +<para +>O aRts não é somente uma peça de software, ele também fornece uma variedade de APIs para uma variedade de propósitos. Nesta seção, eu tentarei descrevê-las de uma maneira geral, com uma olhada sumária do que as APIs supostamente fazem, e como elas interagem. </para> + +<para +>Existe uma importante distinção a fazer: a maioria das APIs são <emphasis +>independentes de localização e linguagem</emphasis +> porque elas são especificadas como <emphasis +>mcopidl</emphasis +>. Por isto, você pode basicamente usar os serviços que elas oferecem a partir de qualquer linguagem, implementá-las em qualquer linguagem, e não precisa preocupar-se se está lidando com objetos locais ou remotos. Aqui está uma lista das principais: </para> + + +<variablelist> +<varlistentry> +<term +>core.idl</term> + <listitem +><para +>Definições básicas que formam o núcleo da funcionalidade MCOP, como o próprio protocolo, definições de objeto, o negociador, o sistema de fluxo e assim por diante. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsflow.idl</term> + + <listitem +><para +>Ela contém o sistema de fluxo que você usará para conectar-se com fluxos de áudio, a definição do <emphasis +>Arts::SynthModule</emphasis +> que é a base para qualquer interface que possui fluxos, e finalmente alguns objetos de áudio úteis. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>kmedia2.idl</term> + + + <listitem +><para +>Aqui, um objeto que pode tocar uma mídia (<emphasis +>Arts::PlayObject</emphasis +>) é definido. Tocadores de mídia como o noatun do KDE será capaz de tocar qualquer mídia para a qual um PlayObject pode ser encontrado. Assim faz sentido implementar PlayObjects para vários formatos (como mp3, vídeo mpg, midi, wav, ...) desta base, e muitos já estão prontos. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>soundserver.idl</term> + + <listitem +><para +>Aqui, uma interface para o amplo sistema do servidor de som artsd é definida. A interface é chamada <emphasis +>Arts::SoundServer</emphasis +>, e implemente funcionalidades como aceitar fulxos a partir da rede, executar amostras, criar outros objetos personalizados do aRts e assim por diante. A transparência de rede é implícita devido ao uso do MCOP (como para todas as demais interfaces daqui). </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsbuilder.idl</term> + <listitem +><para +>Este módulo define a funcionalidade básica de gráfico de fluxo, que é, combinando objetos simples para mais complexos, definir um gráfico deles. Isto define a interface básica <emphasis +>Arts::StructureDesc</emphasis +>, <emphasis +>Arts::ModuleDesc</emphasis +> e <emphasis +>Arts::PortDesc</emphasis +> que contém uma descrição de uma estrutura, módulo e porta. Existe também uma maneira de obter "objetos da rede" fora desta conexão e descrições de valores, usando uma fabricação. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsmidi.idl</term> + + <listitem +><para +>Este módulo define a funcionalidade midi básica, como objetos que produzem eventos midi, o que é um evento midi, um <emphasis +>Arts::MidiManager</emphasis +> para conectar os produtores e consumidores de eventos midi, e assim por diante. Como sempre a transparência de rede está implícita. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsmodules.idl</term> + <listitem +><para +>Aqui estão vários filtros adicionais, osciladores, efeitos, retardos e assim por diante, tudo necessário para processamento de sinal útil real, e para construir instrumentos complexos e efeitos além dos blocos de construção básicos. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsgui.idl</term> + + <listitem +><para +>Isto cuida dos objetos visuais. Ele define o tipo básico <emphasis +>Arts::Widget</emphasis +> a partir do qual todos os módulos GUI derivam. Isto produzirá independência de conjunto de ferramentas de desenvolvimento, e ... edição visual de GUI, e GUIs serializáveis. Além disso, como os elementos GUI possuem atributos normais, seus valores podem ser diretamente conectados a algum módulo de processamento de sinal (isto é, o valor de um índice deslizante para um filtro de corte). Como sempre: transparente à rede. </para +></listitem> + +</varlistentry> + +</variablelist> +<para +>Onde possível, o próprio aRts é implementado usando IDL. Por outro lado, existem algumas APIs <emphasis +>específicas de linguagem</emphasis +>, usando seja C++ plano ou C plano. É normalmente mais adequado usar interfaces IDL quando possível, e outras APIs quando necessário. Aqui está uma lista das APIs específicas de linguagem: </para> + +<variablelist> + +<varlistentry> +<term +>KNotify, KAudioPlayer (incluída no libtdecore)</term> + + <listitem +><para +>Estas são APIs convenientes do KDE para os casos mais simples e comuns, onde você somente deseja tocar uma amostra. As APIs estão em C++ plano, otimizadas para o Qt/KDE, e são fáceis de usar e obter. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libartsc</term> + <listitem +><para +>Interface em C plano para o servidor de som. Muito útil para portar aplicativos legados. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libmcop</term> + + <listitem +><para +>Aqui está toda a magia que o MCOP faz. A biblioteca contém as coisas básicas que você precisa conhecer para escrever um aplicativo MCOP simples, o expedidor, temporizadores, gerenciamento de entrada e saída, além dos mecanismos internos necessários para o protocolo MCOP propriamente dito funcionar. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libartsflow</term> + <listitem +><para +>Somando à implementação do artsflow.idl, alguns utilitários úteis como conversão de taxa de amostragem. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libqiomanager</term> + + <listitem +><para +>Integração do MCOP no ciclo de eventos Qt, quando você escreve aplicativos Qt usando MCOP. </para +></listitem> + +</varlistentry> + +</variablelist> + + + +</sect1> +<sect1 id="knotify"> +<title +>knotify</title> +<para +>Não escrito ainda </para> +</sect1> + +<sect1 id="kaudioplayer"> +<title +>kaudioplayer</title> +<para +>Não escrito ainda </para> +</sect1> + +<sect1 id="libkmid"> +<title +>libkmid</title> +<para +>Não escrito ainda </para> +</sect1> + +<sect1 id="kmedia2"> +<title +>kmedia2</title> +<para +>Não escrito ainda </para> +</sect1> + +<sect1 id="soundserver"> +<title +>servidor de som</title> +<para +>Não escrito ainda </para> +</sect1> + +<sect1 id="artsflow"> +<title +>artsflow</title> +<para +>Não escrito ainda </para> +</sect1> + +<sect1 id="capi"> +<title +><acronym +>API</acronym +> C</title> + +<sect2 id="capiintro"> +<title +>Introdução</title> + +<para +>A <acronym +>API</acronym +> C do &arts; foi desenhada para tornar fácil escrever e portar aplicativos em C plano para o servidor de som &arts;. Ela fornece funcionalidade de fluxo (enviando fluxos de amostra para o <application +>artsd</application +>), tanto em bloco como não-bloco. Para a maioria dos aplicativos você simplesmente removerá as poucas chamadas do sistema que lidam com seu dispositivo de áudio e as substituirá com as chamadas apropriadas ao &arts;.</para> + +<para +>Eu fiz dois portes como prova do conceito: <application +>mpg123</application +> e <application +>quake</application +>. Você pode obter os remendos a partir <ulink url="http://space.twc.de/~stefan/kde/download/artsc-patches.tar.gz" +>daqui</ulink +>. Sinta-se à vontade para enviar seus próprios remendos para o mantenedor do &arts; ou de pacotes de programas multimídia de modo que eles possam integrar o suporte ao &arts; em seu código.</para> + +</sect2> + +<sect2 id="capiwalkthru"> +<title +>Explanação Rápida</title> + +<para +>Enviar áudio para o servidor de som com a <acronym +>API</acronym +> é muito simples:</para> +<procedure> +<step +><para +>inclua o arquivo de cabeçalho usando <userinput +>#include <artsc.h></userinput +></para +></step> +<step +><para +>inicialize a <acronym +>API</acronym +> com <function +>arts_init()</function +></para +></step> +<step +><para +>crie um fluxo com <function +>arts_play_stream()</function +></para +></step> +<step +><para +>configure parâmetros específicos com <function +>arts_stream_set()</function +></para +></step> +<step +><para +>escreva dados de amostra para o fluxo com <function +>arts_write()</function +></para +></step> +<step +><para +>feche o fluxo com <function +>arts_close_stream()</function +></para +></step> +<step +><para +>libere a <acronym +>API</acronym +> com <function +>arts_free()</function +></para +></step> +</procedure> + +<para +>Aqui está um pequeno exemplo que ilustra isto:</para> + +<programlisting +>#include <stdio.h> +#include <artsc.h> +int main() +{ + arts_stream_t stream; + char buffer[8192]; + int bytes; + int errorcode; + + errorcode = arts_init(); + if (errorcode < 0) + { + fprintf(stderr, "arts_init error: %s\n", arts_error_text(errorcode)); + return 1; + } + + stream = arts_play_stream(44100, 16, 2, "artsctest"); + + while((bytes = fread(buffer, 1, 8192, stdin)) > 0) + { + errorcode = arts_write(stream, buffer, bytes); + if(errorcode < 0) + { + fprintf(stderr, "arts_write error: %s\n", arts_error_text(errorcode)); + return 1; + } + } + + arts_close_stream(stream); + arts_free(); + + return 0; +} +</programlisting> +</sect2> + +<sect2 id="capiartscconfig"> +<title +>Compilando e Ligando: <application +>artsc-config</application +></title> + +<para +>Para compilar e ligar facilmente programas usando a <acronym +>API</acronym +> C do &arts;, o utilitário <application +>artsc-config</application +> é fornecido o qual conhece quais bibliotecas você precisar ligar e onde os arquivos de inclusão estão. Ele é chamado usando</para> + +<screen +><userinput +><command +>artsc-config</command +> <option +>--libs</option +></userinput +> +</screen> + +<para +>para encontrar as bibliotecas e </para> + +<screen +><userinput +><command +>artsc-config</command +> <option +>--cflags</option +></userinput +> +</screen> + +<para +>para encontrar sinalizadores de compilação adicionais para o C. O exemplo acima pode ser compilado usando a linha de comando:</para> + +<screen +><userinput +><command +>cc</command +> <option +>-o artsctest artsctest.c `artsc-config --cflags` `artsc-config --libs`</option +></userinput> + +<userinput +><command +>cc</command +> <option +>-o artsctest</option +> <option +>artsctest.c</option +> <option +>`artsc-config --cflags`</option +> <option +>`artsc-config --libs`</option +></userinput +> +</screen> + +</sect2> + +<sect2 id="c-api-reference"> +<title +>Referência de Biblioteca</title> + +<para +>[A SER FEITO: gerar a documentação para o artsc.h usando o kdoc] </para> + +</sect2> + +</sect1> +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/artsbuilder.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/artsbuilder.docbook new file mode 100644 index 00000000000..e1aa171ac55 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/artsbuilder.docbook @@ -0,0 +1,917 @@ +<chapter id="artsbuilder"> +<title +>&arts-builder;</title> + +<sect1 id="overview"> +<title +>Visão Geral</title> + +<para +>Antes de tudo, ao tentar executar o &arts-builder;, você deve também estar executando o servidor de som (&artsd;). Normalmente, se você usar o &kde; 2.1, isto já deverá estar ocorrendo. Caso contrário, você pode configurar a inicialização automática do servidor de som no &kcontrol; em <menuchoice +><guilabel +>Som</guilabel +><guilabel +>Servidor de Som</guilabel +></menuchoice +>. </para> + +<para +>Quando você está executando o &arts;, ele sempre roda pequenos módulos. O &arts-builder; é uma ferramenta para criar novas estruturas de pequenos módulos conectados. Você simplesmente clica nos módulos dentro da grade. Para fazer isto, escolha-os a partir do menu <guimenu +>Módulos</guimenu +>, e então clique em algum local no plano verde-cinza. </para> + +<para +>Módulos normalmente possuem portas (onde normalmente sinais de áudio entram ou saem). Para conectar duas portas, clique na primeira, fazendo com que ela fique laranja, e então clique na segunda. Você somente pode conectar uma porta de entrada (no lado superior de um módulo) com uma porta de saída (no lado inferior de um módulo). Se você deseja atribuir um valor fixo à uma porta (ou desconectá-la), faça então um duplo-clique na porta. </para> + +</sect1> + +<sect1 id="artsbuilder-tutorial"> +<title +>Tutorial</title> + +<sect2 id="step-1"> +<title +>Passo 1</title> + +<para +>Inicie o &arts-builder;. </para> + +<para +>Você precisa de um módulo Synth_AMAN_PLAY para ouvir a saída do que está criando. Logo crie um módulo Synth_AMAN_PLAY selecionando <menuchoice +><guimenu +>Módulos</guimenu +> <guisubmenu +>Síntese</guisubmenu +> <guisubmenu +>IO de Som</guisubmenu +> <guisubmenu +>Synth_AMAN_PLAY</guisubmenu +></menuchoice +> e clique em um espaço de módulo vazio. Coloque-o abaixo da quinta linha em diante, porque nós iremos adicionar algum material acima. </para> + +<para +>O módulo terá um parâmetro <parameter +>title</parameter +> (porta mais a esquerda) e <parameter +>autoRestoreID</parameter +> (ao lado da porta mais à esquerda) para encontrá-lo. Para preenchê-los, dê um duplo-clique nestas portas, selecione valore constante e digite <userinput +>tutorial</userinput +> na caixa de edição. Clique <guibutton +>OK</guibutton +> para aplicar. </para> + +<para +>Selecione <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Executar estrutura</guimenuitem +></menuchoice +>. Você não ouvirá absolutamente nada. O módulo para tocar precisa de alguma entrada ainda... ;) Se você tiver ouvido o silêncio por enquanto, clique <guibutton +>OK</guibutton +> e vá para o Passo 2. </para> +</sect2> + +<sect2 id="step-2"> +<title +>Passo 2</title> + +<para +>Crie um módulo Synth_WAVE_SIN (a partir de <menuchoice +><guimenu +>Módulos</guimenu +> <guimenuitem +>Síntese</guimenuitem +> <guimenuitem +>Formas de onda</guimenuitem +></menuchoice +>) e coloque-o acima do módulo Synth_AMAN_PLAY (Deixe uma linha de espaço entre eles). </para> + +<para +>Como pode ver, isto produz alguma saída, mas precisa de um <guilabel +>pos</guilabel +> como entrada. Primeiro vamos colocar a saída para as caixas de som.Clique na porta <guilabel +>out</guilabel +> do Synth_WAVE_SIN e então na porta <guilabel +>left</guilabel +> do Synth_AMAN_PLAY. Bingo! Você conectou dois módulos. </para> + +<para +>Todos os osciladores no &arts; não necessitada de uma frequência como entrada, mas uma posição na onda. A posição deve estar entra 0 e 1, o qual mapeia para um objeto Synth_WAVE_SIN padrão para o intervalo 0,2*pi. Para gerar valores oscilando a partir de uma frequência, um módulo Synth_FREQUENCY é usado. </para> + +<para +>Crie um módulo Synth_FREQUENCY (a partir de <menuchoice +> <guimenu +>Módulos</guimenu +> <guimenu +>Síntese</guimenu +> <guimenu +>Oscilação & Modulação</guimenu +> </menuchoice +>) e conecte sua saída <quote +>pos</quote +> à entrada <quote +>pos</quote +> do seu Synth_WAVE_SIN. Especifique a frequência da porta do gerador FREQUENCY como um valor constante de 440. </para> + + +<para +>Selecione <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Executar estrutura</guimenuitem +></menuchoice +>. Você ouvirá uma onda senóide de 440 Hz em uma de suas caixas. Se você estiver ouvindo isto por enquanto, clique <guibutton +>OK</guibutton +> e vá para o Passo 3. </para> + +</sect2> + +<sect2 id="step-3"> +<title +>Passo 3</title> + +<para +>Ok, seria melhor se você ouvisse a onda senóide em ambas as caixas. Conecte também a porta right do Synth_PLAY ao outvalue do Synth_WAVE_SIN. </para> + +<para +>Crie um objeto Synth_SEQUENCE (a partir de <menuchoice +><guimenu +>Módulos</guimenu +> <guisubmenu +>Síntese</guisubmenu +> <guisubmenu +>Midi & Sequenciamento</guisubmenu +></menuchoice +>). Isto deve estar no topo da tela. Se você precisar de mais espaço você pode mover os outros módulos selecionando-os (para selecionar múltiplos módulos use &Shift;), e arrastando-os para baixo. </para> + +<para +>Agora conecte a saída frequency do Synth_SEQUENCE a entrada frequency do módulo Synth_FREQUENCY. Então especifique a velocidade de sequência como valor constante de 0.13 (a velocidade é a porta mais à esquerda). </para> + +<para +>Agora vá para a porta mais à direita (sequence) do Synth_SEQUENCE e digite um valor constante de <userinput +>A-3;C-4;E-4;C-4;</userinput +> que especifica uma sequência. Mais sobre isto na Referência do Módulo. </para> + +<note> +<para +>O Synth_SEQUENCE realmente <emphasis +>precisa</emphasis +> de uma sequência e velocidade. Sem isto você talvez obtenha erros no construtor. </para> +</note> + +<para +>Selecione <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Executar Estrutura</guimenuitem +></menuchoice +>. Você ouvirá uma bela sequência em execução. Se você tiver gostado do que ouviu, cliuqe <guibutton +>OK</guibutton +> e vá para o Passo 4. </para> +</sect2> + +<sect2 id="step-4"> +<title +>Passo 4</title> + +<para +>Crie um módulo Synth_PSCALE (a partir de <menuchoice +><guimenu +>Módulos</guimenu +> <guisubmenu +>Síntese</guisubmenu +> <guisubmenu +>Envelopes</guisubmenu +></menuchoice +>). Desconecte o outvalue da onda SIN dando um duplo clique e selecionando <guilabel +>não conectado</guilabel +>. Conecte </para> + +<orderedlist +><listitem> +<para +>O outvalue do SIN ao invalue do PSCALE</para> +</listitem> +<listitem> +<para +>O outvalue do PSCALE ao left do AMAN_PLAY</para> +</listitem> +<listitem> +<para +>O outvalue do PSCALE ao right do AMAN_PLAY</para> +</listitem> +<listitem> +<para +>O pos do SEQUENCE ao pos do PSCALE</para> +</listitem> +</orderedlist> + +<para +>Finalmente, configure o top do PSCALE para algum valor, por exemplo 0.1. </para> + +<para +>Como isto funciona agora: O Synth_SEQUENCE fornece informações adicionais sobre a posição da nota musical que está sendo tocada agora, enquanto 0 significa iniciada e 1 significa terminada. O módulo Synth_PSCALE escalonará o fluxo de áudio que é direcionado através dele a partir de um volume 0 (silêncio) à 1 (nível original) e de volta à 0 (silêncio). De acordo com a posição. A posição onde o pico deve ocorrer pode ser fornecida como pos. 0.1 significa que após 10% da nota ter sido tocada, o volume atinge seu máximo, e inicia a diminuir em seguida. </para> + + +<para +>Selecione <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Executar Estrutura</guimenuitem +></menuchoice +>. Você ouvirá uma agradável sequência ser executada. Se você tiver gostado do que ouviu, clique <guibutton +>OK</guibutton +> e vá para o Passo 5. </para> + +</sect2> + +<sect2 id="step-5-starting-to-beam-data-around"> +<title +>Passo 5: Começando a transmitir dados por todos os lados ;)</title> + +<para +>Inicie outro &arts-builder;</para> + +<para +>Coloque um Synth_AMAN_PLAY nele, configure-o para um nome razoável qualquer. Coloque um Synth_BUS_DOWNLINK nele e:</para> + +<orderedlist> +<listitem> +<para +>Configure o bus do Synth_BUS_DOWNLINK para áudio (que é apenas um nome, chame-o de joao se quiser) </para> +</listitem> +<listitem> +<para +>Conecte o left do Synth_BUS_DOWNLINK ao left do Synth_AMAN_PLAY </para> +</listitem> +<listitem> +<para +>Conecte o right do Synth_BUS_DOWNLINK ao right do Synth_AMAN_PLAY </para> +</listitem> +</orderedlist> + +<para +>Inicie a execução da estrutura. Como esperado, você não ouvirá nada, ... não ainda. </para> + +<para +>Retorne à estrutura com o Synth_WAVE_SIN e substitua o módulo Synth_AMAN_PLAY por um Synth_BUS_UPLINK, e configure o nome para audio (ou joao se desejar). Para excluir módulos selecione-os e escolha <menuchoice +><guimenu +>Editar</guimenu +> <guimenuitem +>excluir</guimenuitem +></menuchoice +> no menu (ou pressione a tecla <keycap +>Del</keycap +>). </para> + +<para +>Acione <menuchoice +><guimenu +>Arquivo</guimenu +> <guilabel +>Executar estrutura</guilabel +></menuchoice +>. Você ouvirá a sequência com notas escalonadas, transportadas pelo barramento. </para> + +<para +>Se você deseja saber porque algo como isto pode ser útil atualmente, clique <guibutton +>OK</guibutton +> (no &arts-builder; que estiver executando o Synth_SEQUENCE, você pode deixar o outro em execução) e vá para o Passo 6. </para> +</sect2> + +<sect2 id="step-6-beaming-for-advanced-users"> +<title +>Passo 6: Transmissão para usuários avançados</title> + +<para +>Escolha <menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Renomear estrutura</guimenuitem +></menuchoice +> no menu do artsbuilder que contém o Synth_SEQUENCE, e chame-o de tutorial. Clique <guibutton +>OK</guibutton +>. </para> + +<para +>Escolha <menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Salvar</guimenuitem +></menuchoice +> </para> + +<para +>Inicie mais outro &arts-builder; e selecione <menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Carregar</guimenuitem +></menuchoice +>, e carregue o tutorial novamente. </para> + +<para +>Agora você pode selecionar <menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Executar estrutura</guimenuitem +></menuchoice +> em ambos os &arts-builder; que possuem esta estrutura. Você agora ouvirá duas vezes a mesma coisa. Dependendo do momento em que você iniciá-lo o som será mais ou menos agradável. </para> + +<para +>Outra coisa que é bom fazer neste ponto do tempo é: iniciar o &noatun;, e tocar algum <literal role="extension" +>mp3</literal +>. Inicie o &artscontrol;. Vá para <menuchoice +><guimenu +>Ver</guimenu +><guimenuitem +>Ver gerenciador de áudio</guimenuitem +></menuchoice +>. O que você verá é a estrutura de playback do &noatun; e do seu <quote +>tutorial</quote +> tocando alguma coisa. A coisa legal que você pode fazer é isto: duplo-clique no &noatun;. Você agora obterá uma lista de todos os barramentos disponíveis. E veja? Você pode fazer com que o &noatun; envie sua saída para o barramento de áudio da estrutura de playback que seu tutorial fornece. </para> +</sect2> + +<sect2 id="step-7-midi-synthesis"> +<title +>Passo 7: Síntese de midi</title> + +<para +>Finalmente, agora você deve ser capaz de transformar sua onde senóide em um instrumento real. Isto somente faz sentido se você possui algo em mãos que possa enviar eventos &MIDI; para o &arts;. Eu descreverei aqui como você pode usar alguns teclados externos, mas um barramento midi que disponha de sequências como o &brahms; funcionará também. </para> + +<para +>Primeiramente, limpe seu ambiente de trabalho até que você tenha somente um &arts-builder; com a estrutura de onda senóide na estrutura (não executando). Então, vá três vezes para <menuchoice +><guimenu +>Portas</guimenu +><guisubmenu +>Criar sinal de áudio IN</guisubmenu +></menuchoice +>, e três vezes para <menuchoice +><guimenu +>Portas</guimenu +><guisubmenu +>Criar sinal de áudio OUT</guisubmenu +></menuchoice +>. Coloque as portas em algum lugar. </para> + +<para +>Finalmente, vá para <menuchoice +><guimenu +>Portas</guimenu +><guilabel +>Mudar posições e nomes</guilabel +></menuchoice +> e chame as portas de frequência, velocidade, pressionada, esquerda, direita, feito. </para> + +<para +>Finalmente, você pode excluir o módulo Synth_SEQUENCE, e ao invés de usar este módulo conecte a porta de entrada de frequência da estrutura à porta de frequência do Synth_FREQUENCY. Uhmm. Mas e o pos?</para +> <para +>Não não o usaremos, porque com nenhum algoritmo no mundo você pode predizer quando o usuário soltará a nota que ele pressionou no teclado midi. Logo nós ao invés disso usamos um parâmetro de pressionado que apenas indica se o usuário ainda mantém a tecla pressionada. (pressionada = 1: a tecla ainda está pressionada, pressionada = 0: a tecla foi solta) </para> + +<para +>Isto significa que o objeto Synth_PSCALE também deve ser substituído agora. Conecte-o em um Synth_ENVELOPE_ADSR no lugar (a partir de <menuchoice +><guimenu +>Módulos</guimenu +> <guisubmenu +>Síntese</guisubmenu +> <guisubmenu +>Envelopes</guisubmenu +> </menuchoice +>). Conecte: </para> + +<orderedlist> +<listitem> +<para +>O input da estrutura pressinada ao active do ADSR</para> +</listitem> +<listitem> +<para +>O outvalue do SIN ao invalue do ADSR</para> +</listitem> +<listitem> +<para +>O outvalue do ADSR ao output da estrutura esquerda</para> +</listitem +><listitem> +<para +>O outvalue do ADSR ao output da estrutura direita</para> +</listitem> +</orderedlist> + +<para +>Configure os parâmetros attack para 0.1, decay para 0.2, sustain para 0.7 e release para 0.1. </para> + +<para +>Outra coisa que nós precisamos pensar é que a estrutura de instrumento deve saber de alguma maneira quando terminou de tocar e então deve ser interrompida, porque caso contrário ela nunca irá parar mesmo se a nota for solta. Felizmente, o envelope ADSR reconhece quando não haverá mais nada para ouvir, uma vez que de qualquer jeito escala o sinal para zero em algum ponto após a nota ser solta. </para> + +<para +>Isto é indicado pela configuração do done output para 1. Logo conecte isto ao output do feito da estrutura. A estrutura será removida tão logo vá para 1. </para> + +<para +>Renomeie sua estrutura para instrumento_tutorial (a partir do <menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Renomear estrutura</guimenuitem +></menuchoice +>. Então salve-a usando o salvar como (o nome padrão oferecido agora deve ser instrumento_tutorial).</para +><para +>Inicie o artscontrol, e vá para o <menuchoice +><guimenu +>Ver</guimenu +> <guimenuitem +>Gerenciador de Midi</guimenuitem +></menuchoice +>, e escolha <menuchoice +><guimenu +>Adicionar</guimenu +><guimenuitem +>Saída de MIDI do Sintetizador aRts</guimenuitem +></menuchoice +>. Finalmente, você deve ser capaz de selecionar seu instrumento (tutorial) aqui. </para> + +<para +>Abra um terminal e digite <userinput +><command +>midisend</command +></userinput +>. Você verá que o <command +>midisend</command +> e o instrumento estão listados agora no gerenciador de &MIDI; do &arts;. Após selecionar ambos e clicar <guibutton +>conectar</guibutton +>, nós finalmente terminamos. Pegue o seu teclado e comece a tocar (é claro que ele deve estar conectado ao seu computador). </para> +</sect2> + +<sect2 id="suggestions"> +<title +>Sugestões</title> + +<para +>Você agora deve ser capaz de trabalhar com o &arts;. Aqui estão algumas dicas do que você pode tentar melhorar em suas estruturas agora: </para> + +<itemizedlist> +<listitem> +<para +>Tente usar coisas além de uma onda SIN. Quando você pluga uma onda TRI, você muito provavelmente achará que o som não é muito legal. Mas tente colocar um filtro SHELVE_CUTOFF logo após a onda TRI para cortar as frequências acima de um valor determinado (tente algo como 1000 Hz, ou mesmo duas vezes a frequência de entrada ou frequência de entrada + 200 Hz ou algo como isto). </para> +</listitem> +<listitem> +<para +>Tente usar mais de um oscilador. O Synth_XFADE pode ser usado para fazer uma transição suave (mixar) de dois sinais, e o Synth_ADD para adicioná-los. </para> +</listitem> +<listitem> +<para +>Tente configurar as frequências dos osciladores para não extamente os mesmos valores, o que fornece oscilações legais. </para> +</listitem> +<listitem> +<para +>Experimente usar mais de um envelope. </para> +</listitem> +<listitem> +<para +>Tente sintetizar instrumentos com diferentes saídas esquerda e direita. </para> +</listitem> +<listitem> +<para +>Tente pós-processar o sinal após ele sair do barramento. Você pode por exemplo misturar uma versão retardada do sinal com o original para obter um efeito de eco. </para> +</listitem> +<listitem> +<para +>Tente usar a configuração velocidade (ela é a força com a qual a nota é pressionada, você pode também dizer volume). O efeito especial é sempre quanto isto não somente modifica o volume do sinal resultante, mas também o som do instrumento (por exemlo a frequência de corte). </para> +</listitem> +<listitem> +<para +>...</para> +</listitem> +</itemizedlist> + +<para +>Se você tiver criado alguma coisa bem legal, por favor considere fornecê-la para a página web do &arts;. Ou para inclusão na próxima versão. </para> +</sect2> + +</sect1> + +<sect1 id="artsbuilder-examples"> +<title +>Exemplos</title> + +<para +>O &arts-builder; vem com diversos exemplos, que podem ser abertos através do <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Abrir Exemplo...</guimenuitem +></menuchoice +>. Alguns deles estão na pasta, outros (que por alguma razão não funcionam com a versão atual) estão à esquerda na pasta todo. </para> +<para +>Os exemplos dividem-se em diversas categorias: </para> + +<itemizedlist> +<listitem> +<para +>Exemplos por si só ilustrando como usar cada um dos módulos embutidos do arts (nomeados <filename +>example_*.arts</filename +>). Estes tipicamente enviam alguma saída para uma placa de som. </para> +</listitem> + +<listitem> +<para +>Instrumentos construídos a partir dos módulos do arts de nível mais baixo (nomeados <filename +>instrument_*.arts</filename +>). Estes seguem a convenção padrão para portas de entrada e saída de modo que eles podem ser usados com o gerenciador &MIDI; no &artscontrol;. </para> +</listitem> + +<listitem> +<para +>Modelos para criar novos módulos (nomeados <filename +>template_*.arts</filename +>). </para> +</listitem> + +<listitem> +<para +>Efeitos que pode ser usados como blocos de construção reutilizáveis (nomeados <filename +>effect_*.arts</filename +>) [ todos em todo ] </para> +</listitem> + +<listitem> +<para +>Elementos de mixagem usados para criar mixadores, incluindo controles gráficos (nomeados <filename +>mixer_element_*.arts</filename +>). [ todos em todo ] </para> +</listitem> + +<listitem> +<para +>Módulos diversos que não se enquadram em nenhuma das categorias acima. </para> +</listitem> +</itemizedlist> + +<variablelist> +<title +>Descrição Detalhada De Cada Módulo:</title> +<varlistentry> +<term +><filename +>example_stereo_beep.arts</filename +></term> +<listitem> +<para +>Gera uma tom de onda senóide de 440Hz no canal esquerdo e um tom de onda senóide de 880Hz no canal direito, e envia-os para a saída da placa de som. Isto é referenciado na documentação do &arts;. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_sine.arts</filename +></term> +<listitem> +<para +>Gera uma onda senóide de 440 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pulse.arts</filename +></term> +<listitem> +<para +>Gera uma onda em pulso de 440 Hz com um ciclo de 20%. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_softsaw.arts</filename +></term> +<listitem> +<para +>Gera uma onda em dente de serra de 440 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_square.arts</filename +></term> +<listitem> +<para +>Gera uma onda quadrada de 440 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_tri.arts</filename +></term> +<listitem> +<para +>Gera uma onda triangular de 440 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_noise.arts</filename +></term> +<listitem> +<para +>Gera um ruído branco. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_dtmf1.arts</filename +></term> +<listitem> +<para +>Gera um tom duplo pela produção de ondas senóides de 697 e 1209 Hz, escalonando-as em 0.5, e adicionando-as juntas. Este é o tom DTMF para o dígito "1" no teclado do telefone. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_atan_saturate.arts</filename +></term> +<listitem> +<para +>Executa uma onda triangular através do filtro de saturação atan. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_autopanner.arts</filename +></term> +<listitem> +<para +>Usa um auto-garimpador para garimpar uma onda senóide de 400 Hz entre as caixas esquerda e direita a uma taxa de 2 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_brickwall.arts</filename +></term> +<listitem> +<para +>Escalona uma onda senóide com um fator de 5 e então executa-a através de um limitador de parede de tijolo. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_bus.arts</filename +></term> +<listitem> +<para +>Baixa a partir de um barramento chamado <quote +>Bus</quote +> e envia para o barramento <quote +>out_soundcard</quote +> com os canais direito e esquerdo invertidos. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_cdelay.arts</filename +></term> +<listitem> +<para +>Baixa a partir de um barramento chamado <quote +>Delay</quote +>, e envia o canal direito com 0.5 segundos de cdelay, e o canal esquerdo sem mudanças. Você pode usar o &artscontrol; para conectar o efeito a um tocador de som e observar os resultados. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_delay.arts</filename +></term> +<listitem> +<para +>Este é o mesmo que <filename +>example_cdelay.arts</filename +> mas usa o efeito delay. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_capture_wav.arts</filename +></term> +<listitem> +<para +>Isto usa o Synth_CAPTURE_WAV para salvar uma onda senóide de 400 Hz como um arquivo de onda. Roda o módulo por uns poucos segundos, e então examinha o arquivo criado no <filename class="directory" +>/tmp</filename +>. Você pode tocar o arquivo com um tocador como o <application +>kaiman</application +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_data.arts</filename +></term> +<listitem> +<para +>Isto usa o módulo Data para gerar um fluxo constante de valor <quote +>3</quote +> e enviá-lo para o módulo Debug para periodicamente exibí-lo. Ele também contém um módulo Nil, ilustrando como ele pode ser usado para não fazer nada. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_adsr.arts</filename +></term> +<listitem> +<para +>Mostra como criar um simples instrumento de som usando o módulo de envelope Adsr, repetidamente disparado por uma onda quadrática. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_fm.arts</filename +></term> +<listitem> +<para +>Isto usa o módulo FM Source para gerar uma onda senóide de 440 Hz que é modulada na frequência a uma taxa de 5 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_freeverb.arts</filename +></term> +<listitem> +<para +>Isto conecta o efeito Freeverb a partir de um barramento de baixar para um barramento de enviar. Você pode usar o artscontrol para conectar o efeito para um tocador de som e observar os resultados. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_flanger.arts</filename +></term> +<listitem> +<para +>Isto implementa um efeito simples de flanger (isto parece que não está funcionando, ainda). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_moog.arts</filename +></term> +<listitem> +<para +>Esta estrutura combina os dois canais de uma barramento em um, passa-o através do filtro Moog VCF, e envia-o para o barramento out_soundcard. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pitch_shift.arts</filename +></term> +<listitem> +<para +>Esta estrutura passa os dados do canal esquerdo da placa de som através do efeito Pitch Shift. Ajusta o parâmetro de velocidade para variar o efeito. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_rc.arts</filename +></term> +<listitem> +<para +>Esta estrutura passa o gerador de ruído branco através de um filtro RC e envia-o para a placa de som. Vendo o mostrador do FFT Scope do artscontrol você pode ver como isto varia de um ruído não filtrado para a forma em onda. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_sequence.arts</filename +></term> +<listitem> +<para +>Isto demonstra o módulo Sequence tocando uma sequência de notas. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_shelve_cutoff.arts</filename +></term> +<listitem> +<para +>Esta estrutura passa um gerador de ruído branco através do filtro Shelve Cutoff e envia para a placa de som. Vendo o mostrador do FFT Scope do artscontrol você pode ver como isto varia de um ruído não filtrado para a forma em onda. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_equalizer.arts</filename +></term> +<listitem> +<para +>Isto demonstra o módulo Std_Equalizer. Ele imcrementa as frequências baixas e altas em 6 dB. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_tremolo.arts</filename +></term> +<listitem> +<para +>Isto demonstra o efeito Tremolo. Ele modula os canais esquerdo e direito usado uma vibração de 10 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_xfade.arts</filename +></term> +<listitem> +<para +>Este exemplo mixa ondas senóides de 440 e 880 Hz usando uma transição suave. Ajusta o valor da entrada percentual da transição de -1 para 1 para controlar a mixagem dos dois sinais. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pscale.arts</filename +></term> +<listitem> +<para +>Isto ilustra o módulo Pscale (eu não estou certo se isto é um exemplo significativo). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_play_wav.arts</filename +></term> +<listitem> +<para +>Isto ilustra o módulo Play Wave. Você precisará inserir o caminho completo para um arquivo <literal role="extension" +>.wav</literal +> como parâmetro filename. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>example_multi_add.arts</term> +<listitem> +<para +>Isto mostra o módulo Multi Add que aceita qualquer número de entradas. Ele soma três módulos Data que produzem entradas de 1, 2 e 3, e exibe o resultado 6. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/detail.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/detail.docbook new file mode 100644 index 00000000000..3cac13d1e46 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/detail.docbook @@ -0,0 +1,1387 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="arts-in-detail"> +<title +>O &arts; em Detalhes</title> + +<sect1 id="architecture"> +<title +>Arquitetura</title> + +<mediaobject> +<imageobject> +<imagedata fileref="arts-structure.png" format="PNG"/> +</imageobject> +<textobject +><phrase +>A estrutura do &arts;.</phrase +></textobject> +</mediaobject> +</sect1> + +<sect1 id="modules-ports"> +<title +>Módulos & Portas</title> + +<para +>A idéia do &arts; é que a sintetização pode ser feita usando pequenos módulos, que fazem somente uma coisa, e então recombiná-los em estruturas complexas. Os pequenos módulos normalmente possuem portas de entrada, onde eles podem obter alguns sinais ou parâmetros, e portas de saídas, onde eles produzem alguns sinais. </para> + +<para +>Um módulo (Synth_ADD) por exemplo simplesmente pegam dois sinais em sua entrada e adiciona-os juntos. O resultado é disponibilizado no sinal de saída. Os locais onde os módulos fornecem seus sinais de entrada/saída são chamados portas. </para> + +</sect1> + +<sect1 id="structures"> +<title +>Estruturas</title> + +<para +>Uma estrutura é uma combinação de módulos conectados, alguns dos quais podem possuir parâmetros codificados diretamente em suas portas de entrada, outros que podem ser conectados, e outros que não são conectados de nenhuma maneira. </para> + +<para +>O que você pode fazer com o &arts-builder; é descrever estruturas. Você descreve quais módulos deseja conectar com outros módulos. Quando tiver terminado, você pode salvar a descrição da estrutura para um arquivo, ou dizer ao &arts; para criar uma estrutura que você descreveu (Executar). </para> + +<para +>Então, provavelmente você ouvirá algum som, se você fez tudo da maneira certa. </para> +</sect1> + +<!-- TODO + +<sect1 id="streams"> +<title +>Streams</title> + +</sect1> + +--> + +<sect1 id="latency"> +<title +>Latência</title> + +<sect2 id="what-islatency"> +<title +>O que é latência?</title> + +<para +>Suponhamos que você tenha um aplicativo chamado <quote +>mousepling</quote +> (que deve fazer um som <quote +>pling</quote +> se você clicar um botão). A latência é o tempo entre seu dedo clicar o botão do mouse e você ouvir o pling. A latência nesta configuração é composta ela mesma de determinadas latências, que possuem diferentes causas. </para> + +</sect2> + +<sect2 id="latenbcy-simple"> +<title +>Latência em Aplicativos Simples</title> + +<para +>Neste aplicativo simples, a latência ocorre neste locais: </para> + +<itemizedlist> + +<listitem> +<para +>O tempo até o kernel notificar o servidor X11 que o botão do mouse foi pressionado. </para> +</listitem> + +<listitem> +<para +>O tempo até o servidor X11 notificar seu aplicativo que o botão do mouse foi pressionado. </para> +</listitem> + +<listitem> +<para +>O tempo até o aplicativo mousepling decidir que este é o botão certo para tocar um pling. </para> +</listitem> + +<listitem> +<para +>O tempo que leva o aplicativo mousepling para dizer ao servidor de som que deve ser tocado um pling. </para> +</listitem> + +<listitem> +<para +>O tempo que leva para o pling (que o servidor de som inicia misturando a outra saída que está ocorrendo) para sair dos dados em buffer, até ele realmente chegar na posição onde a placa de som irá tocar. </para> +</listitem> + +<listitem> +<para +>O tempo que leva para o som pling para sair das caixas de som e chegar em seu ouvido. </para> +</listitem> +</itemizedlist> + +<para +>Os primeiros três ítens são latências externas ao &arts;. Eles são interessantes, mas além do escopo deste documento. No entanto esteja alerta que eles existem, logo mesmo que você tenha otimizado tudo para valores realmente baixos, você não necessariamente obterá exatamente o resultado que você calculou. </para> + +<para +>Dizer ao servidor para tocar alguma coisa envolve normalmente uma chamada &MCOP; simples. Existem medidores de performance que confirmam que, em uma mesma máquina com soquetes unix, dizer para o servidor tocar alguma coisa pode ser feito cerca de 9000 vezes em um segunto com a implementação atual. Eu espero que a maioria do tempo gasto seja responsabilidade do kernel, alternando de um aplicativo para outro. É claro que este valor muda de acordo com o tipo exato de parâmetros. Se você transferir uma imagem inteira com uma chamada, isto será mais lento do que se você transferir somente um valor longo. Para o código de retorno o mesmo é verdadeiro. No entanto para strings ordinários (como o nome do arquivo <literal role="extension" +>wav</literal +> a ser tocado) isto não deve ser problema. </para> + +<para +>Em suma, nós podemos aproximar este tempo de 1/9000 seg, que é abaixo de 0,15 ms. Nós veremos que isto não é relevante. </para> + +<para +>A seguir é o tempo entre o servidor iniciar a tocar e a placa de som receber algum som. O servidor necessita realizar um armazenamento em buffer, de modo que outros aplicativos que estiverem rodando, como o seu servidor X11 ou o aplicativo <quote +>mousepling</quote +>, não causem falhas no som que você vai ouvir. A maneira como isto é feito no &Linux; é que existem um determinado número de fragmentos de um tamanho. O servidor recarregará os fragmentos, e a placa de som tocará os fragmentos. </para> + +<para +>Vamos supor que existem três fragmentos. O servidor carrega o primeiro, a placa de som inicia a tocá-lo. O servidor carrega o segundo. O servidor carrega o terceiro. O servidor terminou, outros aplicativos podem fazer algo agora. </para> + +<para +>Quando a placa de som terminar o primeiro fragmento, ela inicia a tocar o segundo e o servidor inicia o carregamento do próximo. E assim por diante. </para> + +<para +>A latência máxima que você obtém com tudo isto é (número de fragmentos)*(tamanho de cada fragmento)/(taxadaamostra * (tamanho de cada amostra)). Suponhamos que nós usamos uma taxa de amostra de 44kHz estéreo, e 7 fragmentos de 1024 bytes (os padrões atuais do aRts), nós obteremos 40 ms. </para> + +<para +>Estes valores podem ser ajustados de acordo com suas necessidades. No entanto, o uso da <acronym +>CPU</acronym +> aumenta com latências menores, uma vez que o servidor de som precissa carregar o buffer mais frequentemente, e em pequenas partes. É também muito difícil obter melhores valores sem fornecer ao servidor de som prioridade em tempo real, caso contrário você frequentemente obterá sons falhados. </para> + +<para +>No entanto, é realístico fazer algo como 3 fragmentos com 256 bytes cada, que tornarão este valor 4,4 ms. Com 4,4 ms de retardo o uso da <acronym +>CPU</acronym +> disponível do &arts; deve ser de cerca de 7,5%. Com 40 ms de retardo, ele deverá ser de cerca de 3% (de um PII-350, e este valor pode depender de sua placa de som, versão do kernel e outros). </para> + +<para +>Então existe o tempo que leva para o som pling percorrer a distância entra a caixa de som e seu ouvido. Suponhamos que sua distância das caixas seja de 2 metros. O som atravessa o ar na velocidade de 300 metros por segundo. Assim nós poderemos aproximar este tempo em 6 ms. </para> + +</sect2> + +<sect2 id="latency-streaming"> +<title +>Latência em Aplicativos de Fluxo</title> + +<para +>Aplicativos de fluxo são aqueles que produzem seu som eles próprios. Consideremos um jogo, que gera um fluxo constante de sons, e devem agora ser adaptados para tocar coisas através do &arts;. Para ter um exemplo: quando eu pressiono uma tecla, o personagem do jogo que eu estou controlando salta, e um som de boing é tocado. </para> + +<para +>Antes de tudo, você precisa saber como o &arts; controla fluxos. É bem semelhante à entrada e saída da placa de som. O jogo envia alguns pacotes com trechos para o servidor de som. Digamos três pacotes. Assim que o servidor estiver recebido o primeiro pacote, ele envia uma confirmação para o jogo que este pacote foi recebido. </para> + +<para +>O jogo cria outro pacote de som e envia-o para o servidor. Então o servidor inicia o recebimento do segundo pacote de som, e assim por diante. A latência aqui parece semelhante ao caso simples: </para> + +<itemizedlist> +<listitem> +<para +>O tempo até o kernel notificar o servidor X11 que uma tecla foi pressionada. </para> +</listitem> + +<listitem> +<para +>O tempo até o servidor X11 notificar o jogo que uma tecla foi pressionada. </para> +</listitem> + +<listitem> +<para +>O tempo até o jogo decidir que esta tecla é a que deve ser tocado um boing. </para> +</listitem> + +<listitem> +<para +>O tempo até o pacote de som no qual o jogo iniciou a colocar o som boing chega ao servidor de som. </para> +</listitem> + +<listitem> +<para +>O tempo que leva para o boing (que o servidor de som inicia misturando a outra saída que está ocorrendo) para sair dos dados em buffer, até ele realmente chegar na posição onde a placa de som irá tocar. </para> +</listitem> + +<listitem> +<para +>O tempo que leva para o som boing para sair das caixas de som e chegar em seu ouvido. </para> +</listitem> + +</itemizedlist> + +<para +>As latências externas, como acima, estão fora do escopo deste documento. </para> + +<para +>Obviamente, a latência do fluxo depende do tempo que leva para todos os pacotes que serão usados para o fluxo seja tocados. Logo isto é (número de pacotes)*(tamanho de cada pacote)/(taxadeamostra * (tamanho de cada amostra)) </para> + +<para +>Como pode ver é a mesma fórmula que se aplica aos fragmentos. No entanto para jogos, não faz sentido criar pequenos retardos como acima. Eu diria que uma configuração realística para jogos deve ser 2048 bytes por pacote, usando 3 pacotes. A latência resultante será de 35ms. </para> + +<para +>Isto é baseado no seguinte: assumimos que o jogo renderiza 25 quadros por segundo (para a tela). É provavelmente seguro considerar que você não perceberá uma diferença de saída de som de um quadro. Assim o retardo de 1/25 segundos para o fluxo é aceitável, o que significa que 40ms deve ser satisfatório. </para> + +<para +>A maioria das pessoas também não executam seus jogos com prioridade de tempo real, e o perigo de falhas no som não deve ser negligenciado. Fluxos com 3 pacotes de 256 bytes é possível (eu tentei isto) mas causa muito uso da <acronym +>CPU</acronym +> para fluxo. </para> + +<para +>Para latências no lado servidor, você pode calcular exatamente como acima. </para> + +</sect2> + +<sect2 id="cpu-usage"> +<title +>Algumas considerações sobre uso da <acronym +>CPU</acronym +></title> + +<para +>Existem muitos fatores que influenciam o uso da <acronym +>CPU</acronym +> em um cenário complexo, com alguns aplicativos de fluxo e alguns outros, como plugins no servidor, etc. Para nomear alguns: </para> + +<itemizedlist> +<listitem> +<para +>Uso bruto da <acronym +>CPU</acronym +> por cálculos necessários. </para> +</listitem> + +<listitem> +<para +>Gastos com agendamento interno do &arts; - como o &arts; decide quando e qual módulo deve calcular o quê. </para> +</listitem> + +<listitem> +<para +>Gastos para conversão de inteiro para flutuante. </para> +</listitem> + +<listitem> +<para +>Gastos do protocolo &MCOP;. </para> +</listitem> + +<listitem> +<para +>Kernel: alternar processo/contexto. </para> +</listitem> + +<listitem> +<para +>Kernel: gastos com comunicação. </para> +</listitem> +</itemizedlist> + +<para +>Para uso bruto da <acronym +>CPU</acronym +> para cálculos, se você toca dois fluxos simultaneamente, você precisa fazer adições. Se você aplica um filtro, alguns cálculos são envolvidos. Para ter um exemplo simplificado, adicionar dois fluxos envolve talvez quatro ciclos de <acronym +>CPU</acronym +> por adição; em um processador de 350Mhz, isto é 44100*2*4/350000000 = 0,1% de uso da <acronym +>CPU</acronym +>. </para> + +<para +>O agendamento interno do &arts;: o &arts; necessita decidir qual plugins calcula o quê quando. Isto leva tempo. Pegue um perfil se estiver interessado nele. Geralmente o que pode ser dito é: quanto menor tempo real que você executa (&ie; os maiores blocos que podem ser calculados na hora) menor gasto com agendamento você tem. Calcular blocos com amostras acima de 128 na hora (como usar tamanhos de fragmentos de 512 bytes) o gasto com agendamento provavelmente não será algo a se considerar. </para> + +<para +>Gastos com conversão de inteiro para flutuante: o &arts; usa internamente números flutuantes como formato de dados. Eles são fáceis de manipular e nos processadores recentes não são mais lentos que operações com inteiros. No entanto, se existirem cliente que trocam dados que não são flutuantes (como um jogo que deve fazer sua saída de som através do &arts;), eles necessitam ser convertidos. O mesmo se aplica se você deseja repetir sons em sua placa de som. A placa de som precisa de inteiros, logo você precisa converter. </para> + +<para +>Aqui estão os números para um Celeron, aproximadamente tiques por amostra, com -O2 +egcs 2.91.66 (obtidos por Eugen Smith <email +>hamster@null.ru</email +>). Isto é obviamente altamente dependente do processador: </para> + +<programlisting +>convert_mono_8_float: 14 +convert_stereo_i8_2float: 28 +convert_mono_16le_float: 40 +interpolate_mono_16le_float: 200 +convert_stereo_i16le_2float: 80 +convert_mono_float_16le: 80 +</programlisting> + +<para +>Isto significa um uso de 1% da <acronym +>CPU</acronym +> para conversão e 5% para interpolação em um processador de 350 MHz. </para> + +<para +>Gastos com o protocolo &MCOP;: o &MCOP; faz, via de regra, 9000 invocações por segundo. Muito disto não é culpa do &MCOP;, mas relacionam-se com duas causas de kernel nomeadas abaixo. No entanto, isto fornece uma base para realizar cálculos do custo do fluxo. </para> + +<para +>Cada pacote de dados transferido do fluxo pode ser considerado uma invocação do &MCOP;. É claro que grandes pacotes são mais lentos que 9000 pacotes/s, mas isto é apenas uma idéia. </para> + +<para +>Suponhamos que você use tamanhos de pacotes de 1024 bytes. Assim, para transferir um fluxo com 44kHz estéreo, você precisa transferir 44100*4/1024 = 172 pacotes por segundo. Suponhamos que você possa com 100% de uso da CPU transferir 9000 pacotes, então você obtém (172*100)/9000 = 2% de uso da <acronym +>CPU</acronym +> para realizar o fluxo com pacotes de 1024 bytes. </para> + +<para +>Isto é uma aproximação. No entanto, elas mostram que você terá um desempenho melhor (se você puder ter recursos para a latência), usando por exemplo pacotes de 4096 bytes. Nós podemos criar uma fórmula compacta aqui, calculando o tamanho do pacote que causa 100% de uso da <acronym +>CPU</acronym +> como 44100*4/9000 = 19,6 de amostra, e assim obter uma fórmula rápida: </para> + +<para +>uso da <acronym +>CPU</acronym +> para fluxo em percentual = 1960/(seu tamanho de pacote) </para> + +<para +>o que fornece-nos um uso da <acronym +>CPU</acronym +> de 0,5% quando enviando fluxo com pacotes de 4096 bytes. </para> + +<para +>Alternação de processo/contexto do kernel: isto é parte do gasto do protocolo &MCOP;. Alternar entre dois processos leva tempo. Existe o mapeamento de novas posições de memória, o inválidação do cache, ou outro motivo qualquer (se existir um perito em kernel lendo isto - diga-me quais são as causas exatamente). Ou seja: isto leva tempo. </para> + +<para +>Em não estou certo de quantas alternações de contexto o &Linux; pode realizar por segundo, mas este número não é infinito. Assim, eu suponho que a sobrecarga do protocolo &MCOP; seja um pouco devido a alternação de contexto. No início do &MCOP;, eu fiz testes para usar a mesma comunicação dentro de um processo, e isto foi bem mais rápido (quatro vezes mais rápido ou mais). </para> + +<para +>Kernel: gastos de comunicação: Isto é parte do gasto do protocolo &MCOP;. Transferir dados entre processos é atualmente feito através de soquetes. Isto é conveniente, uma vez que métodos select() comuns podem ser usados para determinar quando uma mensagem chegou. Isto pode também ser facilmente combinado com outras fontes de E/S (entrada/saída) como E/S de áudio, servidor X11 ou qualquer outra fonte. </para> + +<para +>No entanto, estas chamadas de leitura e escrita certamente custam ciclos do processador. Para pequenas invocações (como na transferência de um evento midi) isto não é provavelmente tão ruim, mas para grandes invocações (como a transferência de vídeos com diversos megabytes) isto é claramente um problema. </para> + +<para +>Adicionar o uso da memória compartilhada para o &MCOP; onde for apropriado é provavelmente a melhor solução. No entanto, isto deve ser faito de maneira transparente para o programador do aplicativo. </para> + +<para +>Pegue um perfil ou faça outros testes para descobrir o quão exatamente o fluxo de áudio atual é impactado pelo não uso da memória compartilhada. No entanto, não é tão ruim, uma vez que o fluxo de áudio (tocando um mp3) pode ser feito com um uso total de 6% da <acronym +>CPU</acronym +> pelo &artsd; e <application +>artscat</application +> (e 5% pelo decodificador mp3). No entanto, isto inclui tudo desde os cálculos necessários até os gastos do soquete, assim eu diria que nesta configuração você pode pelo menos economizar 1% usando memória compartilhada. </para> + +</sect2> + +<sect2 id="hard-numbers"> +<title +>Alguns Números Brutos</title> + +<para +>Estes números foram feitos com a versão de desenvolvimento atual. Eu gostaria também de experimentar alguns casos reais, assim isto não é o que os aplicativos do dia a dia devem usar. </para> + +<para +>Eu escrevi um aplicativo chamado streamsound que envia dados em fluxo para o &arts;. Aqui ele está rodando com prioridade de tempo real (sem problemas), e um pequeno plugin do lado servidor (escalonamento de volume e clipping): </para> + +<programlisting +>4974 stefan 20 0 2360 2360 1784 S 0 17.7 1.8 0:21 artsd + 5016 stefan 20 0 2208 2208 1684 S 0 7.2 1.7 0:02 streamsound + 5002 stefan 20 0 2208 2208 1684 S 0 6.8 1.7 0:07 streamsound + 4997 stefan 20 0 2208 2208 1684 S 0 6.6 1.7 0:07 streamsound +</programlisting> + +<para +>Cada um deles está enviando fluxo com 3 fragmentos de 1024 bytes (18 ms). Existes três clientes diferentes rodando simultaneamente. Eu sei que isto parece um pouco demais, mas como eu disse: pegue um perfil e descubra qual o custo do tempo, e se gostar, melhore-o. </para> + +<para +>No entanto, eu não pensei em usar fluxos que sejam realísticos ou façam sentido. Para tomar isto mais extremo, eu experimentei o que aconteceria com a mais baixa latência possível. Resultado: você pode fazer um fluxo sem interrupções com um aplicativo cliente, se você usar 2 fragmentos de 128 bytes entre o aRts e a placa de som, e entre o aplicativo cliente e o aRts. Isto significa que você tem uma latência máxima total de 128*4/44100*4 = 3ms, onde 1,5 ms é gerado devido a E/S da placa de some e 1,5 ms é gerado pela comunicação com o &arts;. Ambos os aplicativos precisam rodar em tempo real. </para> + +<para +>Mas: isto custo uma grande quantidade de <acronym +>CPU</acronym +>. Este exemplo custou cerca de 45% do meu P-II/350. Eu também começaria a ter problemas, se você iniciasse outro aplicativo, movesse janelas na sua tela do X11 ou realizasse acessos de E/S ao disco. Tudo isso são custos do kernel. O problema é que o agendamento de dois ou mais aplicativos com prioridade de tempo real custa uma enorme quantidade de esforço, também, ainda mais se eles se comunicam, notificam outros aplicativos, &etc;. </para> + +<para +>Finalmente, um exemplo da vida real. Um &arts; com o artsd e um artscat (um cliente de fluxo) rodando 16 fragmentos de 4096 bytes: </para> + +<programlisting +>5548 stefan 12 0 2364 2364 1752 R 0 4.9 1.8 0:03 artsd + 5554 stefan 3 0 752 752 572 R 0 0.7 0.5 0:00 top + 5550 stefan 2 0 2280 2280 1696 S 0 0.5 1.7 0:00 artscat +</programlisting> + +</sect2> +</sect1> + +<!-- TODO + +<sect1 id="dynamic-instantiation"> +<title +>Dynamic Instantiation</title> + +</sect1> + +--> + +<sect1 id="busses"> +<title +>Barramentos</title> + +<para +>Barramentos são conexões construídas dinamicamente que transferem áudio. Basicamente, existems alguns uplinks e alguns downlinks. Todos os sinais a partir dos uplinks são adicionados e enviados para os downlinks. </para> + +<para +>Barramentos como os atualmente implementados operam em estéreo, logo você somente pode transferir dados estéreo pelos barramentos. Se você deseja usar dados monos, bem, transfira-os somente em um canal e configure o outro para zero ou outro valor. O que você precisa fazer é criar um ou mais objetos Synth_BUS_UPLINK e dar-lhes um nome de barramento, para o qual eles devem falar (⪚ <quote +>audio</quote +> ou <quote +>bateria</quote +>). Simplesmente atravesse dados por eles. </para> + +<para +>Então, você precisará criar um ou mais objetos Synth_BUS_DOWNLINK, e dizer-lhes o nome do barramento (<quote +>audio</quote +> ou <quote +>bateria</quote +> ... se ele corresponder, os dados serão obtidos através dele), e os dados misturados serão expelidos novamente. </para> + +<para +>Os uplinks e downlinks pode residir em estruturas diferentes.Você pode ter uma estrutura em um &arts-builder; diferente rodando e iniciando um uplink e receber dados de outro com um downlink. </para> + +<para +>O que é legal a respeito dos barramentos é que eles são totalmente dinâmicos. Clientes podem conectar-se às saídas e entradas em tempo de execução. E não ocorre nenhuma interferência ou ruído quando isto acontece. </para> + +<para +>É claro, você não deve conectar a saída a um cliente tocando um sinal, uma vez que provavelmente ele não deve estar com seu nível no zero ao pludar-se ao barramento, e então ele irá gerar um ruído. </para> +</sect1> + +<!-- TODO +<sect1 id="network-ransparency"> +<title +>Network Transparency</title> + +</sect1> + +<sect1 id="security"> +<title +>Security</title> + +</sect1> + + +<sect1 id="effects"> +<title +>Effects and Effect Stacks</title> + +</sect1> + +--> +<sect1 id="trader"> +<title +>Comerciante</title> + +<para +>O &arts;/&MCOP; se sustentam pesadamente na divisão das coisas em pequenos componentes. Isto torna as coisas mais flexíveis, de modo que você possa extender o sistema facilmente adicionando novos componentes, que implementam novos efeitos, formatos de arquivos, osciladores, elementos GUI, ... Como quase tudo é um componente, quase tudo pode ser extendido facilmente, sem mudar os códigos fonte existentes. Novos componentes pode ser simplesmente carregados dinamicamente para incrementar aplicativos já existentes. </para> + +<para +>No entanto, para fazer este trabalho, duas coisas são necessárias: </para> + +<itemizedlist> + +<listitem> +<para +>Componentes deve anunciar-se a si próprios - eles deve descrever que grandes coisas eles oferecem, de modo que os aplicativos sejam capazes de usá-los. </para> +</listitem> + +<listitem> +<para +>Aplicativos devem ativamente porcurar por componentes que eles podem usar, ao invés de usar sempre a mesma coisa para alguma tarefa. </para> +</listitem> + +</itemizedlist> + +<para +>A combinação disto: componentes que dizem <quote +>eu estou aqui, eu sou legal, use-me</quote +>, e aplicativos (ou se você desejar, outros componentes) que saem e procuram quais componentes eles podem usar para realizar alguma coisa, é chamada de comércio. </para> + +<para +>Os componentes &arts; descrevem a si mesmos especificando valores que eles <quote +>suportam</quote +> para propriedades. Uma propriedade típica para um componente de carregamento de arquivo pode ser a extensão dos arquivos que ele pode processar. Valores típicos podem ser <literal role="extension" +>wav</literal +>, <literal role="extension" +>aiff</literal +> ou <literal role="extension" +>mp3</literal +>. </para> + +<para +>De fato, cada componente pode optar por oferecer muitos valores diferentes para uma propriedade. Assim um componente simples pode oferecer leitura tanto para o <literal role="extension" +>wav</literal +> como para arquivos <literal role="extension" +>aiff</literal +>, especificando que ele suporta estes valores para a propriedade <quote +>Extension</quote +>. </para> + +<para +>Para fazer isso, um componente deve colocar um arquivo <literal role="extension" +>.mcopclass</literal +> no local apropriado, contendo as propriedades que ele suporta, para nosso exemplo, ele pode se parecer com isto (e deve ser instalado em <filename +><replaceable +>diretoriocomponente</replaceable +>/Arts/WavPlayObject.mcopclass</filename +>): </para> + +<programlisting +>Interface=Arts::WavPlayObject,Arts::PlayObject,Arts::SynthModule,Arts::Object +Author="Stefan Westerfeld <stefan@space.twc.de>" +URL="http://www.arts-project.org" +Extension=wav,aiff +MimeType=audio/x-wav,audio/x-aiff +</programlisting> + +<para +>É importante que o nome do arquivo <literal role="extension" +>.mcopclass</literal +> também informe como a interface do componente é chamada. O comerciante não procura por conteúdo em tudo, se o arquivo (como o daqui) é chamado <filename +>Arts/WavPlayObject.mcopclass</filename +>, a interface do componente é chamada <interfacename +>Arts::WavPlayObject</interfacename +> (módulos mapeam para pastas). </para> + +<para +>Para procurar por componentes, existem duas interfaces (que estão definidas no <filename +>core.idl</filename +>, logo você deve possuí-las em cada aplicativo), chamadas <interfacename +>Arts::TraderQuery</interfacename +> e <interfacename +>Arts::TradeOffer</interfacename +>. Para você ir <quote +>às compras</quote +> de componentes como este: </para> + +<orderedlist> +<listitem> +<para +>Crie um objeto de consulta: </para> +<programlisting +>Arts::TraderQuery query; +</programlisting> +</listitem> + +<listitem> +<para +>Especifique o que deseja. Como você viu acima, os componentes descrevem a si mesmos usando propriedades, para as quais eles oferecem determinados valores. Assim a especificação do que você deseja é feita selecionando componentes que suportam um determinado valor para um propriedade. Isto é feito usando o método supports de um TraderQuery: </para> + +<programlisting +>query.supports("Interface","Arts::PlayObject"); + query.supports("Extension","wav"); +</programlisting> +</listitem> + +<listitem> +<para +>Finalmente, realize a consulta usando o método query. Então, você (com um pouco de sorte) obterá algumas ofertas: </para> + +<programlisting +>vector<Arts::TraderOffer> *offers = query.query(); +</programlisting> +</listitem> + +<listitem> +<para +>Agora você pode examinar o que encontrou. O importante é o método interfaceName do TradeOffer, que lhe dirá o nome do componente, que corresponde à consulta. Você pode também encontrar as propriedades pelo getProperty. O seguinte código simplesmente interagirá com todos os componentes, imprimirá seus nomes de interface (que podem ser usados para criação), e escluirá os resultados da consulta posteriormente: </para> +<programlisting +>vector<Arts::TraderOffer>::iterator i; + for(i = offers->begin(); i != offers->end(); i++) + cout << i->interfaceName() << endl; + delete offers; +</programlisting> +</listitem> +</orderedlist> + +<para +>Para este tipo de serviço de comércio ser útil, é importante que algum modo exista um acordo sobre quais tipos de propriedades os componentes devem normalmente definir. É essencial que mais ou menos todos os componentes em uma determinada área use o mesmo conjunto de propriedades para descreverem a si mesmos (e o mesmo conjunto de valores onde aplicável), de modo que os aplicativos (ou outros componentes) sejam capazes de encontrá-los. </para> + +<para +>Author (tipo string, opcional): Isto pode ser usada para em última instância fazer com que o mundo saiba que você escreveu algo. Você pode escrever qualquer coisa que desejar aqui, sendo que um endereço eletrônico é logicamente útil. </para> + +<para +>Buildable (tipo booleano, recomendado): Isto indica se o componente é utilizável com ferramentas <acronym +>RAD</acronym +> (como o &arts-builder;) que usa componentes atribuindo propriedades e conectando portas. É recomendado configura este valor para verdadeiro para a maioria dos componentes de processamento de sinal (como filtros, efeitos, osciladores, ...) e para todas as outras coisas que podem ser usadas em <acronym +>RAD</acronym +> como forma, mas não para material interno como por exemplo o <interfacename +>Arts::InterfaceRepo</interfacename +>. </para> + +<para +>Extension (tipo string, usado quando relevante): Tudo relacionado com os arquivos deve considerar usar isto. Você deve colocar a versão em caixa baixa da extensão do arquivo sem o <quote +>.</quote +> aqui, assim algo como <userinput +>wav</userinput +> deve ser o suficiente. </para> + +<para +>Interface (tipo string, necessário): Isto deve incluir a lista completa das interfaces (úteis) que seu componente suporta, provavelmente incluindo a <interfacename +>Arts::Object</interfacename +> e se aplicável a <interfacename +>Arts::SynthModule</interfacename +>. </para> + +<para +>Language (tipo string, recomendado): Se você deseja que seu componente seja carregado dinamicamente, você precisa especificar a linguagem aqui. Atualmente, o único valor permitido é <userinput +>C++</userinput +> o que significa que o componente foi escrito com a <acronym +>API</acronym +> normal do C++. Se você fizer isso, você também precisará configurar a propriedade <quote +>Library</quote +> abaixo. </para> + +<para +>Library (tipo string, usado quando relevante): Componentes escritos em C++ podem ser carregados dinamicamente. Para fazer isso, você deve compilá-los em uma biblioteca carregada dinamicamente pelo módulo libtool (<literal role="extension" +>.la</literal +>). Aqui você pode especificar o nome do arquivo <literal role="extension" +>.la</literal +> que contém seu componente. Lembre de usar REGISTRO_IMPLEMENTAÇÃO (como sempre). </para> + +<para +>MimeType (tipo string, usado quando relevante): Tudo que lida com arquivos deve considerar usar isto. Você deve colocar a versão em caixa baixa do tipo mime padrão aqui, por exemplo <userinput +>audio/x-wav</userinput +>. </para> + +<para +>&URL; (tipo string, opcional): Se você deseja que as pessoas saibam onde elas podem encontrar uma nova versão do componente (ou uma página web ou qualquer coisa), você pode fazer isto aqui. Isto deve ser uma &URL; padrão &HTTP; ou &FTP;. </para> + +</sect1> + +<!-- TODO +<sect1 id="midi-synthesis"> +<title +><acronym +>MIDI</acronym +> Synthesis</title> + +</sect1> + +<sect1 id="instruments"> +<title +>Instruments</title> + +</sect1> + +<sect1 id="session-management"> +<title +>Session Management</title> + +</sect1> + +<sect1 id="full-duplex"> +<title +>Full duplex Audio</title> + +</sect1> +--> + +<sect1 id="namespaces"> +<title +>Espaço de nomes no &arts;</title> + +<sect2 id="namespaces-intro"> +<title +>Introdução</title> + +<para +>Cada declaração de espaço de nomes corresponde a uma declaração de <quote +>módulo</quote +> no &IDL; do &MCOP;. </para> + +<programlisting +>// mcop idl + +module M { + interface A + { + } +}; + +interface B; +</programlisting> + +<para +>Neste caso, o código gerado em C++ para o fragmento &IDL; deve se parecer com isto: </para> + +<programlisting +>// cabeçalho C++ + +namespace M { + /* declaração de A_base/A_skel/A_stub e similar*/ + class A { // Classe de referência Smartwrapped + /* [...] */ + }; +} + +/* declaração de B_base/B_skel/B_stub e similar */ +class B { + /* [...] */ +}; +</programlisting> + +<para +>Assim quando referenciando as classes a partir do exemplo acima em seu código C++, você deverá escrever <classname +>M::A</classname +>, mas somente B. No entanto, você pode é claro usar <quote +>using M</quote +> em algum lugar como qualquer espaço de nomes em C++. </para> + +</sect2> + +<sect2 id="namespaces-how"> +<title +>Como o &arts; usa o espaço de nomes</title> + +<para +>Existe um espaço de nomes global chamado <quote +>Arts</quote +>, que todos os programas e bibliotecas que se baseiam no próprio &arts; usam para colocar suas declarações. Isto significa que ao escrever código C++ que depende do &arts;, você normalmente deve prefixar cada classe que usar com <classname +>Arts::</classname +>, como a seguir: </para> + +<programlisting +>int main(int argc, char **argv) +{ + Arts::Dispatcher dispatcher; + Arts::SimpleSoundServer server(Arts::Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/somefile.wav"); +</programlisting> + +<para +>A outra alternativa é escrever usando uma vez, como isto: </para> + +<programlisting +>using namespace Arts; + +int main(int argc, char **argv) +{ + Dispatcher dispatcher; + SimpleSoundServer server(Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/somefile.wav"); + [...] +</programlisting> + +<para +>Em arquivos &IDL;, você não tem exatamente uma opção. Se você está escrevendo código que se baseia no &arts; propriamente dito, você terá que colocá-lo em módulos do &arts;. </para> + +<programlisting +>// Arquivo IDL para código aRts: +#include <artsflow.idl> +module Arts { // coloque-o no espaço de nome Arts + interface Synth_TWEAK : SynthModule + { + in audio stream invalue; + out audio stream outvalue; + attribute float tweakFactor; + }; +}; +</programlisting> + +<para +>Se você escrever código que não se baseia no próprio &arts;, você não deve colocá-lo no espaço de nomes <quote +>Arts</quote +>. No entanto, você pode criar seu próprio espaço de nomes se desejar. De qualquer maneira, você terá que prefixas classes que você usa do &arts;. </para> + +<programlisting +>// Arquivo IDL para código que não se baseia no aRts: +#include <artsflow.idl> + +// escrever sem declaração de módulo, e então as classes geradas +// não usarão um espaço de nomes: +interface Synth_TWEAK2 : Arts::SynthModule +{ + in audio stream invalue; + out audio stream outvalue; + attribute float tweakFactor; +}; + +// no entando, você pode também escolher seu próprio espaço de nomes, se dejar, se você +// escrever um aplicativo "PowerRadio", você pode por exemplo fazer algo como isto: +module PowerRadio { + struct Station { + string name; + float frequency; + }; + + interface Tuner : Arts::SynthModule { + attribute Station station; // no need to prefix Station, same module + out audio stream left, right; + }; +}; +</programlisting> + +</sect2> + +<sect2 id="namespaces-implementation"> +<title +>Mecanismos internos: Como a Implementação Funciona</title> + +<para +>Frequentemente, nas interfaces, moldes, assinaturas de método e similares, o &MCOP; precisa referenciar nomes de tipos de interfaces. Eles são representados como string nas estruturas de dados comuns do &MCOP;, enquanto o espaço de nomes é sempre representado completamente no estilo C++. Isto significa que os strings devem conter <quote +>M::A</quote +> e <quote +>B</quote +>, seguindo os exemplos acima. </para> + +<para +>Observe que isto se aplica mesmo se dentro do texto &IDL; os qualificadores de espaço de nomes não forem fornecidos, uma vez que o contexto torna claro qual espaço de nomes a interface <interfacename +>A</interfacename +> esta usando. </para> + +</sect2> +</sect1> + +<sect1 id="threads"> +<title +>Linhas de execução no &arts;</title> + +<sect2 id="threads-basics"> +<title +>Fundamentos</title> + +<para +>Usar linhas de execução não é possível em todas as plataformas. Isto é porque o &arts; foi originalmente escrito sem usar nenhum tipo de linha de execução. Para quase todos os problemas, para cada solução em linha de execução do problema, existe uma solução que não usa as linhas de execução e que faz a mesma coisa. </para> + +<para +>Por exemplo, ao invés de colocar a saída de áudia em uma linha de execução separada, e torná-la em bloco, o &arts; usa saída de áudio sem estar em blocos, e decide quando escrever o próximo fragmento de dados usando o <function +>select()</function +>. </para> + +<para +>No entanto, o &arts; (nas versões mais recentes) fornece ao menos suporte para pessoas que desejam implementar seus objetos usando linhas de execução. Por exemplo, se você já tiver um código para um tocador <literal role="extension" +>mp3</literal +>, e o código espera que o decodificador <literal role="extension" +>mp3</literal +> se execute em uma linha de execução separada, isto é normalmente a coisa mais fácil para manter este desenho. </para> + +<para +>A implementação do &arts;/&MCOP; foi construída compartilhando o estado entre objetos separados de uma maneira óbvia e não-óbvia. Uma pequena lista de estados compartilhados inclui: </para> + +<itemizedlist> +<listitem +><para +>O objeto Dispatcher que faz a comunicação &MCOP;. </para> +</listitem> + +<listitem> +<para +>O contador Reference (Smartwrappers). </para> +</listitem> + +<listitem> +<para +>O IOManager que faz um temporizador e relógios fd. </para> +</listitem> + +<listitem> +<para +>O ObjectManager que cria objetos e carrega plugins dinamicamente. </para> +</listitem> + +<listitem> +<para +>O FlowSystem que chama o calculateBlock em situações apropriadas. </para> +</listitem> +</itemizedlist> + +<para +>Todos os objetos acima não esperam ser usados simultaneamente (&ie; chamados a partir de linhas de execução separadas ao mesmo tempo). Geralmente existem duas maneiras de resolver isto: </para> + +<itemizedlist> +<listitem> +<para +>Obrigar a chamada de qualquer função sobre estes objetos obter um travamento antes de usá-los. </para> +</listitem> + +<listitem> +<para +>Criar estes objetos realmente seguros para linhas de execução e/ou criar instâncias por linha de execução deles. </para> +</listitem> +</itemizedlist> + +<para +>O &arts; segue a primeira abordagem: você precisará um travamento sempre que você conversar com qualquer um destes objetos. A segundo abordagem é mais difícil de fazer. Um código que tenta atingir isto está disponível em <ulink url="http://space.twc.de/~stefan/kde/download/arts-mt.tar.gz" +>http://space.twc.de/~stefan/kde/download/arts-mt.tar.gz</ulink +>, mas por enquanto, a abordagem minimalista provavelmente funcionará melhor, e causará menos problemas com os aplicativos existentes. </para> + +</sect2> +<sect2 id="threads-locking"> +<title +>Quando/como obter a trava?</title> + +<para +>Você pode obter/liberar a trava com as duas funções: </para> + +<itemizedlist> +<listitem> +<para> +<ulink +url="http://space.twc.de/~stefan/kde/arts-mcop-doc/arts-reference/headers/Arts__Dispatcher.html#lock" +><function +>Arts::Dispatcher::lock()</function +></ulink> +</para> +</listitem> +<listitem> +<para> +<ulink +url="http://space.twc.de/~stefan/kde/arts-mcop-doc/arts-reference/headers/Arts__Dispatcher.html#unlock" +><function +>Arts::Dispatcher::unlock()</function +></ulink> +</para> +</listitem> +</itemizedlist> + +<para +>Geralmente, você não precisa obter a trava (e você não deverá tentar fazer isso), se ela já está presa. Uma lista das condições de quando este é o caso é: </para> + +<itemizedlist> +<listitem> +<para +>Você recebeu uma chamada de retorno do IOManager (timer ou fd). </para> +</listitem> + +<listitem> +<para +>Você obteve chamada através de alguma solicitação &MCOP;. </para> +</listitem> + +<listitem> +<para +>Você é chamando a partir do NotificationManager. </para> +</listitem> + +<listitem> +<para +>Você é chamado a partir do FlowSystem (calculateBlock) </para> +</listitem> +</itemizedlist> + +<para +>Existem algumas exceções destas funções, as quais você somente pode chamar na linha de execução principal, e por esta razão você nunca precisará de uma trava para chamá-las: </para> + +<itemizedlist> +<listitem> +<para +>Construtor/destrutor do Dispatcher/IOManager. </para> +</listitem> + +<listitem> +<para +><methodname +>Dispatcher::run()</methodname +> / <methodname +>IOManager::run()</methodname +> </para> +</listitem> + +<listitem> +<para +><methodname +>IOManager::processOneEvent()</methodname +></para> +</listitem> +</itemizedlist> + +<para +>Mas é isto. Para tudo o mais que é de algum modo relacionado com o &arts;, você precisará de obter uma trava, e liberá-la quando tiver terminado. Sempre. Aqui está um exemplo simples: </para> + +<programlisting +>class SuspendTimeThread : Arts::Thread { +public: + void run() { + /* + * você precisa desta trava porque: + * - construir uma referência precisa de uma trava (como global: irá para + * o gerenciador de objeto, que deve por sua vez precisar do objeto + * GlobalComm para procurar aonde conectar-se) + * - atribuir um smartwrapper precisa de uma trava + * - construir um objeto a partir do reference precisa de uma trava (porque ele + * pode precisar conectar-se a um servidor) + */ + Arts::Dispatcher::lock(); + Arts::SoundServer server = Arts::Reference("global:Arts_SoundServer"); + Arts::Dispatcher::unlock(); + + for(;;) { /* + * você precisa de uma trava aqui, porque + * - dereferenciar um smartwrapper precisa de uma trava (porque ele pode + * fazer uma criação relaxada) + * - fazer uma invocação MCOP precisa de uma trava + */ + Arts::Dispatcher::lock(); + long seconds = server.secondsUntilSuspend(); + Arts::Dispatcher::unlock(); + + printf("seconds until suspend = %d",seconds); + sleep(1); + } + } +} +</programlisting> + + +</sect2> + +<sect2 id="threads-classes"> +<title +>Classes relacionadas às linhas de execução</title> + +<para +>As seguintes classes relacionadas a linhas de execução estão atualmente disponíveis: </para> + +<itemizedlist> +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__Thread.html" +><classname +> Arts::Thread</classname +></ulink +> - que encapsula uma linha de execução. </para> +</listitem> + +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__Mutex.html" +> <classname +>Arts::Mutex</classname +></ulink +> - que encapsula um mutex. </para> +</listitem> + +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__ThreadCondition.html" +> <classname +>Arts::ThreadCondition</classname +></ulink +> - que fornece suporte para levantar linhas de execução que estão esperando por uma determinada condição para tornar-se verdadeira. </para> +</listitem> + +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__SystemThreads.html" +><classname +>Arts::SystemThreads</classname +></ulink +> - que encapsula a camada de nível de execução do sistema operacional (que oferece algumas funções úteis para os programadores de aplicativos). </para> +</listitem> +</itemizedlist> + +<para +>Veja os links para documentação. </para> + +</sect2> +</sect1> + +<sect1 id="references-errors"> +<title +>Referências e Manipulação de Erros</title> + +<para +>As referências do &MCOP; são um dos conceitos mais centrais na programação &MCOP;. Esta seção tentará descrever como exatamente referências são usadas, e especialmente também tentará cobrir os casos de falha (quebras do servidor). </para> + +<sect2 id="references-properties"> +<title +>Propriedades básicas das referências</title> + +<itemizedlist> +<listitem> +<para +>Um referência &MCOP; não é um objeto, mas uma referência para um objeto: Mesmo que a declaração a seguir <programlisting> + Arts::Synth_PLAY p; +</programlisting +> pareça uma definição de um objeto, ela somente declara uma referência para um objeto. Como programador em C++, você deve também pensar nela como Synth_PLAY *, um tipo de ponteiro para um objeto Synth_PLAY. Isto quer dizer especialmente que p pode ser a mesma coisa que um ponteiro NULL. </para> +</listitem> + +<listitem> +<para +>Você pode criar uma referência NULL atribuindo-a explicitamente </para> +<programlisting +>Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); +</programlisting> +</listitem> + +<listitem> +<para +>Invocar coisas em uma referência NULL gera um core dump </para> +<programlisting +>Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); + string s = p.toString(); +</programlisting> +<para +>causará um core dump. Comparando isto a um ponteiro, isto é essencialmente o mesmo que <programlisting> + QWindow* w = 0; + w->show(); +</programlisting +> que todo programador C++ saberia evitar. </para> +</listitem> + +<listitem> +<para +>Objetos não inicializados tentam criar relaxadamente ele mesmo no primeiro uso </para> + +<programlisting +>Arts::Synth_PLAY p; + string s = p.toString(); +</programlisting> +<para +>é um pouco diferente que dereferenciar um ponteiro NULL. Você não disse o objeto o que ele é, e agora você tenta usá-lo. A suposição aqui é que você deseja ter uma nova instância local do objeto Synth::PLAY. É claro que você deve ter desejado algo como isso (como criar o objeto em algum outro local, ou usar um objeto remoto existente). No entanto, é um atalho conveniente para criar objetos. A criação relaxada não funcionará uma vez que você atribua algo mais (como uma referência null). </para> + +<para +>O equivalente em termos de C++ deve ser <programlisting> + QWidget* w; + w->show(); +</programlisting +> que obviamente em C++ocasiona falhas de segmentação. Assim isto é diferente aqui. Esta criação relaxada é um truque especialmente porque não é necessário que uma implementação para sua interface exista. </para> + +<para +>Por exemplo, considere algo abstrato como um Arts::PlayObject. Existem certamente objetos concretos como PlayObjects para tocar mp3s ou wavs, mas <programlisting> + Arts::PlayObject po; + po.play(); +</programlisting +> certamente falhará. O problema é que apesar da criação relaxada dar um pontapé inicial, e tentar criar um PlayObject, ela falha, porque existem somente coisas como Arts::WavPlayObject e semelhantes. Assim, use a criação relaxada somente quando tiver certeza que uma implementação existe. </para> +</listitem> + +<listitem> +<para +>Referências podem apontar para o mesmo objeto </para> + +<programlisting +>Arts::SimpleSoundServer s = Arts::Reference("global:Arts_SimpleSoundServer"); + Arts::SimpleSoundServer s2 = s; +</programlisting> + +<para +>cria duas referências para o mesmo objeto. Isto não copia nenhum valor, e não cria dois objetos. </para> +</listitem> + +<listitem> +<para +>Todos objetos são referências contadas. Assim uma vez que um objeto não é mais referenciado, ele é excluído. Não existe maneira de excluir explicitamente um objeto, no entanto, você pode usar algo como isto <programlisting> + Arts::Synth_PLAY p; + p.start(); + [...] + p = Arts::Synth_PLAY::null(); +</programlisting +> para fazer que o objeto Synth_PLAY vá embora e termine. Especialmente, nunca deve ser necessário usar um novo e excluir ao mesmo tempo com referências. </para> +</listitem> +</itemizedlist> + +</sect2> + +<sect2 id="references-failure"> +<title +>A causa da falha</title> + +<para +>Com referências podem apontar para objetos remotos, os servidores contendo estes objetos podem cair. O que acontece então? </para> + +<itemizedlist> + +<listitem> +<para +>Uma queda de servidor não muda se uma referência é uma referência nula. Isto significa que se <function +>foo.isNull()</function +> era <returnvalue +>true</returnvalue +> antes do servidor cair então ela também será <returnvalue +>true</returnvalue +> após o servidor cair (o que está claro). Isto também significa que se <function +>foo.isNull()</function +> era <returnvalue +>false</returnvalue +> antes do servidor cais (foo referenciada a um objeto) então ela também será <returnvalue +>false</returnvalue +> após o servidor cair. </para> +</listitem> + +<listitem> +<para +>Invocar métodos em uma referência válida permanece seguro. Suponhamos que o servidor contendo o objeto calc caia. Chamar ainda coisas como <programlisting> + int k = calc.subtract(i,j) +</programlisting +> será seguro. Obviamente a subtração terá que retornar alguma coisa aqui, o que não poderá acontecer porque o objeto remoto não existe mais. Neste caso (k == 0) será verdadeiro. Geralmente, operações tentam retornar algo <quote +>neutro</quote +> como resultado, como 0,0, uma referência nula para objetos ou strings vazios, quando o objeto não mais existe. </para> +</listitem> + +<listitem> +<para +>Verificar <function +>error()</function +> revele se alguma coisa funcionou. </para> + +<para +>No caso acima, <programlisting> + int k = calc.subtract(i,j) + if(k.error()) { + printf("k não é i-j!\n"); + } +</programlisting +> imprimirá <computeroutput +>k não é i-j</computeroutput +> se a invocação remota não funcionar. Caso contrário, <varname +>k</varname +> é realmente o resultado da operação de subtração conforme executada pelo objeto remoto (sem queda do servidor). No entando, para métodos fazendo coisas como excluir um arquivo, você não pode saber com certeze se isto realmente ocorreu. É claro que isto aconteceu se <function +>.error()</function +> é <returnvalue +>false</returnvalue +>. No entanto, se <function +>.error()</function +> é <returnvalue +>true</returnvalue +>, existem duas possibilidades: </para> + +<itemizedlist> +<listitem> +<para +>O arquivo foi excluído, e o servidor caí logo após excluí-lo, mas antes de transferir o resultado. </para> +</listitem> + +<listitem> +<para +>O servidor caiu antes de ser capaz de excluir o arquivo. </para> +</listitem> +</itemizedlist> +</listitem> + +<listitem> +<para +>Usar invocações aninhadas é perigoso em programas resistentes à queda </para> + +<para +>Usar algo como <programlisting> + window.titlebar().setTitle("foo"); +</programlisting +> não é uma boa idéia. Suponhamos que você saiba que a janela contéum uma referência válida de Window. Suponhamos que você saiba que <function +>window.titlebar()</function +> retornará uma referência a uma barra de título porque o objeto Window foi implementado corretamente. No entanto, a sentença acima ainda não é segura. </para> + +<para +>O que pode acontecer é que o servidor contendo o objeto Window cairá. Então, independente de quão boa a implementação da Window seja, você obterá uma referência nula como resultado da operação window.titlebar(). E então é claro que invocar o setTitle em uma referência nula levará a uma queda também. </para> + +<para +>Assi uma variante segura disto será <programlisting> + Titlebar titlebar = window.titlebar(); + if(!window.error()) + titlebar.setTitle("foo"); +</programlisting +> adicione a manipulação apropriada de erro se desejar. Se você não confiar na implementação do Window, você pode então usar <programlisting> + Titlebar titlebar = window.titlebar(); + if(!titlebar.isNull()) + titlebar.setTitle("foo"); +</programlisting +> sendo que ambas as sentenças são seguras. </para> +</listitem> +</itemizedlist> + +<para +>Existem outras condições de falha, como uma desconexão de rede (suponhamos que você remova o cabo entre seu servidor e cliente enquanto seu aplicativo roda). No entanto este efeito é o mesmo que uma queda de servidor. </para> + +<para +>Além de tudo, esta é claro uma consideração de política de quão estritamente você tenta evitar erros de comunicação no seu aplicativo. Você deve seguir o método <quote +>se o servidor cai, nós precisamos depurar o servidor até ele nunca cair novamente</quote +>, que significa que você não precisa se incomodar com estes problemas. </para> + +</sect2> + +<sect2 id="references-internals"> +<title +>Mecanismos internos. Contagem de Referência Distribuída</title> + +<para +>Um objeto, para existir, deve pertencer a alguém. Se isto não ocorrer, ele cessará de existir (mais ou menos) imediatamente. Internamente, o dono é indicado pela chamada <function +>_copy()</function +>, que incrementa uma contagem de referência, e libera de volta pela chamada <function +>_release()</function +>. Assim que a contagem de referência atingir o zero, uma exclusão será feita. </para> + +<para +>Como variante do temo, o uso remoto é indicado pelo <function +>_useRemote()</function +>, e dissolvido pelo <function +>_releaseRemote()</function +>. Estas funções levam a uma lista a qual o servidor invoca (e assim possui o objeto). Isto é usado no caso deste servidor desconectar (&ie; uma queda, ou falha de rede), para remover referências que ainda estão nos objetos. Isto é feito em <function +>_disconnectRemote()</function +>. </para> + +<para +>Agora existe um problema. Considere um valore de retorno. Normalmente, o valor de retorno não terá mais como dono o da função de chamada. No entanto isto também não terá como dono o chamador, até a mensagem que contém o objeto seja recebida. Assim existe um tempo de objeto <quote +>sem dono</quote +>. </para> + +<para +>Agora, ao enviar um objeto, algo razoável é que tão logo ele seja recebido, ele possua um dono novamente, a menos que, novamente, o recebedor morra. No entanto isto significa que um cuidade especial precisa ser tomado com o objeto pelo menos ao enviar, provavelmente também ao receber, de modo que ele não morra de qualquer jeito. </para> + +<para +>A maneiro como o &MCOP; faz isto é através do <quote +>etiquetamento</quote +> de objetos que estão em processo de ser copiados através da rede. Antes de uma cópia iniciar, <function +>_copyRemote</function +> é chamado. Isto evita que o objeto seja descartado por enquanto (5 segundos). Uma vez que o recebedor chame <function +>_useRemote()</function +>, a etiqueta é removida novamente. Assim todos os objetos que são enviados pela rede são etiquetados antes da transferência. </para> + +<para +>Se o recebedor recebe um objeyo que está em seu servidor, é claro que ele não irá fazer um <function +>_useRemote()</function +> nele. Para este caso especial, <function +>_cancelCopyRemote()</function +> existe para remover a etiqueta manualmente. Além deste, existe também um removedor de etiqueta baseado em temporizador (no caso de queda, falha de rede). Isto é feito pela classe <classname +>ReferenceClean</classname +>. </para> + +</sect2> + +</sect1> + +<sect1 id="detail-gui-elements"> +<title +>Elementos &GUI;</title> + +<para +>Elementos &GUI; estão atualmente em estado experimental. No entanto, esta seção descreverá o que supostamente acontecerá aqui, de modo que se você é um desenvolvedor, você será capaz de entender como o &arts; lidará com &GUI;s no futuro. Existe algum código que também já está aqui. </para> + +<para +>Elementos &GUI; devem ser usados para permitir estruturas de sintetização interagir com o usuário. No caso mais simples, o usuário deverá ser capaz de modificar alguns parâmetros de uma estrutura diretamente (como um fator de ganho que é usado antes da saída final do módulo). </para> + +<para +>Em configurações mais complexas, alguém pode imaginar o usuário modificando parâmetros de grupos de estruturas e/ou estruturas ainda não rodadas, como a modificação do envelope <acronym +>ADSr</acronym +> do instrumento &MIDI; atualmente ativo. Outra coisa será configurar o nome do arquivo de algum instrumento baseado em amostra. </para +> + +<para +>Por outro lado, o usuário pode querer monitorar o que o sintetizador está fazendo. Podem existir osciloscópios, analizadores de espectro, medidores de volume e <quote +>experiências</quote +> que decifram a curva de transferência de frequência de algum módulo de filtro fornecido. </para> + +<para +>Finalmente, os elementos &GUI; devem ser capazes de controlar toda a estrutura que está rodando dentro do &arts; e como. O usuário deve ser capaz de atribuir instrumentos à canais midi, iniciar processadores de efeitos novos, configurar seu mixer principal (que é construído ele mesmo de estruturas do &arts;) para ter um canal a mais e usar outra estratégia para seus equalizadores. </para> + +<para +>Como você pode ver - os elementos <acronym +>GUI</acronym +> devem trazer todas as possibilidades de estúdio virtual que o &arts; deve simular para o usuário. É claro, eles devem também interagir facilmente com entradas midi (como os sliders debem mover se eles obtém entradas &MIDI; que também mudam como este parâmetro), e provavelmente até mesmo os eventos gerados por eles mesmos, para permitir que a interação com o usuário seja gravada através de um sequenciador. </para> + +<para +>Tecnicamente, a idéia é ter uma classe base &IDL; para todos os widgets (<classname +>Arts::Widget</classname +>), e derivar um determinado número de widgets normalmente usados a partir dela (como <classname +>Arts::Poti</classname +>, <classname +>Arts::Panel</classname +>, <classname +>Arts::Window</classname +>, ...). </para> + +<para +>Então, alguém pode implementar estes widgets usando um conjunto de ferramentas de programação, por exemplo o &Qt; ou Gtk. Finalmente, efeitos devem construir suas &GUI;s de widgets existentes. Por exemplo, um efeito freeverb poderia construir sua &GUI; a partir de cinco <classname +>Arts::Poti</classname +> e um <classname +>Arts::Window</classname +>. Assim SE existir uma implementação &Qt; para estes widgets básicos, o efeito será capaz de se exibir usando o &Qt;. Se existir uma implementação Gtk, ele também funcionará para o Gtk (e mais ou menos com aparência/funcionalidade semelhante). </para> + +<para +>Finalmente, como nós estamos usando &IDL; aqui, o &arts-builder; (ou outras ferramentas) serão capazes de conectar &GUI;s visualmente, ou auto-gerar &GUI;s fornecendos dicas para parâmetros, somente baseando-se em suas interfaces. Deverá ser relativamente simples escrever uma classe <quote +>criar &GUI; a partir da descrição</quote +>, que pega uma descrição de &GUI; (contendo vários parâmetros e widgets), e cria um objeto &GUI; a partir dela. </para> + +<para +>Baseado no &IDL; e no modelo de componentes do &arts;/&MCOP;, deve ser fácil extender os possíveis objetos que podem ser usados pelo &GUI; assim como é fáxil adicionar uma implementação de plugin como um novo filtro do &arts;. </para> + +</sect1> + +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/digitalaudio.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/digitalaudio.docbook new file mode 100644 index 00000000000..d0fe3eb41c6 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/digitalaudio.docbook @@ -0,0 +1,16 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<appendix id="intro-digital-audio"> +<title +>Introdução ao Áudio Digital</title> + +<para +>amostragem digital, filtros, efeitos, &etc;</para> + +</appendix> + + + diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/faq.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/faq.docbook new file mode 100644 index 00000000000..8e5a6c685d2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/faq.docbook @@ -0,0 +1,1310 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> +<chapter id="faq"> +<title +>Perguntas e respostas</title> + +<para +>Esta seção responde algumas das perguntas frequentemente feitas sobre o &arts;. </para> + +<qandaset id="faq-general"> +<title +>Perguntas Gerais</title> + +<qandaentry> +<question> +<para +>O &kde; suporta minha placa de som para saída de áudio? </para> +</question> + +<answer> +<para +>O &kde; usa o &arts; para tocar sons, e o &arts; usa os drivers de som do kernel do &Linux;, tanto os <acronym +>OSS</acronym +> como os <acronym +>ALSA</acronym +> (usando emulação <acronym +>OSS</acronym +>). Se sua placa de som é suportada seja pelo <acronym +>ALSA</acronym +> ou pelo <acronym +>OSS</acronym +> e estiver corretamente configurada (&ie; qualquer outro aplicativo &Linux; pode gerar som), ele funcionará. Existem no entanto alguns problemas com alguns hardwares específicos, por favor leia a <link linkend="faq-hardware-specific" +>seção para problemas com hardwares específicos</link +> se você tiver problemas com o artsd em sua máquina. </para> +<para +>Entretanto, suporte para diversas outras plataformas também tem sido adicionado. Aqui está uma lista completa de como a versão mais recente do &arts; pode tocar som. Se você tiver uma plataforma não suportada, por favor considere portar o &arts; para sua plataforma. </para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry +>Método de E/S (entrada e saída) de áudio do &arts;</entry> +<entry +>Comentário</entry> +</row> +</thead> + +<tbody> +<row> +<entry +>paud</entry> +<entry +>Suporte para Dispositivo de Áudio Pessoal AIX</entry> +</row> + +<row> +<entry +>alsa</entry> +<entry +>Drivers ALSA-0.5 e ALSA-0.9 do Linux</entry> +</row> + +<row> +<entry +>libaudioio</entry> +<entry +>Suporte para biblioteca genérica LibAudioIO que funciona no Solaris</entry> +</row> + +<row> +<entry +>nas</entry> +<entry +>Servidor de som NAS, útil para Terminais X com suporte ao NAS</entry> +</row> + +<row> +<entry +>null</entry> +<entry +>Dispositivo de áudio nulo, descarta o som silenciosamente</entry> +</row> + +<row> +<entry +>oss</entry> +<entry +>Suporte ao OSS (do inglês, Sistema de Som Aberto) (funciona no Linux, diversos BSDs e outras plataformas com os drivers OSS instalados)</entry> +</row> + +<row> +<entry +>toss</entry> +<entry +>Suporte ao OSS em linhas de execução, que funciona melhor em alguns casos onde o suporte ao OSS padrão não funciona bem</entry> +</row> + +<row> +<entry +>sgi</entry> +<entry +>Suporte ao Mídia Direta SGI para IRIX</entry> +</row> + +<row> +<entry +>sun</entry> +<entry +>Suporte ao Solaris</entry> +</row> + +</tbody> +</tgroup> +</informaltable> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Eu não consigo tocar arquivos <literal role="extension" +>wav</literal +> com o &artsd;! </para> +</question> + +<answer> +<para +>Verifique se o &artsd; está linkado ao <filename +>libaudiofile</filename +> (<userinput +><command +>ldd</command +> <parameter +>artsd</parameter +></userinput +>). Caso contrário, baixe o tdesupport, recompile tudo, e então funcionará. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Eu ouço som quando eu logo como <systemitem class="username" +>root</systemitem +> mas nenhum outro usuário tem som! </para> +</question> + +<answer> +<para +>As permissões do arquivo <filename class="devicefile" +>/dev/dsp</filename +> afetam quais usuários terão som. Para permitir que todos o usem, faça isto: </para> + +<procedure> +<step> +<para +>Logue como <systemitem class="username" +>root</systemitem +>. </para> +</step> + +<step> +<para +>Abra uma janela do &konqueror;. </para> +</step> + +<step> +<para +>Vá para a pasta <filename class="directory" +>/dev</filename +>. </para> +</step> + +<step> +<para +>Clique no arquivo <filename +>dsp</filename +> com o botão <mousebutton +>direito</mousebutton +> do mouse, e selecione propriedades. </para> +</step> + +<step> +<para +>Clique na aba <guilabel +>Permissões</guilabel +>. </para> +</step> + +<step> +<para +>Habilite as caixas de verificação <guilabel +>Leitura</guilabel +> e <guilabel +>Escrita</guilabel +> em todas as seções. </para> +</step> + +<step> +<para +>Clique em <guibutton +>OK</guibutton +>. </para> +</step> +</procedure> + +<para +>Você pode obter o mesmo efeito na janela do terminal usando o comando <userinput +><command +>chmod</command +> <option +>666</option +> <parameter +>/dev/dsp</parameter +></userinput +>. </para> + +<para +>Para restringir o acesso ao som para usuários específicos, você pode usar as permissões de grupo. Em algumas distribuições &Linux;, por exemplo o Debian/Potato, o <filename class="devicefile" +>/dev/dsp</filename +> já está como pertencente ao grupo chamado <systemitem class="groupname" +>audio</systemitem +>, de modo que tudo o que precisa fazer é adicionar os usuários a este grupo. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Isto ajuda para o &artsd;, mas e sobre o &kmix;, &kmid;, &kscd;, &etc;? </para> +</question> +<answer> + +<para +>Existem vários outros dispositivos que fornecem funcionalidades acessadas por aplicativos multimídia. Você pode tratá-los da mesma maneira, seja tornando-os acessíveis para todos, ou usando grupos para controlar o acesso. Aqui está uma lista, que pode ainda estar incompleta (se existirem também diversos dispositivos em uma forma tipo <filename class="devicefile" +>midi0</filename +>, <filename class="devicefile" +>midi1</filename +>, ..., então somente a versão 0 é listada aqui): </para> + +<itemizedlist> +<listitem> +<para> +<filename class="devicefile" +>/dev/admmidi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/adsp0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/amidi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/amixer0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/audio</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/audio0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/cdrom</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/dmfm0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/dmmidi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/dsp</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/dsp0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/midi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/midi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/midi00</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/midi00</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/mixer</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/mixer0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/mpu401data</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/mpu401stat</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/music</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/rmidi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/rtc</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/sequencer</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/smpte0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/sndstat</filename> +</para> +</listitem> +</itemizedlist> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>O que eu posso fazer se o artsd não inicia ou trava ao rodar?</para> +</question> + +<answer> +<para +>Primeiro de tudo: tente usar as configurações padrão no &kcontrol; (ou se você está iniciando manualmente, não forneça opções adicionais além talvez de <userinput +><option +>-F</option +><parameter +>10</parameter +> <option +>-S</option +><parameter +>4096</parameter +></userinput +> para latência). Especialmente <emphasis +>o full duplex é conhecido por não funcionar</emphasis +> com diversos drivers, logo tente desabilitá-lo. </para> + +<para +>Uma boa maneira de descobrir porque o &artsd; não inicia (ou trava ao rodar) é iniciá-lo manualmente. Abra uma janela do &konsole;, e faça o seguinte: </para> + +<screen width="40" +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-F</option +><parameter +>10</parameter +> <option +>-S</option +><parameter +>4096</parameter +></userinput +></screen> + +<para +>Você pode também adicionar a opção <option +>-l0</option +>, que imprimirá mais informações sobre o que está acontecendo, como isto: </para> +<screen width="40" +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-l0</option +> <option +>-F</option +><parameter +>10</parameter +> <option +>-S</option +><parameter +>4096</parameter +></userinput +></screen> + +<para +>Fazendo isso, você provavelmente obterá algumas informações úteis sobre porque ele não inicia. Ou, se ele trava ao fazer isto ou aquilo, você pode fazer isto ou aquilo, e ver <quote +>como</quote +> ele trava. Se você desejar relatar um erro, produzir um rastro de execução com o <command +>gdb</command +> e/ou um <command +>strace</command +> pode ajudar a encontrar o problema. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Eu posso mudar a localização do &artsd; (mover os arquivos compilados para outra pasta)?</para> +</question> + +<answer> +<para +>Você não pode mudar a localização do &arts;. O problema é que o &artswrapper; possui a localização do &artsd; compilado devido a razões de segurança. Você pode no entanto usar o arquivo <filename +>.mcoprc</filename +> (entradas TraderPath/ExtensionPath) para pelo menos fazer com que o &artsd; encontre seus componentes. Veja o <link linkend="the-mcoprc-file" +>capítulo sobre o arquivo <filename +>.mcoprc</filename +></link +> para detalhes sobre como fazer isto. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Eu posso compilar o &arts; com o gcc-3.0?</para> +</question> + +<answer> +<para +>Resposta curta: não, o &arts; não funcionará se você compilá-lo com o gcc-3.0. </para> + +<para +>Resposta longa: Na versão oficial, existem dois erros do gcc-3.0 que afetam o &arts;. O primeiro, o erro c++/2733 do gcc-3.0 é relativamente inofensivo (e tem apresentado problemas com a sentença asm). Ele quebra a compilação do convert.cc. Isto foi concertado no gcc-3.0 do CVS, e não será mais um problema com o gcc-3.0.1 e superior. Um trabalho a respeito também foi adicionado à versão CVS do KDE/aRts. </para> +<para +>O segundo erro do gcc-3.0, o c++/3145 (que é geração de código errado para alguns casos de herança virtual múltipla) é crítico. Aplicativos como o &artsd; simplesmente travarão na inicialização quando compilados com o gcc-3.0. Apesar de algum progresso ter sido feito no ramdo gcc-3.0 do CVS quando escrevia este documento, o &artsd; ainda trava muito frequentemente, imprevisivelmente. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Que aplicativos rodam sob o &arts;?</para> +</question> +<answer> + +<para +>Obviamente, todos os aplicativos incluídos com o &kde; são compatíveis com o &arts;. Isto inclui: </para> + +<itemizedlist> +<listitem +><para +>&noatun;</para +></listitem> +<listitem +><para +>&arts-builder;</para +></listitem> +<listitem +><para +>&aktion;</para +></listitem> +<listitem +><para +>&kmid;</para +></listitem> +<listitem +><para +>&kmidi;</para +></listitem> +<listitem +><para +>&kmix;</para +></listitem> +<listitem +><para +>&kscd;</para +></listitem> +<listitem +><para +>Jogos do &kde; como o &kpoker; e o &ktuberling;</para +></listitem> +</itemizedlist> + +<para +>Alguns aplicativos do &kde; que ainda não foram incluídos na versão do &kde; (⪚ no kdenonbeta) também suportam o &arts;, incluindo: </para> + +<itemizedlist> +<listitem +><para +>&brahms;</para +></listitem> +<listitem +><para +><application +>Kaboodle</application +></para +></listitem> +<listitem +><para +><application +>Kdao</application +></para +></listitem> +</itemizedlist> + +<para +>Os seguintes aplicativos não-&kde; são também conhecidos por funcionar com o &arts;: </para> + +<itemizedlist> +<listitem +><para +><application +>xmms</application +> (com o plug-in do &arts;)</para +></listitem> +<listitem +><para +>Real Networks <application +>RealPlayer</application +> 8.0 (funciona com o &artsdsp;; suporte nativo ao &arts; está sendo considerado)</para +></listitem> +</itemizedlist> + +<para +>Os seguintes aplicativos são conhecidos por <emphasis +>não</emphasis +> funcionarem com o &arts;: </para> + +<itemizedlist> +<listitem +><para +>nenhum</para +></listitem> +</itemizedlist> + +<para +>Veja também as respostas e perguntas na seção em <link linkend="faq-non-arts" +>aplicativos não-&arts;</link +>. </para> + +<para +>Esta seção está incompleta -- Se você tiver informações sobre aplicativos que suportam ou não suportam, por favor envie-as ao autor de modo que ele possa incluí-las aqui. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-non-arts"> +<title +>Aplicativos Não-&arts;</title> + +<qandaentry> +<question> +<para +>Tão logo o &kde; esteja rodando, nenhum outro aplicativo pode acessar meu dispositivo de som! </para> +</question> +<answer> +<para +>Uma vez que o servidor de som &arts; usado pelo &kde; está rodando, ele está usando o dispositivo de som. Se o servidor ficar ocioso por 60 segundos, ele auto-suspendará e liberará o dispositivo automaticamente. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Você disse que ele suspende após 60 segundos, isto não funciona para mim! </para> +</question> +<answer> +<para +>Se você iniciar o artsd a partir do painel de controle do KDE, o padrão é para suspender após 60 segundos. Se você iniciar o artsd a partir da linha de comando, você precisa usar a opção -s para especificar o tempo para auto-suspensão, caso contrário, seu padrão é desabilitar o recurso de auto-suspensão. </para> +<para +>Atualmente ele não suspende quando usa o full duplex. Desligue o full duplex a partir do &kcontrol; e ele suspenderá. Desabilitar o full duplex é geralmente uma boa idéia de qualquer jeito se você usa somente o &arts; para tocar áudio e não para gravar. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Como eu possa rodar aplicativos antigos não-&arts;? </para> +</question> + +<answer> +<para +>Execute-os usando o &artsdsp;. Por exemplo, se você normalmente rodaria: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>mpg123</command +> <option +>foo.mp3</option +></userinput +></screen> + +<para +>ao invés disso use:</para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>mpg123 foo.mp3</option +></userinput +></screen> + +<para +>Isto redirecionará a saída de som para o &arts;. Este método não necessita de mudanças nos aplicativos. Se alguma coisa der errado no entanto, saiba que nem todos os recursos da placa de som são suportados, assim alguns aplicativos podem não funcionar. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Eu não posso rodar o &artsdsp; com qualquer aplicativo, ele sempre trava! </para> +</question> +<answer> +<para +>Você precisa de uma versão recente da biblioteca glibc; o &artsdsp; não funcionará de maneira confiável em algumas distribuições antigas do &Linux;. Por exemplo, no Debian 2.1 (que é baseado no glibc 2.0) ele não funciona, enquanto no Debian 2.2 (que é baseado no glibc 2.1.3) ele funciona. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Existem limitações teóricas com alguns aplicativos que os impedirão de funcionar sempre com o &artsdsp;? </para> +</question> +<answer> +<para +>Não. Usar o &artsdsp; pode causar um pouco mais de latência e uso da <acronym +>CPU</acronym +> que usando a <acronym +>API</acronym +> do &arts; diretamente. Por outro lado, qualquer aplicativo que não funcione deve ser considerado um erro do &artsdsp;. A técnica usada pelo &artsdsp; deve, se implementada corretamente, permitir <emphasis +>qualquer</emphasis +> aplicativo funcionar com ele (incluindo aplicativos complexos como o <application +>Quake</application +> 3). </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>O que eu posso fazer se um aplicativo não funciona com o &artsdsp;? </para> +</question> +<answer> +<para +>Você pode esperar que o &artsd; suspenda ou usar o comando <userinput +><command +>artsshell</command +> <option +>suspend</option +></userinput +> para pedir ao servidor que ele se suspenda. Você somente será capaz de suspender o servidor se nenhum aplicativo &arts; estiver atualmente o usando, e nenhum aplicativo &arts; será capaz de rodar quando o servidor estiver suspenso. </para> + +<para +>Se o servidor estiver ocupado, uma maneira bruta mas efetica de obter o rid dele é: </para> + + +<screen +><prompt +>%</prompt +> <userinput +><command +>killall</command +> <option +>artsd</option +> ; <command +>killall</command +> <option +>artswrapper</option +></userinput> +<lineannotation +>Agora inicie seu próprio aplicativo.</lineannotation> +<prompt +>%</prompt +> <userinput +><command +>kcminit</command +> <option +>arts</option +></userinput +> +</screen> + +<para +>Qualquer aplicativo &arts; atualmente em execução deverá cair, no entanto, uma vez que você mate o servidor. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>E os aplicativos escritos para o &kde; 1.x? </para> +</question> +<answer> +<para +>Se você estiver rodando aplicativos do &kde; 1.x, que produzem som através do servidor de áudio do &kde; 1, você precisará rodar o <application +>kaudioserver</application +> para fazê-los funcionar. Você pode iniciar o <application +>kaudioserver</application +> da mesma maneira que outros aplicativos não-&arts;: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>kaudioserver</option +></userinput +> +</screen> + +<para +>Você precisará ter instalado o kaudioserver (a partir do código de onde você obteve seus aplicativos do &kde; 1.x) - ele fica no &kde; 1.x, não no &kde; 2. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>E os aplicativos usando o daemon do som do enlightened, <acronym +>ESD</acronym +>? </para> +</question> +<answer> +<para +>A observação é semelhante a feita com o <application +>kaudioserver</application +>. Como os aplicativos precisarão de um servidor esd rodando, você pode iniciar o <command +>esd</command +> através do &artsdsp;, e cada aplicativo compatível com o <acronym +>ESD</acronym +> deve funcinar bem, como isto: </para> +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>esd</option +></userinput +> +</screen> +<para +>Versões mais novas do aRts ( +>= 1.2.0) também pode usar o daemon de som enlightened ao invés de acessar diretamente a placa de som. Na linha de comando, você pode usar a opção -a, como </para> +<screen +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-a esd</option +></userinput +> +</screen> +<para +>para ter suporte ao EsounD, e no KDE, você pode usar o kcontrol para fazer com que o artsd use o esd através de Som -> Servidor de Som -> E/S de Som. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-latency"> +<title +>Latência</title> + +<qandaentry> +<question> +<para +>Eu algumas vezes escuto pausas curtas ao ouvir uma música, isto é um erro? </para> +</question> +<answer> +<para +>Isto não é propriamente um erro, mas causado pelo fato do kernel do &Linux; não ser muito bom no agendamento em tempo real. Existem situações onde o &arts; não será capaz de manter uma execução constante. Você pode, no entanto, habilitar permissões de tempo real (através do &kcontrol;), e usar uma configuração de latência maior 9como <guilabel +>250ms</guilabel +> ou <guilabel +>não se preocupar</guilabel +>), o que deverá melhorar a situação. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Qual o efeito da configuração do tempo de resposta? </para> +</question> +<answer> +<para +>O texto de ajuda para esta configuração no &kcontrol; pode ser mau entendido. Um valor menor significa que o &arts; levará menos tempo para responder a eventos externos (&ie; o tempo que ele leva entre fechar uma janela e ouvir o som tocado pelo &artsd;). Isto também usará mais recursos da <acronym +>CPU</acronym +>, e causará uma maior probabilidade de saídas.</para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Existe alguma coisa que eu possa fazer para evitar pausas? </para> +</question> +<answer> +<para +>Para usuários de discos rígidos <acronym +>IDE</acronym +>, você pode usar o comando <command +>hdparm</command +> para colocar seu drive <acronym +>IDE</acronym +> no modo <acronym +>DMA</acronym +>. Um alerta: isto não funciona para todo hardware, e pode fazer com que o disco rígido reinicie ou em casos raros, perca dados. Leia a documentação do comando <command +>hdparm</command +> para mais detalhes. Eu tenho usado com sucesso o seguinte comando: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>hdparm</command +> <option +>-c1</option +> <option +>-d1</option +> <option +>-k1</option +> <option +>-K1</option +> <parameter +>/dev/hda</parameter +></userinput +> +</screen> + +<para +>Você precisa rodar isto após cada boot, assim você pode desejar colocá-lo no script de inicialização do sistema (como fazer isto é específico da distribuição, no Debian &Linux; ele é colocado normalmente no <filename +>/etc/rc.boot</filename +>). </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>A prioridade de tempo real parece não ter nenhum efeito para mim? </para> +</question> +<answer> +<para +>Verifique se o artswrapper está realmente instalado com suid <systemitem class="username" +>root</systemitem +>, como deveria estar. Muitas distribuições (o SuSE7.x por exemplo) não fazem isto. Você pode verificar isto usando: ls -l $(which artswrapper). Bom: <screen> +<prompt +>%</prompt +> <userinput +><command +>ls</command +> <option +>-l</option +> <parameter +>$(which artswrapper)</parameter +></userinput> +-rwsr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper +</screen +> Ruim: <screen> +<prompt +>%</prompt +> <userinput +><command +>ls</command +> <option +>-l</option +> <parameter +>$(which artswrapper)</parameter +></userinput> +-rwxr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper +</screen +> Se você não tiver o the s, você pode obtê-lo usando: <screen +><prompt +>%</prompt +> <userinput +><command +>chown</command +> <option +>root</option +> <parameter +>$(which artswrapper)</parameter +></userinput> +<prompt +>%</prompt +> <userinput +><command +>chmod</command +> <option +>4755</option +> <parameter +>$(which artswrapper)</parameter +></userinput +> +</screen> +</para> + +<para +>Se você tornar o &artswrapper; SUID <systemitem class="username" +>root</systemitem +>, ele provavelmente melhorará a qualidade da reprodução do seu áudio reduzindo intervalos na música. No entanto, isto também aumento o risco que um erro no código ou um usuário malicioso possa travar ou talvez danificar sua máquina. Além disso, em máquinas com vários usuários, priorizar áudio de alta qualidade pode resultar na deterioração do desempenho para os usuários que estão tentando fazer um uso mais <quote +>produtivo</quote +> da máquina.</para> + +</answer> +</qandaentry> + + +<qandaentry> +<question> +<para +>Porque o &artsd; toma tanto tempo da <acronym +>CPU</acronym +>? </para> +</question> +<answer> +<para +>Verifique suas configurações de tempo de resposta. No entanto, a versão atual ainda não é realmente otimizada. Isto melhorará, e até agora nenhuma previsão real pode ser feita do quão rápido o &artsd; pode ou não ser. </para> +</answer> +</qandaentry> +</qandaset> + +<qandaset id="faq-network"> +<title +>Transparência de Rede</title> + +<qandaentry> +<question> +<para +>O que eu preciso para transparência de rede? </para> +</question> +<answer> +<para +>Habilite-a nas configurações do <guilabel +>Servidor de Som</guilabel +> no &kcontrol; (<guilabel +>habilite o servidor X11 para informações seguras</guilabel +> e <guilabel +>transparência de rede</guilabel +>). Então copie seu <filename +>.mcoprc</filename +> para todas as máquinas que planeja usar transparência de rede. Logue novamente. Certifique-se de que as máquinas que interagirem conhecem as outras pelo nome (&ie; elas devem possuir nomes resolvíveis ou estarem no <filename +>/etc/hosts</filename +>). </para> + +<para +>Isto deve ser tudo o que você precisa fazer. No entanto, se isto ainda não funcionar aqui vão mais alguns detalhes adicionais. O processo do servidor de som &arts;, o &artsd;, somente deve rodar em uma máquina, a que tiver a placa de som onde o som será tocado. Ele pode ser iniciado automaticamente no login pelo &kde; (se você configurar isto no &kcontrol;), ou manualmente usando algo como: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-n</option +> <option +>-F</option +> <parameter +>5</parameter +> <option +>-S</option +> <parameter +>8192</parameter +></userinput +> +</screen> + +<para +>O parâmetro <option +>-n</option +> é para a transparência de rede, enquanto os outros configuram a latência. </para> + +<para +>Se arquivo <filename +>.mcoprc</filename +> deve ter esta entrada: </para> + +<screen +><userinput +>GlobalComm=Arts::X11GlobalComm</userinput +> +</screen> + +<para +>em todas as máquinas envolvidas, para que a transparência de rede funcione. Isto é que é habilitado pela configuração <guilabel +>servidor X11 para informações seguras</guilabel +> do painel de controle. </para> + +<para +>Finalmente, em qualquer versão do &kde; da série 2.0.x, existe um erro que se manifesta se você não possui um conjunto de nomes de domínio. Clientes do &artsd; tentam encontrar onde conectar através da combinação <systemitem class="systemname" +><replaceable +>máquina</replaceable +>.<replaceable +>domínio</replaceable +></systemitem +>. Se seu nome de domínio for vazio, ele tentará conectar à <systemitem class="systemname" +><replaceable +>máquina</replaceable +></systemitem +>. (observe o ponto a mais). Adicionando uma entrada como esta no <filename +>/etc/hosts</filename +> (&ie; <userinput +>orion.</userinput +> se seu nome de máquina é <systemitem class="systemname" +>orion</systemitem +>) contornará o problema. </para> +</answer> +</qandaentry> + + +<qandaentry> +<question> +<para +>Como eu depuro a transparência de rede se ela não funcionar? </para> +</question> +<answer> +<para +>Considerando que você possui o código fonte do &kde;, vá para <filename class="directory" +>tdelibs/arts/examples</filename +>, e rode <userinput +><command +>make</command +> <option +>check</option +></userinput +> para compilar alguns programas, incluindo <application +>referenceinfo</application +>. Então rode </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>./referenceinfo</command +> <option +>global:Arts_SimpleSoundServer</option +></userinput +> +</screen> + +<para +>A saída indicará o nome de máquina e porta que está sendo usado pelo &arts;. Por exemplo, <computeroutput +>tcp:orion:1698</computeroutput +> o que significa que qualquer cliente que tente usar a transparência de rede deve saber como chegar à maquina <systemitem class="systemname" +>orion</systemitem +>. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-hardware-specific"> +<title +>Perguntas específicas de hardware</title> + +<qandaentry> +<question> +<para +>Com qual hardware o artsd não funciona bem? </para> +</question> +<answer> +<para +>Parece que existem alguns poucos drivers linux que não funcionam bem com o aRts em algumas versões do kernel. Por favor leia esta lista antes de relatar um erro. Se você achar que alguma informação nesta lista está incompleta, por favor não hesite em informar-nos. <informaltable +> <tgroup cols="4"> +<thead> +<row> +<entry +>Driver Linux / Placa de som</entry> +<entry +>Falha sob</entry> +<entry +>Funciona sob</entry> +<entry +>Comentários</entry> +</row> +</thead> + +<tbody> +<row> +<entry +>driver i810 (Intel 810 + Áudio AC97)</entry> +<entry +>2.4.9</entry> +<entry +>2.4.18, 2.2.20, driver oss comercial, alsa-0.5.12a com emulação OSS</entry> +<entry +>driver causa sobrecarga da cpu (veja abaixo)</entry> +</row> + +<row> +<entry +>chipset maestro 3/4</entry> +<entry +>2.4.9</entry> +<entry +>?</entry> +<entry +>driver causa algumas vezes sobrecarga da cpu (veja abaixo)</entry> +</row> + +<row> +<entry +>drivers aureal8820, aureal8830 do sourceforge</entry> +<entry +>2.4.17</entry> +<entry +>?</entry> +<entry +>driver dispara assertivas / causa sobrecarga da cpu (veja abaixo)</entry> +</row> + +<row> +<entry +>OSS 3.9.4g Comercial com Aureal Vortex</entry> +<entry +>?</entry> +<entry +>?</entry> +<entry +>travamento do sistema</entry> +</row> + +<row> +<entry +>ymfpci</entry> +<entry +>2.4.0, 2.4.12</entry> +<entry +>2.4.17</entry> +<entry +>driver dispara assertiva (veja abaixo)</entry> +</row> + + + +</tbody> +</tgroup> +</informaltable> +</para> +</answer> +</qandaentry> + + + +<qandaentry> +<question> +<para +>Porque existem problemas específicos de hardware e como vê-los? </para> +</question> +<answer> +<para +>O problema mais comum é que o driver não fornece ao aRts informações suficientes ou suficientemente precisas ao escrever dados de som. A maioria dos drivers OSS fornecem as informações corretas, mas nem todos. </para> +<para +>Você deve saber que alguns outros aplicativos (como o xmms) podem não precisar destes dados, e assim funcionarem corretamente com seu hardware. No entanto, o &arts; precisa destes dados, assim o artsd deve falhar. Isto ainda assim é um erro no driver, e não no &arts;. </para> +<para +>Existem dois tipos de comportamento que o artsd expõe ao ser rodado em um driver incorreto. Ele pode continuamente tentar obter novos dados, mas nunca consegí-los, o que eventualmente leva a consumir todos os recursos da CPU e reportar uma <emphasis +>sobrecarga da cpu</emphasis +> e terminar. O outro problema é que o artsd pode receber informações incorretas para processar. o artsd então <emphasis +>interromperá com uma assertiva</emphasis +> como: <screen +>artsd: audiosubsys.cc:458: void Arts::AudioSubSystem::handleIO(int): +Assertion `len == can_write' failed. +Aborted +</screen> +</para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>O que está errado no driver se eu detecto um problema de sobrecarga da cpu? </para> +</question> +<answer> +<para +>Normalmente, o artsd usa o select() para descobrir onde escrever novos dados. Então, ele usa um ioctl(...GETOSPACE...) para descobrir quantos dados escrever. Finalmente, ele escreve os dados. </para> +<para +>Um problema ocorre se o artsd é despertado sempre ou se existem quantidades mínimas de dados para escrever. A documentação do OSS especifica que o select() somente acorda um processo se existir pelo menos um fragmento para escrever. No entanto, se o artsd é acordado e não existirem dados para escrever, ou muito pouco dado, por exemplo, uma amostra, então ele ficará escrevendo pequenos pedaços de dados de áudio, o que pode ser muito custoso, e eventualmente sobrecarregar a cpu. </para> +<para +>Para corrigir isto, o driver deve acordar o artsd somente se existir um fragmento completo para escrever. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>O que está errado no driver se eu detecto a assertiva? </para> +</question> +<answer> +<para +>Normalmente, o artsd usa o select() para descobrir onde escrever novos dados. Então, ele usa um ioctl(...GETOSPACE...) para descobrir quantos dados escrever. Finalmente, ele escreve os dados. </para> +<para +>Se o artsd não puder escrever tantos dados quanto os indicados pelo ioctl, ele falhará na assertiva. Para corrigir isto, o driver deve fornecer a quantidade correta de espaço livre. </para> +</answer> +</qandaentry> +</qandaset> + +<qandaset id="faq-other"> +<title +>Outras Considerações</title> + +<qandaentry> +<question> +<para +>Eu não posso usar o &arts-builder;. Ele cai ao executar um módulo! </para> +</question> +<answer> +<para +>A causa mais provável é que você está usando estruturas ou módulos antigos que não são mais suportados pela versão 2 do &kde;. Infelizmente a documentação que existe na web referente ao &arts; 0.3.4.1 está um pouco desatualizada. A maioria das quedas frequentemente reportadas é: que executando uma estrutura no &arts-builder; resulta na mensagem de erro <errorname +>[artsd] Synth_PLAY: sub-sistema de áudio já está sendo usado.</errorname +> </para> + +<para +>Você deve usar um Synth_AMAN_PLAY ao invés do módulo Synth_PLAY e o problema terminará. Veja também o arquivo de ajuda do &arts-builder; (clique <keycap +>F1</keycap +> no &arts-builder;). </para> + +<para +>Versões recentes do &arts-builder; (&kde; 2.1 beta 1 e posteriores) vem com um conjunto de exemplos que você pode usar. </para> +</answer> +</qandaentry> + +</qandaset> + +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/future.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/future.docbook new file mode 100644 index 00000000000..cbbc9321893 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/future.docbook @@ -0,0 +1,401 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant +V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="future-work"> +<title +>Trabalho Futuro</title> + +<para +>Esta seção descreve parte do trabalho no &arts; que está em progresso. O desenvolvimento evolui rapidamente, assim estas informações já devem estar desatualizadas. Você deve verificar o arquivo de lista TODO e os arquivos da <link linkend="mailing-lists" +>lista de discussão</link +> para ver quais novas funcionalidades estão sendo planejadas. Sinta-se à vontade para envolver-se em novos projetos e implementações. </para> + +<para +>Este é um rascunho que tenta fornecer-lhe uma visão geral de como novas tecnologias serão integradas ao &arts;. Específicamente, isto cobre o seguinte: </para> + +<itemizedlist> +<listitem +><para +>Como a interface funciona.</para +></listitem> +<listitem +><para +>Codecs - decodificação de fluxos mp3 ou wav em uma forma que eles possam ser usados como dados.</para +></listitem> +<listitem +><para +>Vídeo.</para +></listitem> +<listitem +><para +>Linhas de execução.</para +></listitem> +<listitem +><para +>Sincronização.</para +></listitem> +<listitem +><para +>Expansão/mascaramento dinâmico.</para +></listitem> +<listitem +><para +>Composição dinâmica.</para +></listitem> +<listitem +><para +>&GUI;</para +></listitem> +<listitem +><para +>&MIDI;</para +></listitem> +</itemizedlist> + +<para +>Estes são os trabalhos em progresso. No entanto, isto deve ser a base se você deseja ver novas tecnologias no &arts;. Isto deve fornecer uma idéia geral de como estes problemas serão abordados. No entanto, sinta-se à vontade para corrigir qualquer coisa que veja aqui. </para> + +<para +>Coisas que usarão a tecnologia do &arts; (logo por favor, coordene seus esforços): </para> + +<itemizedlist> +<listitem> +<para +><application +>KPhone</application +> (voz sobre <acronym +>IP</acronym +>) </para> +</listitem> + +<listitem> +<para +>&noatun; (reprodutor de vídeo / áudio) </para> +</listitem> + +<listitem> +<para +>&artscontrol; (programa de controle do servidor de som, para escopos) </para> +</listitem> + +<listitem> +<para +><application +>Brahms</application +> (sequenciador de música) </para> +</listitem> + +<listitem> +<para +><application +>Kaiman</application +> (tocador de mídia do &kde;2 - compatível com o kmedia2) </para> +</listitem> + +<listitem> +<para +><application +>mpglib</application +>/<application +>kmpg</application +> (tecnologia para reprodução de áudio e vídeo <acronym +>mpg</acronym +>) </para> +</listitem> + +<listitem> +<para +><application +>SDL</application +> (camada de mídia direta para jogos ainda não iniciada mas talvez bem legal) </para> +</listitem> + +<listitem> +<para +><application +>electric ears</application +> (o autor contactou-me - estado desconhecido) </para> +</listitem> +</itemizedlist> + +<sect1 id="interfaces-how"> +<title +>Como a Interface Funciona</title> + +<!-- I think this is now obsolete and documented elsewhere ? --> + +<para +>As interfaces &MCOP; são a base do conceito do &arts;. Elas são a transparência de rede equivalente para classes C++. Sempre que possível você deve orientar seu desenho em função destas interfaces. As interfaces consistem de quatro partes: </para> + +<itemizedlist> +<listitem +><para +>Fluxos síncronos</para +></listitem> +<listitem +><para +>Fluxos assíncronos</para +></listitem> +<listitem +><para +>Métodos</para +></listitem> +<listitem +><para +>Atributos</para +></listitem> +</itemizedlist> + +<para +>Eles podem ser misturados de qualquer jeito que desejar. As novas tecnologias devem ser definidas em termos de interfaces. Leia as seções sobre fluxos assíncronos e síncronos, bem como as sobre interfaces KMedia2, que são bons exemplos de como as coisas funcionam. </para> + +<para +>Interfaces são especificadas em código <literal role="extension" +>.idl</literal +> e rodam através do compilador <command +>mcopidl</command +>. Você deriva a classe <classname +><replaceable +>Nomeinterface</replaceable +>_impl</classname +> para implementá-las, e usa <function +>REGISTER_IMPLEMENTATION(NomeInterface_impl)</function +> para inserir sua implementação de objeto no sistema de objetos &MCOP;. </para> + +</sect1> + +<sect1 id="codecs"> +<title +>Codecs - Decodificando Dados</title> + +<para +>As interfaces kmedia2 permitem que você ignore que arquivos wav, mp3s e seja o que for consistem de fluxos de dados. Ao invés disso, você somente implementas métodos para reproduzí-los. </para> + +<para +>Assim, você pode escrever uma rotina de carregamento wave da mesma maneira que você pode reproduzir arquivos wave (com PlayObject), mas ninguém mais usa seu código. </para> + +<para +>Fluxos assíncronos devem ser a alternativa. Você define uma interface que permite passar blocos de dados para ela, e obter blocos de dados dela. Isto se parece assim no &MCOP;: </para> + +<programlisting +>interface Codec { + in async byte stream indata; + out async byte stream outdata; +}; +</programlisting> + + +<para +>É claro que codecs também podem fornecer atributos para emitir dados adicionais, como informações do formato. </para> + +<programlisting +>interface ByteAudioCodec { + in async byte stream indata; + out async byte stream outdata; + readonly attribute samplingRate, bits, channels; +}; +</programlisting> + +<para +>Este <interfacename +>ByteAudioCodec</interfacename +> por exemplo pode ser conectado a um objeto <interfacename +>ByteStreamToAudio</interfacename +> para criar áudio flutuante real. </para> + +<para +>É claro, outros tipos de Codec podem envolver diretamente emitir dados de vídeo, como </para> + +<programlisting +>interface VideoCodec { + in async byte stream indata; + out video stream outdata; /* note: video streams do not exist yet */ +}; +</programlisting> + +<para +>Provavelmente, um conceito de codec deve ser empregado ao invés do modo <quote +>você sabe como reproduzir e eu não</quote +> por exemplo o uso atual do <interfacename +>WavPlayObject</interfacename +>. No entanto, alguém precisa sentar e realizar alguns testes antes de uma <acronym +>API</acronym +> poder ser finalizada. </para> + +</sect1> + +<sect1 id="video"> +<title +>Vídeo</title> + +<para +>Minha idéia é fornecer vídeo como fluxos assíncronos de algum tipo de dado nativo do &MCOP; que contenha imagens. Este tipo de dado ainda será criado. Fazendo isso, plugins que lidam com imagens de vídeo podem ser conectados da mesma maneira que plugins de áudio podem ser conectados. </para> + +<para +>Existem algumas coisas que são importantes que não sejam deixadas de fora, especificamente: </para> + +<itemizedlist> +<listitem> +<para +>Existem espaços de cores <acronym +>RGB</acronym +> e <acronym +>YUV</acronym +>. </para> +</listitem> +<listitem> +<para +>O formato deve ser algo vocacionado para fluxo. </para> +</listitem> +<listitem> +<para +>Sincronização é importante. </para> +</listitem> +</itemizedlist> + +<para +>Minha idéia é deixar possível reimplementar a classe <classname +>VideoFrame</classname +> de modo que eu possa armazenar material no segmento de memória compártilhada. Fazendo isso, cada fluxo de vídeo entre processos diferentes serão possíveis sem muito sacrifício. </para> + +<para +>No entanto, a situação padrão para vídeo é que as coisas estão no mesmo processo, da decodificação à renderização. </para> + +<para +>Eu fiz uma implementação de fluxo de vídeo experimental, que você pode baixar <ulink url="http://space.twc.de/~stefan/kde/download/video-quickdraw.tar.gz" +>aqui</ulink +>. Isto precisará ser integrado ao &MCOP; após alguns testes. </para> + +<para +>Um componente de renderização deve ser fornecido que suporte XMITSHM (com <acronym +>RGB</acronym +> e <acronym +>YUV</acronym +>). Martin Vogt me disse que ele está trabalhado em algo deste tipo. </para> + +</sect1> + +<sect1 id="threading"> +<title +>Linhas de execução</title> + +<para +>Atualmente, o &MCOP; é todo em linha simples de execução. Talvez para vídeo nós não sejamos capazes de manternos em uma linha simples. Ok. Existem algumas coisas que devem ser tratadas com cuidado: </para> + + +<itemizedlist> +<listitem +><para +>SmartWrappers - eles não são seguros para linhas de execução devido a contagem de referência não segura e coisas semelhantes. </para> +</listitem> +<listitem> +<para +>Dispatcher / I/O - também não é seguro para linhas de execução. </para> +</listitem> +</itemizedlist> + +<para +>No entanto, o que eu posso imaginar é tornar os módulos selecionados seguros para linhas de execução, tanto para fluxo síncrono como assíncrono. De que modo - com um sistema de fluxo ciente da linha de execução, você pode agendar o fluxo do sinal sobre dois ou mais processadores. Isto também auxiliaria o áudio principalmente em situações de multiprocessamento. </para> + +<para +>Como isto funcionaria: </para> + + +<itemizedlist> +<listitem> +<para +>O Sistema de Fluxo decide quais módulos devem calcular o que - o que é: </para> + <itemizedlist> + <listitem +><para +>quadros de vídeo (com método process_indata)</para +></listitem> + <listitem +><para +>fluxos de áudio síncrono (calculateBlock)</para +></listitem> + <listitem +><para +>outros fluxos assíncronos, principalmente fluxos de byte</para +></listitem> + </itemizedlist> +</listitem> +<listitem> +<para +>Os módulos podem calcular estas coisas em suas próprias linhas de execução. Para áudio, faz sentido reusar linhas (⪚ renderizar em quatro linha de execução para quatro processadores, não importa se 100 módulos estiverem rodando). Para vídeo e descompressão de bytes, seria mais confortável ter uma implementação em blocos em sua própria linha, que é sincronizada com o resto do &MCOP; pelo sistema de fluxo. </para> +</listitem> + +<listitem> +<para +>Módulos não devem usar funcionalidades do &MCOP; (como invocações remotas) durante a operação em linha de execução. </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="synchronization"> +<title +>Sincronização</title> + +<para +>Vídeo e &MIDI; (e áudio) devem requerer sincronização. Basicamente, isto é estampa de tempo. A idéia que eu tenho é anexar estampa de tempo aos fluxos assíncronos, adicionando uma estampa de tempo para cada pacote. Se você enviar dois quadros de vídeo, simplesmente crie dois pacotes (eles serão grandes de qualquer jeito), assim você pode ter duas estampas de tempo diferentes. </para> + +<para +>Áudio deve implicitamente ter estampas de tempo, uma vez que ele é síncrono. </para> + +</sect1> + +<sect1 id="dynamic-composition"> +<title +>Composição Dinâmica</title> + +<para +>Deve ser possível dizer: Um efeito FX é composto de seus módulos simples. O FX deve parecer um módulo &MCOP; normal (veja mascaramento), mas de fato consiste de outros módulos. </para> + +<para +>Isto é necessário para o &arts-builder;. </para> + +</sect1> + +<sect1 id="gui"> +<title +>&GUI;</title> + +<para +>Todos os componentes de &GUI; serão módulos &MCOP;. Eles devem ter atributos como tamanho, rótulo, cor, ... . Um construtor <acronym +>RAD</acronym +> (&arts-builder;) deve ser capaz de compô-los visualmente. </para> + +<para +>A &GUI; deve ser salvável salvando os atributos. </para> + +</sect1> + +<sect1 id="midi-stuff"> +<title +>&MIDI;</title> + +<para +>O material de &MIDI; será implementado como fluxos assíncronos. Existem duas opções, uma é usar estruturas normais do &MCOP; para definir os tipos e outra é introduzir outros tipos customizados. </para> + +<para +>Eu acho que estruturas normais deve ser o bastante, que é algo como: </para> + +<programlisting +>struct MidiEvent { + byte b1,b2,b3; + sequence<byte> sysex; +} +</programlisting> + +<para +>Fluxos assíncronos devem suportar tipos de fluxo customizados. </para> + +</sect1> + +</chapter> + + diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/glossary.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/glossary.docbook new file mode 100644 index 00000000000..4e0ffbdf889 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/glossary.docbook @@ -0,0 +1,173 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE glossary PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<glossary id="glossary"> + +<glossentry id="gloss-alsa"> +<glossterm +><acronym +>ALSA</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Arquitetura de Som &Linux; Avançada; um driver de placa de som para &Linux; atualmente não incluído no código fonte do kernel padrão. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-arts"> +<glossterm +>&arts;</glossterm> +<glossdef> +<para +>Sigla, do inglês, para Sintetizador de Tempo Real Análogo; o nome do conjunto de ferramentas/biblioteca/arquitetura de multimídia usado pelo projeto &kde; (observe a capitalização) </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-bsd"> +<glossterm +><acronym +>BSD</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Distribuição de Software Berkeley; aqui refere-se a qualquer um dos diversos sistemas operacionais compatíveis com o &UNIX; derivados do <acronym +>BSD</acronym +> &UNIX;. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-corba"> +<glossterm +><acronym +>CORBA</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Arquitetura de Gerenciamento de Requisições a Objetos Comuns; um padrão para implementar execução remota orientada à objeto. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-cvs"> +<glossterm +><acronym +>CVS</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Sistema de Versões Simultâneas; um sistema de gerenciamento de configuração de software usado por muitos projetos de software incluindo o &kde; e o &arts;. </para> +</glossdef> +</glossentry> + +<glossentry id="glos-fft"> +<glossterm +><acronym +>FFT</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Transformação de Fourier Rápida; um algoritmo, criado por Fourier, um matemático francês, para conversão de dados a partir do tempo para o domínio de frequência; frequentemente usado no processamento de sinais. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-full-duplex"> +<glossterm +>Full Duplex</glossterm> +<glossdef> +<para +>A habilidade da placa de som gravar e tocar áudio simultaneamente. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-gpl"> +<glossterm +><acronym +>GPL</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Licença Pública Geral <acronym +>GNU</acronym +>; uma licença de software criada pela Free Software Foundation (Fundação do Software Livre) que define os termos para o lançamento de software livre. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-gui"> +<glossterm +>&GUI;</glossterm> +<glossdef> +<para +>Sigla, do inglês, para Interface Gráfica com o Usuário </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-idl"> +<glossterm +><acronym +>IDL</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Linguagem de Definição de Interface; um linguagem de programação independente de formato para especificação de interfaces (métodos e dados). </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-kde"> +<glossterm +>&kde;</glossterm> +<glossdef> +<para +>Sigla, do inglês, para Ambiente de Trabalho K; um projeto para desenvolver um ambiente de trabalho gráfico livre para sistemas compatíveis com o &UNIX;. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-lgpl"> +<glossterm +><acronym +>LGPL</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Licença Pública Geral Lesser <acronym +>GNU</acronym +>; uma licença de software criada pela Free Software Foundation (Fundação do Software Livre) que define os termos para lançamento de software livre; menos restritiva que a <acronym +>GPL</acronym +> e frequentemente usada por bibliotecas de software. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-mcop"> +<glossterm +>&MCOP;</glossterm> +<glossdef> +<para +>Sigla, do inglês, para Protocolo de Comunicação Multimídia; o protocolo usado para comunicação entre os módulos de software do &arts;; semelhante ao <acronym +>CORBA</acronym +> mas simplificado e otimizado para multimídia. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-midi"> +<glossterm +>&MIDI;</glossterm> +<glossdef> +<para +>Sigla, do inglês, para Interface Digital de Instrumento Multimídia; um protocolo padrão para comunicação entre instrumentos musicais eletrônicos; frequentemente usado também para referir-se ao formato de arquivo para armazenar comandos &MIDI;. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-oss"> +<glossterm +><acronym +>OSS</acronym +></glossterm> +<glossdef> +<para +>Sigla, do inglês, para Sistema de Som Aberto; os drivers de som incluídos com o kernel do &Linux; (algumas vezes chamados de <acronym +>OSS</acronym +>/Livre) ou uma versão comercial vendida por 4Front Technologies. </para> +</glossdef> +</glossentry> + +</glossary> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/helping.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/helping.docbook new file mode 100644 index 00000000000..714f1d7ca1f --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/helping.docbook @@ -0,0 +1,237 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="contributing"> +<title +>Contribuindo com o &arts;</title> + +<sect1 id="how-to-help"> +<title +>Como Eu Posso Ajudar</title> + +<para +>O projeto &arts; pode se beneficiar da ajuda de desenvolvedores para tornar os aplicativos multimídia existentes compatíveis com o &arts;, escrever novos aplicativos multimídia, e incrementar os recursos do &arts;. No entanto, você não precisa ser um desenvolvedor para contribuir. Nós podems também nos beneficiar de testadores para submeter relatórios de erros, tradutores para traduzir o texto e documentação do aplicativo para outros idiomas, artistas para desenhar bitmaps (especialmente para os módulos do <application +>artsbuilder</application +>), músicos para criar modos de amostras para o &arts;, e escritores para escrever ou analisar a documentação. </para> +</sect1> + +<sect1 id="mailing-lists"> +<title +>Listas de Discussão</title> + +<para +>A maioria das discossões sobre o desenvolvimento do &arts; ocorrem em duas listas. Elas são o local para discutir novos recursos e idéias de implementação ou pedir ajuda quando problemas acontecem. </para> + +<para +>A lista de discussão de Multimídia do &kde; é para questões gerais sobre multimídia no &kde; incluindo o &arts; bem como aplicativos multimídia como o &noatun; e &aktion;. Você pode inscrever-se a partir da página web em <ulink url="http://www.kde.org/mailinglists.html" +>http://www.kde.org/mailinglists.html</ulink +> ou enviar uma mensagem eletrônica com o assunto <userinput +>subscribe <replaceable +>seu-endereço-eletrônico</replaceable +></userinput +> para <email +>kde-multimedia-request@kde.org</email +>. A lista também é arquivada em <ulink url="http://lists.kde.org" +>http://lists.kde.org</ulink +>. </para> + +<para +>A lista de discussão do &arts; é para questões específicas do &arts;, incluindo uso não-&kde; do &arts;. Para inscrever-se, envie uma mensagem eletrônica contendo o corpo da mensagem <userinput +>subscribe <replaceable +>seu-endereço-eletrônico</replaceable +></userinput +> para <email +>arts-request@space.twc.de</email +>. A lista é arquivada em <ulink url="http://space.twc.de/~stefan/arts-archive" +>http://space.twc.de/~stefan/arts-archive</ulink +>. </para> + +</sect1> + +<sect1 id="coding-standards"> +<title +>Padrões de Codificação</title> + +<para +>Para obter uma leitura consistente em todas as fontes, é importante manter o mesmo estilo de código, em todos arquivos de código fonte do &arts;. Por favor, se você acabou de escrever um módulo, tente escrever/formatar seu código de acordo, assim ficará mais fácil para as diferentes pessoas manter a árvore de código fonte, e mais fácil copiar partes de código de um arquivo para outro. </para> + +<variablelist> +<varlistentry> +<term +>Nomeando funções membro</term> +<listitem> +<para +>Estilo &Qt;/&Java;. Ou seja, capitalização nas quebras de palavra, e a primeira letra sempre sem capitalização, sem sublinhados. </para> +<para +>Isto significa, por exemplo:</para> + +<programlisting +>createStructureDesc() + updateWidget(); + start(); </programlisting> + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Membros de classe</term> +<listitem> +<para +>Membros de classe não são capitalizados, assim como uma barra de menu ou botão. </para> + +<para +>Onde estão acessando funções, o padrão deve ser o do &MCOP;, que é, ao ter um membro longo <function +>foo</function +>, que deve ser visível diretamente, você cria: </para> + +<programlisting +>foo(long new_value); + long foo(); </programlisting> + +<para +>funções para obter ou configurar o valor. Neste caso, o valor real de <function +>foo</function +> deve ser armazenado em <returnvalue +>_foo</returnvalue +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Nomes de classe</term> +<listitem> +<para +>Todas as classes devem ter capitalizadas as letras iniciais das palavras, o que significa <classname +>ModuleView</classname +>, <classname +>SynthModule</classname +>. Todas as classes que se originam de bibliotecas devem usar o espaço de nomes do &arts;, como <classname +>Arts::Soundserver</classname +>. </para> +<para +>A implementação de classes &MCOP; deve ser chamada <classname +>Classe_impl</classname +>, como <classname +>SoundServer_impl</classname +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Parâmetros</term> +<listitem> +<para +>Os parâmetros são sempre em minúsculas. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Variáveis locais</term> +<listitem> +<para +>Variáveis locais são sempre em minúsculas, e devem ter nomes como <varname +>i</varname +>, <varname +>p</varname +>, <varname +>x</varname +>, &etc; onde apropriado. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Largura da tabulação (largura do Shift)</term> +<listitem> +<para +>Uma tabulação deve ser tão longa quanto 4 espaços. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Espaços em expressões.</term> +<listitem> +<para +>Você normalmente não precisa usar espaços em expressões. Você pode entretanto usá-los entre o operador e seus operandos. No entanto, se você colocar um espaço antes de um operador (por exemplo o +), você também deve colocar um espaço após o operador. A única exceção a isto são expressões estilo lista (com ,), onde você deve colocar um espaço após a "," mas não antes. Não há problemas se omitir o espaço aqui também. </para> +<para +>Os exemplos a seguir demonstram o bom uso de espaços: </para> +<programlisting +>{ + int a,b; + int c, d, e; + int f = 4; + + a=b=c=d+e+f; + a = b = c = d + e + f; + + if(a == 4) { + a = b = c = (d+e)/2; + } + + while(b<3) + c--; + + arts_debug("%d\n", c); +} +</programlisting> +<para +>Os exemplos a seguir demonstram como <emphasis +>não</emphasis +> usar espaços. Para chamadas de função, após if, while, for, switch e assim por diante, nenhum espaço deve ser escrito. </para> +<programlisting +>{ + // RUIM: se você escreveu uma lista, espaços em branco somente após a "," + int a , b , c , d , e , f; + + // RUIM: uso não simétrico de espaços para o operador = + a= 5; + + // RUIM: se é considerada uma função, e não é seguida por um espaço + if (a == 5) { + } + + // RUIM: não escreva um espaço após while + while (a--) + b++; + + // RUIM: nomes de funções não são seguidos por um espaço + arts_debug ("%d\n", c); + + // RUIM: não são nomes de membro + Arts::Object o = Arts::Object::null (); +} +</programlisting> +</listitem> +</varlistentry> + + +<varlistentry> +<term +>Nomes de arquivos fonte</term> +<listitem> +<para +>Arquivos fonte não devem ter capitalização no nome. Eles devem ter o nome da classe quando implementam uma classe única. Sua extensão é <literal role="extension" +>.cc</literal +> se eles referem-se a código independente para &Qt;/&GUI;, e <literal role="extension" +>.cpp</literal +> se eles referem-se a código dependente do &Qt;/&GUI;. Arquivos de implementação para interfaces devem ser chamados <filename +><replaceable +>foo</replaceable +>_impl</filename +>, se Foo foi o nome da interface. </para> + +<para +>Arquivos &IDL; devem ser chamados de uma maneira descritiva para a coleção de interfaces que eles contém, também tudo em minúsculas. Especialmente não é uma boa idéia chamar um arquivo &IDL; como a classe propriamente dita, assim como o negociador mcopclass e inserir entradas de informação conflitantes. </para> +</listitem> +</varlistentry> +</variablelist> +</sect1> + +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/mcop.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/mcop.docbook new file mode 100644 index 00000000000..12cc9e4ebe3 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/mcop.docbook @@ -0,0 +1,1974 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="mcop"> +<title +>&MCOP;: Modelo de Objeto e Fluxo</title> + +<sect1 id="mcop-overview"> + +<title +>Visão Geral</title> + +<para +>O &MCOP; é o padrão que o &arts; usa para: </para> + +<itemizedlist> +<listitem> +<para +>Comunicação entre objetos. </para> +</listitem> + +<listitem> +<para +>Transparência de rede. </para> +</listitem> + +<listitem> +<para +>Descrever interfaces de objetos. </para> +</listitem> + +<listitem> +<para +>Independência de linguagem. </para> +</listitem> +</itemizedlist> + +<para +>Um aspecto importante do &MCOP; é a <emphasis +>linguagem de descrição de interface</emphasis +>, &IDL;, na qual muitas interfaces e <acronym +>API</acronym +>s do &arts; são definidas de uma maneira independente de linguagem. </para> + +<para +>Para usar interfaces &IDL; a partir do C++, é pelo compilador &IDL; para código C++. Ao implementar uma interface, você deriva a partir da classe esqueleto que o compilador &IDL; gerou. Ao usar uma interface, você faz isso como se estivesse usando um envólucro. Desta maneira, o &MCOP; pode usar um protocolo se o objeto com que você está falando não é local - você obtém transparência de rede. </para> + +<para +>Este capítulo busca descrever os recursos básicos do modelo de objeto que resulta a partir do uso do &MCOP;, o protocolo, como usar o &MCOP; em C++ (ligação com a linguagem), e assim por diante. </para> + +</sect1> + +<sect1 id="interfaces"> + +<title +>Interfaces e &IDL;</title> + +<para +>Muitos dos serviços fornecidos pelo &arts;, como os módulos e o servidor de som, são definidos em termos de <acronym +>interfaces</acronym +>. Interfaces são especificadas em um formato independente de linguagem: &IDL;. </para> + +<para +>Isto permite que muitos dos detalhes da implementação como o formato de fluxos de dados multimídia, transparência de rede, e dependências de linguagem de programação, sejam ocultas a partir da especificação da interface. Uma ferramenta, o &mcopidl;, traduz a definição de interface para uma linguagem de programação específica (atualmente somente o C++ é suportado). </para> + +<para +>A ferramenta gera uma classe esqueleto com todo código correspondente e funcionalidade básica. Você deriva a partir desta classe para implementar os recursos que deseja. </para> + +<para +>O &IDL; usado pelo &arts; é semelhante ao usado pelo <acronym +>CORBA</acronym +> e <acronym +>DCOM</acronym +>. </para> + +<para +>Arquivos &IDL; podem conter: </para> + +<itemizedlist> +<listitem> +<para +>Diretivas #include estilo-C para outros arquivos &IDL;. </para> +</listitem> + +<listitem> +<para +>Definições de enumerações e tipos de estrutura, como em C/C++. </para> +</listitem> + +<listitem> +<para +>Definições de interfaces. </para> +</listitem> +</itemizedlist> + +<para +>Interfaces &IDL; são definidas de maneira bem semelhante às classes C++ ou estruturas C, apesar de com algumas restrições. Como no C++, interfaces pode ter subclasses de outras interfaces usando herança. Definições de interface podem incluir três coisas: fluxos, atributos e métodos. </para> + +<sect2 id="streams"> + +<title +>Fluxos</title> + +<para +>Fluxos definem dados de multimídia, um dos mais importantes componentes de um módulo. Fluxos são definidos no seguinte formato: </para> + +<para +>[ async ] in|out [ multi ] <replaceable +>type</replaceable +> stream <replaceable +>nome</replaceable +> [ , <replaceable +>nome</replaceable +> ] ; </para> + +<para +>Fluxos possuem uma direção definida em referência ao módulo, como indicado pelos qualificadores obrigatórios in ou out. O argumento type define o tipo de dado, que pode ser qualquer um dos tipos descritos mais tarde pelos atributos (nem todos são atualmente suportados). Muitos módulos usam o tipo de fluxo audio, que é um apelido para flutuante uma vez que este é o formato de dados interno para fluxo de áudio. Fluxo múltiplos do mesmo tipo podem ser definidos na mesma definição usando nomes separados por vírgulas. </para> + +<para +>Fluxos são por padrão síncronos, o que significa que eles são contínuos e fornecem dados em uma taxa constante, como um áudio <acronym +>PCM</acronym +>. O qualificador async especifica um fluxo assíncrono, que é usado por fluxos de dados não contínuos. O exemplo mais comum de um fluxo assíncrono são mensagens &MIDI;. </para> + +<para +>A chave multi, somente válida para fluxos de entrada, indica que a interface suporta um número variável de entradas. Isto é útil para implementar dispositivos como mixadores que podem aceitar um grande número de fluxos de entrada. </para> + +</sect2> +<sect2 id="attributes"> + +<title +>Atributos</title> + +<para +>Atributos são dados associados com uma instância de uma interface. Eles são declarados como variáveis membro em C++, e podem usar qualquer um dos tipos primitivos booleano, byte, longo, string ou flutuante. Você pode também usar estruturas definidas pelo usuários ou tipos de enumeração bem como sequências delimitadas de variáveis usando a sintaxe sequência<tipo>. Atributos podem opcionalmente ser marcados como somente leitura. </para> + +</sect2> +<sect2 id="methods"> + +<title +>Métodos</title> + +<para +>Como em C++, métodos podem ser definidos em interfaces. Os parâmetros do métodos são restritos aos mesmos tipos dos atributos. A chave oneway indica um método que retorna imediatamente e é executado de maneira assíncrona. </para> + +</sect2> + +<sect2 id="standardinterfaces"> + +<title +>Interfaces Padrão</title> + +<para +>Diversas interfaces de módulos padrão já estão definidas para você no &arts;, como a <interfacename +>StereoEffect</interfacename +>, e <interfacename +>SimpleSoundServer</interfacename +>. </para> + +</sect2> + +<sect2 id="example"> +<title +>Exemplo</title> + +<para +>Um exemplo simples de um módulo obtido do &arts; é o módulo de retardo constante, encontrado no arquivo <filename +>tdemultimedia/arts/modules/artsmodules.idl</filename +>. A definição de interface é listada abaixo. </para> + +<programlisting +>interface Synth_CDELAY : SynthModule { + attribute float time; + in audio stream invalue; + out audio stream outvalue; +}; +</programlisting> + +<para +>Este módulo é herdeiro do <interfacename +>SynthModule</interfacename +>. Esta interface, definida em <filename +>artsflow.idl</filename +>, define métodos padrão implementados em todos os módulos de sintetização de música. </para> + +<para +>O efeito CDELAY retarda um fluxo de áudio estéreo de um valor de tempo especificado como um parâmetro de ponto flutuante. A definição de interface possui um atributo do tipo flutuante para armazenar o valor de retardo. Isto define dois fluxos de entrada de áudio e dois fluxos de saída de áudio (tipicamente para efeitos estéreo). Nenhum método é necessário além dos que ele herda. </para> + +</sect2> + +</sect1> + +<sect1 id="more-about-streams"> +<title +>Mais Sobre Fluxos</title> + +<para +>Esta seção aborda alguns tópicos adicionais relacionados com fluxos. </para> + +<sect2 id="stream-types"> +<title +>Tipos de Fluxo</title> + +<para +>Existem vários requisitos para como um módulo pode fazer um fluxo. Para ilustrar isto, considere estes exemplos: </para> + +<itemizedlist> +<listitem> +<para +>Escalonar um sinal por um fator de dois. </para> +</listitem> + +<listitem> +<para +>Executar uma conversão de frequência de amostra. </para> +</listitem> + +<listitem> +<para +>Descomprimir um sinal codificado em tempo de execução. </para> +</listitem> + +<listitem> +<para +>Ler eventos &MIDI; de <filename class="devicefile" +>/dev/midi00</filename +> e inserí-los em um fluxo. </para> +</listitem +> +</itemizedlist> + +<para +>O primeiro caso é o mais simples: ao receber 200 amostras de entrada o módulo produz 200 amostras de saída. Ele somente produz saída quando ele recebe entrada. </para> + +<para +>O segundo caso produz número diferente de amostras de saída ao receber 200 amostras de entrada. Isto depende de que conversão é executada, mas o número é conhecido a seguir. </para> + +<para +>O terceiro caso é mais complicado. A partir dos dados recebidos você não pode adivinhar quanto dados os 200 bytes de entrada gerarão (provavelmente muito mais de 200 bytes, mas...). </para> + +<para +>O último caso é um módulo que se torna ativo por ele mesmo, e algumas vezes produz dados. </para> + +<para +>No &arts;-0.3.4, somente fluxos do primeiro tipo serão manipulados, e a maioria das coisas funciona bem. Este é provavelmente o que você precisa mais ao escrever módulos que processam áudio. O problema com os outros, e mais complexos tipos de fluxo, é que eles são difíceis de programar, e que você não precisa destes recursos na maioria das vezes. É por isto que nós fazemos isto com dois tipos de fluxo diferentes: síncronos e assíncronos. </para> + +<para +>Fluxos síncronos possuem estas características: </para> + +<itemizedlist> +<listitem> +<para +>Os módulos devem ser capazes de calcular dados de qualquer tamanho, fornecida a entrada suficiente. </para> +</listitem> + +<listitem> +<para +>Todos os fluxos possuem a mesma taxa de amostragem. </para> +</listitem> + +<listitem> +<para +>A função <function +>calculateBlock()</function +> será chamada quando dados suficientes estiverem disponíveis, e o módulo pode confiar nos ponteiros que apontam para os dados. </para> +</listitem +> + +<listitem> +<para +>Não existe alocação ou desalocação a ser feita. </para> +</listitem> +</itemizedlist> + +<para +>Fluxos assíncronos, por outro lado, possuem este comportamento: </para> + +<itemizedlist> +<listitem> +<para +>Módulos podem algumas vezes produzir dados, ou com taxa de amostragem variável, ou somente se eles tiverem entrada a partir de algum descritor arquivado. Eles não se limitam pela regra que <quote +>deve ser capaz de satisfazer requisitos de qualquer tamanho</quote +>. </para> +</listitem> + +<listitem> +<para +>Fluxos assíncronos de um módulo podem ter taxas de amostragem completamente diferentes. </para> +</listitem> + +<listitem> +<para +>Fluxos de saída: existem funções explícitas para alocar pacotes, enviar pacotes - e um mecanismo de eleição adicional que lhe dirá quando você deve criar mais algum dado. </para> +</listitem> + +<listitem> +<para +>Fluxos de entrada: você obtém uma chamada quando recebe um novo pacote - você deve dizer quando você está processando todos os dados deste pacote, o que não deve acontecer de uma vez (você pode informar isto mais tarde, e se todos foram processados um pacoto, se será liberado/reusado) </para> +</listitem> +</itemizedlist> + +<para +>Ao você declarar fluxos, você usa a chave <quote +>async</quote +> para indicar que deseja criar um fluxo assíncrono. Assim, por exemplo, consideremos que você deseja converter um fluxo assíncrono de bytes para um fluxo síncrono de amostras. Sua interface pode parecer-se com isto: </para> + +<programlisting +>interface ByteStreamToAudio : SynthModule { + async in byte stream indata; // o fluxo de amostra de entrada assíncrono + + out audio stream left,right; // fluxos de amostra de saída síncronos +}; +</programlisting> + +</sect2> + +<sect2 id="async-streams"> +<title +>Usando Fluxos Assíncronos</title> + +<para +>Suponhamos que você decida escrever um módulo para produzir som de maneira assíncrona. Sua interface pode parecer-se com isto: </para> + +<programlisting +>interface SomeModule : SynthModule +{ + async out byte stream outdata; +}; +</programlisting> + +<para +>Como enviar os dados? O primeiro método é chamado <quote +>empurrar e entregar</quote +>. Com fluxos assíncronos você envia dados como pacotes. Ou seja, você envia pacotes individuais com bytes como no exemplo acima. O processo atual é: alocar um pacote, preenchê-lo, enviá-lo. </para> + +<para +>Aqui está em termos de código: Primeiro, nós alocamos um pacote: </para> + +<programlisting +>DataPacket<mcopbyte> *packet = outdata.allocPacket(100); +</programlisting> + +<para +>Nós o preenchemos: </para> + +<programlisting +>// molde de modo que fgets esteja satisfeito que ele seja um ponteiro (char *) +char *data = (char *)packet->contents; + +// como pode ver, você pode restringir o tamanho do pacote após a alocação +// se desejar +if(fgets(data,100,stdin)) + packet->size = strlen(data); +else + packet->size = 0; +</programlisting> + +<para +>Agora o enviamos: </para> + +<programlisting +>packet->send(); +</programlisting> + +<para +>Este é um exemplo bem simples, mas se você deseja enviar pacotes extamanete tão rápido quanto o recebedor possa processá-los, você precisa de outra abordagem, o método <quote +>puxar e entregar</quote +>. Você pede para enviar pacotes tão rápido quanto o recebedor esteja pronto para processá-lo. Você inicia com uma determinada quantidade de pacotes que enviou. Assim que o recebedor processar um pacote após o outro, você começa a recarregar com novos dados, e enviá-los novamente. </para> + +<para +>Você inicia isto chamando o setPull. Por exemplo: </para> + +<programlisting +>outdata.setPull(8, 1024); +</programlisting> + +<para +>Isto significa que você deseja enviar pacotes pelos dados de saída. Você deseja iniciar enviando 8 pacotes de uma vez, e assim que o recebedor processar alguns deles, você deseja receber mais. </para> + +<para +>Então, você precisa implementar um método que preencha os pacotes, que pode ser algo como isto: </para> + +<programlisting +>void request_outdata(DataPacket<mcopbyte> *packet) +{ + packet->size = 1024; // não deve ser mais de 1024 + for(int i = 0;i < 1024; i++) + packet->contents[i] = (mcopbyte)'A'; + packet->send(); +} +</programlisting> + +<para +>É isto. Quando você não tiver mais qualquer dado, você pode começar a enviar pacotes com tamanho zero, que interromperá o processo de puxar. </para> + +<para +>Observe que é essencial fornecer ao método o nome exato <methodname +>request_<replaceable +>nomedofluxo</replaceable +></methodname +>. </para> + +<para +>Nós apenas discutimos o envio de dados. O recebimento de dados é bem mais simples. Suponhamos que você tenha um filtro ToLower simples, que simplesmente converte todas as letras para minúsculas: </para> + +<programlisting +>interface ToLower { + async in byte stream indata; + async out byte stream outdata; +}; +</programlisting> + +<para +>Isto é realmente simples de implementar; aqui está toda a implementação: </para> + +<programlisting +>class ToLower_impl : public ToLower_skel { +public: + void process_indata(DataPacket<mcopbyte> *inpacket) + { + DataPacket<mcopbyte> *outpacket = outdata.allocPacket(inpacket->size); + + // converte para letras minúsculas + char *instring = (char *)inpacket->contents; + char *outstring = (char *)outpacket->contents; + + for(int i=0;i<inpacket->size;i++) + outstring[i] = tolower(instring[i]); + + inpacket->processed(); + outpacket->send(); + } +}; + +REGISTER_IMPLEMENTATION(ToLower_impl); +</programlisting> + +<para +>Novamente, é essencial nomear o método como <methodname +>process_<replaceable +>nomedofluxo</replaceable +></methodname +>. </para> + +<para +>Como pode ver, para cada pacote de chegada você obtém uma chamada para uma função (a chamada <function +>process_indata</function +> em seu caso). Você precisa chamar o método <methodname +>processed()</methodname +> de um pacote para indicar que você já o processou. </para> + +<para +>Aqui está uma dica de implementação: se o processamento demorar muito 9&ie; se você deseja esperar pela saída da placa de som ou algo parecido). não chame o processo imediatamente, mas armazene todo pacote de dados e chame processed somente tão logo você realmente tenha processado o pacote. Deste modo, remetentes possuem a chance de saber quanto tempo ele realmente leva para fazer seu trabalho. </para> + +<para +>Como sincronização não é tão agradável com fluxos assíncronos, você deve usar fluxos síncronos sempre que possível, e fluxos assíncronos somente quando necessário. </para> + +</sect2> + +<sect2 id="default-streams"> +<title +>Fluxos Padrão</title> + +<para +>Suponhamos que você tenha 2 objetos, por exemplo um AudioProducer e um AudioConsumer. O AudioProducer tem um fluxo de saída e o AudioConsumer tem um de entrada. Cada vez que você desejar conectá-los, você usará estes 2 fluxos. O primeiro uso dos padrões é para permitir que você crie conexões sem especificar as portas neste caso. </para> + +<para +>Agora suponhamos que os objetos acima possam manipular estéreo, e cada um tenha uma porta <quote +>left</quote +> e <quote +>right</quote +>. Você gostaria ainda de conectá-los tão facilmente quanto antes. Mas como pode o sistema de conexão saber que porta de saída conectar a qual porta de entrada? Não existe maneira de mapear corretamente os fluxos? Os padrões são então usados para especificar diversos fluxos, com uma ordem. Assim, quando você conectar um objeto com 2 fluxos de saída padrão a outro com 2 fluxos de entrada padrão, você não precisa especificar as portas, e o mapeamento será feito corretamente. </para> + +<para +>É claro, isto não se limita ao estéreo. Qualquer número de fluxos pode ser estabelecido como padrão se necessário, e a função de conexão verificará se o número de padrões de 2 objetos correspondem (na direção necessária) se você não especificar as portas a usar. </para> + +<para +>A sintaxe é a seguinte: no &IDL; você pode usar a chave default na declaração do fluxo, ou em uma linha simples. Por exemplo: </para> + +<programlisting +>interface TwoToOneMixer { + default in audio stream input1, input2; + out audio stream output; +}; +</programlisting> + +<para +>Neste exemplo, o objeto irá esperar que duas portas de entrada sejam conectadas por padrão. A ordem é a especificada na linha default, assim um objeto como este: </para> + +<programlisting +>interface DualNoiseGenerator { + out audio stream bzzt, couic; + default couic, bzzt; +}; +</programlisting> + +<para +>Criará conexões a partir de <quote +>couic</quote +> para <quote +>input1</quote +>, e <quote +>bzzt</quote +> para <quote +>input2</quote +> automaticamente. Observe que uma vez que existe somente uma saída para o mixador, ela será tornada padrão neste caso (veja abaixo). A sintaxe usada no gerador de ruído é útil para declarar uma ordem diferente da estabelecida na declaração, ou selecionar somente algumas portas como padrão. A direção das portas nesta linha serão descobertas pelo &mcopidl; assim não as especifique. Você pode misturar portas de entrada e saída na mesma linha, somente a ordem é importante. </para> + +<para +>Existem algumas regras que serão seguidas ao usar herança: </para> + +<itemizedlist> +<listitem> +<para +>Se uma lista padrão é especificada no &IDL;, então a usa. Portas pai podem ser colocadas na lista também, sejam elas padrão no pai ou não. </para> +</listitem> + +<listitem> +<para +>Caso contrário, herda os padrões do pai. A ordem é parente1 padrão1, parente1 padrão2 ..., parente2 padrão 1... Se existir um ancestral comum usando 2 ramos pai, um lista <quote +>pública virtual</quote +> mesclada é feita na qual o padrão é a primeira ocorrência da lista. </para> +</listitem> + +<listitem> +<para +>Se ainda não existir um padrão e um fluxo simples em uma direção, use-o como padrão para esta direção. </para> +</listitem> +</itemizedlist> + +</sect2> + +</sect1> +<sect1 id="attribute-change-notify"> +<title +>Notificações de mudança de atributos</title> + +<!-- TODO: This should be embedded better into the context - I mean: the + context should be written ;-). --> + +<para +>Notificações de mudança de atributos são uma maneira de saber quando um atributo muda. Elas são um pouco semelhantes aos sinais e slots do &Qt; ou Gtk. Por exemplo, se você tiver um elemento &GUI;, um índice deslizante, que configura um número entre 0 e 100, você normalmente terá um objeto que faz algo com este número (por exemplo, ele pode estar controlando o volume de algum sinal de áudio). Assim você desejaria que sempre que o índice fosse movido, o objeto que escalona o volume fosse notificado. Uma conexão entre o remetente e o destinatário. </para> + +<para +>O &MCOP; lida com isto sendo capaz de fornecer notificações quando atributos mudam. O que quer que seja declarado como <quote +>atributo</quote +> no &IDL; pode emitir estas notificações, e deve fazer isso, sempre que for modificado. O que quer que seja declarado como <quote +>atributo</quote +> também pode receber estas notificações de mudaça. Assim, por exemplo, se você possui duas interfaces &IDL;, como estas: </para> + +<programlisting +>interface Slider { + attribute long min,max; + attribute long position; + }; + interface VolumeControl : Arts::StereoEffect { + attribute long volume; // 0..100 + }; +</programlisting> + +<para +>Você pode conectá-las usando notificações de mudanças. Isto funciona usando a operação de conexão do sistema de fluxo normal. Neste caso, o código C++ para conectar dois objetos se parecerá com isto: </para> + +<programlisting +>#include <connect.h> +using namespace Arts; +[...] +connect(slider,"position_changed",volumeControl,"volume"); +</programlisting> + +<para +>Como pode ver, cada atributo oferece dois fluxos diferentes, um para enviar as notificações de mudança, chamado <function +><replaceable +>nomeatributo</replaceable +>_changed</function +>, e um para receber notificações de mudança, chamado <function +>nomeatributo</function +>. </para> + +<para +>É importante saber que as notificações de mudança e fluxos assíncronos são compatíveis. Eles também são transparentes à rede. Assim você pode conectar uma notificação de mudança de um atributo flutuante de um widget que a &GUI; possua com um fluxo assíncrono de um módulo sintetizador sendo executado em outro computador. Isto, é claro, implica que as notificações de mudança <emphasis +>não são síncronas</emphasis +>, ou seja, após você ter enviado a notificação de mudança, ela pode levar algum tempo até ela ser efetivamente recebida. </para> + +<sect2 id="sending-change-notifications"> + +<title +>Enviando notificações de mudança</title> + +<para +>Ao implementar objetos que possuam atributos, você precisa enviar notificações de mudança sempre que um atributo muda. O código para fazer isto se parece com isto: </para> + +<programlisting +>void KPoti_impl::value(float newValue) + { + if(newValue != _value) + { + _value = newValue; + value_changed(newValue); // <- envia notificação de mudança + } + } +</programlisting> + +<para +>É altamente recomendável usar um código como este para todos os objetos que você implementar, assim estas notificações de mudança podem ser usadas por outras pessoas. Você deve também no entanto esvaziar as notificação enviadas frequentemente, assim se você estiver realizando um processamento de sinal, é provavelmente melhor você manter um monitoramento ao enviar sua última notificação, de modo que você não envie uma com cada amostra que você processar. </para> + +</sect2> + +<sect2 id="change-notifications-apps"> +<title +>Aplicações para notificações de mudança</title> + +<para +>Será especialmente útil o uso de notificações de mudança juntamente com escopos (coisas que visualizam dados de áudio por exemplo), elementos gui, widgets de controle, e monitoramento. Código usando isto existe em <filename class="directory" +>tdelibs/arts/tests</filename +>, e na implementação experimental da artsgui, que você pode encontrar em <filename class="directory" +>tdemultimedia/arts/gui</filename +>. </para> + +<!-- TODO: can I markup links into the source code - if yes, how? --> + +<!-- LW: Linking into the source is problematic - we can't assume people are +reading this on a machine with the sources available, or that they aren't +reading it from a website. We're working on it! --> + +</sect2> +</sect1> + +<sect1 id="the-mcoprc-file"> + +<title +>O arquivo <literal role="extension" +>.mcoprc</literal +></title> + +<para +>O arquivo <literal role="extension" +>.mcoprc</literal +> (em cada pasta pessoal do usuário) pode ser usado para configurar o &MCOP; de diversas maneiras. Atualmente, os parâmetros possíveis são os seguintes: </para> + +<variablelist> + +<varlistentry> +<term +>GlobalComm</term> +<listitem> +<para +>O nome de uma interface a ser usada para comunicação global. A comunicação global é usada para encontrar outros objetos e obter o cookie secreto. Múltiplos clientes/servidores &MCOP; que devem ser capazes de conversar um com os outros precisam ter um objeto GlobalComm que é capaz de compartilhar informações entre eles. Atualmente, os valores possíveis são <quote +>Arts:TmpGlobalComm</quote +> para comunicar através da pasta <filename class="directory" +>/tmp/mcop-<replaceable +>nomeusuário</replaceable +></filename +> (que somente funcionará em um computador local) e <quote +>Arts::X11GlobalComm</quote +> para comunicar através das propriedades da janela raiz no servidor X11. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>TraderPath</term> + +<listitem> +<para +>Especifica onde procurar por informações de negociação. Você pode listar mais de uma pasta aqui, e separá-las com vírgulas, como </para> +</listitem> + +</varlistentry> + +<varlistentry> +<term +>ExtensionPath</term> + +<listitem> +<para +>Especifica quais extensões de pasta (na forma de bibliotecas compartilhadas) são carregadas. Valores múltiplos podem ser especificados separados por vírgula. </para> +</listitem> + +</varlistentry> +</variablelist> + +<para +>Um exemplo que usa tudo acima é: </para> + +<programlisting +># $HOME/.mcoprc file +GlobalComm=Arts::X11GlobalComm + +# se você for um desenvolvedor, isto deve ser acessado para adicionar uma pasta em +# seu diretório pessoal para o negociador/extensão de caminho seja capaz de adicionar +# componentes sem instalá-los +TraderPath="/opt/kde2/lib/mcop","/home/marcus/mcopdevel/mcop" +ExtensionPath="/opt/kde2/lib","/home/marcus/mcopdevel/lib" +</programlisting> + +</sect1> + +<sect1 id="mcop-for-corba-users"> +<title +>&MCOP; para Usuários do <acronym +>CORBA</acronym +></title> + +<para +>Se você já usou o <acronym +>CORBA</acronym +> antes, você verá que o &MCOP; é quase a mesma coisa. De fato, o &arts; antes da versão 0.4 usava o <acronym +>CORBA</acronym +>. </para> + +<para +>A idéia básica do <acronym +>CORBA</acronym +> é a mesma: você implementa objetos (componentes). Usando os recursos do &MCOP;, seus objetos não estão somente disponíveis como classes normais a partir do mesmo processo (através das técnicas padrão do C++) - eles também estão disponíveis para servidores remotos de maneira transparente. Para isto funcionar, a primeira coisa que você precisa fazer é especificar a interface de seus objetos em um arquivo &IDL; - da mesma maneira que o &IDL; do <acronym +>CORBA</acronym +>. Existem somente algumas poucas diferenças. </para> + +<sect2 id="corba-missing"> +<title +>Recursos do <acronym +>CORBA</acronym +> Que Estão Faltando No &MCOP;</title> + +<para +>No &MCOP; não existe parâmetros <quote +>in</quote +> e <quote +>out</quote +> nas invocações de método. Parâmetros são sempre de entrada, o código de retorno é sempre de saída, o que significa que a interface: </para> + +<programlisting +>// CORBA idl +interface Account { + void deposit( in long amount ); + void withdraw( in long amount ); + long balance(); +}; +</programlisting> + +<para +>é escrita como </para> + +<programlisting +>// MCOP idl +interface Account { + void deposit( long amount ); + void withdraw( long amount ); + long balance(); +}; +</programlisting> + +<para +>no &MCOP;. </para> + +<para +>Não existe suporte à exceção. O &MCOP; não possui exceções - ele usa algo diferente para manipulação de erro. </para> + +<para +>Não existem tipos de união de typedefs. Eu não sei se isto é realmente uma fraqueza, uma vez que isto não é algo tão essencial assim. </para> + +<para +>Não existe suporte para passagem de interfaces ou referências de objetos </para> + +</sect2> + +<sect2 id="corba-different"> +<title +>Recursos do <acronym +>CORBA</acronym +> Que São Diferentes No &MCOP;</title> + +<para +>Você declara sequências como <quote +><replaceable +>tipo</replaceable +>sequence</quote +> no &MCOP;. Não existe necessidade de um typedef. Por exemplo, ao invés de: </para> + +<programlisting +>// CORBA idl +struct Line { + long x1,y1,x2,y2; +}; +typedef sequence<Line> LineSeq; +interface Plotter { + void draw(in LineSeq lines); +}; +</programlisting> + +<para +>você escreverá </para> + +<programlisting +>// MCOP idl +struct Line { + long x1,y1,x2,y2; +}; +interface Plotter { + void draw(sequence<Line> lines); +}; +</programlisting> + +</sect2> + +<sect2 id="no-in-corba"> +<title +>Recursos do &MCOP; Que Não Existem No <acronym +>CORBA</acronym +></title> + +<para +>Você pode declarar fluxos, que então serão avalidados pelo ambiente de trabalho do &arts;. Fluxos são declarados de maneira semelhante aos atributos. Por exemplo: </para> + +<programlisting +>// MCOP idl +interface Synth_ADD : SynthModule { + in audio stream signal1,signal2; + out audio stream outvalue; +}; +</programlisting> + +<para +>Isto diz que seu objeto aceitará dois fluxos de entrada síncrona de áudio chamados signal1 e signal2. Síncrona significa que estes fluxos enviarão x amostras por segunto (ou outro tempo), assim o agendador sempre garantirá que seja fornecido uma quantidade balanceada de dados de entrada (⪚ 200 amostras de signal1 existirão e 200 amostras de signal2 existirão). Você garantirá que se seu objeto for chamado com estas 200 amostras de signal1 + signal2, ele será capaz de produzir exatamente 200 amostras para o outvalue. </para> + +</sect2> + +<sect2 id="mcop-binding"> +<title +>A Conexão de Linguagem com o C++ do &MCOP;</title> + +<para +>Isto difere do <acronym +>CORBA</acronym +> na maior parte: </para> + +<itemizedlist> +<listitem> +<para +>Strings usam a classe <classname +>sting</classname +> do <acronym +>STL</acronym +> do C++. Quando armazenado em sequências, eles são armazenados como <quote +>plano</quote +>, o que significa que eles são considerados um tipo primitivo. Assim, eles precisam de cópia. </para> +</listitem> + +<listitem> +<para +>longs são long de plano (esperado ser de 32 bits). </para> +</listitem> + +<listitem> +<para +>As sequências usam a classe <classname +>vector</classname +> do C++ do <acronym +>STL</acronym +>. </para> +</listitem> + +<listitem> +<para +>As estruturas são todas derivadas da classe <classname +>Type</classname +> do &MCOP;, e são geradas no compilador de &IDL; do &MCOP;. Quando forem armazenadas em sequências, elas não serão armazenadas <quote +>planas</quote +> , mas sim como referências porque, caso contrário, iriam ocorrer várias cópias. </para> +</listitem> +</itemizedlist> +</sect2> + +<sect2 id="implementing-objects"> +<title +>Implementando Objetos do &MCOP;</title> + +<para +>Após passar as interfaces pelo compilador de &IDL;, você precisa de derivar da classe <classname +>_skel</classname +>. Por exemplo, considere que definiu a sua interface da seguinte forma: </para> + +<programlisting +>// IDL do MCOP: ola.idl +interface Ola { + void Ola(string s); + string concatenar(string s1, string s2); + long somar2(long a, long b); +}; +</programlisting> + +<para +>Você pode passar isso pelo compilador de &IDL;, invocando o comando <userinput +><command +>mcopidl</command +> <parameter +>ola.idl</parameter +></userinput +>, o que por sua vez irá gerar o <filename +>ola.cc</filename +> e o <filename +>ola.h</filename +>. Para o implementar, você precisa de definir uma classe C++ que herde do esqueleto: </para> + +<programlisting +>// Arquivo de inclusão de C++ - inclua o ola.h em algum lugar +class Ola_impl : virtual public Ola_skel { +public: + void ola(const string& s); + string concatenar(const string& s1, const string& s2); + long somar2(long a, long b); +}; +</programlisting> + +<para +>Finalmente, você terá de implementar os métodos como C++ normal </para> + +<programlisting +>// arquivo de implementação de C++ + +// como pode ver, as strings são passadas como referências de const string +void Ola_impl::ola(const string& s) +{ + printf("Ola '%s'!\n",s.c_str()); +} + +// quando têm um valor a devolver são passadas como cadeias de caracteres normais +string Ola_impl::concatenar(const string& s1, const string& s2) +{ + return s1+s2; +} + +long Ola_impl::somar2(long a, long b) +{ + return a+b; +} +</programlisting> + +<para +>Logo que faça isso, você terá um objeto que poderá comunicar-se usando o &MCOP;. Basta criar um (usando as funcionalidades normais do C++ para criar um objeto): </para> + +<programlisting +> Servidor do Ola_impl; +</programlisting> + +<para +>E assim que forneça a alguém a referência </para> + +<programlisting +>string referencia = servidor._toString(); + printf("%s\n",referencia.c_str()); +</programlisting> + +<para +>e vá para o ciclo de inatividade do &MCOP; </para> + +<programlisting +>Dispatcher::the()->run(); +</programlisting> + +<para +>As pessoas poderão acessar isso usando </para> + +<programlisting +>// este código poderá rodar em qualquer lado - não necessariamente no mesmo +// processo (poderá também rodar em um computador/arquitetura diferentes) + + Ola *h = Ola::_fromString([a referência do objeto impressa acima]); +</programlisting> + +<para +>e invocar os métodos: </para> + +<programlisting +>if(h) + h->ola("teste"); + else + printf("O acesso falhou?\n"); +</programlisting> + +</sect2> +</sect1> + +<sect1 id="mcop-security"> +<title +>Considerações de Segurança do &MCOP;</title> + +<para +>Uma vez que os servidores de &MCOP; irão atender os pedidos numa porta <acronym +>TCP</acronym +>, potencialmente todos (se você estiver na Internet) poderão tentar ligar-se aos serviços do &MCOP;. Por isso, é importante autenticar os clientes. O &MCOP; usa o protocolo md5-auth. </para> + +<para +>O protocolo md5-auth faz o seguinte para garantir que só os clientes selecionados (confiáveis) poderão ligar-se a um servidor: </para> + +<itemizedlist> +<listitem> +<para +>Ele considera que você fornece a todos os clientes um cookie secreto. </para> +</listitem> + +<listitem> +<para +>Toda vez que um cliente se conecta, ele verifica se o cliente conhece esse cookie secreto, sem o transferir de fato (de modo que nem quem esteja escutando o tráfego de rede possa descobrir). </para> +</listitem> + +</itemizedlist> + +<para +>Para fornecer a cada cliente esse cookie secreto, o &MCOP; irá (normalmente) colocá-lo na pasta <filename class="directory" +>mcop</filename +> (em <filename class="directory" +>/tmp/mcop-<envar +>USER</envar +>/secret-cookie</filename +>). Claro, você poderá copiá-lo para outros computadores. Contudo, se o fizer, use um mecanismo de transferência seguro, como o <command +>scp</command +> (do <application +>ssh</application +>). </para> + +<para +>A autenticação dos clientes usa os seguintes passos: </para> + +<procedure> +<step> +<para +>[SERVIDOR] gera um cookie novo (aleatório) R </para> +</step> + +<step> +<para +>[SERVIDOR] envia-o para o cliente </para> +</step> + +<step> +<para +>[CLIENTE] lê o "cookie secreto" S de um arquivo </para> +</step> + +<step> +<para +>[CLIENTE] embaralha os cookies R e S para um cookie embaralhado M usando o algoritmo MD5 </para> +</step> + +<step> +<para +>[CLIENTE] envia o M para o servidor </para> +</step> + +<step> +<para +>[SERVIDOR] verifica que, ao embaralhar o R e o S obterá o mesmo resultado que o cookie M recebido do cliente. Em caso afirmativo, a autenticação foi bem-sucedida. </para> +</step> + +</procedure> + +<para +>Este algoritmo deverá ser seguro, uma vez que </para> + +<orderedlist> +<listitem> +<para +>Os cookies secretos e os aleatórios são <quote +>aleatórios o bastante</quote +> e </para> +</listitem> + +<listitem> +<para +>O algoritmo de dispersão do MD5 não permite descobrir o <quote +>texto original</quote +>, que é o cookie secreto S e o cookie aleatório R (o qual é conhecido, de qualquer forma), a partir do cookie embaralhado M. </para> +</listitem> +</orderedlist> + +<para +>O protocolo &MCOP; irá iniciar todas as conexões novas com um processo de autenticação. Basicamente, assemelha-se ao seguinte: </para> + +<procedure> + +<step> +<para +>O servidor envia uma mensagem ServerHello que descreve os protocolos de autenticação conhecidos. </para> +</step> + +<step> +<para +>O cliente envia uma mensagem ClientHello que inclui a informação de autenticação. </para> +</step> + +<step> +<para +>O servidor envia uma mensagem AuthAccept. </para> +</step> +</procedure> + +<para +>Para verificar se a segurança funciona de fato, nós deveremos ver como é que as mensagens se processam nas ligações não-autenticadas: </para> + +<itemizedlist> +<listitem> +<para +>Antes de a autenticação ser bem sucedida, o servidor não irá receber outras mensagens da conexão. Em vez disso, se o servidor por exemplo estiver esperando uma mensagem <quote +>ClientHello</quote +> e obtiver uma mensagem de mcopInvocation, irá interromper a conexão. </para> +</listitem> + +<listitem> +<para +>Se o cliente não enviar uma mensagem de &MCOP; totalmente válida (sem o código especial do &MCOP; no cabeçalho da mensagem) na fase de autenticação, mas sim outra coisa qualquer, a conexão será interrompida. </para> +</listitem> + +<listitem> +<para +>Se o cliente tentar enviar uma mensagem muito grande (> 4096 bytes na fase de autenticação, o tamanho da mensagem é truncado para 0 bytes, o que fará com que não seja aceita para a autenticação). Isto é para evitar que os clientes não-autenticados enviem mensagens de ⪚ 100 megabytes, o que faria com que fosse recebida e com que o servidor estourasse com falta de memória. </para> +</listitem> + +<listitem> +<para +>Se o cliente enviar uma mensagem ClientHello corrompida (uma, onde a decodificação falhe), a conexão é mais uma vez quebrada. </para> +</listitem> + +<listitem> +<para +>Se o cliente não enviar nada de nada, então ocorrerá a expiração de tempo-limite (ainda a ser implementado). </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="mcop-protocol"> +<title +>Especificação do Protocolo &MCOP;</title> + +<sect2 id="mcop-protocol-intro"> +<title +>Introdução</title> + +<para +>Existem semelhanças conceituais com o <acronym +>CORBA</acronym +>, mas pretende expandí-las de todas as formas necessárias para as operações multimídia em tempo-real. </para> + +<para +>Oferece um modelo de objetos multimídia, o qual poderá ser usado para: a comunicação entre os componentes num espaço de endereçamento (um processo) e entre componentes que existam em tarefas, processos ou mesmo máquinas diferentes. </para> + +<para +>Tudo junto, será desenhado para uma performance extremamente alta (de modo que tudo seja otimizado para ser extremamente rápido), o que é adequado para as aplicações multimídia bastante comunicativas. Por exemplo, a transmissão de vídeos é uma das aplicações do &MCOP;, onde a maioria das implementações de <acronym +>CORBA</acronym +> 'cairiam de joelhos'. </para> + +<para +>As definições das interfaces conseguem lidar com os seguintes aspectos nativamente: </para> + +<itemizedlist> +<listitem> +<para +>Fluxos contínuos de dados (como os dados de áudio). </para> +</listitem> + +<listitem> +<para +>Eventos de fluxos de dados (como os eventos do &MIDI;). </para> +</listitem> + +<listitem> +<para +>Contagem de referências real. </para> +</listitem> +</itemizedlist> + +<para +>e os truques mais importantes do <acronym +>CORBA</acronym +>, como </para> + +<itemizedlist> +<listitem> +<para +>Invocações de métodos síncronas. </para> +</listitem> + +<listitem> +<para +>Invocações de métodos assíncronas. </para> +</listitem> + +<listitem> +<para +>Construção de tipos de dados definidos pelo usuário. </para> +</listitem> + +<listitem> +<para +>Herança múltipla. </para> +</listitem> + +<listitem> +<para +>Passagem de referências de objetos. </para> +</listitem> +</itemizedlist> + +</sect2> + +<sect2 id="mcop-protocol-marshalling"> +<title +>A Codificação das Mensagens do &MCOP;</title> + +<para +>Objetivos/idéias de desenho: </para> + +<itemizedlist> + +<listitem> +<para +>A codificação deverá ser simples de implementar. </para> +</listitem> + +<listitem> +<para +>A decodificação necessita que o destinatário saiba qual é o tipo que ele deseja decodificar. </para> +</listitem> + +<listitem> +<para +>O destinatário esperará usar toda a informação - por isso, só são ignorados os dados no protocolo ao nível em que: </para> + +<itemizedlist> +<listitem> +<para +>Se você souber que vai receber um bloco de bytes, não precisa procurar em cada byte por um marcador de fim. </para> +</listitem> + +<listitem> +<para +>Se você souber que vai receber uma cadeia de caracteres, não precisa ler até encontrar o byte zero para descobrir o seu tamanho, contudo, </para> +</listitem> + +<listitem> +<para +>Se você souber que vai receber uma sequência de cadeias de caracteres, você precisa saber o tamanho de cada uma delas para descobrir o fim da sequência, uma vez que as cadeias de caracteres possuem tamanho variável. Mas se você usar as cadeias de caracteres para algo útil, você terá de fazer isso de qualquer jeito, por isso não se perde nada. </para> +</listitem> +</itemizedlist> + +</listitem> + +<listitem> +<para +>O mínimo de sobrecarga possível. </para> +</listitem> +</itemizedlist> + +<!-- TODO: Make this a table --> + +<para +>A codificação dos diferentes tipos é mostrada na tabela em baixo: </para> + +<informaltable> +<tgroup cols="3"> +<thead> +<row> +<entry +>Tipo</entry> +<entry +>Processo de Codificação</entry> +<entry +>Resultado</entry> +</row> +</thead> + +<tbody> +<row> +<entry +><type +>void</type +></entry> +<entry +>Os tipos <type +>void</type +> são codificados, omitindo-os, de modo a que não seja nada escrito no canal.</entry> +<entry +></entry> +</row> + +<row> +<entry +><type +>long</type +></entry> +<entry +>é codificado como quatro bytes, em que o byte mais significativo vem primeiro, de modo a que o número 10001025 (correspondente à 0x989a81) será codificado como:</entry> +<entry +><literal +>0x00 0x98 0x9a 0x81</literal +></entry> +</row> + +<row> +<entry +><type +>enums</type +></entry> +<entry +><para +>são codificados como <type +>long</type +>s</para +></entry> +<entry +></entry> +</row> + +<row> +<entry +><type +>byte</type +></entry> +<entry +><para +>é codificado como um único byte, de modo a que o byte 0x42 será codificado como:</para +></entry> +<entry +><literal +>0x42</literal +></entry> +</row> + +<row> +<entry +><type +>string</type +></entry> +<entry +><para +>é codificado como um <type +>long</type +>, contendo o tamanho da cadeia de caracteres seguinte, e pela sequência de caracteres propriamente dita, terminando com um byte zero (que está incluído na contagem do tamanho).</para> +<important> +<para +>inclui o byte 0 final na contagem do tamanho!</para> +</important> +<para +>O <quote +>ola</quote +> seria codificado da seguinte forma:</para +></entry> +<entry +><literal +>0x00 0x00 0x00 0x04 0x6f 0x6c 0x60 0x00</literal +></entry> +</row> + +<row> +<entry +><type +>boolean</type +></entry> +<entry +><para +>é codificado como um byte, contendo 0 se for <returnvalue +>false</returnvalue +> (falso) ou 1 se for <returnvalue +>true</returnvalue +> (verdadeiro), de modo a que o valor booleano <returnvalue +>true</returnvalue +> é codificado como:</para +></entry> +<entry +><literal +>0x01</literal +></entry> +</row> + +<row> +<entry +><type +>float</type +></entry> +<entry +><para +>é codificado na representação de 4 bytes do IEEE754 - a documentação detalhada de como o IEEE funciona estão aqui: <ulink url="http://twister.ou.edu/workshop.docs/common-tools/numerical_comp_guide/ncg_math.doc.html" +>http://twister.ou.edu/workshop.docs/common-tools/numerical_comp_guide/ncg_math.doc.html</ulink +> e aqui: <ulink url="http://java.sun.com/docs/books/vmspec/2nd-edition/html/Overview.doc.html" +>http://java.sun.com/docs/books/vmspec/2nd-edition/html/Overview.doc.html</ulink +>. Deste modo, o valor 2,15 seria codificado como:</para +></entry> +<entry +><literal +>0x9a 0x99 0x09 0x40</literal +></entry> +</row> + +<row> +<entry +><type +>struct</type +></entry> +<entry +><para +>Uma estrutura é codificada com base no seu conteúdo. Não existem prefixos ou sufixos adicionais, por isso a estrutura </para> +<programlisting +>struct teste { + string nome; // que é igual a "ola" + long valor; // que é igual a 10001025 (0x989a81) +}; +</programlisting> +<para +>seria codificada como</para +></entry> +<entry> +<literallayout +>0x00 0x00 0x00 0x04 0x6f 0x6c 0x60 0x00 +0x00 0x98 0x9a 0x81 +</literallayout +></entry> +</row> + +<row> +<entry +><type +>sequence</type +></entry> +<entry +><para +>uma sequência é codificada através da listagem do número de elementos que se seguem e da descodificação dos elementos, um a um.</para> +<para +>Por isso uma sequência de 3 longs 'a', with a[0] = 0x12345678, a[1] = 0x01 e a[2] = 0x42 seria codificada como:</para +></entry> +<entry> +<literallayout +>0x00 0x00 0x00 0x03 0x12 0x34 0x56 0x78 +0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x42 +</literallayout> +</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<para +>Se você precisar de fazer referência a um tipo, todos os tipos primitivos são referidos pelos nomes indicados acima. As estruturas e as enumerações possuem nomes próprios (como Header). As sequências são referidas como um *<replaceable +>tipo normal</replaceable +>, de modo que uma sequência de longs é um <quote +>*long</quote +> e uma sequência de estruturas Header é um <quote +>*Header</quote +>. </para> + +</sect2> + +<sect2 id="mcop-protocol-messages"> +<title +>Mensagens</title> + +<para +>O formato do cabeçalho das mensagens do &MCOP; está definido pela seguinte estrutura: </para> + +<programlisting +>struct Header { + long magic; // o valor 0x4d434f50, que é codificado como MCOP + long messageLength; + long messageType; +}; +</programlisting> + +<para +>Os valores possíveis de messageTypes são atualmente </para> + +<programlisting +>mcopServerHello = 1 + mcopClientHello = 2 + mcopAuthAccept = 3 + mcopInvocation = 4 + mcopReturn = 5 + mcopOnewayInvocation = 6 +</programlisting> + +<para +>Algumas notas sobre as mensagens do &MCOP;: </para> + + +<itemizedlist> +<listitem> +<para +>Todas as mensagens começam com uma estrutura Header. </para> +</listitem> + +<listitem> +<para +>Alguns dos tipos de mensagens deverão ser ignorados pelo servidor, enquanto a autenticação não estiver completa. </para> +</listitem> + +<listitem> +<para +>Depois de receber o cabeçalho, o tratamento do protocolo (conexão) poderá receber a mensagem por completo, sem olhar para o seu conteúdo. </para> +</listitem> +</itemizedlist> + +<para +>O messageLength no cabeçalho é, obviamente em alguns casos, redundante, o que significa que esta aproximação não é minimalista no que respeita ao número de bytes. </para> + +<para +>Contudo, isto conduz a uma implementação simples (e rápida) do processamento não em bloqueante de mensagens. Com a ajuda do cabeçalho, as mensagens poderão ser recebidas pelas classes de tratamento do protocolo em segundo plano (não-bloqueante), se existirem demasiadas ligações ao servidor, todas elas poderão ser servidas em paralelo. Você não precisa de olhar para o conteúdo da mensagem para recebê-la (e para determinar que terminou), basta olhar para o cabeçalho, assim o código para isso é relativamente simples. </para> + +<para +>Logo que uma mensagem esteja lá, ela poderá ser descodificada e processada em um único passo, sem se preocupar com os casos em que nem todos os dados foram recebidos (porque o messageLength garante que tudo está lá). </para> + +</sect2> + +<sect2 id="mcop-protocol-invocations"> +<title +>Invocações</title> + +<para +>Para invocar um método remoto, você precisa enviar a seguinte estrutura no corpo de uma mensagem de &MCOP; com o messageType = 1 (mcopInvocation): </para> + +<programlisting +>struct Invocation { + long objectID; + long methodID; + long requestID; +}; +</programlisting> + +<para +>depois disso, você envia os parâmetros como uma estrutura, ⪚ se você invocar o método concatenar(string s1, string s2), você envia uma estrutura do tipo </para> + +<programlisting +>struct InvocationBody { + string s1; + string s2; +}; +</programlisting> + + +<para +>se o método foi declarado como só de ida0 - o que significa que é assíncrono sem código devolvido - então isto é tudo. Caso contrário, você iria receber como resposta uma mensagem com o messageType = 2 (mcopReturn) </para> + +<programlisting +>struct ReturnCode { + long requestID; + <tipo-a-devolver> result; +}; +</programlisting> + + +<para +>em que o <tipo-resultante> é o tipo do resultado. Como os tipos void são omitidos na codificação, você também poderá só escrever o requestID se regressar de um método void. </para> + +<para +>Por isso o nosso método string concatenar(string s1, string s2) iria originar um código de resultado do tipo </para> + +<programlisting +>struct ReturnCode { + long requestID; + string result; +}; +</programlisting> + +</sect2> + +<sect2 id="mcop-protocol-inspecting"> +<title +>Inspecionando as Interfaces</title> + +<para +>Para fazer as invocações, você teria de conhecer os métodos que um objeto suporta. Para fazer isto, o methodID 0, 1, 2 e 3 estão pré-destinados a certas funcionalidades. Isto é </para> + +<programlisting +>long _lookupMethod(MethodDef defMetodo); // methodID sempre a 0 +string _interfaceName(); // methodID sempre a 1 +InterfaceDef _queryInterface(string nome); // methodID sempre a 2 +TypeDef _queryType(string nome); // methodID sempre a 3 +</programlisting> + +<para +>para ler isso, você obviamente precisa de </para> + +<programlisting +>struct MethodDef { + string methodName; + string type; + long flags; // posto a 0 por agora (será necessário na transmissão) + sequence<ParamDef> signature; +}; + +struct ParamDef { + string name; + long typeCode; +}; +</programlisting> + +<para +>o campo parameters contém os componentes do tipo que indicam os tipos dos parâmetros. O tipo do valor devolvido é indicado no campo type do MethodDef. </para> + +<para +>Na forma restrita, só os métodos <methodname +>_lookupMethod()</methodname +> e <methodname +>_interfaceName()</methodname +> são diferentes de objeto para objeto, enquanto que o <methodname +>_queryInterface()</methodname +> e o <methodname +>_queryType()</methodname +> são sempre os mesmos. </para> + +<para +>O que são esses methodIDs? Se você fizer uma invocação de &MCOP;, irá ficar esperando para passar um número para o método que você está invocando. A razão para isso é que os números podem ser processados muito mais depressa do que as cadeias de caracteres ao executar um pedido ao &MCOP;. </para> + +<para +>Por isso, como é que obtém esses números? Se você souber a assinatura do método, existe um MethodDef que descreve o método (e que contém o nome, o tipo, os nomes e os tipos de parâmetros, entre outras coisas) e você poderá passar isso ao _lookupMethod do objeto onde deseja invocar um método. Dado que o _lookupMethod está pré-associado ao methodID 0, você não deverá ter problemas ao fazê-lo. </para> + +<para +>Por outro lado, se você não souber a assinatura do método, você poderá descobrir os métodos que são suportados, usando o _interfaceName, o _queryInterface e o _queryType. </para> +</sect2> + +<sect2 id="mcop-protocol-typedefs"> +<title +>Definições dos Tipos</title> + +<para +>Os tipos de dados definidos pelo usuário são descritos com a estrutura <structname +>TypeDef</structname +>: </para> + +<programlisting +>struct TypeComponent { + string type; + string name; +}; + +struct TypeDef { + string name; + + sequence<TypeComponent> contents; +}; +</programlisting> + +</sect2> +</sect1> + +<sect1 id="why-not-dcop"> +<title +>Porquê o &arts; Não Usa o &DCOP;</title> + +<para +>Uma vez que o &kde; abandonou o <acronym +>CORBA</acronym +> por completo e está usando o &DCOP; em todo o sistema, naturalmente a questão a se levantar é porque o &arts; não faz isso também. Afinal de contas, o suporte do &DCOP; está no <classname +>KApplication</classname +>, é bem-mantido, supostamente integra-se bem com a libICE, entre outras coisas. </para> + +<para +>Uma vez que existirá (potencialmente) uma grande quantidade de pessoas a se perguntar se ter o &MCOP; além do &DCOP; é realmente necessário, aqui está a resposta. Não me levem a mal, porque eu não está dizendo que o <quote +>o &DCOP; é ruim</quote +>. Eu estou simplesmente tentando dizer que <quote +>o &DCOP; não é a solução adequada para o &arts;</quote +> (embora seja uma boa solução para outras coisas). </para> + +<para +>Primeiro, você precisa de compreender para que o &DCOP; foi criado. Desenvolvido em dois dias durante o encontro &kde;-TWO, pretendia ser o mais simples possível, um protocolo de comunicações realmente <quote +>leve</quote +>. Especialmente, a implementação descartou tudo que pudesse envolver complexidade, como por exemplo um conceito completo de como os tipos de dados seriam codificados. </para> + +<para +>Ainda que o &DCOP; não se preocupe com certas coisas (por exemplo: como é que se envia uma cadeia de caracteres de forma transparente na rede?) - isso precisa de ser feito. Por isso, tudo o que o &DCOP; não faz, fica a cargo do &Qt; nos aplicativos do &kde; que usam o &DCOP; hoje em dia. Isto é em grande parte gestão de tipos (usando o operador de serialização do &Qt;). </para> + +<para +>Por isso, o &DCOP; é um protocolo mínimo que permite perfeitamente aos aplicativos do &kde; enviarem mensagens simples do tipo <quote +>abrir uma janela a apontar para http://www.kde.org</quote +> ou <quote +>os seus dados de configuração mudaram</quote +>. Contudo, dentro do &arts; o foco situa-se em outras coisas. </para> + +<para +>A idéia é que alguns pequenos plugins do &arts; irão comunicar-se, trocando algumas estruturas de dados como <quote +>eventos MIDI</quote +> e <quote +>ponteiros de posição na música</quote +> ou <quote +>gráficos de fluxo</quote +>. </para> + +<para +>Estes são tipos de dados complexos, os quais deverão ser enviados entre objetos diferentes e passados como sequências ou parâmetros. O &MCOP; fornece um conceito de tipos para definir dados complexos a partir de dados mais simples (de forma semelhante às estruturas ou vetores no C++). O &DCOP; não se preocupa com os tipos como um todo, por isso este problema seria deixado para o programador - como: criar classes de C++ para os tipos, certificando-se que eles pudessem serializar-se corretamente (por exemplo: suportar o operador de transmissão do &Qt;). </para> + +<para +>Mas desta forma, eles seriam inacessíveis a tudo o que não fosse codificação direta de C++. Especificamente, você não poderia desenhar uma linguagem de scripting que conhecesse todos os plugins de tipo a que poderão estar expostos, uma vez que eles não se descrevem a si próprios. </para> + +<para +>O mesmo argumento se aplica também às interfaces. Os objetos do &DCOP; não expõem as suas relações, hierarquias de herança, etc. - se você fosse criar um navegador de objetos que lhe mostrasse <quote +>que atributos tem este objeto</quote +>, seria mal-sucedido. </para> + + +<para +>Embora o Matthias tenha dito que existe uma função especial <quote +>functions</quote +> em cada objeto que lhe indica os métodos que um dado objeto suporta, isto deixa de fora coisas como os atributos (propriedades), as sequências e as relações de herança. </para> + +<para +>Isto quebra seriamente os aplicativos como o &arts-builder;. Mas lembre-se. o &DCOP; não pretendia ser um modelo de objetos (uma vez que o &Qt; já tem um com o <application +>moc</application +> e semelhantes), nem pretende ser algo semelhante ao <acronym +>CORBA</acronym +>, mas simplesmente uma forma de fornecer comunicação entre aplicativos. </para> + +<para +>Porque o &MCOP; ainda existe é: deverá funcionar perfeitamente com canais entre objetos. O &arts; faz um uso intensivo de pequenos plugins, que se interligam entre si com os fluxos. A versão em <acronym +>CORBA</acronym +> do &arts; tinha de introduzir uma divisão muito incômoda entre <quote +>os objetos SynthModule</quote +>, os quais eram os módulos de trabalho internos que faziam a transmissão e <quote +>a interface <acronym +>CORBA</acronym +></quote +>, que era algo externo. </para> + +<para +>Muito do código preocupava-se em fazer a interação entre <quote +>os objetos SynthModule</quote +> e <quote +>a interface <acronym +>CORBA</acronym +></quote +> parecer natural, mas não o era, porque o <acronym +>CORBA</acronym +> não sabia nada sobre fluxos. O &MCOP; sabe. Olhe para o código (algo como o <filename +>simplesoundserver_impl.cc</filename +>). Muito melhor! Fluxos podem ser declarados na interface dos módulos e implementados de forma natural. </para> + +<para +>Ninguém pode negar. Uma das razões pela qual o &MCOP; foi feito foi a velocidade. Aqui estão alguns argumentos de porque o &MCOP; será definitivamnete mais rápido que o &DCOP; (sem sequer mostrar imagens). </para> + + +<para +>Uma invocação do &MCOP; terá um cabeçalho com seis <quote +>long</quote +>s. Isto é: </para> + +<itemizedlist> +<listitem +><para +>o código do <quote +>MCOP</quote +></para +></listitem> +<listitem +><para +>o tipo da mensagem (invocação)</para +></listitem> +<listitem +><para +>o tamanho do pedido em bytes</para +></listitem> +<listitem +><para +>ID do pedido</para +></listitem> +<listitem +><para +>ID do objeto destino</para +></listitem> +<listitem +><para +>ID do método destino</para +></listitem> +</itemizedlist> + +<para +>Depois disso, seguem-se os parâmetros. Repare que a decodificação destes é extremamente rápida. Você poderá usar pesquisas em tabelas para encontrar o objeto e a função de decodificação do método, o que significa que a complexidade é O(1) (levará a mesma quantidade de tempo, independentemente de quantos objetos estão ativos, ou de quantas funções existem). </para> + +<para +>Comparando isto com o &DCOP;, verá que existem, pelo menos </para> + +<itemizedlist> +<listitem +><para +>uma cadeia de caracteres para o objeto destino - algo do tipo <quote +>aMinhaCalculadora</quote +></para +></listitem +> +<listitem +><para +>um texto do tipo <quote +>adicionarNumero(int,int)</quote +> para indicar qual o método</para +></listitem> +<listitem +><para +>muita mais informação do protocolo adicionada pela libICE, e outros detalhes do DCOP que eu desconheço</para +></listitem> +</itemizedlist> + +<para +>Tudo isto é muito doloroso para decodificar, uma vez que você irá necessitar de processar o texto, procurar a função, &etc;. </para> + +<para +>No &DCOP;, todos os pedidos são passados através de um servidor (o <application +>DCOPServer</application +>). Isto significa que o processo de uma invocação síncrona se assemelha a: </para> + +<itemizedlist> +<listitem> +<para +>O processo do cliente envia o pedido. </para> +</listitem> + +<listitem> +<para +>O <application +>DCOPserver</application +> (o intermediário) recebe a invocação e procura onde precisa ir, enviando para o servidor <quote +>real</quote +>. </para> +</listitem +> + +<listitem> +<para +>O processo do servidor recebe a invocação, efetua o pedido e envia o resultado. </para> +</listitem> + +<listitem> +<para +>O <application +>DCOPserver</application +> (o intermediário) recebe o resultado e ... envia-o para o cliente. </para> +</listitem> + +<listitem> +<para +>O cliente decodifica a resposta. </para> +</listitem> +</itemizedlist> + +<para +>No &MCOP;, a mesma invocação assemelha-se ao seguinte: </para> + +<itemizedlist> +<listitem> +<para +>O processo do cliente envia o pedido. </para> +</listitem> + +<listitem> +<para +>O processo do servidor recebe a invocação, efetua o pedido e envia o resultado. </para> +</listitem> + +<listitem> +<para +>O cliente decodifica a resposta. </para> +</listitem> +</itemizedlist> + +<para +>Digamos que ambos foram implementados corretamente, a estratégia ponto-a-ponto do &MCOP; deverá ser mais rápida por um fator de 2, do que a estratégia de intermediário do &DCOP;. Repare contudo que existiam razões para escolher a estratégia do &DCOP;, principalmente: se você tiver 20 aplicativos rodando, se cada um estiver conversando com outro, você precisa de 20 conexões no &DCOP;, e de 200 com o &MCOP;. Contudo, no caso de multimídia, isto supostamente não será a configuração normal. </para> + +<para +>Tentou-se comparar o &MCOP; com o &DCOP;, fazendo uma invocação do tipo adicionar dois números. Alterou-se o testdcop para conseguir isto. Porém, o teste pode não ter sido confiável do lado do &DCOP;. Invocou-se o método no mesmo processo que fez a chamada para o &DCOP;, e não se soube como se ver livre de uma mensagem de depuração, pelo que foi feita redireção do resultado. </para> + +<para +>O teste só usava um objeto e uma função, esperando que os resultados do &DCOP; começassem a descer com mais objetos e funções, enquanto os resultados do &MCOP; deveriam se manter iguais. Também, o processo do <application +>dcopserver</application +> não estava conectado a nenhum dos outros aplicativos, uma vez que, se existissem outros aplicativos conectados, a performance do encaminhamento iria decrescer. </para> + +<para +>O resultado obtido foi que, enquanto o &DCOP; obteve cerca de 2000 invocações por segundo, o &MCOP; obteve um pouco mais de 8000 invocações por segundo. Isto resulta em um fator de 4. Sabe-se que o &MCOP; não está ajustado para o máximo possível, ainda. (Comparação: o <acronym +>CORBA</acronym +>, implementado no mico, faz algo entre 1000 e 1500 invocações por segundo). </para> + +<para +>Se você quiser dados <quote +>brutos</quote +>, pense em fazer algum aplicativo de medida de performance para o &DCOP; e envie-o para mim. </para> + +<para +>O <acronym +>CORBA</acronym +> tinha uma funcionalidade interessante na qual você poderia usar os objetos que implementou uma vez, como <quote +>processos de servidor separados</quote +> ou como <quote +>bibliotecas</quote +>. Você poderia usar o mesmo código para tal, e o <acronym +>CORBA</acronym +> iria decidir transparentemente o que fazer. Com o &DCOP;, isto não é realmente pretendido, e tanto quanto se sabe não é possível realmente. </para> + +<para +>O &MCOP;, por outro lado, deverá suportá-lo desde o início. Por isso, você poderá rodar um efeito dentro do &artsd;. Mas se você for um editor de ondas, você poderá optar por rodar o mesmo efeito dentro do espaço do processo. </para> + +<para +>Embora o &DCOP; seja, em grande medida, uma forma de comunicação entre aplicativos, o &MCOP; também o é. Especialmente para a transmissão multimídia, o que é importante (uma vez que você poderá rodar vários objetos &MCOP; em paralelo, para resolver uma tarefa de multimídia no seu aplicativo). </para> + +<para +>Ainda que o o &MCOP; não o faça de momento, as possibilidades estão em aberto para implementar as funcionalidades de qualidade de serviço. Algo do gênero <quote +>aquele evento &MIDI; é mesmo MUITO importante, em comparação com esta invocação</quote +>. Ou algo do tipo <quote +>necessita de estar ali a tempo</quote +>. </para> + +<para +>Por outro lado, a transferência de fluxos poderá ser integrada no protocolo &MCOP; sem problemas e ser combinada com elementos de <acronym +>QoS</acronym +>. Uma vez que o protocolo poderá ser alterado, a transferência de fluxos do &MCOP; não deverá ser mais lenta do que uma transmissão convencional de <acronym +>TCP</acronym +>, mas: é mais fácil e mais consistente de usar. </para> + +<para +>Não existe necessidade de basear uma plataforma de multimídia no &Qt;. Ao decidir isso, e usando toda aquela serialização e outras funcionalidades de fluxo do &Qt;, iria conduzir facilmente a que a plataforma se tornasse apenas para o &Qt; (ou apenas para o &kde;). Quer dizer: tão logo se veja os GNOMEs começando a usar o &DCOP;, também, ou algo do gênero, provavelmente eu estarei errado. </para> + +<para +>Enquanto se sabe que o &DCOP; basicamente não sabe nada sobre os tipos de dados que envia, de modo que você poderia usar o &DCOP; sem usar o &Qt;, veja como é usado no uso do dia-a-dia do &kde;: as pessoas enviam tipos como o <classname +>QString</classname +>, o <classname +>QRect</classname +>, o <classname +>QPixmap</classname +>, o <classname +>QCString</classname +>, ..., de um lado para o outro. Estes usam a serialização do &Qt;. Por isso, se alguém optar por suportar o &DCOP; em um programa do GNOME, ele teria de afirmar que usava os tipos <classname +>QString</classname +>,... (ainda que não o faça, de fato) e emular a forma como o &Qt; faz a transmissão, ou então teria de enviar outros tipos de cadeias de caracteres, imagens e retângulos, o que deixaria de ser interoperável. </para> + +<para +>Bem, seja o que for, o &arts; pretendeu sempre funcionar com ou sem o &kde;, com ou sem o &Qt;, com ou sem o X11, e talvez com ou sem o &Linux; (e não há problema nenhum com as pessoas que o transpõem para um sistema operacional proprietário conhecido). </para> + +<para +>É a minha posição que os componentes não&GUI; deverão ser criados de forma independente da &GUI;, para possibilitar o compartilhamento destes pela maior quantidade de programadores (e usuários) possível. </para> + +<para +>É óbvio que o uso de dois protocolos de <acronym +>IPC</acronym +> pode causar inconveniências. Ainda mais, se ambos não forem normatizados. Contudo, pelas razões indicadas acima, a mudança para o &DCOP; não é uma opção. Se existir um interesse significativo em encontrar uma forma de unir os dois, ok, poderemos tentar. Até poderemos tentar fazer com que o &MCOP; fale <acronym +>IIOP</acronym +>, onde então poderemos passar a ter um <acronym +>ORB</acronym +> de <acronym +>CORBA</acronym +>. </para> + +<para +>Eu falei com o Matthias Ettrich um pouco sobre o futuro dos dois protocolos e encontramos diversas formas de como as coisas poderão seguir daqui para a frente. Por exemplo, o &MCOP; poderia tratar da comunicação de mensagens no &DCOP;, colocando os protocolos um pouco mais juntos. </para> + +<para +>Assim algumas soluções possíveis seriam: </para> + +<itemizedlist> +<listitem> +<para +>Criar uma gateway de &MCOP; - &DCOP; (o qual deverá ser possível, e possibilitaria a interoperabilidade) - nota: existe um protótipo experimental, se você quiser ver algo sobre o assunto. </para> +</listitem> + +<listitem> +<para +>Integrar tudo o que os usuários do &DCOP; esperam no &MCOP;, e tentar apenas usar o &MCOP; - uma pessoa até poderia adicionar uma opção de <quote +>intermediário</quote +> no &MCOP;, também ;) </para> +</listitem> + +<listitem> +<para +>Basear o &DCOP; no &MCOP; em vez da libICE, e começar a integrar lentamente as coisas em conjunto. </para> +</listitem> +</itemizedlist> + +<para +>Contudo, poderá não ser a pior possibilidade para usar cada protocolo em tudo em que se pensou usar (existem algumas grandes diferenças nos objetivos de desenho), e não vale a pena tentar juntá-los num só. </para> + +</sect1> +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/midi.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/midi.docbook new file mode 100644 index 00000000000..ed07feec978 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/midi.docbook @@ -0,0 +1,524 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="midi"> +<title +>&MIDI;</title> + +<sect1 id="midi-overview"> +<title +>Introdução</title> + +<!-- what-to-say-here: aRts has three roles + * moving midi events around between applications + * abstracting the hardware + * synthesizer --> + +<para +>O suporte ao &MIDI; no &arts; pode fazer uma grande quantidade de coisas. Antes de mais nada, permite a <emphasis +>comunicação</emphasis +> entre as diversas peças de software que produzem ou consomem eventos &MIDI;. Se você, por exemplo, tiver uma sequenciador e um reprodutor que funcionem com o &arts;, o &arts; poderá enviar os eventos &MIDI; do sequenciador para o reprodutor. </para> + +<para +>Por outro lado, o &arts; pode também ajudar os aplicativos a <emphasis +>interagir com o hardware</emphasis +>. Se uma determinada parte de um software (como, por exemplo, o suporte de amostragem) funcionar com o &arts;, ela será capaz de receber os eventos &MIDI; de um teclado &MIDI; externo, da mesma forma. </para> + +<para +>Finalmente, o &arts; fornece um excelente <emphasis +>sintetizador modular</emphasis +>. Ele está desenhado para fazer exatamente isso. Por isso, você poderá criar instrumentos a partir de pequenos módulos com o artsbuilder, e usar depois esses instrumentos para compor ou tocar música. A síntese poderá não ser pura, uma vez que existem módulos que você poderá usar para tocar amostras. Por isso, o &arts; poderá ser um reprodutor de amostras, um sintetizador, entre outras coisas e, sendo completamente modular, é muito fácil de extender, muito fácil de experimentar, além de ser poderoso e flexível. </para> +</sect1> + +<sect1 id="midi-manager"> +<title +>O Gerenciador de &MIDI;</title> +<!-- what-to-say-here: + * how to use artscontrol - view midimanager + * what does autorestore do? (not yet implemented - so not yet documented) --> + +<para +>A componente central no &arts; que mantém o registo dos aplicativos que estão conectados e como os eventos deverão ser passados entre eles é o gerenciador MIDI. Para ver ou influenciar o que ele faz, inicie o artscontrol. Depois, escolha <menuchoice +><guilabel +>Ver</guilabel +><guilabel +>Ver o Gerenciador de MIDI</guilabel +> </menuchoice +> no menu. </para> + +<para +>Do lado esquerdo, você verá as <guilabel +>Entradas MIDI</guilabel +>. Aqui, todos os objetos que produzem eventos &MIDI;, como por exemplo uma porta &MIDI; que envie dados vindos de um teclado &MIDI; conectado, um sequenciador que toque uma música, entre outras coisas, serão listados. Do lado direito, você verá as <guilabel +>Saídas MIDI</guilabel +>. Aqui, todas as coisas que consumam eventos &MIDI;, como um reprodutor de amostras simulado (como software) ou a porta &MIDI; externa onde o seu reprodutor por hardware estará conectado, serão listadas. Os aplicativos novos, como os sequenciadores se registarão eles próprios, de modo que a lista vá sendo atualizada ao longo do tempo. </para> + +<para +>Você poderá conectar as entradas às saídas se você marcar a entrada do lado esquerdo e a saída do lado direito, escolhendo em seguida <guilabel +>Conectar</guilabel +> com o botão abaixo. O <guilabel +>Desconectar</guilabel +> funciona da mesma forma. Você irá ver o que está conectado como pequenas linhas entre as entradas e as saídas, no meio da janela. Observe que você poderá conectar um emissor a mais de um receptor (e vice-versa). </para> + +<para +>Os programas (como o sequenciador Brahms) se adicionarão eles próprios quando são iniciados e serão removidos da lista quando terminarem. Mas você também poderá adicionar itens novos no menu <guilabel +>Adicionar</guilabel +>: </para> + +<variablelist> +<varlistentry> +<term +><guimenuitem +>Porta MIDI do Sistema (OSS)</guimenuitem +></term> +<listitem> +<para +>Isto irá criar um novo objeto do &arts; que conversa com uma porta MIDI externa. </para> + +<para +>Uma vez que as portas MIDI externas podem fazer ambas as coisas (enviar e receber dados), a escolha desta opção irá adicionar uma entrada e uma saída MIDI. No &Linux;, você deverá ter um controlador <acronym +>OSS</acronym +> (ou <acronym +>OSS</acronym +>/Free, que vem com o kernel do seu &Linux;) ou um <acronym +>ALSA</acronym +> instalado para a sua placa de som, para que isto funcione. Ele irá perguntar o nome do dispositivo. Normalmente, é o <filename class="devicefile" +>/dev/midi</filename +> ou o <filename class="devicefile" +>/dev/midi00</filename +>. </para> + +<para +>Contudo, se você tiver mais de um dispositivo &MIDI; ou &MIDI; local instalado, poderão existir mais opções. Para ver mais informações sobre as suas portas &MIDI;, inicie o &kcontrolcenter; e escolha <menuchoice +><guilabel +>Informação</guilabel +> <guilabel +>Som</guilabel +></menuchoice +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Saída MIDI de Sintetização do aRts</guimenuitem +></term> +<listitem> +<para +>Isto irá adicionar uma nova saída &MIDI; com um instrumento sintetizado do &arts;. Se você escolher o item do menu, aparecerá uma janela que lhe permite escolher um instrumento. Você poderá criar instrumentos novos com o artsbuilder. Todos os arquivos <literal role="extension" +>.arts</literal +> com um nome que comece por <filename +>instrument_</filename +> irão aparecer aqui. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="brahms"> +<title +>Usando o &arts; & o Brahms</title> + +<para +>Atualmente, começar é bastante fácil. Você irá precisar de uma versão para o &kde; 2.1 ou superior do &brahms;, que poderá ser encontrada no módulo <literal +>kmusic</literal +> do <acronym +>CVS</acronym +>. Existe também algumas informações sobre como obter o &brahms; na <ulink url="http://www.arts-project.org/" +>Página Pessoal do aRts</ulink +> na seção Download. </para> + +<para +>Quando você o iniciar, ele irá aparecer no gerenciador de &MIDI;. Se você quiser fazer síntese, basta adicionar um instrumento sintetizado &MIDI; através da opção <menuchoice +><guilabel +>Adicionar</guilabel +><guilabel +>Saída MIDI de Síntese do aRts</guilabel +></menuchoice +>. </para> + +<para +>Escolha um instrumento (por exemplo, o <guilabel +>organ2</guilabel +>). Conecte-os com o botão <guilabel +>Ligar</guilabel +>. Finalmente, poderá começar a compor no &brahms;, para que o resultado seja sintetizado com o &arts;. </para> + +<para +>Normalmente, é uma boa ideia ter a janela do &artscontrol; aberta e ver se o volume não está muito alto (a qualidade piora quando as barras tocam no limite superior). Agora, você poderá começar a trabalhar em uma música de demonstração do &arts; e, se estiver pronta, poderá publicá-la no aRts-project.org ;-). </para> + +<!-- TODO: how to do more than one instrument in Brahms (hm, not implemented + yet, not documented yet), how to use samples, mapping and so on. These + things need to be implemented, too. --> + +</sect1> + +<sect1 id="midisend"> +<title +>midisend</title> + +<para +>O <command +>midisend</command +> é um pequeno aplicativo que lhe permitirá enviar eventos de &MIDI; a partir da linha de comando. Ele se registará como cliente, tal como acontece com os outras aplicativos. A forma mais simples de usá-lo é <screen +><prompt +>%</prompt +> <userinput +><command +>midisend</command +> <option +>-f</option +> <parameter +><replaceable +>/dev/midi00</replaceable +></parameter +></userinput +> </screen +>, o que irá fazer mais ou menos o mesmo que adicionar uma porta &MIDI; do sistema no &artscontrol;. (Não somente isso, porque o <command +>midisend</command +> só envia eventos). A diferença é que é fácil, por exemplo, iniciar o <command +>midisend</command +> em vários computadores diferentes (e, por isso, usar a transparência na rede). </para> + +<para +>Também é possível fazer com que o <command +>midisend</command +> envie os dados a partir do <filename class="devicefile" +>stdin</filename +>, que poderá usar para encaminhar os dados dos aplicativos que não conhecem o &arts;, como a seguir: <screen +><prompt +>%</prompt +> <userinput +><command +><replaceable +>aplicacao_que_produz_eventos_midi_no_stdout</replaceable +></command +> | <command +>midisend</command +> <option +>-f</option +> <option +><replaceable +>-</replaceable +></option +></userinput +></screen> +<!-- TODO: document all options --> +</para> + +</sect1> + +<sect1 id="midi-creating-instruments"> +<title +>Criar Instrumentos</title> + +<para +>A forma como o &arts; faz a síntese de &MIDI; é a seguinte: você tem uma estrutura com algumas portas de entrada, onde ele vai obter a frequência, a velocidade (volume) e um parâmetro que indica se a nota ainda continua pressionada. A estrutura deverá agora sintetizar exatamente a nota com esse volume e reagir ao parâmetro 'pressed' (pressionado) (onde o 'pressed' = 1 significa que o usuário ainda mantém essa tecla carregada e o 'pressed' = 0 significa que o usuário soltou a tecla). </para> + +<para +>Quando os eventos &MIDI; chegam, o &arts; irá criar novas estruturas para as notas à medida das necessidades, passar-lhes os parâmetros, e limpá-las quando terminar. </para> + +<para +>Para criar e usar uma dessas estruturas, você deverá fazer o seguinte: </para> + +<itemizedlist> +<listitem> +<para +>Para começar, a forma mais conveniente é abrir o arquivo <filename +>template_Instrument.arts</filename +> no &arts-builder;. </para> + +<para +>Isto poderá ser obtido se usar o <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Abrir um Exemplo...</guimenuitem +></menuchoice +> e escolher o <guimenuitem +>template_Instrument</guimenuitem +> no selector de arquivos. Isto irá fornecer-lhe uma estrutura vazia com os parâmetros necessários, os quais você só terá de <quote +>preencher</quote +>. </para> +</listitem> + +<listitem> +<para +>Para processar o parâmetro pressed, é conveniente usar o Synth_ENVELOPE_ADSR, ou, no caso de tocar apenas um WAV de uma bateria, simplesmente tocá-lo, ignorando deste modo o parâmetro pressed. </para> +</listitem> + +<listitem> +<para +>A estrutura deverá indicar quando já não é necessária na saída <quote +>done</quote +> (pronto). Se o done for igual a <returnvalue +>1</returnvalue +>, o &arts; irá assumir que pode remover a estrutura. Convenientemente, o envelope de ADSR fornece um parâmetro quando tiver terminado, por isso você só precisa conectar isto à saída done da estrutura. </para> +</listitem> + +<listitem> +<para +>Você deverá mudar o nome da sua estrutura para algum nome que comece por <filename +>instrument_</filename +>, como por exemplo <filename +>instrument_piano.arts</filename +> - você deverá gravar o arquivo com o mesmo nome na sua pasta <filename class="directory" +>$<envar +>HOME</envar +>/arts/structures</filename +> (que é onde o artsbuilder normalmente deseja gravar os arquivos). </para> +</listitem> + +<listitem> +<para +>Finalmente, logo que o tenha salvo, você será capaz de usá-lo com o &artscontrol; no gerenciador de &MIDI;.</para> +</listitem> + +<listitem> +<para +>Ah, é claro que a sua estrutura deverá tocar os dados de áudio que gera nas saídas esquerda e direita da estrutura, que serão por sua vez tocadas no gerenciador de áudio (você poderá ver isso no &artscontrol;), para que o consiga ouvir finalmente (ou processá-lo posteriormente com efeitos). </para> +</listitem> +</itemizedlist> + +<para +>Uma boa forma de aprender como criar instrumentos é abrir um instrumento existente através da opção <menuchoice +><guilabel +>Arquivo</guilabel +><guilabel +>Abrir um Exemplo</guilabel +> </menuchoice +> e ver como funciona ;) </para> +</sect1> + +<sect1 id="mapped-instruments"> +<title +>Instrumentos Mapeados</title> + +<para +>Os instrumentos mapeados são os que se comportam de forma diferente, dependendo da frequência, do programa, do canal ou da velocidade. Você poderá ter por exemplo um piano de 5 oitavas, usando uma amostra por cada oitava (ajustando a frequência, de acordo com isso). Isto irá soar bastante melhor do que usar apenas uma amostra. </para> + +<para +>Você poderá criar também um mapa de bateria, que toca uma amostra específica da bateria por tecla. </para> + +<para +>Finalmente, é muito útil se você tocar vários sons diferentes num instrumento mapeado em programas diferentes. Desta forma, você poderá usar o seu sequenciador, teclado externo ou outra fonte &MIDI; para mudar de sons sem ter de ajustar o &arts; à medida que trabalha. </para> + +<para +>Um bom exemplo para isso é o instrumento <filename +>arts_all</filename +>, o qual apenas reune todos os instrumentos que vêm com o &arts; num mapa. Desta forma, você apenas terá de configurar uma vez o &artscontrol; para usar este <quote +>instrumento</quote +>, e assim, poderá compor uma música inteira num sequenciador sem ter de se incomodar com o &arts;. Precisa de outro som? Basta escolher o programa no sequenciador, para que o &arts; lhe dê outro som. </para> + +<para +>Criar esses mapas é relativamente simples. Você apenas precisa de criar um arquivo de texto e escrever regras que se assemelhem a isto: </para> + +<programlisting +>ON <replaceable +>[ condições ...]</replaceable +> DO structure=<replaceable +>uma_estrutura</replaceable +>.arts +</programlisting> + +<para +>As condições poderão ser uma ou mais das seguintes: </para> + +<variablelist> + +<varlistentry> +<term +><option +>pitch</option +></term> + +<listitem> +<para +>A frequência ou tom que é tocado. Você poderá usar isto se quiser dividir o seu instrumento com base no tom. No exemplo inicial, um piano que use amostras diferentes para as várias oitavas iria usar isto como condição. Você poderá indicar uma frequência única, como por exemplo <userinput +><option +>pitch</option +>=<parameter +>62</parameter +></userinput +> ou um intervalo de frequências, como por exemplo <userinput +><option +>pitch</option +>=<parameter +>60</parameter +>-<parameter +>72</parameter +></userinput +>. Os tons possíveis situam-se entre <parameter +>0</parameter +> e <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>program</option +></term> +<listitem> +<para +>O programa que está ativo no canal para onde a nota vai ser enviada. Normalmente, os sequenciadores permitem-lhe escolher o <quote +>instrumento</quote +> através da opção program. São permitidos programas únicos ou intervalos de programas, isto é, por exemplo, <userinput +><option +>program</option +>=<parameter +>3</parameter +></userinput +> ou <userinput +><option +>program</option +>=<parameter +>3</parameter +>-<parameter +>6</parameter +></userinput +>. Os programas possíveis situam-se entre <parameter +>0</parameter +> e <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>channel</option +></term> +<listitem> +<para +>O canal para onde a nota vai ser enviada. São permitidos canais únicos ou intervalos, isto é, por exemplo, <userinput +><option +>channel</option +>=<parameter +>0</parameter +></userinput +> ou <userinput +><option +>channel</option +>=<parameter +>0</parameter +>-<parameter +>8</parameter +></userinput +>. Os canais possíveis situam-se entre <parameter +>0</parameter +> e <parameter +>15</parameter +>. </para> +</listitem> + +</varlistentry> +<varlistentry> +<term +><option +>velocity</option +></term> +<listitem> +<para +>A velocidade (volume) que a nota tem. São permitidas velocidades únicas (quem irá usar isso?) ou intervalos, como por exemplo <userinput +><option +>velocity</option +>=<parameter +>127</parameter +></userinput +> ou <userinput +><option +>velocity</option +>=<parameter +>64</parameter +>-<parameter +>127</parameter +></userinput +>. As velocidades possíveis situam-se entre <parameter +>0</parameter +> e <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Um exemplo completo para um mapa seria (este é extraído do arquivo <filename +>instrument_arts_all.arts-map</filename +> atual): </para> + +<programlisting +>ON program=0 DO structure=instrument_tri.arts +ON program=1 DO structure=instrument_organ2.arts +ON program=2 DO structure=instrument_slide1.arts +ON program=3 DO structure=instrument_square.arts +ON program=4 DO structure=instrument_neworgan.arts +ON program=5 DO structure=instrument_nokind.arts +ON program=6 DO structure=instrument_full_square.arts +ON program=7 DO structure=instrument_simple_sin.arts +ON program=8 DO structure=instrument_simple_square.arts +ON program=9 DO structure=instrument_simple_tri.arts +ON program=10 DO structure=instrument_slide.arts +ON program=11 pitch=60 DO structure=instrument_deepdrum.arts +ON program=11 pitch=61 DO structure=instrument_chirpdrum.arts +</programlisting> + +<para +>Como você poderá ver, a estrutura é selecionada, dependendo do programa. No programa 11, você vê um <quote +>mapa de bateria</quote +> (com dois itens), que irá tocar um <quote +>bombo</quote +> com o C-5 (pitch=60), e um <quote +>prato de choque</quote +> com o C#5 (pitch=61). </para> + +<para +>Para fazer com que os arquivos dos mapas apareçam automaticamente no &artscontrol; como opções dos instrumentos, terão de se chamar <filename +>instrument_<replaceable +>qualquercoisa</replaceable +>.arts-map</filename +> e estarem na sua Pasta Pessoal, em <filename class="directory" +>$<envar +>HOME</envar +>/arts/structures</filename +>, ou na pasta do &kde; em <filename class="directory" +>$<envar +>KDEDIR</envar +>/usr/local/kde/share/apps/artsbuilder/examples</filename +>. As estruturas que são usadas no mapa poderão ser indicadas com seu caminho completo ou então relativo à pasta onde o arquivo de mapa se encontra. </para> + +<para +>Extender o mapa arts_all map ou mesmo criar um mapa geral &MIDI; completo para o &arts; é uma boa idéia para tornar o &arts; mais simples de usar por si só. Pense por favor em contribuir com instrumentos interessantes que crie, de modo a que possam ser incluídos nas versões futuras do &arts;. </para> +</sect1> + +<!-- TODO: Maybe helpful + * using an external keyboard + * loopback midi device + +<sect1 id="quick-start"> +<title +>Quick Start</title> + +</sect1> +<sect1 id="internal-details"> +<title +>More Internal Details</title> + +</sect1> + +<sect1 id="other-considerations"> +<title +>Other Considerations</title> + +</sect1> +--> + +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/midiintro.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/midiintro.docbook new file mode 100644 index 00000000000..81df5037ded --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/midiintro.docbook @@ -0,0 +1,16 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<appendix id="midi-introduction"> + +<title +>Introdução ao <acronym +>MIDI</acronym +></title> + +<para +>Não escrito ainda </para> + +</appendix> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/modules.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/modules.docbook new file mode 100644 index 00000000000..fbc58e618c9 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/modules.docbook @@ -0,0 +1,1329 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="arts-modules"> +<title +>Módulos do &arts;</title> + + <sect1 id="modules-introduction"> +<title +>Introdução</title> + +<para +>Este capítulo descreve todos os módulos normais do &arts;. Sendo uma das funcionalidades mais poderosas do &arts;, os módulos podem ser conectados em conjunto através de estruturas para implementar novas funções como efeitos e instrumentos. </para> + +<para +>Os módulos são divididos em duas categorias. Os módulos de síntese são usados para implementar a <quote +>canalização</quote +> que manipula os fluxos de dados multimídia para implementar novos efeitos, instrumentos, misturadores e aplicativos. Os módulos visuais permitem-lhe oferecer uma interface gráfica para o usuário poder controlar as estruturas de som que são criadas com os módulos de síntese. </para> + +</sect1> + +<sect1 id="synth-modules-reference"> +<title +>Referência dos Módulos de Síntese</title> + + +<sect2 id="mcat-synth-arithmetic-mixing"> +<title +>Aritmética + Mistura</title> + + + +<sect3 id="mref-synth-add-sect"> +<title +>Synth_ADD</title> +<anchor id="mref-synth-add"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_ADD.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_ADD</phrase +></textobject> +</mediaobject> + +<para +>Isto adiciona dois sinais. </para> + +</sect3> + +<sect3 id="mref-synth-mul-sect"> +<title +>Synth_MUL</title> +<anchor id="mref-synth-mul"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_MUL.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MUL</phrase +></textobject> +</mediaobject> + +<para +>Isto multiplica um sinal por um determinado fator. Você poderá usar isto para reduzir a amplitude dos sinais (0 < fator < 1) ou ampliá-los (fator > 1) ou ainda invertê-los (fator < 0). Observe que o fator pode ser um sinal e não tem que ser constante (⪚ um sinal de envelope ou um sinal real). </para> + +</sect3> + +<sect3 id="mref-synth-div-sect"> +<title +>Synth_DIV</title> +<anchor id="mref-synth-div"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_DIV.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_DIV</phrase +></textobject> +</mediaobject> + +<para +>Isto divide um sinal por um fator. Você pode usar isto para dividir um sinal por outro. Ou configurar invalue1 para 1 e você obterá o recíproco de invalue2 como outvalue. Tome cuidado para que o invalue2 nunce atinja 0 ou você terá problemas com divisões por zero. </para> + +</sect3> + +<sect3 id="mref-synth-multi-add-sect"> +<title +>Synth_MULTI_ADD</title> +<anchor id="mref-synth-multi-add"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_MULTI_ADD.png" + format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MULTI_ADD</phrase +></textobject> +</mediaobject> + +<para +>Isto adiciona uma quantidade arbitrária de sinais. Se você precisar de somar todas as formas de onda produzidas por quatro osciladores, você poderá conectar todas as saídas deles a um único módulo Synth_MULTI_ADD. Isto é mais eficiente do que usar três módulos Synth_ADD. </para> + +</sect3> + +<sect3 id="mref-synth-xfade-sect"> +<title +>Synth_XFADE</title> +<anchor id="mref-synth-xfade"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_XFADE.png" format="PNG"/> +</imageobject> +<textobject +><phrase +>Synth_XFADE</phrase +></textobject> +</mediaobject> + +<para +>Isto mistura dois sinais. Se o valor da percentagem for igual a -1, só o sinal esquerdo é ouvido; se for igual a 1, só o sinal direito é ouvido. Se for 0 (zero), ambos os sinais são ouvidos com o mesmo volume. </para> + +<para +>Isto permite-lhe garantir que o seu sinal permaneça em um intervalo bem definido. Se você tiver dois sinais que estejam entre -1 e 1 antes da mistura, eles irão permanecer dentro do mesmo intervalo após a referida mistura. </para> +</sect3> + +<sect3 id="mref-synth-autopanner-sect"> +<title +>Synth_AUTOPANNER</title> +<anchor id="mref-synth-autopanner"/> + +<para +>O oposto de um cruzamento. Isto pega um sinal mono e divide-o em um sinal estéreo: Isto é usado para automaticamente distribuir o sinal entra as saídas esquerda e direita. Isto torna a mistura mais viva. Um aplicativo padrão deve ser uma guitarra ou som de ligação. </para> + +<para +>Conecta um <acronym +>LFO</acronym +>, uma onda senoidal ou dente-de-serra por exemplo ao inlfo. e seleciona uma frequência entre 0,1 e 5Hz para um efeito tradicional ou mais ainda para efeitos especiais. </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-busses"> +<title +>Barramentos</title> + +<sect3 id="mref-synth-bus-uplink-sect"> +<title +>Synth_BUS_UPLINK</title> +<anchor id="mref-synth-bus-uplink"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_BUS_UPLINK.png" + format="PNG"/> +</imageobject> +<textobject +><phrase +>Synth_BUS_UPLINK</phrase +></textobject> +</mediaobject> + +<para +>Um canal de envio para um barramento. Fornece os sinais ao left (esquerdo) e ao right (direito), bem como o nome do barramento onde os dados deverão ir na porta <quote +>bus</quote +>. O sinal combinado de todos os canais de envio ('uplinks') irão aparecer em todos os canais de recepção ('downlinks') desse <quote +>barramento</quote +>. </para> +</sect3> + +<sect3 id="mref-synth-bus-downlink-sect"> +<title +>Synth_BUS_DOWNLINK</title> +<anchor id="mref-synth-bus-downlink"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_BUS_DOWNLINK.png" + format="PNG"/></imageobject> +<textobject +><phrase +>Synth_BUS_DOWNLINK</phrase +></textobject> +</mediaobject> + +<para +>Obtém (a soma de) todos os dados que são colocados num determinado barramento (com o nome que você indicar na porta <quote +>bus</quote +> (barramento)). </para> +</sect3> + +</sect2> + +<!-- TODO AFTER KDE2.1: move freeverb into delays, and rename category to + Delays & reverbs --> + +<sect2 id="mcat-synth-delays"> +<title +>Atrasos</title> + + + +<sect3 id="mref-synth-delay-sect"> +<title +>Synth_DELAY</title> +<anchor id="mref-synth-delay"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_DELAY.png" + format="PNG"/></imageobject +></mediaobject> + +<para +>Isto atrasa o sinal de entrada por um período de tempo determinado. A especificação do tempo deverá ser entre 0 e maxdelay (atraso máximo) para obter um atraso equivalente em segundos. </para> + +<para +>Este tipo de atraso <emphasis +>não pode ser usado</emphasis +> nas estruturas de realimentação ('feedback'). Isto acontece por ser um atraso variável. Você poderá modificar o seu tamanho durante a execução e até mesmo configurá-lo como zero. Mas como em uma estrutura de realimentação a própria saída é necessária para calcular as próximas amostras, uma atraso cujo valor possa cair para zero durante a síntese poderá conduzir a uma situação de interrupção. </para> + +<para +>Use os CDELAYs nesse caso, e combinando talvez um atraso constante (de 0,001 segundos) com um atraso flexível. </para> + +<para +>Você poderá também combinar um CDELAY com um DELAY para obter um atraso de tamanho variável com um valor mínimo num ciclo de realimentação. Certifique-se apenas que tem um CDELAY. </para> + +</sect3> + +<sect3 id="mref-synth-cdelay-sect"> +<title +>Synth_CDELAY</title> +<anchor id="mref-synth-cdelay"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_CDELAY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_CDELAY</phrase +></textobject> +</mediaobject> + +<para +>Isto atrasa o sinal de entrada por um período de tempo determinado. A especificação do tempo deverá ser maior que 0 para obter um atraso de 0 segundos ou mais. O atraso é constante durante o cálculo, o que significa que ele não poderá ser modificado. </para> + +<para +>Isto poupa tempo de cálculo, uma vez que não é feita nenhuma interpolação e é útil para estruturas recursivas. Veja a descrição acima (Synth_DELAY). </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-envelopes"> +<title +>Envelopes</title> + + + +<sect3 id="mref-synth-envelope-adsr-sect"> +<title +>Synth_ENVELOPE_ADSR</title> +<anchor id="mref-synth-envelope-adsr"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_ENVELOPE_ADSR.png" + format="PNG"/></imageobject> +<textobject +><phrase +>Synth_ENVELOPE_ADSR</phrase +></textobject> +</mediaobject> + +<para +>Este é um envelope clássico de <acronym +>ADSR</acronym +>, o que significa que você indica: </para> + +<variablelist> +<varlistentry> +<term +>active</term> +<listitem> +<para +>Se a nota está sendo pressionada no momento pelo usuário. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>invalue</term> +<listitem> +<para +>O sinal de entrada. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>attack</term> +<listitem> +<para +>O tempo que deverá passar entre o usuário pressionar a nota e o sinal atingir a sua amplitude máxima (em segundos). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>decay</term> +<listitem> +<para +>O tempo que deverá passar entre o sinal atingir a sua amplitude máxima e voltar para um nível constante (em segundos). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>sustain</term> +<listitem> +<para +>O nível constante em que o sinal é mantido até que o usuário solte a nota. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>release</term> +<listitem> +<para +>O tempo que deverá passar depois do usuário soltar a nota até que o sinal seja reduzido à zero (em segundos). </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Você irá obter o sinal redimensionado em 'outvalue' (na saída). Se o envelope do <acronym +>ASDR</acronym +> tiver terminado, irá colocar o 'done' (terminado) a 1. Você poderá usar isto para fornecer a saída <quote +>done</quote +> de um instrumento (que fará com que a estrutura do instrumento seja removida pelo encaminhador de &MIDI; logo que a fase do 'release' tenha terminado). </para> + +</sect3> + +<sect3 id="mref-synth-pscale-sect"> +<title +>Synth_PSCALE</title> +<anchor id="mref-synth-pscale"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_PSCALE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_PSCALE</phrase +></textobject> +</mediaobject> + +<para +>O módulo Synth_PSCALE irá aplicar um fator de escala ao canal de áudio que passa por ele, de um volume 0 (silêncio) até o 1 (volume original), e de volta a 0 (silêncio). De acordo com a posição (pode obter a posição a partir de Synth_SEQUENCE). A altura em que o pico deverá ocorrer pode ser indicada em 'pos'. </para> + +<para +>Exemplo: Se definir o 'top' igual a 0,1 significa que, ao fim de 10% da nota ter sido tocada, o volume atingiu o seu máximo e começa a decair a partir daí. </para> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-effects"> +<title +>Efeitos</title> + +<sect3 id="mref-synth-freeverb-sect"> +<title +>Synth_FREEVERB</title> +<anchor id="mref-synth-freeverb"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_FREEVERB.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_FREEVERB</phrase +></textobject> +</mediaobject> + +<para +>Este é um efeito de reverberação. Na implementação atual, passa um sinal estéreo através do efeito, adicionando a tal reverberação ao mesmo sinal. </para> + +<note> +<para +>Isto significa que ele também poderá ser usado numa StereoEffectStack. </para> +</note> + +<para +>O sinal de entrada deverá ser conectado a (inleft, inright) e o de saída a (outleft, outright). </para> + +<para +>Os parâmetros que você poderá configurar são: </para> + +<variablelist> +<varlistentry> +<term +>roomsize</term> +<listitem> +<para +>O tamanho da sala que a reverberação irá simular (intervalo: 0..1, em que o 1 é a maior sala possível). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>damp</term> +<listitem> +<para +>Isto indica um filtro que fará com que a sala simulada absorva as altas frequências (intervalo de 0..1, em que o 1 significa que as altas frequências são absorvidas de forma agressiva). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>wet</term> +<listitem> +<para +>A quantidade de sinal reverberado (isto é, a quantidade de sinal que deverá ser modificado pelos filtros, resultando em um som <quote +>molhado</quote +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>dry</term> +<listitem> +<para +>A quantidade de sinal puro que é passado, resultando num eco (ou atraso combinado), em vez de ser afetado por reverberação (intervalo: 0..1). </para> +<!-- TODO: do some measurements to show that this documentation -is- correct, +I am not sure if it is echo, or really pure (non-delayed), or multiple delay +or whatever --> +</listitem> +</varlistentry> + +<varlistentry> +<term +>width</term> +<listitem> +<para +>A quantidade de efeito estéreo que o algoritmo de reverberação adiciona ao efeito, tornando o som reverberado mais amplo no panorama estéreo (intervalo: 0..1). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mode</term> +<listitem> +<para +>[ TODO: Eu penos que, se o 'mode' for igual a 1, a reverberação mantém a imagem atual do som, onde o 0 é a operação normal ] </para> +</listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3 id="mref-synth-tremolo-sect"> +<title +>Synth_TREMOLO</title> +<anchor id="mref-synth-tremolo"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_TREMOLO.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_TREMOLO</phrase +></textobject> +</mediaobject> + +<para +>O módulo 'tremolo' modula a amplitude com base numa onda <acronym +>LFO</acronym +>. Tradicionalmente você iria usar uma onda senoidal, mas porquê limitar-se? O que irá obter é um efeito muito intenso que corta a maioria dos arranjos devido ao seu efeito altamente dinâmico. O efeito de 'tremolo' é ainda um dos efeitos favoritos dos guitarristas, ainda que não seja tão popular como era nos anos 60. </para> + +<para +>[ TODO: atualmente, isto está implementado como 'invalue + abs(inlfo)' - provavelmente faria mais sentido se fosse implementado como 'invalue * (1+inlfo*depth)', onde o 'depth' (profundidade) seria um parâmetro entre 0..1 - isto poderá ter sido decidido após o &kde;2.1 ; se você tiver um comentário, envie uma mensagem para a lista do &arts; ;). ] </para> + +</sect3> +<sect3 id="mref-synth-fx-cflanger-sect"> +<title +>Synth_FX_CFLANGER</title> +<anchor id="mref-synth-fx-cflanger"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_FX_CFLANGER.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_FX_CFLANGER</phrase +></textobject> +</mediaobject> + +<para +>Um 'flanger' é um efeito de atraso variável no tempo. Para tornar o desenvolvimento de efeitos complexos de 'flanger' mais simples, é fornecido este módulo que contém a base de um 'flanger' de um canal. </para> + +<para +>Ele contém as seguintes portas:</para> + +<variablelist> +<varlistentry> +<term +>invalue</term> +<listitem> +<para +>O sinal que você deseja processar. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>lfo</term> +<listitem> +<para +>De preferência, uma onda senoidal que modula o tempo de atraso no 'flanger' (-1 .. 1). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mintime</term> +<listitem> +<para +>O valor mínimo para o atraso no 'flanger' em milisegundos. Valores sugeridos: tente algo como 1 ms. Por favor use valores < 1000 ms. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>maxtime</term> +<listitem> +<para +>O valor máximo para o atraso no 'flanger' em milisegundos. Valores sugeridos: tente algo como 5 ms. Por favor use valores < 1000 ms. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>outvalue</term> +<listitem> +<para +>O sinal de saída. É importante que você misture isso com o sinal original para obter o efeito desejado. </para> +</listitem> +</varlistentry> +</variablelist> + +<tip> +<para +>Você poderá usar isto com base para um efeito de coro. </para> +</tip> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-filters"> +<title +>Filtros</title> + +<sect3 id="mref-synth-pitch-shift-sect"> +<title +>Synth_PITCH_SHIFT</title> +<anchor id="mref-synth-pitch-shift"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_PITCH_SHIFT.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_PITCH_SHIFT</phrase +></textobject> +</mediaobject> + +<para +>Este efeito de mudança de frequência altera a frequência do sinal da entrada sem afetar a velocidade. Uma aplicação para isto é por exemplo a alteração do tom da sua voz enquanto você a grava (e reproduz) em tempo-real. </para> + +<para +>O parâmetro <emphasis +>speed</emphasis +> (velocidade) é a velocidade relativa com que o sinal será reproduzido. Deste modo, uma velocidade igual a dois fará com que o som fique duas vezes mas alto (&ie; uma frequência de entrada de 440 Hz iria resultar numa frequência de saída de 880 Hz). </para> + +<para +>O parâmetro <emphasis +>frequency</emphasis +> (frequência) é usado internamente para mudar entre as várias diferenças do sinal. É ajustável e, dependendo da sua escolha, o desvio de frequência parecerá mais ou menos realístico para o seu caso de uso. Um bom valor para começar será algo do tipo 5 ou 10. </para> + +</sect3> + +<sect3 id="mref-synth-shelve-cutoff-sect"> +<title +>Synth_SHELVE_CUTOFF</title> +<anchor id="mref-synth-shelve-cutoff"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_SHELVE_CUTOFF.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_SHELVE_CUTOFF</phrase +></textobject> +</mediaobject> + +<para +>Filtra todas as frequências superiores à frequência de corte. </para> + +</sect3> + +<sect3 id="mref-synth-brickwall-limiter-sect"> +<title +>Synth_BRICKWALL_LIMITER</title> +<anchor id="mref-synth-brickwall-limiter"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_BRICKWALL_LIMITER.png" + format="PNG"/></imageobject> +<textobject +><phrase +>Synth_BRICKWALL_LIMITER</phrase +></textobject> +</mediaobject> + +<para +>Este módulo corta um sinal, de modo a fazer com que ele caiba no intervalo [-1;1]. Ele não faz nada para evitar a distorção que acontece ao cortar os sinais altos. Você poderá usar isto como um efeito (por exemplo, para criar uma onda senoidal ligeiramente cortada). Contudo, é provavelmente uma boa idéia passar o sinal através de um filtro passa-baixo depois disso, para tornar o som menos agressivo. </para> +</sect3> + +<sect3 id="mref-synth-std-equalizer-sect"> +<title +>Synth_STD_EQUALIZER</title> +<anchor id="mref-synth-std-equalizer"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_STD_EQUALIZER.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_STD_EQUALIZER</phrase +></textobject> +</mediaobject> + +<para +>Este é um bloco de equalização parametrizado engraçado. Os seus parâmetros são: </para> + +<variablelist> +<varlistentry> +<term +>invalue, outvalue</term> +<listitem> +<para +>O sinal que é filtrado pelo equalizador. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>low</term> +<listitem> +<para +>Como é que as frequências baixas deverão ser alteradas. O valor está em dB, onde 0 significa que as baixas frequências não são alteradas, o -6 significa que as reduzirá em 6dB, e o +6 significa que as aumentará em 6dB. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mid</term> +<listitem> +<para +>Como é que as frequências intermediárias deverão ser alteradas pelo equalizador (ver em 'low'). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>high</term> +<listitem> +<para +>Como é que as altas frequências deverão ser alteradas pelo equalizador (ver em 'low'). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>frequency</term> +<listitem> +<para +>Esta é a frequência central do equalizador em Hz, onde as frequências intermediárias se situam à volta desse espectro, tendo as baixas frequências à sua esquerda e as altas à direita. Observe que a frequência não poderá ser mais elevada que metade da taxa de amostragem; normalmente esta é igual a 22 050 Hz e não poderá ser menor que 1 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>q</term> +<listitem> +<para +>Isto influencia quão estreito é o espectro central. Deverá ser um número positivo > 0. Um valor igual a um é razoável, os valores mais elevados correspondem a um espectro mais estreito de frequências intermediárias e os menores que um correspondem a um espectro largo. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3 id="mref-synth-rc-sect"> +<title +>Synth_RC</title> +<anchor id="mref-synth-rc"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_RC.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_RC</phrase +></textobject> +</mediaobject> + +<para +>Um filtro por ressonância filtra todas as frequências ao redor de um determinado valor de pico. Não existe nenhuma forma útil de indicar a frequência intermediária (a que não será cortada), uma vez que as entradas são duas constantes estranhas 'f' e 'b'. O código é muito antigo, desde os primeiros dias do sintetizador, e provavelmente será substituído por um filtro novo que terá um frequência e um valor de ressonância como parâmetros). </para> + +<para +>Todavia tente algo do género b=5, f=5 ou b=10, f=10 ou b=15, f=15. </para> + +</sect3> + +<sect3 id="mref-synth-moog-vcf-sect"> +<title +>Synth_MOOG_VCF</title> +<anchor id="mref-synth-moog-vcf"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_MOOG_VCF.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MOOG_VCF</phrase +></textobject> +</mediaobject> + +<para +>Filtra todas as frequências acima da frequência de corte (é um filtro de 24dB com 4 pólos, o qual filtra -24db por oitava acima da frequência de corte), mas oferece um parâmetro adicional para ajustar a ressonância do filtro, em que o 0 significa ausência de ressonância e o 4 significa auto-oscilação. </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-midi-sequencing"> +<title +>MIDI + Sequenciação</title> + +<sect3 id="mref-synth-midi-test-sect"> +<title +>Synth_MIDI_TEST</title> +<anchor id="mref-synth-midi-test"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_MIDI_TEST.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MIDI_TEST</phrase +></textobject> +</mediaobject> + +<para +>Este módulo carrega uma estrutura de um instrumento a partir de um arquivo e registra-se como uma saída de MIDI no gerenciador de &MIDI; do &arts;. As notas qiue são enviadas para esta saída irão resultar na criação de vozes dos instrumentos. </para> + +<note> +<para +>Você poderá configurar algo mais conveniente no &artscontrol; do que fazê-lo manualmente no &arts-builder;. </para> +</note> + +</sect3> + +<sect3 id="mref-synth-sequence-sect"> +<title +>Synth_SEQUENCE</title> +<anchor id="mref-synth-sequence"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_SEQUENCE.png" +format="PNG"/></imageobject +></mediaobject> + +<para +>Irá tocar uma sequência de notas e tocar outra e outra vez. As notas são dadas na notação de teclado e são separadas por ponto-e-vírgula. Um exemplo será <literal +>A-3;C-4;E-4;C-4;</literal +>. A velocidade é dada em segundos por nota, por isso, se você quiser 120 batidas por minuto, você deverá indicar provavelmente 0,5 segundos por nota, uma vez que 60 segundos/0,5 segundos por nota=120 bpm. </para> + +<para +>Você poderá indicar em cada nota um tamanho relativo à velocidade adicionando dois pontos (:) após a nota, seguido do tamanho. O <literal +>A-3:2;C-4:0.5;D-4:0.5;E-4;</literal +> demonstra isto. Como pode ver, os programas de composição de &MIDI; tendem a oferecer mais conforto ;) </para> + +<para +>O Synth_SEQUENCE dá-lhe informações adicionais sobre a posição da nota que está sendo tocada no momento, onde o 0 indica que iniciou agora e o 1 que terminou. Esta informação poderá ser usada no Synth_PSCALE (veja em baixo). </para> +</sect3> + +<sect3 id="mref-synth-sequence-freq-sect"> +<title +>Synth_SEQUENCE_FREQ</title> +<anchor id="mref-synth-sequence-freq"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_SEQUENCE_FREQ.png" +format="PNG"/></imageobject +></mediaobject> + +<para +>Este módulo funciona tal-e-qual o Synth_SEQUENCE com a única diferença que você não indica nomes de notas mas sim frequências. </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-samples"> +<title +>Amostras</title> + +<sect3 id="mref-synth-play-wav-sect"> +<title +>Synth_PLAY_WAV</title> +<anchor id="mref-synth-play-wav"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_PLAY_WAV.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_PLAY_WAV</phrase +></textobject> +</mediaobject> + +<para +>Isto irá tocar um arquivo <literal role="extension" +>wav</literal +>. Isto só estará presente se você tiver a libaudiofile instalada no seu computador. O arquivo WAVE iniciar-se-á logo que o módulo for criado. </para> + +<para +>Irá parar logo que tenha terminado, situação em que o finished (terminado) será configurado como 1. O parâmetro speed (velocidade) pode ser usado para reproduzir o arquivo mais depressa ou mais devagar, e onde o 1,0 é a velocidade normal (com que foi gravado). </para> +<!-- TODO: KDE2.2: check that this really works together in instruments with +the done parameter things ;) --> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-soundio"> +<title +>E/S de Som</title> + +<sect3 id="mref-synth-play-sect"> +<title +>Synth_PLAY</title> +<anchor id="mref-synth-play"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_PLAY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_PLAY</phrase +></textobject> +</mediaobject> + +<important> +<para +>Você normalmente não irá necessitar deste módulo, a menos que esteja criando aplicativos autônomos. Dentro do &artsd;, já existe um módulo Synth_PLAY e, se criar outro, este não irá funcionar. </para> +</important> + +<para +>O módulo Synth_PLAY irá enviar o seu sinal de áudio para a placa de som. Os canais left (esquerdo) e right (direito) deverã conter a entrada <emphasis +>normalizada</emphasis +> dos canais. Se a sua entrada não estiver entre -1 e 1, será cortado o sinal. </para> + +<para +>Como já foi referido, só pode existir um módulo Synth_PLAY em uso, uma vez que este acessa diretamente sua placa de som. Utilize os barramentos se você quiser misturar mais de um canal de áudio em conjunto antes de reproduzí-lo. Use o módulo Synth_AMAN_PLAY para obter algo semelhante a uma saída no &artsd;. </para> + +<para +>Observe que o Synth_PLAY também faz a temporização da estrutura completa. Isto significa: sem Synth_PLAY = sem fonte de temporização = sem som. Por isso, você irá necessitar (exatamente) de um objeto Synth_PLAY. </para> + +</sect3> + +<sect3 id="mref-synth-record-sect"> +<title +>Synth_RECORD</title> +<anchor id="mref-synth-record"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_RECORD.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_RECORD</phrase +></textobject> +</mediaobject> + +<important> +<para +>Você normalmente não irá necessitar deste módulo, a menos que esteja criando aplicativos autônomos. Dentro do &artsd;, já existe um módulo Synth_RECORD e, se criar outro, este não irá funcionar. </para> +</important> + +<para +>O módulo Synth_RECORD irá gravar um sinal proveniente da placa de som. Os canais left (esquerdo) e right (direito) irão conter a entrada dos canais (entre -1 e 1). </para> + +<para +>Como já foi mencionado, só pode existir um módulo Synth_RECORD em uso, uma vez que este acessa diretamente sua placa de som. Utilize os barramentos se você quiser usar os canais de áudio gravados de mais de um lugar. Use o módulo Synth_AMAN_RECORD para obter algo semelhante a uma entrada no &artsd;. Para isto funcionar, o &artsd; deverá estar rodando <emphasis +>com o full duplex ativo</emphasis +>. </para> +</sect3> + +<sect3 id="mref-synth-aman-play-sect"> +<title +>Synth_AMAN_PLAY</title> +<anchor id="mref-synth-aman-play"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_AMAN_PLAY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_AMAN_PLAY</phrase +></textobject> +</mediaobject> + +<para +>O módulo Synth_AMAN_PLAY irá enviar para a saída o seu sinal de áudio. É bom (mas não necessário) se você enviar para fora um sinal normalizado (entre -1 e 1). </para> + +<para +>Este módulo irá usar o gerenciador de áudio para atribuir onde o sinal será tocado. O gerenciador de áudio poderá ser controlado através do &artscontrol;. Para torná-lo mais intuitivo no seu uso, é bom dar ao sinal que será tocado um nome. Isto poderá ser obtido através da opção <emphasis +>title</emphasis +> (título). Outra funcionalidade do gerenciador de áudio é ser capaz de se recordar onde tocou um determinado sinal da última vez. Para fazer isso, ele precisa ser capaz de distinguir os sinais. É por isso que você deverá atribuir algo único ao <emphasis +>autoRestoreID</emphasis +>, também. </para> +</sect3> + +<sect3 id="mref-synth-aman-record-sect"> +<title +>Synth_AMAN_RECORD</title> +<anchor id="mref-synth-aman-record"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_AMAN_RECORD.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_AMAN_RECORD</phrase +></textobject> +</mediaobject> + +<para +>O módulo Synth_AMAN_RECORD irá gravar um sinal de áudio de uma fonte externa (&ie;. line in/microfone) para dentro do &artsd;. O resultado será um sinal normalizado (entre -1 e 1). </para> + +<para +>Este módulo irá usar o gerenciador de áudio para atribuir onde o sinal será tocado. O gerenciador de áudio poderá ser controlado através do &artscontrol;. Para torná-lo mais intuitivo no seu uso, é bom dar ao sinal a ser gravado um nome. Isto poderá ser obtido através da opção <emphasis +>title</emphasis +> (título). Outra funcionalidade do gerenciador de áudio é ser capaz de se recordar onde gravou um determinado sinal da última vez. Para fazer isso, ele precisa ser capaz de distinguir os sinais. É por isso que você deverá atribuir algo único ao <emphasis +>autoRestoreID</emphasis +>, também. </para> +</sect3> + +<sect3 id="mref-synth-capture-sect"> +<title +>Synth_CAPTURE</title> +<anchor id="mref-synth-capture"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_CAPTURE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_CAPTURE</phrase +></textobject> +</mediaobject> + +<para +>O módulo Synth_CAPTURE irá gravar um sinal de áudio em um arquivo WAVE no seu disco rígido. O arquivo será sempre chamado de <filename +>/tmp/mcop-<replaceable +>usuário</replaceable +>/capture.wav</filename +> </para> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-tests"> +<title +>Testes</title> + +<sect3 id="mref-synth-nil-sect"> +<title +>Synth_NIL</title> +<anchor id="mref-synth-nil"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_NIL.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_NIL</phrase +></textobject> +</mediaobject> + +<para +>Isto simplesmente não faz nada. Só é útil para situações de teste. </para> + +</sect3> + +<sect3 id="mref-synth-debug-sect"> +<title +>Synth_DEBUG</title> +<anchor id="mref-synth-debug"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_DEBUG.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_DEBUG</phrase +></textobject> +</mediaobject> + +<para +>Você poderá usar isto para depuração. Ele irá imprimir o valor do sinal em invalue em intervalos regulares (p.ex. a cada 1 segundo), combinado com o comentário que você indicou. Desta forma, você poderá descobrir se alguns dos sinais estão dentro de determinados intervalos ou se estão lá de alguma maneira. </para> +</sect3> + +<sect3 id="mref-synth-midi-debug-sect"> +<title +>Synth_MIDI_DEBUG</title> +<anchor id="mref-synth-midi-debug"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_MIDI_DEBUG.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MIDI_DEBUG</phrase +></textobject> +</mediaobject> + +<para +>Você poderá usar isto para depurar como é que os seus eventos &MIDI; estão chegando ao &arts;. </para> + +<para +>Quando um MIDI_DEBUG estiver rodando, o &artsserver; irá imprimir linhas do tipo: </para> + +<screen +><computeroutput +>201 100753.837585 on 0 42 127</computeroutput +></screen> + +<screen +><computeroutput +>202 101323.128355 off 0 42</computeroutput +></screen> + +<para +>A primeira linha lhe diz que 100753ms (isto é, 100 segundos) depois do MIDI_DEBUG começar, chegou um evento on de &MIDI; no canal 0. Este evento tinha a velocidade (volume) de 127, a mais elevada possível. A linha a seguir mostra o evento de liberação do MIDI. [ TODO: isto não funciona atualmente, quando funcionar, deverá ser feito através do gerenciador de &MIDI; ]. </para> +</sect3> + +<sect3 id="mref-synth-data-sect"> +<title +>Synth_DATA</title> +<anchor id="mref-synth-data"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_DATA.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_DATA</phrase +></textobject> +</mediaobject> + +<para +>Isto cria um sinal com um número constante. </para> +<!-- TODO: this doesn't really belong in test, does it? --> +</sect3> +</sect2> + +<sect2 id="mcat-synth-osc-mod"> +<title +>Oscilação & Modulação</title> + +<sect3 id="mref-synth-frequency-sect"> +<title +>Synth_FREQUENCY</title> +<anchor id="mref-synth-frequency"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_FREQUENCY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_FREQUENCY</phrase +></textobject> +</mediaobject> + +<para +>Todos os osciladores no &arts; não precisam de uma frequência de entrada, mas sim de uma posição na onda. A posição deverá ser entre 0 e 1, o que se mapeia em um objeto normal do Synth_WAVE_SIN no intervalo 0..2*pi. Para gerar os valores oscilantes para uma frequência, é usado um módulo Synth_FREQUENCY. </para> +</sect3> + +<sect3 id="mref-synth-fm-source-sect"> +<title +>Synth_FM_SOURCE</title> +<anchor id="mref-synth-fm-source"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_FM_SOURCE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_FM_SOURCE</phrase +></textobject> +</mediaobject> + +<para +>Isto é usado na modulação de frequência. Coloque a sua frequência na entrada frequency (frequência) e coloque outro sinal na entrada modulator. Depois disso, defina o modlevel (nível de modulação) para algo como 0,3. A frequência será então modulada com o modulator. Pode experimentar. Funciona bem mesmo quando você coloca uma realimentação nele, o que significa ter uma combinação do sinal de saída atrasado com o Synth_FM_SOURCE (você terá de colocá-lo com algum oscilador, uma vez que só tem o papel do Synth_FREQUENCY) e algum outro sinal para obter bons resultados. </para> + +<para +>Funciona otimamente em conjunto com os osciladores Synth_WAVE_SIN. </para> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-waveforms"> +<title +>Formas de Onda</title> + +<sect3 id="mref-synth-wave-sin-sect"> +<title +>Synth_WAVE_SIN</title> +<anchor id="mref-synth-wave-sin"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_WAVE_SIN.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_SIN</phrase +></textobject> +</mediaobject> + +<para +>Oscilador senoidal. Coloque um sinal pos de um Synth_FREQUENCY ou de um Synth_FM_SOURCE na entrada. Deste modo, poderá obter uma onda senoidal na saída. O sinal pos indica a posição de fase na onda, e pertence ao intervalo 0..1, que se mapeia internamente em 0..2*PI. </para> + +</sect3> + +<sect3 id="mref-synth-wave-tri-sect"> +<title +>Synth_WAVE_TRI</title> +<anchor id="mref-synth-wave-tri"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_WAVE_TRI.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_TRI</phrase +></textobject> +</mediaobject> + +<para +>Oscilador de ondas triangulares. Coloque um sinal pos de um Synth_FREQUENCY ou de um Synth_FM_SOURCE na entrada. Deste modo, poderá obter uma onda senoidal na saída. O sinal pos indica a posição de fase na onda, e pertence ao intervalo 0..1, que se mapeia internamente em 0..2*PI. Tenha cuidado, porque o sinal de entrada <emphasis +>tem</emphasis +> de estar no intervalo 0..1 para que o sinal de saída produza bons resultados. </para> +</sect3> + +<sect3 id="mref-synth-noise-sect"> +<title +>Synth_NOISE</title> +<anchor id="mref-synth-noise"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_NOISE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_NOISE</phrase +></textobject> +</mediaobject> + +<para +>Um gerador de ruído. Isto gera um sinal aleatório entre -1 e 1. </para> + +</sect3> + +<sect3 id="mref-synth-wave-square-sect"> +<title +>Synth_WAVE_SQUARE</title> +<anchor id="mref-synth-wave-square"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_WAVE_SQUARE.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_SQUARE</phrase +></textobject> +</mediaobject> + +<para +>Oscilador de ondas quadradas. Coloque um sinal pos de um Synth_FREQUENCY ou de um Synth_FM_SOURCE na entrada. Deste modo, poderá obter uma onda senoidal na saída. O sinal pos indica a posição de fase na onda, e pertence ao intervalo 0..1, que se mapeia internamente em 0..2*PI. Tenha cuidado, porque o sinal de entrada <emphasis +>tem</emphasis +> de estar no intervalo 0..1 para que o sinal de saída produza bons resultados. </para> +</sect3> + +<sect3 id="mref-synth-wave-softsaw-sect"> +<title +>Synth_WAVE_SOFTSAW</title> +<anchor id="mref-synth-wave-softsaw"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_WAVE_SOFTSAW.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_SOFTSAW</phrase +></textobject> +</mediaobject> + +<para +>Oscilador de ondas dente-de-serra. Coloque um sinal pos de um Synth_FREQUENCY ou de um Synth_FM_SOURCE na entrada. Deste modo, poderá obter uma onda senoidal na saída. O sinal pos indica a posição de fase na onda, e pertence ao intervalo 0..1, que se mapeia internamente em 0..2*PI. Tenha cuidado, porque o sinal de entrada <emphasis +>tem</emphasis +> de estar no intervalo 0..1 para que o sinal de saída produza bons resultados. </para> +</sect3> + +<sect3 id="mref-synth-wave-pulse-sect"> +<title +>Synth_WAVE_PULSE</title> +<anchor id="mref-synth-wave-pulse"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_WAVE_PULSE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_PULSE</phrase +></textobject> +</mediaobject> + +<para +>Oscilador de impulsos - este módulo é semelhante na idéia ao oscilador de ondas quadradas (Synth_WAVE_RECT), mas oferece uma relação configurável de nível alto/baixo, através do parâmetro <emphasis +>dutycycle</emphasis +>. Coloque um sinal pos de um Synth_FREQUENCY ou de um Synth_FM_SOURCE na entrada. Deste modo, poderá obter uma onda senoidal na saída. O sinal pos indica a posição de fase na onda, e pertence ao intervalo 0..1, que se mapeia internamente em 0..2*PI. Tenha cuidado, porque o sinal de entrada <emphasis +>tem</emphasis +> de estar no intervalo 0..1 para que o sinal de saída produza bons resultados. </para> +</sect3> +</sect2> +<sect2 id="mcat-synth-misc"> +<title +>Diversos</title> + +<sect3 id="mref-synth-compressor-sect"> +<title +>Synth_COMPRESSOR</title> +<anchor id="mref-synth-compressor"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_COMPRESSOR.png" + format="PNG"/></imageobject +></mediaobject> + +<para +>Este módulo reduz o intervalo dinâmico do sinal. Por exemplo, os compressores são úteis na compensação das variações amplas de volume se alguém estiver falando em um microfone. </para> + +<para +>Assim que o nível de entrada exceder um determinado nível (o patamar), o sinal é comprimido. Ele simplesmente multiplica tudo o que estiver acima do limite pelo valor de proporção, o qual é um número entre 0 e 1. Finalmente, o sinal completo é multiplicado pelo fator de saída. </para> + +<para +>Os argumentos attack e release atrasam o início e o fim da compressão. Use isto se você, por exemplo, quiser ainda ouvir o início forte de uma batida de bateria. O argumento está em milisegundos e um valor igual a 0ms é possível, se bem que poderá resultar apenas em um ligeiro ruído. </para> + +</sect3> +</sect2> +</sect1> + +<sect1 id="visual-modules-reference"> +<title +>Referência dos Módulos Visuais</title> + +<para +>TODO quando os módulos visuais estiverem mais "completos". </para> +</sect1> + +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/porting.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/porting.docbook new file mode 100644 index 00000000000..f245e6459e2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/porting.docbook @@ -0,0 +1,52 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="porting"> +<title +>Portando Aplicativos para o &arts;</title> + +<sect1 id="using-artsdsp"> +<title +>Usando o &artsdsp;</title> + +<para +>O utilitário &artsdsp;, <link linkend="artsdsp" +>descrito anteriormente</link +>, possibilita que a maioria dos aplicativos antigos que se comunicavam diretamente com os dispositivos de áudio, funcionem corretamente com o &arts;. Aplicativos escritos para usar o Enlightenment Sound Daemon (<application +>esd</application +>) irão funcionar na maioria dos casos, rodando o <application +>esd</application +> com o &artsdsp;. </para> + +<para +>Isto faz com que seja encurtado o caminho para portar aplicativos existentes para o &kde;. No entanto, isto não possibilita que esses aplicativos tirem vantagem do potencial do &arts;, como utilizar módulos e e usar outros fluxos de multimídia que não sejam de áudio digital. Se o aplicativo necessita de recursos mais sofisticados do que simplesmente reproduzir arquivos de som, normalmente faz mais sentido adicionar suporte nativo para o &arts; ao aplicativo. </para> + +<para +>Usando o &arts; o seu aplicativo não precisa realizar muito trabalho -- ele pode se apoiar nas funções do &arts; para tratar de coisas como codecs para diferentes formatos de mídia e controle do hardware de som. </para> + +</sect1> + +<sect1 id="adding-native-arts-support"> +<title +>Adicionando Suporte Nativo ao &arts;</title> + +<para +>Ao usar o &arts;, você terá inúmeras <link linkend="arts-apis" +><acronym +>API</acronym +>s</link +> para escolher. A decisão de qual usar depende de uma série de fatores, incluindo o tipo de mídia a ser usado (som, &MIDI;, &CD; áudio, &etc;), os recursos requeridos da <acronym +>API</acronym +>, e quando é escrito em C++. Na maioria dos casos a escolha refere-se obviamente aos recursos requeridos. </para> + +<para +>Para portabilidade entre plataformas, aplicativos que necessitam rodar em ambientes que não sejam o &kde; não confie no &arts; pelo menos até o momento. Usar paradigma de plug-ins é uma boa escolha para suportar diferentes ambientes de multimídia. Fazendo uma <acronym +>API</acronym +> de plug-ins aberta e documentada (especiamente para aplicativos de código fechado) oferece a vantagem de que outras pessoas além dos desenvolvedores do aplicativo podem implementar um plug-in para o &arts;. </para> + +</sect1> + +</chapter> + diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/references.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/references.docbook new file mode 100644 index 00000000000..77c5b2c95b5 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/references.docbook @@ -0,0 +1,61 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="references"> +<title +>Referências</title> + +<variablelist> + +<varlistentry> +<term +><ulink +url="http://multimedia.kde.org" +>http://multimedia.kde.org</ulink +></term> +<listitem> +<para +>Este é o site web principal para informações sobre multimídia relacionadas com o &kde;. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><ulink +url="http://www.arts-project.org" +>http://www.arts-project.org</ulink +></term> +<listitem> +<para +>Esta é a página do projeto &arts;. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Desenvolvimento do &kde; 2.0</term> +<listitem> +<para +>O capítulo 14 deste livro aborda multimídia, incluindo o &arts;. Ele está disponível impresso ou on-line com anotações em <ulink url="http://www.andamooka.org/" +>http://www.andamooka.org</ulink +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<ulink +url="http://sound.condorow.net" +>http://sound.condorow.net</ulink +></term> +<listitem> +<para +>Este site possui uma lista bem abrangente de aplicativos de som e &MIDI; para &Linux;. </para> +</listitem> +</varlistentry> + +</variablelist> + +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/tools.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/tools.docbook new file mode 100644 index 00000000000..edfb1c6f3d4 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/artsbuilder/tools.docbook @@ -0,0 +1,1007 @@ +<!-- +<?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> + +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="arts-tools"> +<title +>Ferramentas do &arts;</title> + +<para +>Incluído com o &arts;, vem um conjunto de utilitários para controlar e configurar o seu comportamento. Você precisa de ter alguma familiaridade com a maioria dessas ferramentas para usar efetivamente o &arts;. Esta seção descreve cada um dos utilitários e as suas opções de comando. </para> + +<sect1 id="kde-control-center"> +<title +>&kcontrol;</title> + +<para +>Ao rodar o &arts; no &kde;, o &kcontrolcenter; oferece um grupo de opções do painel de controle na categoria <guilabel +>Som</guilabel +>. Algumas dessas opções são usadas pelo &arts;. Você também poderá associar sons com vários eventos do gerenciador de janelas e do &kde; com o painel <menuchoice +><guilabel +>Aparência & Comportamento</guilabel +><guilabel +>Notificações do Sistema</guilabel +></menuchoice +>. Veja o manual do &kcontrol; para saber como usar as opções do painel. </para> + +</sect1> + +<sect1 id="artsd"> +<title +>&artsd;</title> + +<para +>O acesso aos recursos de hardware de som é controlado pelo &artsd;, o servidor do &arts;. Isto permite aos diferentes aplicativos enviarem pedidos simultâneos ao servidor, onde poderão ser misturados e tocados. Sem um servidor de som centralizado, um único aplicativo que usasse um dispositivo de som iria impedir que os outros aplicativos o usassem também. </para> + +<para +>Para usar o &arts;, deverá existir uma e apenas uma cópia do &artsd; sendo executada. É tipicamente executada quando o &kde; se inicia, se estiver ativo no painel <guilabel +>Servidor de Som</guilabel +> do &kcontrol;. </para> + +<para +>O programa aceita os seguintes argumentos:</para> + +<!-- LW: FIX THIS --> + +<cmdsynopsis +><command +>artsd</command +> <group choice="opt" +> <option +>-n</option +> <option +>-p</option +> <option +>-N</option +> <option +>-W <replaceable +>n</replaceable +></option +> </group +> <group choice="opt" +> <option +>-a <replaceable +>método de audio</replaceable +></option +> <option +>-r <replaceable +>taxa amostragem</replaceable +></option +> <option +>-b <replaceable +>bits</replaceable +></option +> <option +>-d</option +> <option +>-D <replaceable +>nome dispositivo</replaceable +></option +> <option +>-F <replaceable +>fragmentos</replaceable +></option +> <option +>-S <replaceable +>tamanho</replaceable +></option +> <option +>-s <replaceable +>segundos</replaceable +></option +> <option +>-m <replaceable +>nome da aplicação</replaceable +></option +> </group +> <group choice="opt" +> <option +>-h</option +> <option +>-A</option +> <option +>-v</option +> <option +>-l <replaceable +>nível</replaceable +></option +> </group +> </cmdsynopsis> + +<variablelist +><varlistentry> +<term +><option +>-r <replaceable +>taxa de amostragem</replaceable +></option +></term> +<listitem> +<para +>Indica a taxa de amostragem a usar.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Mostra o modo de usar os comandos.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-n</option +></term> +<listitem> +<para +>Ativa a transparência na rede.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-p <replaceable +>porta</replaceable +></option> +</term> +<listitem> +<para +>Define a porta <acronym +>TCP</acronym +> a usar (implica o <option +>-n</option +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-u</option +></term> +<listitem> +<para +>Público e sem autenticação (perigoso).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-d</option +></term> +<listitem> +<para +>Ativa a operação em full duplex.</para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-D <replaceable +>nome do dispositivo</replaceable +></option +></term> +<listitem> +<para +>Indica o dispositivo de áudio a usar (normalmente é o <filename +>/dev/dsp</filename +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-F <replaceable +>fragmentos</replaceable +></option +></term> +<listitem> +<para +>Define o número de fragmentos.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-S <replaceable +>tamanho</replaceable +></option +></term> +<listitem> +<para +>Define o tamanho de cada fragmento em bytes.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-s <replaceable +>segundos</replaceable +></option +></term> +<listitem> +<para +>Define o tempo de suspensão automática do servidor, em segundos. Um valor igual a zero desativa a suspensão automática.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-m <replaceable +>nome do aplicativo</replaceable +></option +></term> +<listitem> +<para +>Indica o nome de um aplicativo para usar para mostrar as mensagem de erro, de aviso e informativas. Se você estiver rodando o KDE, poderá usar o utilitário <application +>artsmessage</application +> para isto.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-N</option +></term> +<listitem> +<para +>Aumenta o tamanho dos buffers de rede para um valor adequado para rodar em uma LAN de 10 Mbps. Isto é equivalente a usar a opção '-w 5' (ver abaixo). </para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-w <replaceable +>n</replaceable +></option +></term> +<listitem> +<para +>Ao rodar o <application +>artsd</application +> sobre uma conexão de rede com outra máquina, você poderá querer usar um tamanho maior dos buffers para evitar cortes. O aRts fornece aos aplicativos um tamanho mínimo sugerido. Sem esta opção, o tamanho padrão baseia-se no valor 'tamanho do fragmento' * 'número de fragmentos'. Se usar esta opção você poderá aumentar o tamanho pré-definido por um fator de <replaceable +>n</replaceable +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-l <replaceable +>nível</replaceable +></option +></term> +<listitem> +<para +>Indica o nível de informações - 3 (silencioso), 2 (avisos), 1 (informação), 0 (depuração).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-v</option +></term> +<listitem> +<para +>Mostra o número da versão.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>Na maioria dos casos, bastará executar o &artsd;. </para> +</sect1> + +<sect1 id="artswrapper"> +<title +>&artswrapper;</title> + +<para +>Para oferecer uma boa resposta em tempo-real, o &artsd; é normalmente executado como um processo em tempo-real (nas plataformas que suportem prioridades de tempo-real). Isto necessita de permissões do <systemitem class="username" +>root</systemitem +>, por isso, para minimizar as implicações de segurança, o &artsd; poderá ser iniciado com o pequeno programa de interface &artswrapper;, o qual simplesmente configura a prioridade de tempo-real (executando como <systemitem class="username" +>root</systemitem +>) e executa depois o &artsd; como um usuário que não o <systemitem class="username" +>root</systemitem +>. </para> + +<para +>Se você tornar o artswrapper SUID <systemitem class="username" +>root</systemitem +>, ele irá provavelmente melhorar a qualidade da sua reprodução de áudio, reduzindo os cortes na música. Contudo, aumenta também o risco de que um erro no código ou algum usuário malicioso faça estourar ou prejudicar o seu sistema. Além disso, nas máquinas multi-usuário, priorizar o áudio de alta-fidelidade poderá provocar uma perda de desempenho para os usuário que estão tentando fazer um uso <quote +>produtivo</quote +> da máquina.</para> + +</sect1> + +<sect1 id="artsshell"> +<title +>&artsshell;</title> + +<para +>O comando &artsshell; pretende ser um utilitário para efetuar diversas funções relacionadas com o servidor de som. Pretende-se que o utilitário seja extendido com comandos novos no futuro (veja os comentários no código-fonte para ter algumas idéias). </para> + +<para +>O comando aceita o seguinte formato: </para> + +<!-- LW: FIX THIS --> + +<cmdsynopsis +><command +>artsshell</command +> <group +> <arg +>suspend</arg +><arg +>status</arg +> <arg +>terminate</arg +> <arg +>autosuspend <replaceable +>segundos</replaceable +></arg +> <arg +>networkbuffers <replaceable +>n</replaceable +></arg +> <arg +>volume [<replaceable +>volume</replaceable +>]</arg +> <arg +>stereoeffect <replaceable +>opções</replaceable +></arg +> </group +> <group +> <option +>-h</option +> <option +>-q</option +> </group +> </cmdsynopsis> + +<para +>artsshell [options] <replaceable +>comando</replaceable +> [<replaceable +>opções do comando</replaceable +>] </para> + +<para +>São suportadas as seguintes opções: </para> + +<variablelist> + +<varlistentry> +<term +><option +>-q</option +></term> +<listitem> +<para +>Suprime todos os resultados.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Mostra o modo de usar os comandos.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>São suportados os seguintes comandos:</para> + +<variablelist> + +<varlistentry> +<term +><option +>suspend</option +></term> +<listitem> +<para +>Suspende o servidor de som. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>status</option +></term> +<listitem> +<para +>Mostra a informação de estado do servidor de som.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>terminate</option +></term> +<listitem> +<para +>Termina o servidor de som. Isto poderá confundir e/ou estourar os aplicativos que estejam usando-o no momento. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>autosuspend</option +> <parameter +>segundos</parameter +></term> +<listitem> +<para +>Configura o tempo de suspensão automática para o número de segundos indicado. O servidor de som suspender-se-á se estiver inativo durante esse período de tempo. Um valor igual a zero desativa a suspensão automática. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>networkbuffers</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Define o tamanho dos buffers de rede para ser um fator de <parameter +>n</parameter +> vezes o tamanho pré-definido. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>volume</option +> [<replaceable +>volume</replaceable +>]</term> +<listitem> +<para +>Altera o fator de escala para as saídas de áudio do servidor de som. O argumento <replaceable +>volume</replaceable +> é um valor de ponto flutuante. Sem argumentos, é mostrado o volume atual. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect lista</option +></term> +<listitem> +<para +>Mostra todos os módulos de efeitos estéreo disponíveis.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect insert [top|bottom]</option +> <replaceable +>nome</replaceable +></term> +<listitem> +<para +>Introduz um efeito estéreo na pilha de efeitos. Devolve um identificador que poderá ser usado para removê-lo posteriormente. Poderá ser instalado no topo ou no fundo (o padrão).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect remove</option +> <replaceable +>identificador</replaceable +></term> +<listitem> +<para +>Remove o efeito estéreo com o identificador <replaceable +>identificador</replaceable +> da pilha de efeitos.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="artsplay"> +<title +><application +>artsplay</application +></title> + +<para +>O comando <application +>artsplay</application +> é um utilitário simples para tocar um arquivo de som. Ele aceita um único argumento que corresponde ao nome de um arquivo de som que é enviado para o servidor de som de modo a ser tocado. O arquivo de som poderá ser qualquer tipo de arquivo de som comum como o <literal role="extension" +>wav</literal +> ou o <literal role="extension" +>au</literal +>. Este utilitário é bom para testar se o servidor de som está funcionando. Se executar dois comandos em paralelo ou em sucessão rápida, você poderá demonstrar como os servidores de som misturam mais de uma fonte.</para> + +</sect1> + +<sect1 id="artsdsp"> +<title +><application +>artsdsp</application +></title> + +<para +>O servidor de som só suporta os aplicativos que tirem partido do &arts;. Muitas dos aplicativos legadas querem acessar o dispositivo de som diretamente. O comando &artsdsp; oferece uma solução intermediária que permite à maioria desses aplicativos rodarem sem alterações. </para> + +<para +>Quando um aplicativo é executado com o &artsdsp;, todos os acessos ao dispositivo de áudio <filename class="devicefile" +>/dev/dsp</filename +> são interceptados e mapeados em chamadas à <acronym +>API</acronym +> do &arts;. Embora a emulação do dispositivo não seja perfeita, a maioria dos aplicativos funciona desta forma, ainda que com alguma latência e degradação de performance. </para> + +<para +>O comando &artsdsp; segue o formato: </para> + +<!-- LW: FIX THIS --> +<para +>artsdsp [<replaceable +>opções</replaceable +>] <replaceable +>argumentos da aplicação</replaceable +> </para> + +<para +>São reconhecidas as seguintes opções: </para> + +<variablelist> + +<varlistentry> +<term +><option +>-h</option +>, <option +>--help</option +></term> +<listitem> +<para +>Mostra uma breve ajuda.</para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-n</option +> <option +>--name</option +> = <replaceable +>nome</replaceable +></term> +<listitem> +<para +>Usa o <replaceable +>nome</replaceable +> para identificar o tocador no <command +>artsd</command +>.</para> + +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-m</option +> <option +>--mmap</option +></term> +<listitem> +<para +>Emula o mapeamento de memória (⪚ para o <application +>Quake</application +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-v</option +> <option +>--verbose</option +></term> +<listitem> +<para +>Mostra os parâmetros.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>Uma invocação típica é a seguinte: </para> + +<para> +<userinput +><command +>artsdsp</command +> <option +>-v</option +> <option +>-m</option +> <parameter +>realplay <replaceable +>musica.mp3</replaceable +></parameter +></userinput> +</para> + +<para +>Alguns aplicativos funcionam melhor com a opção <option +>--mmap</option +>. Nem todas as funcionalidades do dispositivo de som estão emuladas por completo, mas a maioria dos aplicativos deverão funcionar. Se encontrar algum que não funcione, envie um relatório de erro detalhado para que os programadores possam corrigir. Mais uma vez, lembre-se que isto é uma solução intermediária e uma espécie de 'truque sujo'; a melhor solução será adicionar o suporte nativo do &arts; aos aplicativos. Se o seu aplicativo de som favorito não tem o suporte ao &arts;, peça ao programador para fornecê-lo. </para> + +</sect1> + +<sect1 id="artscat"> +<title +><application +>artscat</application +></title> + +<para +>Este é um utilitário simples para enviar os dados brutos para o servidor de som. Você precisa indicar o formato dos dados (a taxa de amostragem, o tamanho da amostra e o número de canais). Este não é provavelmente um utilitário que você use muito, mas poderá ser útil para fins de teste. A sintaxe do comando é a seguinte: </para> + +<!-- LW: FIX THIS --> + +<para +>artscat [ <replaceable +>opções</replaceable +> ] [ <replaceable +>nome do arquivo</replaceable +> ] </para> + +<para +>Se não for indicado nenhum arquivo, irá ler do 'standard input'. São suportadas as seguintes opções: </para> + +<variablelist> +<varlistentry> +<term +><option +>-r</option +> <parameter +>taxa de amostragem</parameter +></term> +<listitem> +<para +>Configura a taxa de amostragem a ser usada. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-b</option +> <parameter +>bits</parameter +></term> +<listitem> +<para +>Define o tamanho da amostra a usar (8 ou 16). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-c</option +> <parameter +>canais</parameter +></term> +<listitem> +<para +>Define o número de canais (1 ou 2). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Mostra a utilização do comando e sai. </para> +</listitem> +</varlistentry> + +</variablelist> +</sect1> + +<sect1 id="artscontrol"> +<title +>&artscontrol;</title> + +<para +>Este é um utilitário gráfico para efetuar um determinado número de tarefas relacionadas com o servidor de som. A janela padrão mostra dois indicadores de nível do volume e uma barra para controlar o volume global. No menu <guimenu +>Ver</guimenu +>, você poderá selecionar outras funções: </para> + +<variablelist> + +<varlistentry> +<term +><guimenuitem +>Osciloscópio FFT</guimenuitem +></term> +<listitem> +<para +>Abre uma janela que mostra uma visualização do tipo de analisador de espectro em tempo-real. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Gerenciador de Áudio</guimenuitem +></term> +<listitem> +<para +>Mostra as fontes de áudio ativas e permite-lhe conectá-las a qualquer um dos barramentos disponíveis. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Estado do aRts</guimenuitem +></term> +<listitem> +<para +>Mostra se o servidor de som está rodando e se o escalonamento é feito em tempo-real. Indica quando o servidor se suspende automaticamente e permite-lhe suspendê-lo imediatamente. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Gerenciador de MIDI</guimenuitem +></term> +<listitem> +<para +>Mostra as entradas e saídas ativas de &MIDI; e permite-lhe criar conexões [TODO: Isto ainda funciona? São precisos mais detalhes]. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>FreeVerb</guimenuitem +></term> +<listitem> +<para +>Conecta um efeito de reverberação FreeVerb à pilha dos efeitos de saída do &arts; e permite-lhe controlar graficamente os parâmetros do efeito. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Mostrador de volume com Leds</guimenuitem +></term> +<listitem> +<para +>Muda os indicadores de volume da janela principal para usar um mostrador colorido com <acronym +>LED</acronym +>s em vez de usar barras de progresso. </para> +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="artsc-config"> +<title +><application +>artsc-config</application +></title> + +<para +>Este é um utilitário para ajudar os programadores a usar a <acronym +>API</acronym +> de C do &arts;. Ele mostra as opções apropriadas do compilador e do editor de ligações que são necessárias ao compilar e ao gerar um executável com o &arts;. Pretende-se que seja usado nos 'Makefile's para ajudar na portabilidade. O comando aceita três opções: </para> + +<variablelist> +<varlistentry> +<term +><option +>--cflags</option +></term> +<listitem> +<para +>Mostra as opções do compilador que são necessárias ao compilar com a <acronym +>API</acronym +> de C do &arts;. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>--libs</option +></term> +<listitem> +<para +>Mostra as opções do editor de ligações que são necessárias ao gerar o executável que usa as bibliotecas da <acronym +>API</acronym +> de C do &arts;. </para> +</listitem> +</varlistentry> +<varlistentry> +<term +><acronym +>--version</acronym +></term> +<listitem> +<para +>Mostra a versão do comando <command +>artsc-config</command +>. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>O resultado típico do comando é mostrado em baixo:</para> + +<screen width="40" +><prompt +>%</prompt +> <userinput +><command +>artsc-config</command +> <option +>--cflags</option +></userinput> +<computeroutput +>-I/usr/local/kde3/include/artsc</computeroutput> +<prompt +>%</prompt +> <userinput +><command +>artsc-config</command +> <option +>--libs</option +></userinput> +<computeroutput +>-L/usr/local/kde3/lib -ldl -lartsc -DPIC -fPIC -lpthread</computeroutput> +<prompt +>%</prompt +> <userinput +><command +>artsc-config</command +> <option +>--version</option +></userinput> +<computeroutput +>0.9.5</computeroutput +> +</screen> + +<para +>Você poderá usar este utilitário em um Makefile para uma regra do tipo: </para> + +<programlisting +>artsc: artsc.c + gcc `artsc-config --cflags` -o artsc artsc.c `artsc-config --libs` +</programlisting> + +</sect1> + +<sect1 id="mcopidl"> +<title +>&mcopidl;</title> + +<para +>O comando &mcopidl; é o compilador de arquivos &IDL; para o &MCOP;, o 'Multimedia Communication Protocol' usado pelo &arts;. As interfaces no &arts; são definidas em &IDL;, uma 'Interface Definition Language' independente da linguagem. O utilitário &mcopidl; aceita um arquivo &IDL; como entrada e gera arquivos de inclusão e de código em C++ que implementam essa interface. O comando aceita a seguinte sintaxe: </para> + +<!-- LW: FIX THIS --> + +<para +>mcopidl [ <replaceable +>opções</replaceable +> ] <replaceable +>nome do arquivo</replaceable +> </para> + +<para +>As opções válidas são:</para> +<variablelist> +<varlistentry> +<term +><option +>-I</option +> <parameter +>diretório</parameter +></term> +<listitem> +<para +>Procura no <parameter +>diretório</parameter +> pelos arquivos de inclusão. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-e</option +> <parameter +>nome</parameter +></term> +<listitem> +<para +>Exclui a estrutura, interface ou tipo enumerado <parameter +>nome</parameter +> da geração de código. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-t</option +></term> +<listitem> +<para +>Cria também os arquivos <literal role="extension" +>.mcoptype</literal +>/<literal role="extension" +>.mcopclass</literal +> que contêm a informação de tipo para o arquivo &IDL;. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Para mais informações sobre o &MCOP; e o &IDL;, você poderá ver a seção <link linkend="interfaces" +>Interfaces e &IDL;</link +>. </para> + +</sect1> + +</chapter> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/juk/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/juk/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/juk/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/juk/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/juk/Makefile.in new file mode 100644 index 00000000000..0e4c34fa1f3 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/juk/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/juk +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/juk/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/juk/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/juk/index.cache.bz2 b/tde-i18n-pt_BR/docs/tdemultimedia/juk/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..8dff8a63399 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/juk/index.cache.bz2 diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/juk/index.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/juk/index.docbook new file mode 100644 index 00000000000..3421a893dd5 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/juk/index.docbook @@ -0,0 +1,2255 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY package "tdemultimedia"> + <!ENTITY kappname "&juk;"> + <!ENTITY juk "<application +>JuK</application +>"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Brazilian-Portuguese "INCLUDE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>O Manual do &juk;</title> + +<authorgroup> +<author +>&Lauri.Watts; &Lauri.Watts.mail;</author> +<author +><firstname +>Michael</firstname +> <surname +>Pyne</surname +> <affiliation +> <address +><email +>michael.pyne@kdemail.net</email +></address> +</affiliation> +</author> + +<othercredit role="developer" +><firstname +>Scott</firstname +> <surname +>Wheeler</surname +> <affiliation +> <address +><email +>wheeler@kde.org</email +></address> +</affiliation> +</othercredit> + +<othercredit role="translator" +><firstname +>Marcus</firstname +><surname +>Gama</surname +><affiliation +><address +><email +>marcus_gama@uol.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> + +</authorgroup> + +<copyright> +<year +>2001</year> +<year +>2002</year> +<year +>2004</year> +<holder +>Scott Wheeler</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2004-05-06</date> +<releaseinfo +>2.1</releaseinfo> + +<abstract> +<para +>O &juk; é uma vitrola de ficha, um marcador e um gerenciador de coleções de músicas. Nota do tradutor: Algumas palavras do inglês são realmente difíceis de traduzir devido ao triste costume de nossa Nação não gostar do nosso idioma. Para 'jukebox', pesquisando na Internet por um termo o mais apropriado possível, encontrei a expressão 'vitrola de ficha'. Para quem não sabe do que se trata, vitrola de ficha é aquela maquininha estilo anos 60 com uma coleção de discos de vinil dentro onde os jovens selecionavam uma música e depositavam uma moeda ou ficha para que a máquina tocasse a faixa. Existem versões modernas destas máquinas, só que com CDs. </para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>áudio</keyword> +<keyword +>marcador</keyword> +<keyword +>reprodutor</keyword> +<keyword +>vitrola de ficha</keyword> +<keyword +>JuK</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Introdução</title> + +<para +>O &juk; é, bem, uma vitrola de ficha. Como é típico em muitos aplicativos de vitrola de ficha, o &juk; permite-lhe editar as <quote +>marcas</quote +> dos arquivos de áudio e gerenciar as suas coleções e listas de reprodução. </para> +</chapter> + +<chapter id="using-juk"> +<title +>Usando o &juk;</title> + +<para> +<screenshot> +<screeninfo +>Aqui está uma captura de tela do &juk;</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-main.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Captura de tela do &juk; em ação.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>O &juk; mantém uma lista com todos os arquivos que conhece. Esta lista é chamada de <guilabel +>Lista da Coleção</guilabel +>. A lista da coleção é específica do &juk; e não é compartilhada com outros aplicativos.</para> + +<para +>Independente da Lista de Coleção, existem as listas de reprodução. Você poderá ter tantas listas de reprodução quantas desejar. Você pode usar as listas de reprodução com outros leitores multimídia (como o &noatun; ou o <application +>xmms</application +>) e você poderá gerenciar as listas de reprodução criadas nesses aplicativos aqui no &juk;.</para> + +<para +>Você poderá adicionar arquivos à Lista da Coleção individualmente, usando o <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Abrir Arquivo...</guimenuitem +></menuchoice +> e selecionando-os a partir de um diálogo de arquivos padrão do &kde;. Você poderá adicionar pastas inteiras usando o <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Abrir Pasta...</guimenuitem +></menuchoice +>. As pastas que forem adicionadas desta forma serão pesquisadas novamente cada vez que você iniciar o &juk;. Você poderá forçar uma nova pesquisa das pastas clicando com o &RMB; no ícone da <guilabel +>Lista da Coleção</guilabel +>, e selecionando <guimenuitem +>Recarregar</guimenuitem +>.</para> + +<para +>Adicionar uma música a uma lista de reprodução irá automaticamente adicionar o seu arquivo à Lista da Coleção, mas adicionar um arquivo à Lista da Coleção, não irá adicionar a música automaticamente a nenhuma lista de reprodução.</para> + +<para +>Você poderá criar rapidamente uma lista de reprodução a partir da sua Lista da Coleção inteira, clicando com o &RMB; no ícone da <guilabel +>Lista da Coleção</guilabel +> e selecionando <guimenuitem +>Duplicar</guimenuitem +>. A lista resultante é uma lista de reprodução normal, e editá-la não irá afetar a <guilabel +>Lista da Coleção</guilabel +>.</para> + +<para +>Você poderá adicionar arquivos de listas de reprodução que tenham sido criados fora do &juk; individualmente selecionando-os com o <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Abrir Arquivo...</guimenuitem +></menuchoice +>. Todos os arquivos de listas de músicas que forem encontrados nas pastas que você adicionar com <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Abrir Pasta...</guimenuitem +></menuchoice +> serão também adicionados automaticamente.</para> + +<para +>Você poderá criar uma lista de reprodução nova selecionando <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Nova</guimenuitem +></menuchoice +> ou o ícone <guiicon +>Nova</guiicon +> na barra de ferramentas. Será pedido um nome, aparecendo depois um ícone para essa lista de reprodução na área de listas. Você poderá agora arrastar e soltar os arquivos da Lista da Coleção na sua lista de reprodução. Use o ícone <guiicon +>Salvar</guiicon +> ou o <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Salvar</guimenuitem +></menuchoice +> para salvar a lista de reprodução a qualquer momento.</para> + +<sect1 id="collection-list-gui"> +<title +>A Lista de Reprodução</title> + +<para +>Quando você estiver vendo a Lista da Coleção, a área principal contém todos os arquivos que o &juk; conhece. Quando estiver vendo uma lista de reprodução, somente as músicas que constem nessa lista são mostradas. Em qualquer dos casos, a aparência e comportamento da lista são os mesmos.</para> + +<para +>Cada música ocupa uma linha na tela. Existe uma coluna para cada campo de meta-dados que o &juk; registra. Estas colunas correspondem aos campos disponíveis para edição no editor de marcas.</para> + +<para +>Você poderá reordenar a lista a qualquer momento clicando com o &LMB; no cabeçalho da coluna. Isto irá primeiro ordenar os arquivos por ordem crescente do conteúdo dessa coluna. Se você clicar de novo com o &LMB; no mesmo cabeçalho, os arquivos ficarão ordenados por ordem decrescente.</para> + +<para +>As colunas são inicialmente dimensionadas o suficiente para mostrar o item mais comprido disponível. Você poderá redimensionar as colunas colocando o cursor do seu mouse na divisão entre duas colunas. Quando o cursor do mouse mudar, clique com o &LMB; e arraste o cursor na direção que deseja redimensionar as colunas.</para> + +<para +>Você poderá reordenar as colunas clicando com o &LMB; num cabeçalho e arrastando esse cabeçalho para a esquerda ou para a direita. Você não poderá arrastar para fora do extremo da janela, assim você poderá precisar deslocar um pouco para a esquerda ou para a direita, e repetir o arrastamento do cabeçalho, até que o tenha colocado na sua posição preferida.</para> + +<para +>Você poderá ocultar ou apresentar as colunas clicando com o &RMB; no cabeçalho de uma coluna e clicando no nome da coluna a alterar.</para> + +<para +>Realizar um duplo-clique com o &LMB; num arquivo, irá reproduzí-lo com o seu leitor incorporado. Se já tiver outra música sendo tocada, ele irá interrompê-la e dará início à nova música.</para> + +<para +>Clicando com o &RMB; num arquivo aparecerão várias opções:</para> + +<variablelist> +<varlistentry> +<term +><guimenuitem +>Tocar Próxima</guimenuitem +></term> +<listitem> +<para +>Isto irá começar a tocar o arquivo, assim que a música atual terminar. Se não estiver nenhuma música sendo tocada, o arquivo será tocado quando você clicar no botão <guiicon +>Tocar</guiicon +>. Se você tiver já escolhido o Tocar Próxima num arquivo diferente, então este arquivo irá substituir essa seleção.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Cortar</guimenuitem +></term> +<term +><guimenuitem +>Copiar</guimenuitem +></term> +<term +><guimenuitem +>Colar</guimenuitem +></term> +<listitem> +<para +>...</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Limpar</guimenuitem +></term> +<listitem> +<para +>Se você estiver vendo a Lista da Coleção, escolher <guimenuitem +>Limpar</guimenuitem +> irá retirar o arquivo da lista, e irá remover também todos os itens correspondentes para esta música em todas as listas de reprodução. Você deverá notar que, se este arquivo estiver numa pasta que o &juk; pesquisa na inicialização, ele será adicionado novamente à Lista de Coleção da próxima vez que você iniciar o &juk; mas não será adicionado automaticamente a nenhuma lista de reprodução.</para> +<para +>Se você estiver vendo uma lista de reprodução, o <guimenuitem +>Limpar</guimenuitem +> irá simplesmente remover a música da lista de reprodução.</para> + +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Editar</guimenuitem +></term> +<listitem> +<para +>Permitirá editar a música selecionada atualmente na coluna em que clicou. Por exemplo, se você não tiver o editor de marcas visível e estiver ocupado criando uma lista de reprodução, mas observou um erro ortográfico do nome de um artista, você poderá editá-lo diretamente com este item de menu.</para> +<para +>As alterações efetuadas desta forma são sempre salvas imediatamente assim que você clicar noutro lugar qualquer e tiver terminado a edição.</para> +<para +>Este item do menu ficará desativado se o &juk; detectar que a faixa que você selecionou possui apenas permissões de leitura.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Atualizar Items</guimenuitem +></term> +<listitem> +<para +>Isto irá atualizar as informações das marcas dos arquivos selecionados na lista, no caso dos arquivos terem sido alterados enquanto o &juk; estava rodando.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Remover Do Disco</guimenuitem +></term> +<listitem> +<para +>Isto irá remover o arquivo da Lista de Coleção, remover todos os itens da música em todas as listas de reprodução e remover o arquivo do seu disco. Você não poderá anular isto, apesar de ser solicitada uma confirmação da ação. Use isto com cuidado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guisubmenu +>Adivinhar Informações das Marcas</guisubmenu +></term> +<listitem> +<para +>Isto fará com que o &juk; tente adivinhar as informações como o Artista e o Título de uma música. O &juk; aplica vários métodos para tentar adivinhar: <variablelist> + + <varlistentry +><term +><guimenuitem +>Do Nome do Arquivo</guimenuitem +></term> + <listitem +><para +>O &juk; irá tentar adivinhar as marcas da música com base no nome do seu arquivo. Por exemplo, uma música chamada <filename +>Marisa Monte - Amor I Love You.mp3</filename +> poderia adivinhar a Marisa Monte como artista e Amor I Love You como título. Você poderá ajustar a forma como o &juk; adivinha as marcas selecionando a opção <menuchoice +><guimenu +>Configurações</guimenu +><guimenuitem +>Adivinhador das Marcas...</guimenuitem +></menuchoice +>, que irá abrir o <link linkend="juk-tag-guesser-configuration" +>diálogo do Adivinhador de Marcas</link +>. O &juk; não irá substituir as marcas que não conseguir adivinhar a partir do nome do arquivo.</para> + </listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Da Internet</guimenuitem +></term> + <listitem +><para +>O &juk; irá tentar adivinhar as marcas da música com o programa MusicBrainz. Você precisa de ter o MusicBrainz instalado para este comando funcionar. </para> + </listitem> + </varlistentry> + + </variablelist> +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Renomear Arquivo</guimenuitem +></term> +<listitem> +<para +>Isto irá mudar o nome dos arquivos selecionados para ficarem em conformidade com um formato fornecido. Você precisa escolher a maneira como os arquivos serão renomados selecionando a opção <menuchoice +> <guimenu +>Configurações</guimenu +><guimenuitem +>Renomeador de Arquivo...</guimenuitem +></menuchoice +>. O nome resultante de cada arquivo é baseado nas suas marcas de meta-dados. Por exemplo, a música em Ogg Vorbis <quote +>No Seu Lugar</quote +> do Kid Abelha poderia ficar igual a <filename +>/usr/share/music/Kid Abelha/No Seu Lugar.ogg</filename +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Criar uma Lista de Reprodução Com os Itens Selecionados</guimenuitem +></term> +<listitem> +<para +>Isto permite-lhe criar rapidamente uma lista de reprodução com as músicas da sua Lista de Coleção. Esta função irá pedir o nome da sua nova lista de reprodução e irá então inserir todas as músicas selecionadas na nova lista de reprodução.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Adicionar os Itens Selecionados à Projeto K3b</guimenuitem +></term> +<listitem> +<para +>Isto permite-lhe criar rapidamente um projeto do K3b para gravação de CDs com as suas músicas selecionadas. O &juk; irá perguntar se deseja um projeto de CD Áudio ou um de Dados, a menos que o K3b já tenha um projeto aberto.</para> + +<para +>Se o K3b não estiver já aberto, o &juk; irá iniciá-lo para você. Depois disso, o &juk; irá adicionar os arquivos selecionados ao projeto atual do K3b. Você poderá então salvar o projeto no K3b para gravar depois o CD ou então gravar logo o CD. </para> + +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="juk-playlists"> +<title +>Listas de Reprodução do &juk;</title> +<para +>Uma lista de reprodução é apenas uma coleção de músicas agrupadas por uma determinada categoria. Por exemplo, você poderá ter uma lista das músicas que você ouve enquanto está programando, enquanto está tentando dormir, ou mesmo quando precisa dar umas risadas. O &juk; suporta vários tipos diferentes de listas de reprodução. </para> + +<variablelist> + +<varlistentry> +<term id="juk-normal-playlists" +>Listas de reprodução normais</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="normal-playlist.png"/></imageobject +></inlinemediaobject +> Este é tipo mais comum de lista de reprodução. É uma lista composta por arquivos, de forma muito semelhante à Lista de Coleção.</para +></listitem> +</varlistentry> + +<varlistentry> +<term id="juk-history-playlists" +>A lista de reprodução do histórico</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="history-playlist.png"/></imageobject +></inlinemediaobject +> Se você ativar esta lista (ativando a opção <menuchoice +><guimenu +>Ver</guimenu +><guimenuitem +>Mostrar Histórico</guimenuitem +></menuchoice +>, esta lista irá recordar todas as músicas que o &juk; reproduza. A lista terá uma coluna adicional, o <guilabel +>Tempo</guilabel +>, que registra a hora e data exatas em que a música tocou. Contudo, a lista não começa a registrar o histórico, até que isto fique ativo de fato. </para +></listitem> +</varlistentry> + +<varlistentry> +<term id="juk-search-playlists" +>Listas de reprodução de procura</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="search-playlist.png"/></imageobject +></inlinemediaobject +> Esta é uma lista que se baseia numa procura. Você poderá criar uma lista destas clicando em <menuchoice +> <guimenu +>Arquivo</guimenu +><guisubmenu +>Nova</guisubmenu +><guimenuitem +>Lista de Procura</guimenuitem +></menuchoice +> ou clicando no botão da <link linkend="juk-advanced-search-dialog" +>Pesquisa Avançada</link +> da <link linkend="search-bar" +>Barra de Procura</link +>.</para> +<para +>Após criar esta lista de reprodução, ela irá manter o registo das músicas da Lista da Coleção que correspondam ao seu critério e irá atualizar-se automaticamente de acordo com as alterações na Lista da Coleção.</para +></listitem> +</varlistentry> + +</variablelist> + +<para +>As listas de reprodução são organizadas na <guilabel +>área da Lista de Reprodução</guilabel +>, que é a barra vertical à esquerda. Nesta área existe um ícone para cada lista que você tiver. Existem vários modos de visualização para esta área, que poderão ser selecionados no menu <guimenu +>Ver</guimenu +><guisubmenu +>Modos de Visualização</guisubmenu +>. <variablelist> + +<varlistentry> +<term id="juk-viewmode-default" +>Modo de Visualização Padrão</term> +<listitem> +<para +>Este é o modo de visualização padrão. Neste modo, todas as listas são mostradas como ícones grandes, uma acima da outra no modo de visualização. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="juk-viewmode-compact" +>Modo de Visualização Compacto</term> +<listitem> +<para +>Este modo é semelhante ao Normal, com a diferença que as listas são representadas com barras horizontais com ícones pequenos em vez dos grandes. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="juk-viewmode-tree" +>Modo de Visualização em Árvore</term> +<listitem> +<para +>Este modo é o mais poderoso. Ele é como o Compacto, exceto que a Lista da Coleção é agora a raiz de uma árvore de listas virtuais. A Lista da Coleção passa a ter três nós filhos, o Artista, o Álbum e o Gênero. Cada um destes nós terão filhos que representarão todos os itens da categoria indicada. Por exemplo, se a sua Lista da Coleção contiver músicas de 4 artistas diferentes, você iria ter 4 itens sob o nó do artista.</para> +<para +>Uma funcionalidade engraçada do modo em árvore é a alteração das marcas por 'arrastar e soltar'. Basta selecionar alguns arquivos da lista de faixas e arrastá-los para um dos nós do artista, do álbum ou do gênero da Lista da Coleção. As músicas terão as suas marcas alteradas para corresponderem ao item em que você soltou as faixas. Por exemplo, se você arrastar um grupo de faixas para um gênero chamado "Rock", todas as faixas passarão a ter uma marca de Gênero igual a Rock. </para> +</listitem> +</varlistentry> + +</variablelist> + +</para> + +</sect1> + +<sect1 id="juk-tagger"> +<title +>O Editor de Marcas do &juk;</title> + +<para +>Para vários formatos de arquivos, é prático usar o nome do arquivo para descrever o conteúdo do mesmo: <quote +><filename +>Relatório do conselho - Junho 2003.doc</filename +></quote +> por exemplo, poderá ser toda a informação que precisa para encontrar esse arquivo de novo. Tentar capturar todas as informações úteis sobre uma determinada música poderá contudo levar a nomes de arquivos como o seguinte: <quote +><filename +>Marisa Monte - O Que Me Importa - Memórias, Crônicas e Declarações de Amor.mp3</filename +></quote +> ou <quote +><filename +>The Beatles - Sgt. Pepper's Lonely Hearts Club Band - Lucy In The Sky With Diamonds.mp3</filename +></quote +>. Isto não é muito prático de usar nem conterá todas as informações úteis que você poderá obter sobre a música. Adicionando o álbum e o número da faixa, por exemplo, ao primeiro nome de arquivo, torná-lo-ia ainda maior e menos gerenciável, sem contudo dizer ainda o ano em que foi lançado, ou o estilo a que pertence, se você não estiver familiarizado com o artista.</para> + +<para +>A solução então é armazenar este tipo de meta-dados dentro dos próprios arquivos. Os arquivos MP3 e OGG podem também conter pequenos pedaços de texto que você poderá usar para descrever o conteúdo do arquivo. Existem vários formatos, mas o &juk; oculta os detalhes das diferenças entre eles, oferecendo uma forma-padrão de editar um sub-conjunto padrão de marcas conhecidas para todos os seus arquivos de áudio.</para> + +<para +>O editor de marcas poderoso do &juk; permite-lhe editar as marcas tanto nos arquivos MP3 como nos OGG. Você poderá editar os arquivos individualmente ou vários arquivos ao mesmo tempo, e você poderá selecionar uma mistura de arquivos MP3 e OGG para editar. O único requisito é que você possua acesso de escrita aos arquivos em si; você não pode editar as marcas de um arquivo que esteja montado num &CD-ROM; por exemplo.</para> + +<sect2 id="tagging-a-single-file"> +<title +>Editando as Marcas de um Único Arquivo</title> + +<para +>Para editar a marca num único arquivo, selecione-o na lista da coleção ou em qualquer entrada que ele possua numa lista de reprodução qualquer. Se o editor de marcas não estiver visível, ative-o selecionando a opção <menuchoice +><guimenu +>Ver</guimenu +><guimenuitem +>Mostrar Editor de Marcas</guimenuitem +></menuchoice +>. O editor de marcas aparece abaixo da lista.</para> + +<para +>Basta digitar em qualquer um dos campos de edição para alterar a informação. Quando terminar, clique com o &LMB; de volta na lista, e será pedido para salvar as suas alterações.</para> + +<para +>Você poderá achar que o editor de marcas continua desativado quando você clicou num arquivo. Isto acontece quando o &juk; detecta que a faixa tem apenas permissões de leitura.</para> + +<variablelist> +<title +>Campos do Editor de Marcas</title> +<varlistentry> +<term +><guilabel +>Nome do Artista:</guilabel +></term> +<listitem> +<para +>O nome do artista ou artistas que lançaram a música.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Nome da faixa:</guilabel +></term> +<listitem> +<para +>O nome da música.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Nome do álbum:</guilabel +></term> +<listitem> +<para +>O nome do álbum em que a música foi lançada.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Gênero:</guilabel +></term> +<listitem> +<para +>O <quote +>Estilo</quote +> da música. O &juk; fornece uma lista que corresponde de certa forma à norma informal do ID3, mas você está livre para escrever os seus próprios itens nesta lista.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Nome do arquivo:</guilabel +></term> +<listitem> +<para +>O nome do arquivo real no disco. Você poderá editar isto diretamente e, quando for salvar, o nome do arquivo será então alterado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Faixa:</guilabel +></term> +<listitem> +<para +>A posição da faixa na gravação original.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Ano:</guilabel +></term> +<listitem> +<para +>O ano em que a música foi lançada.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Tamanho:</guilabel +></term> +<listitem> +<para +>Isto não é editável, só é mostrado para fins de informação.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Taxa de bits:</guilabel +></term> +<listitem> +<para +>Isto não é editável, só é mostrado para fins de informação.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Comentário:</guilabel +></term> +<listitem> +<para +>Você poderá adicionar o seu comentário de texto livre, com notas adicionais, &etc;</para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Você poderá salvar explícita e imediatamente as suas alterações a qualquer momento com a opção do menu <menuchoice +><guimenu +>Marcador</guimenu +><guimenuitem +>Salvar</guimenuitem +></menuchoice +> ou clicando em <keycombo action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +>.</para> + +</sect2> + +<sect2 id="tagging-multiple-files"> +<title +>Editando as Marcas em Vários Arquivos</title> + +<para +>Você poderá selecionar vários arquivos na lista e editar um ou mais campos nas marcas para todos os arquivos de uma vez.</para> + +<para +>Use o <keycap +>Shift</keycap +> e o &LMB; para selecionar uma lista de arquivos adjacentes, ou o &Ctrl; e o &LMB; para selecionar vários arquivos individuais e não-adjacentes.</para> + +<para +>Se o editor de marcas não estiver visível, você poderá ativá-lo selecionando <menuchoice +><guimenu +>Ver</guimenu +><guimenuitem +>Mostrar Editor de Marcas</guimenuitem +></menuchoice +>. O editor de marcas aparece na base da lista.</para> + +<para +>O editor de marcas comporta-se de forma ligeiramente diferente se você selecionar vários arquivos.</para> + +<para +>Cada campo no editor de marcas irá agora mostrar uma opção <guilabel +>Habilitar</guilabel +> ao lado dele. Cada campo que possui exatamente o mesmo conteúdo para todos os arquivos que selecionou, mostra esse conteúdo e fica ativo para edição, com a opção <guilabel +>Habilitar</guilabel +> assinalada.</para> + +<!-- put screeny here --> + +<para +>Todos os campos que não tiverem conteúdo correspondente em todos os arquivos selecionados não estarão editáveis inicialmente e não mostrarão nenhum conteúdo.</para> + +<para +>Para mudar o conteúdo de qualquer campo, assinale a opção <guilabel +>Habilitar</guilabel +> se já não estiver assinalada e edite o campo como normalmente faria.</para> + +<para +>Quando tiver terminado, clique com o &LMB; de volta na lista e será pedido uma confirmação para salvar as suas alterações. O diálogo de confirmação mostrará uma lista com os arquivos afetados, por isso você terá uma chance de verificar se está realmente alterando os arquivos que pretendia.</para> + +<para +>Você poderá salvar explícita e imediatamente as suas alterações a qualquer momento com a opção do menu <menuchoice +><guimenu +>Marcador</guimenu +><guimenuitem +>Salvar</guimenuitem +></menuchoice +> ou clicando em <keycombo action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +>.</para> + +</sect2> + +</sect1> + +<sect1 id="juk-rename-dialog"> +<title +>O diálogo Renomear Arquivo</title> +<para> +<screenshot> +<screeninfo +>O diálogo Renomear Arquivo</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-file-renamer.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Captura de tela do diálogo Renomear Arquivo.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>A caixa de diálogo de Configuração do Renomeador de Arquivos é usada para configurar a ação de Renomear Arquivos, que muda o nome da música com base nas informações que estão contidas nas suas marcas de meta-dados. Inicialmente, são alteradas as marcas, de acordo com os itens que você pode alterar e depois esses itens são usados para gerar o nome do arquivo, baseado no <guilabel +>Esquema dos nomes de arquivos</guilabel +>. </para> + +<para +>A parte mais importante do diálogo é a seção do <guilabel +>Esquema de nomes de arquivos</guilabel +>. Você poderá digitar um esquema de nomes de arquivos que o &juk; irá usar para renomear os arquivos. A forma como funciona baseia-se no fato de alguns caracteres serem especiais. </para> + +<para +><variablelist> +<varlistentry> +<term +>%t</term> +<listitem +><para +>Isto será substituído pelo Título depois de ser avaliado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%a</term> +<listitem +><para +>Isto será substituído pelo Artista depois de ser avaliado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%A</term> +<listitem +><para +>Isto será substituído pelo Álbum depois de ser avaliado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%T</term> +<listitem +><para +>Isto será substituído pela Faixa depois de ser avaliada.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%c</term> +<listitem +><para +>Isto será substituído pelo Comentário depois de ser avaliado.</para> +</listitem> +</varlistentry> + +</variablelist> +</para> + +<para +>Cada item poderá conter sequências %s, que são substituídas pela marca atual, e qualquer texto que desejar, incluindo barras (/). Se um item tiver uma barra, então esta irá indicar um separador de diretório. Claro, seria possível simplesmente digitar separadores de diretórios na linha do <guilabel +>Esquema de nomes de arquivos</guilabel +>.</para> + +<para +>Usar estes itens, contudo, permite-nos ignorar por completo as marcas que estiverem vazias. Se você assinalar a opção <guilabel +>Precisa de valor</guilabel +>, então o item será ignorado se a marca correspondente estiver em branco. Por exemplo, você poderia usar isto para separar os arquivos com comentários dos que não possuem sem ter que colocar algo do gênero <replaceable +>tem-comentário/%s</replaceable +> na edição do campo <guilabel +>Item do comentário</guilabel +>.</para> + +<para +>Você poderá testar o seu esquema de nomes de arquivos usando o editor <guilabel +>Nome do arquivo atual</guilabel +> do diálogo. Digite o nome do arquivo de uma música, e o <guilabel +>Novo nome de arquivo</guilabel +> irá mostrar como o &juk; iria renomear esse arquivo, com base na configuração atual. </para> +</sect1> + +<sect1 id="juk-tag-guesser-configuration"> +<title +>O diálogo de Configuração do Adivinhador de Marcas</title> +<para> +<screenshot> +<screeninfo +>O diálogo de Configuração do Adivinhador de Marcas</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-tag-guesser.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Captura de tela do diálogo de Configuração do Adivinhador de Marcas.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>O diálogo de Configuração do Adivinhador de Marcas é usado para configurar o comando Adivinhar a Partir do Nome do Arquivo.</para> + +<para +>No diálogo você verá uma lista à esquerda com padrões de esquemas de nomes de arquivos diferentes. O &juk; inclui um conjunto extenso de padrões que correspondem aos estilos mais comuns de nomeação de arquivos. Se quiser adicionar um novo, clique no botão <guibutton +>Adicionar</guibutton +>, escreva o seu esquema e clique em <guibutton +>OK</guibutton +>. Você poderá usar os mesmos itens de percentagem que foram definidos no <link linkend="juk-rename-dialog" +>Configuração do Diálogo Renomear</link +>. </para> + +<para +>O &juk; irá tentar os esquemas que tiver listado, um de cada vez, a começar de cima. O primeiro esquema que resultar numa correspondência será o esquema usado para adivinhar as marcas da música. Algumas músicas poderão corresponder a mais de um esquema. Você poderá fazer com que o esquema correto corresponda primeiro selecionando-o na lista e usando os botões de setas para o movê-lo para o topo da lista. </para> + +<para +>Você poderá também editar ou remover um esquema da lista. Basta selecionar o esquema da lista e usar o botão <guibutton +>Modificar</guibutton +> para alterar o esquema ou o botão <guibutton +>Remover</guibutton +> para retirar o esquema da lista. </para> +</sect1> + +<sect1 id="juk-advanced-search-dialog"> +<title +>O diálogo de Pesquisa Avançada</title> +<para> +<screenshot> +<screeninfo +>O diálogo de Pesquisa Avançada</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-adv-search.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Captura de tela do Diálogo de Pesquisa Avançada.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>O diálogo de Pesquisa Avançada é usado para criar <link linkend="juk-search-playlists" +>Listas de Procura</link +>. Isto permite-lhe criar uma pesquisa fina sobre as várias marcas da sua coleção de músicas.</para> + +<para +>No topo do diálogo, você poderá digitar o nome da sua lista de procura. Então, você poderá definir o seu critério no grupo <guilabel +>Critério de Pesquisa</guilabel +>. </para> + +<para +>O topo do grupo <guilabel +>Critério de Pesquisa</guilabel +> possui duas opções exclusivas, a <guilabel +>Corresponder a qualquer dos seguintes</guilabel +> e <guilabel +>Corresponder a todos os seguintes</guilabel +>. Selecionando a primeira opção, se alguma música corresponder a pelo menos um dos critérios, será incluída na lista. Caso contrário, todas as condições terão de ser satisfeitas para a música ser incluída na lista. </para> + +<para +>Abaixo dos botões de opção estão as definições das condições. Você pode adicionar mais condições usando o botão <guibutton +>Mais</guibutton +>, e remover condições usando o botão <guibutton +>Menos</guibutton +>. Qualquer condição que deixar em branco será ignorada, assim você não precisa usar o <guibutton +>Menos</guibutton +> para eliminar condições vazias. </para> + +<para +>Todas as definições de condições possuem três partes: a lista de escolha de marcas à esquerda, a lista do estilo correspondente à direita e o texto de procura no meio. O seletor de marcas permite ao &juk; saber qual marca deseja procurar no texto. Se você escolher a marca especial "<Tudo Visível>", então qualquer marca que consiga ver na Lista da Coleção poderá ser correspondida com o texto de procura. </para> + +<para +>A lista de estilos de correspondência permite ao &juk; saber qual o método de procura. Os métodos de procura que poderá usar são os seguintes: <variablelist> +<varlistentry> +<term +>Correspondência Normal</term> +<listitem +><para +>Este é o estilo de correspondência normal. Ele procura pelo texto indicado em qualquer parte da marca escolhida, ignorando as diferenças entre maiúsculas e minúsculas. Por exemplo, uma procura por 'triba' na marca Artista iria corresponder a 'Tribalistas'.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +>Sensível à Caixa</term> +<listitem +><para +>Esta procura é semelhante à Correspondência Normal, exceto que o texto da procura precisa de ser exatamente igual ao texto.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +>Correspondência por Padrões</term> +<listitem +><para +>Este é o método de procura mais poderoso. O texto da procura que digitar aqui irá definir uma expressão regular usada para procurar na marca. As expressões regulares estão além do âmbito desta documentação, mas o aplicativo &kregexpeditor; poderá ajudá-lo a formar uma expressão regular. O &juk; usa o estilo de expressões regulares do Qt.</para +></listitem> +</varlistentry> + +</variablelist> + +</para> + +<para +>Basta escolher as condições que deseja incluir na sua procura e clicar em <guibutton +>OK</guibutton +> para criar a sua lista de procura! </para> +</sect1> + +</chapter> + +<chapter id="toolbar-reference"> +<title +>A Barra de Ferramentas do &juk;</title> + +<sect1 id="main-toolbar"> +<title +>A Barra de Ferramentas Principal</title> + +<screenshot> +<screeninfo +>A barra de ferramentas do &juk;.</screeninfo> +<mediaobject> +<imageobject> +<imagedata format="PNG" fileref="toolbar.png"/> +</imageobject> +<textobject> +<phrase +>A barra de ferramentas do &juk;.</phrase> +</textobject> +<caption +><para +>A barra de ferramentas do &juk;.</para +></caption> +</mediaobject> +</screenshot> + +<para +>Da esquerda para a direita na captura de tela acima, os ícones padrão da barra de ferramentas são:</para> + +<variablelist> +<varlistentry> +<term +><guiicon +>Nova</guiicon +></term> +<listitem +><para +>Cria uma nova lista de reprodução. Se você mantiver pressionado o botão, irá aparecer um menu que lhe permite selecionar os vários tipos de listas a criar. </para> + <variablelist> + <varlistentry +><term +><guimenuitem +>Lista de Reprodução Vazia...</guimenuitem +></term> + <listitem +><para +>Isto pede-lhe o nome da lista e depois insere-a na área da Lista. A lista irá começar completamente vazia.</para +></listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Lista de Reprodução a Partir de Pasta...</guimenuitem +></term> + <listitem +><para +>Isto pede-lhe uma diretório para abrir, criando então uma lista com as músicas dentro da pasta e das suas sub-pastas. O nome da lista criada é o mesmo da pasta selecionada.</para +></listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Lista de Procura...</guimenuitem +></term> + <listitem +><para +>Isto abre a Janela de Pesquisa Avançada, que lhe permite criar uma <quote +>lista de reprodução virtual</quote +>. Todas as músicas da sua Lista da Coleção que corresponderem ao critério de procura que você indicar na janela de Pesquisa Avançada serão adicionadas à nova lista. À medida que a sua Lista da Coleção muda, a nova lista irá mudar também. Por exemplo, se você criar uma lista com todas as suas músicas do Titãs e adicionar outra música do Titãs à sua Lista da Coleção, ela irá aparecer também na lista do Titãs sem ser necessária nenhuma ação de sua parte. </para +></listitem> + </varlistentry> + + </variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Abrir</guiicon +></term> +<listitem +><para +>Adiciona um arquivo à lista da coleção (se estiver ativa) ou à lista de reprodução selecionada atualmente. Adicionar um arquivo a uma lista de reprodução irá adicioná-lo automaticamente à lista da coleção, mas não o contrário.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Salvar</guiicon +></term> +<listitem +><para +>Salva a lista de reprodução selecionada atualmente. Para salvar uma marca que tenha editado, você pode selecionar outro item ou clicar em <keycombo action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +>, em alternativa.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Cortar</guiicon +></term> +<listitem +><para +>Se estiver selecionada alguma lista de reprodução ou uma música individual, corta-a (remove-a) da lista. Se o editor de marcas estiver ativo, isto funcionará como o cortar em qualquer editor, removendo o texto selecionado, mas mantendo uma cópia na área de transferência.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Copiar</guiicon +></term> +<listitem +><para +>Se o editor de marcas estiver ativo, isto funciona como o copiar em qualquer editor, colocando uma cópia do texto selecionado na área de transferência.</para> +<para +>Se você usar o Copiar numa música da lista da coleção, a URL é colocado na área de transferência, para que possa colá-la mais tarde. Por exemplo, você poderia colar a URL num editor de texto, no &konqueror; ou em outra lista de reprodução.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Colar</guiicon +></term> +<listitem +><para +>Se você cortou ou copiou uma URL anteriormente da lista da coleção, você poderá colar a URL de volta para uma lista de reprodução nova. Você poderia também colar uma URL que tivesse copiado a partir do &konqueror; ou de outro aplicativo. Se você estiver lidando com o editor de marcas, o Colar irá colar o texto da área de transferência no campo selecionado.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Mostrar Barra de Procura</guiicon +></term> +<listitem +><para +>Mostra ou oculta a <link linkend="search-bar" +>barra de procura</link +>.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Mostrar Editor de Marcas</guiicon +></term> +<listitem +><para +>Mostra ou oculta o <link linkend="tagging-a-single-file" +>editor de marcas</link +>.</para +></listitem> +</varlistentry> + +<varlistentry id="play-toolbar"> +<term +>Controles de reprodução</term> +<listitem> +<para +>Eles funcionam como em qualquer leitor multimídia que possa escolher. Os controles são o <guiicon +>Tocar</guiicon +>, <guiicon +>Pausa</guiicon +>, <guiicon +>Parar</guiicon +>, <guiicon +>Pular para música anterior</guiicon +> e <guiicon +>Pular para música seguinte</guiicon +>.</para> +<para +>Existe também uma barra de progresso que lhe mostra onde (relativamente) está na música atual. Você poderá arrastar esta barra com o mouse para avançar ou recuar diretamente dentro de uma faixa.</para> +<para +>Finalmente, existe uma barra de volume. Como você deve esperar, isto aumenta ou diminui o volume. O <quote +>Alto</quote +> fica à direita e o <quote +>Silêncio</quote +> à esquerda.</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="search-bar"> +<title +>A Barra de Procura</title> + +<para +>A barra de procura permite-lhe procurar rapidamente por uma música na lista da coleção ou numa lista de reprodução.</para> + +<para +>Basta digitar o texto na barra de procura para reduzir a lista visível de músicas àquelas que contém esse texto em qualquer coluna visível. Clicar em <keycap +>Enter</keycap +> iniciará a reproduzir a primeira ocorrência da lista.</para> + +<para +>A pesquisa começa instantaneamente quando o texto é introduzido na campo de procura. A procura é incremental, isto é, à medida que você for escrevendo cada caractere no campo de texto, a pesquisa é cada vez mais restrita. Isto é útil para encontrar uma música da qual só se lembra de parte do nome, por exemplo.</para> + +<para +>Se você quiser fazer uma pesquisa mais refinada, poderá clicar no botão Pesquisa Avançada à direita da barra de procura, que lhe permitirá criar uma lista de reprodução virtual. Se quiser cancelar a procura, você poderá simplesmente clicar no botão Limpar à esquerda da barra de procura.</para> + +</sect1> + +</chapter> + +<chapter id="menu-and-command-reference"> +<title +>Referência do Menu e dos Comandos</title> + +<sect1 id="menus"> +<title +>Menus</title> + +<sect2 id="menu-file"> +<title +>O Menu <guimenu +>Arquivo</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +> </shortcut +> <guimenu +>Arquivo</guimenu +><guisubmenu +>Nova</guisubmenu +><guimenuitem +>Lista de Reprodução Vazia...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Cria uma nova lista de reprodução</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Arquivo</guimenu +><guisubmenu +>Nova</guisubmenu +><guimenuitem +>Lista de Reprodução a Partir de Pasta...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Cria uma nova lista de reprodução, contendo todos os arquivos de música de uma pasta e das suas sub-pastas. Todas as músicas dentro dos arquivos das listas de reprodução que o &juk; reconhecer serão também adicionadas.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Arquivo</guimenu +><guisubmenu +>Nova</guisubmenu +><guimenuitem +>Lista de Procura...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Cria uma nova <link linkend="juk-search-playlists" +>lista de procura de músicas</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>Arquivo</guimenu +> <guimenuitem +>Abrir...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Seleciona um ou mais arquivos para adicionar à lista da coleção. Se selecionar um arquivo de uma lista de reprodução, todos os arquivos desta serão adicionados.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Adicionar Pasta...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Seleciona uma pasta (ou pastas) para adicionar à lista da coleção. Estas pastas serão também pesquisadas novamente sempre que o &juk; é iniciado ou <menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Recarregar</guimenuitem +> </menuchoice +> é selecionado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Renomear...</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Renomeia uma lista de reprodução.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Duplicar...</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Cria uma duplicata da lista de reprodução selecionada, pedindo um novo nome. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Recarregar</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Recarrega as informações das marcas em todos os arquivos da lista de reprodução selecionada. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arquivo</guimenu +><guimenuitem +>Remover</guimenuitem +></menuchoice +></term> +<listitem +><para +>Remove a lista selecionada.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Arquivo</guimenu +><guimenuitem +>Salvar</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Remove a lista de reprodução selecionada.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Salvar Como...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Salva a lista de reprodução selecionada, com um nome diferente.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-edit"> +<title +>O Menu <guimenu +>Editar</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Editar</guimenu +><guimenuitem +>Limpar</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Remove as músicas selecionadas da lista.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-view"> +<title +>O Menu <guimenu +>Ver</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +><guimenuitem +>Mostrar Barra de Procura</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável que configura se a <link linkend="search-bar" +>Barra de Procura</link +> está visível ou não.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +><guimenuitem +>Mostrar Editor de Marcas</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável que configura se o <interface +>Editor de Marcas</interface +> está visível ou não.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +><guimenuitem +>Mostrar Histórico</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável que configura se o <link linkend="juk-history-playlists" +>Histórico de Lista de Reprodução</link +> é mostrado ou não.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +><guisubmenu +>Modos de Visualização</guisubmenu +> <guimenuitem +>Padrão</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Muda para o <link linkend="juk-viewmode-default" +>modo de Visualização Padrão</link +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +><guisubmenu +>Modos de Visualização</guisubmenu +> <guimenuitem +>Compacto</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Muda para o <link linkend="juk-viewmode-compact" +>modo de Visualização Compacto</link +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Ver</guimenu +><guisubmenu +>Modos de Visualização</guisubmenu +> <guimenuitem +>Árvore</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Muda para o <link linkend="juk-viewmode-tree" +>modo de Visualização em Árvore</link +>. </para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-player"> +<title +>O Menu <guimenu +>Tocador</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Tocador</guimenu +><guimenuitem +>Reprodução Aleatória</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável que ativa ou não a Reprodução Aleatória. Se a Reprodução Aleatória estiver ativa, então o &juk; irá selecionar aleatoriamente uma música da lista atual, logo que a música em execução termine.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Tocador</guimenu +><guimenuitem +>Repetir Lista de Reprodução...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável que ativa ou não a Leitura em Ciclo. Se a Leitura em Ciclo estiver ativa, então o &juk; irá começar a tocar do início da lista, quando acabar de tocar todas as músicas da lista atual.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Tocador</guimenu +><guimenuitem +>Tocar</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando começa a tocar a música selecionada atualmente, ou prossegue a reprodução da mesma se estava em pausa.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Tocador</guimenu +><guimenuitem +>Pausa</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando põe a música atual em pausa. Use o comando Tocar para continuar a tocá-la.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Tocador</guimenu +><guimenuitem +>Parar</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando pára a reprodução da música atual. Você não poderá continuar a reprodução da música a partir da sua posição atual depois disso.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Tocador</guimenu +><guimenuitem +>Faixa Anterior</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando toca a música que foi reproduzida antes da música atual.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Tocador</guimenu +><guimenuitem +>Próxima Faixa</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando passa para a música seguinte na lista.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-tagger"> +<title +>O Menu <guimenu +>Marcador</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>T</keycap +></keycombo +></shortcut +> <guimenu +>Marcador</guimenu +><guimenuitem +>Salvar</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando salva as alterações às marcas que você está editando. Normalmente, as alterações não são salvas até que você deselecione o arquivo que está editando.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Marcador</guimenu +><guimenuitem +>Remover</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando apaga os arquivos selecionados atualmente da Lista da Coleção e todas as listas que os contêm, removendo então os arquivos selecionados do disco. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>F</keycap +></keycombo +></shortcut +> <guimenu +>Marcador</guimenu +><guisubmenu +>Adivinhar Dados das Marcas</guisubmenu +><guimenuitem +>Do Nome do Arquivo</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando tenta adivinhar as marcas dos arquivos selecionados, com base no nome do arquivo. Você poderá configurar os padrões usados na adivinhação selecionando <menuchoice +><guimenu +>Configuração</guimenu +> <guimenuitem +>Adivinhar Marcas...</guimenuitem +></menuchoice +>, que abre o <link linkend="juk-tag-guesser-configuration" +>diálogo de configuração para Adivinhar Marcas</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>I</keycap +></keycombo +></shortcut +> <guimenu +>Marcador</guimenu +><guisubmenu +>Adivinhar Dados das Marcas</guisubmenu +><guimenuitem +>Da Internet</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando tenta adivinhar as marcas dos arquivos selecionados, usando o programa <application +>trm</application +> que vem com o <ulink url="http://www.musicbrainz.org/" +>MusicBrainz</ulink +>.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect2> + +<sect2 id="menu-settings"> +<title +>O Menu <guimenu +>Configurações</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações</guimenu +><guisubmenu +>Barras de Ferramentas</guisubmenu +> <guimenuitem +>Mostrar Barra Principal</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando mostra ou oculta a <link linkend="main-toolbar" +>barra de ferramentas principal</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações</guimenu +><guisubmenu +>Barras de Ferramentas</guisubmenu +> <guimenuitem +>Mostrar Barra de Reprodução</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando mostra ou oculta a <link linkend="play-toolbar" +>barra de reprodução</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações </guimenu +> <guimenuitem +>Mostrar a Tela Inicial</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável. Se estiver ativa, o &juk; irá mostrar um tela informativa na inicialização à medida que carrega a sua coleção de músicas.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações</guimenu +> <guimenuitem +>Ícone na Bandeja do Sistema</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável. Se estiver ativa, o &juk; irá mostrar um ícone na sua bandeja do sistema. Você poderá usar o ícone da bandeja do sistema para dizer se o &juk; está reproduzindo e controlar a reprodução.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações</guimenu +> <guimenuitem +>Manter na Bandeja do Sistema ao Fechar</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável. Se estiver ativa, o &juk; permanecerá em execução se você fechar a janela principal. A opção Acoplar na Bandeja do Sistema também deve estar ativa. Para sair do &juk;, use o comando <menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Sair</guimenuitem +></menuchoice +> a partir da janela principal, ou o comando <guimenuitem +>Sair</guimenuitem +> a partir do menu de contexto da bandeja do sistema.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações</guimenu +> <guimenuitem +>Anúncio Instantâneo da Faixa</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Esta é uma ação comutável. Se estiver ativa, o &juk; irá mostrar um indicador sempre que uma música começa a tocar, com informações do artista e do título e com botões que lhe permitem mudar rapidamente para uma música diferente. A opção Acoplar na Bandeja do Sistema terá de estar também ativa.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações</guimenu +> <guimenuitem +>Adivinhar Marcas...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando mostra a <link linkend="juk-tag-guesser-configuration" +>caixa de diálogo de configuração do Adivinhador de Marcas</link +>, onde poderá alterar os padrões usados para adivinhar as informações das marcas a partir dos nomes de arquivos.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações</guimenu +> <guimenuitem +>Renomeador de Arquivos...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Este comando mostra a <link linkend="juk-rename-dialog" +>caixa de diálogo de configuração do Renomeador dos Arquivos</link +>, onde poderá alterar a forma como o &juk; renomeia os arquivos para você.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Configurações</guimenu +> <guimenuitem +>Configurar Atalhos...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Isto mostra a janela padrão do &kde; onde poderá configurar os atalhos de teclado do &juk;. Algumas pré-definições razoáveis já estão incluídas, incluindo as teclas Multimídia para as pessoas que possuam teclados multimídia.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect2> + +</sect1> + +<sect1 id="keybindings"> +<title +>Referência dos Atalhos de Teclado</title> + +<!-- +ctrl-a select all +ctrl-c copy +ctrl-r rename file +ctrl-i guess tag entries from internet +ctrl-f guess tag entries based on filename +ctrl-f new search playlist +ctrl-n new empty playlist +ctrl-d new playlist from folder +ctrl-o open file (add to the collection or a playlist) +ctrl-q quit +ctrl-s save +ctrl-t save edited tag information +ctrl-v paste +ctrl-x cut +f1 Show manual +shift-f1 what's this help + +--> +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry +>Combinação de Teclas</entry> +<entry +>Ação</entry> +</row> +</thead> +<tbody> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>A</keycap +></keycombo +></entry> +<entry +>Seleciona tudo</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>C</keycap +></keycombo +></entry> +<entry +>Copiar</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>R</keycap +></keycombo +></entry> +<entry +>Renomeia arquivo</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>I</keycap +></keycombo +></entry> +<entry +>Adivinha as marcas a partir da Internet.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +></entry> +<entry +>Adivinha as marcas com base no nome do arquivo.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +></entry> +<entry +>Nova <link linkend="juk-search-playlists" +>lista de reprodução de procura</link +>.</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +></entry> +<entry +>Adivinha os itens das marcas com base no nome do arquivo</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +></entry> +<entry +>Nova Lista de Reprodução Vazia</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +></entry> +<entry +>Nova lista de reprodução a partir de pasta.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +></entry> +<entry +>Salva as alterações às marcas editadas.</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +</sect1> +</chapter> + +<chapter id="credits-and-licenses"> +<title +>Créditos e Licenças</title> + +<para +>Dieitos Autorais do &juk; © 2002, 2003, 2004 Scott Wheeler.</para> + +<para +>O &juk; é desenvolvido e mantido pelo Scott Wheeler <email +>wheeler@kde.org</email +>.</para> + +<para +>Muitos agradecimentos às seguintes pessoas que contribuíram para o &juk;:</para> + +<itemizedlist> +<listitem +><para +>Daniel Molkentin <email +>molkentin@kde.org</email +> pela acoplagem na bandeja do sistema, edição "incorporada" das marcas, correções de erros, evangelização e apoio moral.</para> +</listitem> +<listitem +><para +>Tim Jansen <email +>tim@tjansen.de</email +> pela passagem para o <application +>GStreamer</application +></para> +</listitem> + +<listitem +><para +>Stefan Asserhäll <email +>stefan.asserhall@telia.com</email +> pelo suporte das combinações de teclas globais.</para> +</listitem> + +<listitem +><para +>Stephen Douglas <email +>stephen_douglas@yahoo.com</email +> pelos anúncios das faixas.</para> +</listitem> + +<listitem +><para +>Frerich Raabe <email +>raabe@kde.org</email +> pela suporte para adivinhar os dados das faixas e pelas correções de erros.</para> +</listitem> + +<listitem +><para +>Zack Rusin <email +>zack@kde.org</email +> por mais coisas automáticas, incluindo o suporte do MusicBrainz.</para> +</listitem> + +<listitem +><para +>Adam Treat <email +>manyoso@yahoo.com</email +> pela co-conspiração na sabedoria do MusicBrainz.</para> +</listitem> + +<listitem +><para +>Matthias Kretz <email +>kretz@kde.org</email +> por ser o guru vizinho e amigável do aRts.</para> +</listitem> + +<listitem +><para +>Maks Orlovich <email +>maksim@kde.org</email +> por tornar o JuK mais amigável para as pessoas com terabytes de música.</para> +</listitem> + +<listitem +><para +>Antonio Larrosa Jimenez <email +>larrosa@kde.org</email +> pela interface DCOP.</para> +</listitem> + +</itemizedlist> + +<para +>Dieitos Autorais da Documentação © 2003, Lauri Watts e copyright © 2004 Michael Pyne.</para> + +<para +>Tradução de Marcus Gama<email +>marcus_gama@uol.com.br</email +></para +> +&underFDL; &underGPL; </chapter> + +&documentation.index; + +</book> +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:0 +sgml-indent-data:nil +End: +--> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/Makefile.in new file mode 100644 index 00000000000..e3da05c36e8 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kaboodle +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kaboodle/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kaboodle/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/index.cache.bz2 b/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..9270db61443 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/index.cache.bz2 diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/index.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/index.docbook new file mode 100644 index 00000000000..b5411a7a754 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kaboodle/index.docbook @@ -0,0 +1,110 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "<application +>kaboodle</application +>"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Brazilian-Portuguese "INCLUDE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>O Manual do &kappname;</title> + +<authorgroup> +<author +><firstname +></firstname +> <othername +></othername +> <surname +></surname +> <affiliation +> <address +><email +></email +></address> +</affiliation> +</author> +<othercredit role="translator" +><firstname +>Marcus</firstname +><surname +>Gama</surname +><affiliation +><address +><email +>marcus_gama@uol.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> + +<legalnotice +>&FDLNotice;</legalnotice> + +<!-- Date and version information of the documentation +Don't forget to include this last date and this last revision number, we +need them for translation coordination ! +Please respect the format of the date (YYYY-MM-DD) and of the version +(Major.minor.lesser), it could be used by automation scripts --> + +<date +>2000-09-02</date> +<releaseinfo +>0.00.00</releaseinfo> + +<!-- Abstract about this handbook --> + +<abstract> +<para +>O &kaboodle; é um reprodutor multimídia simples para o &kde; </para> +</abstract> + + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>Kapp</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction" +> <title +>Introdução</title +> <para +>A documentação do &kappname; não estava terminada quando o &kde; foi instalado neste computador.</para +> <para +>Se necessitar de ajuda, procure na <ulink url="http://www.kde.org" +>Página Web do &kde;</ulink +> atualizações a este documento ou envie as suas dúvidas para a <ulink url="mailto:kde-user@kde.org" +>Lista de Usuários do &kde;</ulink +>.</para +> <para +><emphasis +>A Equipe do &kde;</emphasis +></para +> &underFDL; </chapter> + +&documentation.index; +</book> + +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:0 +sgml-indent-data:nil +End: + +// vim:ts=2:sw=2:tw=78:noet +--> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/Makefile.in new file mode 100644 index 00000000000..25328c6c313 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/Makefile.in @@ -0,0 +1,587 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kcontrol +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. kmixcfg +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kcontrol/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=Makefile.in Makefile.am + +#>+ 2 +docs-am: + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kcontrol/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.am new file mode 100644 index 00000000000..f0ba35e309d --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = kcontrol/kmixcfg +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in new file mode 100644 index 00000000000..961523aa9f9 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kcontrol/kmixcfg +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = kcontrol/kmixcfg +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/index.cache.bz2 b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..e66385c1ed6 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/index.cache.bz2 diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/index.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/index.docbook new file mode 100644 index 00000000000..8f5a2c59e27 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kcontrol/kmixcfg/index.docbook @@ -0,0 +1,97 @@ +<?xml version="1.0" ?> +<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" +"dtd/kdex.dtd" [ +<!ENTITY % addindex "IGNORE"> +<!ENTITY % Brazilian-Portuguese "INCLUDE" +> <!-- change language only here --> +]> + +<article lang="&language;"> +<articleinfo> + +<authorgroup> +<author +><firstname +>Mike</firstname +> <surname +>McBride</surname +> </author> +<othercredit role="translator" +><firstname +>Lisiane</firstname +> <surname +>Sztoltz</surname +><affiliation +><address +> <email +>lisiane@conectiva.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> + +<date +>2002-02-12</date> +<releaseinfo +>3.00.00</releaseinfo> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>Centro de Controle</keyword> +<keyword +>Mixer</keyword> +</keywordset> +</articleinfo> + +<sect1 id="mixer"> + +<title +>Mixer</title> + +<para +>Este módulo pode ser usado para configurar algumas das opções mais básicas do &kmix; (o Mixer do &kde;).</para> + +<para +>A primeira seção relata os volumes padrão. Com esta seção, você pode salvar os níveis de volume atuais como padrão. Você também pode carregar os níveis de volume (desse modo, restaurá-los para os estados padrão).</para> + +<para +>Ao selecionar <guilabel +>Carregar volumes no login</guilabel +>, você pode instruir o &kde; para carregar automaticamente os níveis de volume padrão, quando o &kde; for iniciado.</para> + +<para +>A próxima seção deixa você especificar por qual hardware o &kmix; deve procurar.</para> + +<para +>A barra deslizante chamada <guilabel +>Número máximo de mixers testados </guilabel +> determina quando o &kmix; pára de procurar por placas de som. Se você tiver uma placa de som em seu computador, deve deixar esta configurada. Usando um número mais alto significa que o &kmix; continuará a procurar por uma segunda placa de som, que atrasará a inicialização do &kmix;.</para> + +<para +>A barra deslizante chamada <guilabel +>Número máximo de dispositivos testados por mixer</guilabel +> determina quantos dispositivos o &kmix; tenta detectar em cada placa de som. Se existem mais dispositivos em sua placa de som do que o &kmix; mostra em sua inicialização, você deve aumentar este número.</para> + +<sect2 id="mixer-author"> +<title +>Autor da Seção</title> + +<para +>Esta seção foi escrita por Mike McBride <email +>mpmcbride7@yahoo.com</email +> </para> +<para +>Tradução de Lisiane Sztoltz <email +>lisiane@conectiva.com.br</email +></para +> + +</sect2> +</sect1> + +</article>
\ No newline at end of file diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/Makefile.in new file mode 100644 index 00000000000..36cfaf73fc7 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/Makefile.in @@ -0,0 +1,613 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kio_audiocd +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kio_audiocd/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=audiocd.docbook Makefile.in Makefile.am + +#>+ 2 +docs-am: audiocd.docbook + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kio_audiocd + @for base in audiocd.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kio_audiocd/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kio_audiocd/$$base ;\ + done + +uninstall-nls: + for base in audiocd.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kio_audiocd/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in audiocd.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kio_audiocd/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/audiocd.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/audiocd.docbook new file mode 100644 index 00000000000..82c8121c76b --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kio_audiocd/audiocd.docbook @@ -0,0 +1,327 @@ +<article lang="&language;" id="audiocd"> +<title +>audiocd</title> +<articleinfo> +<authorgroup> +<author +>&Rik.Hemsley; &Rik.Hemsley.mail;</author> +<author +><personname +><firstname +>Benjamin</firstname +><surname +>Meyer</surname +></personname +></author> +<othercredit role="translator" +><firstname +>Marcus</firstname +><surname +>Gama</surname +><affiliation +><address +><email +>marcus_gama@uol.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> + +<date +>2004-09-16</date> +<releaseinfo +>2.30.00</releaseinfo> + +</articleinfo> + +<para +>Permite o tratamento dos <acronym +>CD</acronym +>s áudio como se fossem um sistema de arquivos <quote +>real</quote +>, em que as faixas são representadas como arquivos e que, quando copiados da pasta, são extraídos digitalmente do <acronym +>CD</acronym +>. Isto garante uma cópia perfeita dos dados áudio.</para> + +<para +>Para ver como funciona este 'slave', introduza um <acronym +>CD</acronym +> de áudio no seu leitor de &CD-ROM; e digite <userinput +>audiocd:/</userinput +> no &konqueror;. Rm poucos segundos você poderá ver uma lista das faixas, bem como algumas pasta.</para> + +<para +>Os <acronym +>CD</acronym +>s de áudio não contém, na realidade, pastas, mas o 'slave' audiocd as disponibiliza por conveniência. Se olhar dentro dessas pastas, verá que todas elas contém o mesmo número de faixas. Se estiver conectado à Internet, algumas pastas terão os títulos verdadeiros das faixas como nomes dos arquivos.</para> + +<para +>A razão pela qual existem estas pastas separadas tem a ver com a escolha do formato no qual deseja ouvir (ou copiar) as faixas do <acronym +>CD</acronym +>.</para> + +<para +>Se você arrastar uma faixa da pasta <filename class="directory" +>Ogg Vorbis</filename +> e soltá-la noutra janela do &konqueror; aberta na sua pasta pessoal, vai aparecer uma janela de progresso para mostrar a faixa sendo extraída do <acronym +>CD</acronym +> e sendo salva num arquivo. Não se esqueça que o Ogg Vorbis é um formato comprimido, por isso o arquivo na sua pasta pessoal parecerá bem menor do que se tivesse copiado os dados brutos.</para> + +<para +>O mecanismo por trás disto é muito simples. Quando é pedido ao 'slave' audiocd para obter uma faixa da pasta <filename class="directory" +>Ogg Vorbis</filename +>, ele começa a extrair os dados de áudio digital do <acronym +>CD</acronym +>. À medida que envia os dados para o arquivo na sua pasta pessoal, vai ao mesmo tempo codificando no formato Ogg Vorbis (o áudio do <acronym +>CD</acronym +> está é um formato bruto inicialmente).</para> + +<para +>Você pode também tentar arrastar um arquivo que termina em <literal role="extension" +>.wav</literal +> e soltá-lo no Reprodutor Multimídia do &kde;, o &noatun;. Neste caso, o procedimento que ocorre nos bastidores é semelhante, exceto que em vez de codificar os dados de áudio no formato Ogg Vorbis, é feita apenas uma conversão simples dos dados binários brutos (representados pelos arquivos <literal role="extension" +>.cda</literal +> na pasta de nível superior) para <quote +>RIFF WAV</quote +>, um formato não comprimido que a maioria dos reprodutores multimídia compreendem.</para> + +<para +>O &noatun; consegue tocar sem problemas um arquivo <literal role="extension" +>.wav</literal +>, mas se existirem problemas, você pode considerar usar a opção <option +>paranoia_level</option +>, como será explicado abaixo.</para> + +<variablelist> +<title +>Opções</title> + +<varlistentry> +<term +><option +>device</option +></term> +<listitem> +<para +>Configura a localização do dispositivo de <acronym +>CD</acronym +> de áudio, &pex; <userinput +>audiocd:/<option +>?device</option +>=<parameter +>/dev/sdc</parameter +></userinput +>. Normalmente o 'slave' irá tentar descobrir um drive de <acronym +>CD</acronym +> que tenha um <acronym +>CD</acronym +> inserido, mas se não conseguir fazer isso ou se você tiver mais de um drive de <acronym +>CD</acronym +>, você pode tentar usar esta opção. Repare que o diálogo de configuração permite-lhe definir um valor padrão para esta opção.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>fileNameTemplate</option +></term> +<listitem> +<para +>Configura o modelo de nome de arquivo, ⪚ <userinput +>audiocd:/<option +>?fileNameTemplate</option +>=<parameter +>Track % {number}</parameter +></userinput +>. Observe que o diálogo de configuração permite configurar um valor padrão para esta opção. Um alerta: se você configurar um string vazio nenhum arquivo será mostrado.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>albumNameTemplate</option +></term> +<listitem> +<para +>Configura o modelo de nome do álbum, ⪚ <userinput +>audiocd:/<option +>?albumNameTemplate</option +>=<parameter +>%{albumartist} %{albumtitle}</parameter +></userinput +>. Observe que o diálogo de configuração permite configurar um valor padrão para esta opção.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>niceLevel</option +></term> +<listitem> +<para +>Configura o volume padrão do processo para os codificadores, ⪚ <userinput +>audiocd:/<option +>?niceLevel</option +>=<parameter +>10</parameter +></userinput +>. Observe que o diálogo de configuração permite configurar um valor padrão para esta opção.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>paranoia_level</option +></term> +<listitem> +<para +>Configura o nível de detecção e correção de erros usado ao extrair os dados.</para> + +<variablelist> +<varlistentry> +<term +>Nível 0</term> +<listitem> +<para +>Não é feita detecção ou correção. Só é útil se possui um drive de <acronym +>CD</acronym +> perfeito (pouco provável).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Nível 1</term> +<listitem> +<para +>Permite a detecção e correção de erros básicos.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Nível 2</term> +<listitem> +<para +>Padrão. Especifica que só é aceitável uma extração perfeita.</para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Note que existe uma desvantagem com o nível 2. A extração pode ser muito lenta, por isso a reprodução digital em tempo real pode não funcionar corretamente. Se você tiver um drive de <acronym +>CD</acronym +> de boa qualidade (lembre-se que mais caro não significa necessariamente melhor qualidade) provavelmente não terá uma extração lenta, mas um drive de baixa qualidade pode levar dias (!) extraindo o áudio de um <acronym +>CD</acronym +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>cddbChoice</option +></term> +<listitem> + +<para +>Especifica quais entradas do Banco de Dados <acronym +>CD</acronym +>s da Internet usar. Os <acronym +>CD</acronym +>s áudio não possuem nomes das faixas, mas o Banco de Dados de <acronym +>CD</acronym +>s da Internet é um sistema inteligente que utiliza um identificador especial gerado a partir do número e do tamanho das faixas em cada <acronym +>CD</acronym +> para referenciar uma lista de faixas. Essas listas são ofertadas pela comunidade da Internet e são tornadas públicas para todos. Ocasionalmente existirão entradas múltipls. Você pode especificar qual usar.</para> + +<para +>Você pode enviar as suas próprias listas de músicas com o &kscd;, o leitor de <acronym +>CD</acronym +>s do &kde;.</para> + +<para +>Por padrão o audiocd tente obter a melhor.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title +>Exemplos</title> +<varlistentry> +<term +><userinput +>audiocd:/?device=/dev/scd0&paranoia_level=0&cddbChoice=0</userinput +></term> +<listitem> +<para +>Obtém uma lista das faixas do <acronym +>CD</acronym +> de áudio introduzido no dispositivo <filename class="devicefile" +>/dev/scd0</filename +>, que no &Linux; corresponde ao primeiro &CD-ROM; <acronym +>SCSI</acronym +>. Se você copiar faixas do <acronym +>CD</acronym +>, a extração digital será feita sem detecção ou correção de erros. Não será contactado nenhum Banco de Dados de <acronym +>CD</acronym +>s da Internet.</para> +</listitem> +</varlistentry> +</variablelist> + +<qandaset> +<title +>Perguntas Frequentes (FAQ)</title> +<qandaentry> +<question> +<para +>Eu obtive a seguinte <errorname +>O arquivo ou pasta / não existe</errorname +>. Como corrijo isto? Tenho um <acronym +>CD</acronym +> de áudio no meu drive!</para> +</question> + +<answer> +<para +>Tente executar <userinput +><command +>cdparanoia</command +> <option +>-vsQ</option +></userinput +> logado como usuário comum (não como <systemitem class="username" +>root</systemitem +>). Você vê uma lista de faixas? Se não, verifique se tem permissões para acessar ao dispositivo do <acronym +>CD</acronym +>. Se estiver usando uma emulação de <acronym +>SCSI</acronym +> (possivelmente se tiver um gravador de <acronym +>CD</acronym +>s <acronym +>IDE</acronym +>) então verifique se tem permissões para acessar ao dispositivo <acronym +>SCSI</acronym +> genérico, que é provavelmente o <filename class="devicefile" +>/dev/sg0</filename +>, <filename class="devicefile" +>/dev/sg1</filename +>, &etc;. Se mesmo assim não funcionar, tente executar <userinput +>audiocd:/?device=/dev/sg0</userinput +> (ou similar) para dizer ao kio_audiocd em que dispositivo se encontra o seu &CD-ROM;.</para +> +</answer> +</qandaentry> +</qandaset> + + +</article> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kmid/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/kmid/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kmid/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kmid/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/kmid/Makefile.in new file mode 100644 index 00000000000..f73b2dff218 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kmid/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kmid +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmid/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmid/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kmid/index.cache.bz2 b/tde-i18n-pt_BR/docs/tdemultimedia/kmid/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..cbf30360eaf --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kmid/index.cache.bz2 diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kmid/index.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/kmid/index.docbook new file mode 100644 index 00000000000..bf4fa70b1fb --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kmid/index.docbook @@ -0,0 +1,1402 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kmid;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % Brazilian-Portuguese "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>O Manual do &kmid;</title> +<authorgroup> +<author +><firstname +>Antonio</firstname +> <surname +>Larrosa Jiménez</surname +> <affiliation +> <address +><email +>larrosa@kde.org</email +></address> +</affiliation> +</author> +<othercredit role="translator" +><firstname +>Marcus</firstname +><surname +>Gama</surname +><affiliation +><address +><email +>marcus_gama@uol.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> + +<copyright> +<year +>1999</year +><year +>2001</year> +<holder +>Antonio Larrosa Jiménez</holder> +</copyright> + +<date +>2002-02-05</date> +<releaseinfo +>2.00.00</releaseinfo> + +<abstract> +<para +>O &kmid; é um leitor de multimídia MIDI/karaoke </para> +</abstract> + +<keywordset> +<keyword +>KMid</keyword> +<keyword +>MIDI</keyword> +<keyword +>karaoke</keyword> +<keyword +>multimídia</keyword> +<keyword +>mid</keyword> +<keyword +>kar</keyword> +<keyword +>reprodutor</keyword> +<keyword +>música</keyword> +<keyword +>som</keyword> +<keyword +>fm</keyword> +<keyword +>awe</keyword> +<keyword +>gus</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Introdução</title> + +<para +>O &kmid; o leitor multimídia de MIDI e Karaoke do &kde;. Ele contém algumas funcionalidades que não são encontradas em mais nenhum leitor de MIDI do &UNIX;, como os gráficos em tempo-real, o destaque do texto do Karaoke, entre outros. </para> + +<para +>O &kmid; foi adaptado para ser executado nos sistemas operacionais &Linux; e FreeBSD. Ele usa o controlador de som do <acronym +>OSS</acronym +>, por isso deverá funcionar em todos os sistemas em que o &kde; e o <acronym +>OSS</acronym +> sejam compilados. O &kmid; também suporta o Controlador do Projeto Ultrasound do &Linux; que é necessário para obter o som nas placas <acronym +>GUS</acronym +>. Eu planejo suportar o controlador do <acronym +>ALSA</acronym +>, assim que ele suporte um dispositivo de sequenciação MIDI. </para> + +<para +>O &kmid; mostra as letras das músicas na tela, mudando a sua cor ao mesmo tempo que a música vai tocando, por isso é muito fácil seguir o ritmo das músicas. </para> + +<para +>Esperemos que ache o &kmid; tão divertido de usar como eu achei que foi desenvolvê-lo. </para> + +<para +>Antonio Larrosa Jiménez <email +>larrosa@kde.org</email +> </para> + +<sect1 id="kmids-features"> +<title +>Recursos do &kmid;</title> + +<para +>Estes são alguns dos recursos principais do &kmid;: </para> + +<itemizedlist> +<listitem> +<para +>Ele possui uma <emphasis +>interface com o usuário muito amigável</emphasis +> para mostrar o texto do Karaoke com <emphasis +>destaque em tempo-real</emphasis +> do texto das letras. </para> +</listitem> +<listitem> +<para +>Ele oferece uma visão gráfica sobre o que está sendo tocado em cada canal MIDI, realçando as teclas pressionadas nos teclados (virtuais). </para> +</listitem> +<listitem> +<para +>O <emphasis +>Mapeador de MIDI</emphasis +> mais poderoso que você jamais encontrou em qualquer outro sistema operacional. </para> +</listitem> +<listitem> +<para +>Suporte para <emphasis +>Arrastar & soltar</emphasis +>, de modo que você possa soltar no &kde; qualquer arquivo MIDI a partir de uma janela do &konqueror;. </para> +</listitem> +<listitem> +<para +>Você poderá <emphasis +>alterar o tempo</emphasis +> das músicas, para tocá-las mais depressa ou mais devagar, de acordo com o seu gosto. </para> +</listitem> +<listitem> +<para +>Mostra algumas luzes para seguir o ritmo da música. </para> +</listitem> +<listitem> +<para +><emphasis +>Fontes personalizadas</emphasis +> para mostrar o texto do Karaoke. </para> +</listitem> +<listitem> +<para +>Suporta os dois padrões para introduzir as letras nos arquivos MIDI, isto é, o texto ou os eventos de texto (e adivinha qual é usado por uma determinada música). </para> +</listitem> +<listitem> +<para +>Gerenciamento de Sessões. Se estiver sendo tocada uma música quando você sair do &kde;, da próxima vez que você voltar a logar-se, a mesma música irá começar a tocar. </para> +</listitem> +<listitem> +<para +><emphasis +>Volume ajustável</emphasis +> em tempo-real. </para> +</listitem> +<listitem> +<para +>Ele poderá tocar os arquivos MIDI corrompidos, que em outros leitores os fariam estourar! </para> +</listitem> +<listitem> +<para +>Ele consegue abrir <emphasis +>arquivos de MIDI/karaoke comprimidos</emphasis +> tal como qualquer outro arquivo. </para> +</listitem> +<listitem> +<para +>Consome aproximadamente <emphasis +>0,1%</emphasis +> da carga da minha <acronym +>CPU</acronym +> (dependendo da complexidade da música). </para> +</listitem> +<listitem> +<para +>Suporta os sintetizadores de &MIDI; externos, as placas <acronym +>AWE</acronym +>, <acronym +>FM</acronym +> e <acronym +>GUS</acronym +> (para a última você irá precisar do controlador <acronym +>LUP</acronym +> e do 'gusd' instalado). </para> +</listitem> +<listitem> +<para +>Funciona no &Linux; e no FreeBSD (talvez também em outros &UNIX;es...). </para> +</listitem> +</itemizedlist> + +</sect1> +</chapter> + +<chapter id="general-usage"> +<title +>Uso geral</title> + +<sect1 id="opening-songs"> +<title +>Abrindo músicas</title> + +<para +>Você poderá abrir uma música de várias formas diferentes. </para> + +<para +>Primeiro, você poderá selecionar o <guimenuitem +>Abrir...</guimenuitem +> do menu <guimenu +>Arquivo</guimenu +>, onde será apresentado um diálogo padrão para abertura de arquivos, com a qual você poderá selecionar a música que deseja abrir. </para> + +<para +>Você poderá arrastar um arquivo a partir de uma janela do &konqueror; e soltá-lo na janela do &kmid;. Você poderá também fazer 'Arrastar & Soltar' de várias músicas ao mesmo tempo. </para> + +<para +>Se você especificar uma música na linha de comando ao rodar o &kmid;, ela também será aberta. </para> + +<para +>Finalmente, você poderá selecionar a música a partir da lista da coleção ativa. </para> + +</sect1> + +<sect1 id="playing-songs"> +<title +>Tocando músicas</title> + +<para +>Para tocar uma música, abra-a primeiro e depois clique no botão <guiicon +>Tocar</guiicon +> da barra de ferramentas, escolha o item <guimenuitem +>Tocar</guimenuitem +> do menu <guimenu +>Música</guimenu +> ou clique apenas na tecla <keycap +>Espaço</keycap +>. </para> + +<para +>Lembre-se que, ao abrir um arquivo com 'Arrastar & Soltar', o &kmid; irá começar a tocá-lo automaticamente (se você soltar mais de um arquivo, eles serão adicionados a uma coleção e serão tocados sequencialmente). </para> + +<para +>Logo que o &kmid; esteja tocando uma música, você poderá mover o índice deslizante de tempo, clicando com o &MMB; para ir para uma determinada posição. </para> + +<para +>Se uma música estiver tocando muito depressa ou muito devagar para você, você poderá clicar nos cursores em ambos os lados do <acronym +>LCD</acronym +> do tempo e fazê-la tocar mais depressa ou mais devagar. Para voltar ao tempo padrão, basta fazer um duplo-clique no <acronym +>LCD</acronym +> do tempo. </para> + +<para +>A tecla <keycap +>Espaço</keycap +> é usada para duas coisas; quando a música estiver tocando e você clicar na tecla <keycap +>Espaço</keycap +>, ela irá atuar como se você tivesse clicado no botão de <guiicon +>pausa</guiicon +> ou no item <guimenuitem +>Pausa</guimenuitem +> do menu <guimenu +>Música</guimenu +>, isto é, irá colocar a música em pausa. Se você clicar na tecla de <keycap +>Espaço</keycap +> quando não estiver tocando nenhuma música, o &kmid; irá tocá-la. </para> + +</sect1> + +<sect1 id="displaying-lyrics"> +<title +>Mostrando as letras</title> + +<para +>Existem dois métodos de guardar as letras numa música, usando os <guimenuitem +>Eventos de texto</guimenuitem +> ou os <guimenuitem +>Eventos de letras</guimenuitem +>; algumas músicas usam o primeiro, outras o segundo, algumas usam ambos e outras não incluem letras da música :-) </para> + +<para +>O &kmid; permite-lhe escolher os eventos a mostrar e, ainda melhor, possui uma opção para selecionar automaticamente o tipo de eventos que uma música usa, de modo a que você não tenha que alterar o tipo manualmente. Desta forma, se você ativar o item <guimenuitem +>Selecionador de Texto Automático</guimenuitem +> do menu <guimenu +>Configurações</guimenu +>, o texto do Karaoke será automaticamente selecionado, mas você poderá ainda mudar o tipo se preferir outro. </para> + +<para +>Para selecionar o tipo a usar, você poderá usar os tipos apropriados do menu <guimenu +>Configurações</guimenu +> ou simplesmente clicar nas teclas <keycap +>1</keycap +> e <keycap +>2</keycap +> do seu teclado para ver os <guimenuitem +>Eventos de texto</guimenuitem +> ou os <guimenuitem +>Eventos das letras</guimenuitem +>, respectivamente. </para> + +</sect1> + +</chapter> + +<chapter id="collections"> +<title +>Coleções</title> + +<para +>Uma coleção é uma lista de arquivos MIDI que você reune num conjunto e que são tocados um a seguir ao outro. Esta seção irá ajudá-lo a usá-las, dando-lhe também algumas dicas úteis para fazer um bom uso delas. </para> + +<sect1 id="creating-a-collection"> +<title +>Criando uma coleção</title> + +<para +>Para criar uma coleção, primeiro abra o diálogo do <guilabel +>Gerenciador de Coleções</guilabel +>, selecionando o item <guimenuitem +>Organizar...</guimenuitem +> do menu <guimenu +>Coleções</guimenu +>. Depois, clique no botão <guibutton +>Nova</guibutton +>, e insira o nome que deseja que a coleção tenha. </para> + +<para +>Você também poderá copiar uma coleção inteira se a selecionar e clicar no botão <guibutton +>Copiar</guibutton +>, que irá lhe pedir o nome da coleção nova, e que terá inicialmente as mesmas músicas da coleção selecionada. </para> + +<para +>Assim que tenha mais de uma coleção, você poderá alterar a coleção ativa no <guilabel +>Gerenciador de Coleções</guilabel +>, selecionando-a. </para> + +</sect1> +<sect1 id="the-temporary-collection"> +<title +>A Coleção Temporária</title> + +<para +>A Coleção Temporária é uma coleção que é usada para manter as músicas que deseja tocar, mas que não deseja adicionar a nenhuma coleção. </para> + +<para +>Esta coleção <emphasis +>não é salva</emphasis +> na saída do aplicativo, assim tenha isso em mente ao adicionar várias músicas a ela. </para> + +<para +>Continue a ler esta seção para compreender mais sobre a Coleção Temporária. </para> + +</sect1> + +<sect1 id="adding-songs-to-a-collection"> +<title +>Adicionando músicas a uma coleção</title> +<subtitle +>Como usar o <guimenuitem +>Auto-Adicionar à Coleção</guimenuitem +></subtitle> + +<para +>Existem algumas formas diferentes de adicionar uma música a uma coleção. </para> + +<para +>Primeiramente, em cada método, você precisa selecionar a coleção a qual deseja adicionar músicas no <guilabel +>Gerenciador de Coleções</guilabel +>. Depois, poderá clicar no botão <guibutton +>Adicionar</guibutton +> para adicionar uma determinada música, onde então aparecerá um diálogo de abertura de arquivos para que possa escolher as músicas a adicionar. </para> + +<para +>Os outros métodos para adicionar uma música dependem do estado da opção <guimenuitem +>Auto-Adicionar à Coleção</guimenuitem +>. </para> + +<para +>Se a opção <guimenuitem +>Auto-Adicionar à Coleção</guimenuitem +> estiver ativa, ao abrir uma música (usando a opção <menuchoice +><guimenu +>Arquivo</guimenu +> <guimenuitem +>Abrir...</guimenuitem +></menuchoice +> ou o 'Arrastar & Soltar') esta será adicionada à coleção ativa sem a intervenção do usuário. </para> + +<para +>Se a opção <guimenuitem +>Auto-Adicionar à Coleção</guimenuitem +> não estiver ativa, quando abrir uma música, a Coleção Temporária será aberta e limpa, adicionando posteriormente as músicas abertas à mesma. </para> + +</sect1> + +<sect1 id="removing-songs-from-collections"> +<title +>Removendo músicas das coleções</title> + +<para +>Para remover uma música de uma coleção, basta abrir o <guilabel +>Gerenciador de Coleções</guilabel +>, selecionar a coleção apropriada, e a música que deseja remover, clicando finalmente no botão <guibutton +>Remover</guibutton +>. </para> + +</sect1> + +<sect1 id="playing-order"> +<title +>Tocando ordenadamente ou aleatoriamente</title> + +<para +>Você poderá selecionar a ordem pela qual as músicas serão tocadas. Quando selecionar <guimenuitem +>Ordenadamente</guimenuitem +> no sub-menu <guisubmenu +>Ordem de Reprodução</guisubmenu +> do menu <guimenu +>Coleções</guimenu +>, as músicas serão tocadas na mesma ordem que foram adicionadas à coleção. </para> + +<para +>Quando você selecionar o modo <guimenuitem +>Embaralhar</guimenuitem +>, o &kmid; irá gerar uma variável aleatória com uma distribuição discreta uniforme, para tocar de forma realmente aleatória as músicas da coleção. Ele irá dar valores a essa variável aleatória enquanto gera a lista na ordem em que as músicas serão tocadas (você quer realmente tocar as músicas aleatoriamente, mas não quer tocar duas vezes a mesma música e você quer tocar a última música tocada quando clicar no botão da <guibutton +>Música Anterior</guibutton +>, não quer ? :-) ). </para> + +<para +>A lista aleatória pela qual a coleção será tocada será gerada novamente cada vez que você adiciona ou remove um arquivo na coleção ativa ou quando clica no item <guimenuitem +>Embaralhar</guimenuitem +> do menu. </para> + +</sect1> + +<sect1 id="selecting-from-a-collection"> +<title +>Selecionando uma música de uma coleção</title> + +<para +>Você poderá selecionar uma música para tocar no <literal +>Gerenciador de Coleções</literal +>, ou usando a caixa combinada sobre o texto do Karaoke. </para> + +<para +>Você poderá mudar para a próxima música, usando o item <literal +>Próxima Música</literal +> do menu <literal +>Música</literal +>, o botão <literal +>Próxima Música</literal +> ou clicando na tecla de cursor <literal +>direita</literal +>. </para> + +<para +>Para mudar para a música anterior, use o item <guimenuitem +>Música Anterior</guimenuitem +> do menu <guimenu +>Música</guimenu +>, o item <guimenuitem +>Música Anterior</guimenuitem +> da barra de ferramentas, ou clique na tecla de cursor <keycap +>esquerda</keycap +> do seu teclado. </para> + +</sect1> + +<sect1 id="deleting-a-collection"> +<title +>Removendo uma coleção</title> + +<para +>Para remover uma coleção, basta abrir o <guilabel +>Gerenciador de Coleções</guilabel +>, selecionar a coleção que deseja remover e clicar em <guibutton +>Remover</guibutton +>. Fácil, não é? </para> + +<para +>Por favor lembre-se que não pode remover a Coleção Temporária, mas isto não faz diferença, uma vez que ela não é salva quando você sai do &kmid;. </para> + +</sect1> + +</chapter> + +<chapter id="midi-maps"> +<title +>Mapas de MIDI</title> + +<sect1 id="what-is-a-midimap"> +<title +>O que é um mapa de MIDI ?</title> + +<para +>Um Mapa de MIDI é algo que mapeia os eventos do MIDI em outros eventos do MIDI. </para> + +<para +>Isto é totalmente necessário se um sintetizador não conseguir compreender os eventos normais (isto é, se um sintetizador não for compatível com o MIDI Geral); neste caso, um mapa de MIDI irá traduzir os eventos do MIDI Geral para os eventos que o sintetizador compreenda. </para> + +<para +>Por exemplo, você poderá fazer um mapa de MIDI que converta todos os eventos de <literal +>Alterar remendo para Piano Puro</literal +> para eventos de <literal +>Alterar remendo para Trompete</literal +>, e assim, quando uma música começar a tocar um piano, irá assim tocar um trompete. </para> + +<para +>Isto poderá soar estranho (porquê tocar um trompete quando a música foi feita para tocar com um piano?), mas é bastante útil. O padrão do <acronym +>GM</acronym +> diz que, quando um teclado MIDI recebe um evento para mudar o 'remendo' para <literal +>0</literal +>, irá mudar o 'remendo' atual para um <literal +>Grande Piano</literal +>, mas os sintetizadores mais antigos irão mudar, por exemplo, para uma <literal +>Guitarra Elétrica</literal +> quando receber um <literal +>0</literal +>. Este teclado antigo necessita de um <literal +>3</literal +> (por exemplo) para mudar para um <literal +>Piano</literal +>. É aqui que entra em ação o mapa de MIDI, mudando todos os eventos <literal +>alterar 'remendo' para 0</literal +> para <literal +>alterar 'remendo' para 3</literal +>, tocando deste modo o instrumento correto quando tiver que fazê-lo. </para> + +</sect1> + +<sect1 id="do-i-need-a-midi-map"> +<title +>Será que eu preciso de um mapa MIDI ?</title> + +<para +>Em resumo, se você não tiver um sintetizador externo, <emphasis +>não</emphasis +>! </para> + +<para +>Se só tiver uma placa de som, os mapas de MIDI não são necessários porque todas as placas são compatíveis com o <acronym +>GM</acronym +> (MIDI Geral) (isto inclui as placas AWE, as <acronym +>GUS</acronym +>, os dispositivos <acronym +>FM</acronym +> e assim por diante). </para> + +<para +>Se você estiver tocando música através de um sintetizador externo que não seja compatível com o GM, você terá que fazer um mapa de MIDI para o seu teclado. Ainda que você perca uma tarde inteira fazendo o seu arquivo de mapa e tenha que tentar vários valores diferentes para todas as opções, você será plenamente recompensado quando terminar, porque irá encontrar todas as possibilidades ocultas do seu teclado. Por exemplo, eu tenho um Yamaha PSS-790 barato, que não é compatível com o <acronym +>GM</acronym +>, e não tem tantos instrumentos como um sintetizador <acronym +>GM</acronym +>, mas com o mapeador de MIDI do &kmid;, soa ainda melhor que muitas placas de som (incluindo a AWE :-)), devido à qualidade de som encontrada nos sintetizadores externos (mesmo nos incompatíveis com o <acronym +>GM</acronym +>). </para> + +</sect1> + +<sect1 id="creating-a-midi-map"> +<title +>Criando um mapa de MIDI</title> + +<para +>Não existe nenhum programa para gerar mapas MIDI, por isso você terá que editar o arquivo à mão (com o seu editor de texto favorito). </para> + +<para +>Um mapa MIDI é um arquivo de texto que contém todas as traduções que são necessárias fazer para tocar músicas. </para> + +<para +>Consiste em quatro seções: <literal +>PATCHMAP</literal +>, <literal +>KEYMAP</literal +>, <literal +>CHANNELMAP</literal +> e <literal +>OPTIONS</literal +>. </para> + +<para +>Cada seção só deverá aparecer uma vez, exceto a seção <literal +>KEYMAP</literal +> que poderá aparecer tantas vezes quantas necessárias, desde que cada aparição use um TextID (identificador de texto) diferente (continue a ler para mais detalhes). </para> + +<para +>A estrutura geral de um arquivo de mapa é: </para> + +<screen +>DEFINE PATCHMAP +... +END + +DEFINE KEYMAP "Nome do Mapa" +... +END + +DEFINE KEYMAP "Outro Mapa" +... +END + +DEFINE CHANNELMAP +... +END + +OPTIONS +... +END +</screen> + +<para +>Você poderá ver que a palavra <literal +>DEFINE</literal +> é usada para indicar quando uma determinada seção vai começar (exceto no caso da <literal +>OPTIONS</literal +>), e o <literal +>END</literal +> é colocado no fim de cada seção. </para> + +<para +>Você poderá colocar comentários começando a linha com um caractere <literal +>#</literal +>. </para> + +<para +>Por favor, não se esqueça de enviar para o autor os seus arquivos de mapas por e-mail, para que as versões futuras do &kmid; incluam o suporte para mais teclados incompatíveis com o MIDI Geral. </para> + +<sect2 id="the-patchmap-section"> +<title +>A seção <literal +>PATCHMAP</literal +></title> + +<para +>Esta seção é usada para especificar como que os 'remendos' vão ser mapeados, do GM para a especificação do seu teclado. O uso geral é: </para> + +<screen +>(Nome do Remendo de GM)=(<replaceable +>N</replaceable +>) [AllKeysTo M] +</screen> + +<para +>Em que o <replaceable +>N</replaceable +> é o número que o seu teclado precisa receber para mudar o 'remendo' para o mesmo que o padrão do GM usa. </para> + +<para +>Observe que o lado esquerdo da igualdade é ignorado, assim os remendos do <acronym +>GM</acronym +> devem estar supostamente em ordem (de 0 a 127), como tal você não tem permissão para alterar a ordem das linhas nem de omitir qualquer um dos 128 instrumentos. </para> + +<para +>O parâmetro opcional <literal +>AllKeysTo M</literal +> é usado para mapear todas as notas que usam esse instrumento para a tecla <literal +>M</literal +>. Por exemplo, imagine que o seu teclado MIDI não tem o som de Tiro de Arma (remendo de GM 127), de modo que queira mapeá-lo para um tambor de percussão (i.e., a tecla 60), que é algo que soa de forma semelhante a um tiro, então você poderá colocar na linha de número 127 da seção <literal +>PATCHMAP</literal +>: </para> + +<screen +>Tiro =100 AllKeysTo 60</screen> + + +<para +>Assim quando um arquivo MIDI tentar tocar uma nota com o remendo 127 (tiro de pistola, ele será mapeado para o remendo 100 (o remendo de percussão do seu teclado) e irá tocar a nota 60 (independentemente da tecla que ia ser tocada). </para> + +<para +>Observe que, quando é usado o termo <quote +>Remendo de percussão</quote +>, quer dizer o remendo em que cada cada tecla toca um tambor, prato, bombo, maracas e assim por diante, e não um som possível que alguns teclados possuem e que toca um tom diferente da mesma bateria com cada tecla. </para> + +</sect2> + +<sect2 id="The-keymap-section"> +<title +>A seção <literal +>KEYMAP</literal +></title> + +<para +>A seção <literal +>KEYMAP</literal +> é usada para indicar como as teclas serão mapeadas, dentro de cada canal ou instrumento. O uso é o seguinte: </para> + +<screen +>DEFINE KEYMAP "Nome do mapa de teclas" +C 0 =0 +C#0 =1 +D 0 =2 +... +END +</screen> + +<para +>Tal como com a seção <literal +>PATCHMAP</literal +>, é muito importante a ordem das linhas, e que estejam todas lá (as 128 teclas). </para> + +<para +>Assim você pode definir vários mapas de teclas por cada canal e instrumento, você precisa fornecer um nome diferente a cada um na primeira linha. </para> + +<para +>Os mapas de teclas são usados principalmente para mapear as teclas no canal de percussão. Dê uma olhada nos mapas distribuídos para ver alguns exemplos. </para> + +</sect2> + +<sect2 id="the-channelmap-section"> +<title +>A seção <literal +>CHANNELMAP</literal +></title> + +<para +>Esta seção pode ser usada para mapear alguns canais com outros diferentes. Por exemplo, se você quiser trocar o primeiro e o segundo canal, você poderá fazê-lo facilmente com a seção <literal +>CHANNELMAP</literal +>. </para> + +<para +>Contudo, é mais útil para os teclados que precisem do canal de percussão estarem num canal indicado (o padrão do GM usa o canal 10, enquanto que outros usam o 16 ou o 9). </para> + +<para +>Repare que os dispositivos MIDI usam 16 canais, por isso a seção <literal +>CHANNELMAP</literal +> tem 16 linhas, da 0 à 15, como a seguinte: </para> + +<screen +>(N) = (M) [Keymap "Nome"] [ForcePatch x] +</screen> + +<para +>Em que o <literal +>N</literal +> é o canal que está mapeado do canal <literal +>M</literal +>. Se a opção <literal +>Keymap</literal +> for usada, o mapa de teclas com o nome <literal +>Nome</literal +> será usado neste canal (este mapa terá que estar definido anteriormente no arquivo !). Se a opção <literal +>ForcePatch</literal +> for usada, todos os eventos que tentem alterar o remendo que é usado neste canal serão ignorados, e o remendo <literal +>x</literal +> será usado em alternativa. </para> + +<para +>A opção <literal +>ForcePatch</literal +> poderá ser útil, por exemplo, para usar sempre o remendo de percussão no canal de percussão. </para> + +</sect2> + +<sect2 id="the-options-section"> +<title +>A seção <literal +>OPTIONS</literal +></title> + +<para +>A seção <literal +>OPTIONS</literal +> tem algumas opções gerais que poderão ser bastante úteis: </para> + +<screen +>OPTIONS +PitchBenderRatio = r +MapExpressionToVolumeEvents +END +</screen> + +<para +>Você poderá indicar ambas as opções, somente uma, ou nenhuma delas. </para> + +<para +>O valor do <literal +>PitchBenderRatio r</literal +> tem a proporção pela qual os eventos de ajuste da frequência serão multiplicados. Isto é, quando um arquivo tentar enviar um evento de ajuste de frequência com um valor <literal +>n</literal +>, o valor real que será enviado é <literal +>n*(r/4096)</literal +> (o valor <literal +>4096</literal +> é para não ter que colocar valores decimais no arquivo do mapa). </para> + +<para +>Isto é usado porque o padrão do <acronym +>GM</acronym +> diz que, quando um teclado MIDI recebe um evento de Ajuste de Frequência com um valor de dados 4096, deverá mudar a nota para uma superior, mas alguns teclados MIDI tentam ajustar a nota inicial por duas ou mais notas mais altas (às vezes, uma oitava mais alta!) quando recebem um 4096 . Isto poderá ser facilmente corrigido se enviar valores diferentes, de modo que, em vezde enviar um 4096, o KMid envie o valor apropriado. </para> + +<para +>Quando a opção <literal +>MapExpressionToVolumeEvents</literal +> estiver definida no arquivo do mapa e um arquivo MIDI tente enviar um evento de expressão, o KMid irá enviar um evento de volume que é compreendido pela maioria dos teclados não-GM e que tem um efeito semelhante. Existem muitos arquivos MIDI que usam eventos de expressão para desvanescer no fim da música, de modo que ouça a música cada vez mais baixa; você poderá ativar esta opção e ver se isto é o que você realmente precisa, porque o seu sintetizador MIDI poderá estar ignorando os eventos de expressão devido ao fato de não os compreender. </para> + +</sect2> + +</sect1> + +<sect1 id="using-midimaps"> +<title +>Usando mapas MIDI</title> + +<para +>Para usar um mapa MIDI, basta abrir o diálogo de <guilabel +>Configuração do MIDI</guilabel +>, selecionando o item <guimenuitem +>Configuração do MIDI...</guimenuitem +> no menu <guimenu +>Configurações</guimenu +>. </para> + +<para +>Depois, clique no botão <guilabel +>Navegar...</guilabel +>, selecione o arquivo de mapa com o diálogo de abertura de arquivos e divirta-se com a música ! :-) </para> +</sect1> +</chapter> + +<chapter id="advanced-features"> +<title +>Recursos avançados</title> + +<sect1 id="the-channel-view"> +<title +>A Visão dos Canais</title> + +<para +>A visão dos Canais é uma janela onde lhe é mostrada uma área de teclados (um por cada canal MIDI). Nestes teclados, as notas que estão sendo tocadas em cada instrumento ficam iluminadas para que você possa ver o que cada instrumento está tocando. </para> + +<sect2 id="changing-instruments"> +<title +>Mudando instrumentos</title> + +<para +>Você poderá usar a janela dos Canais para mudar o instrumento que cada canal está tocando. Em cada canal existe uma lista onde você poderá escolher o instrumento. Logo que o altere, o botão verde ao lado dele irá mudar para vermelho, indicando que este não é o teclado padrão. </para> + +<para +>Se você quiser mudar outra vez o instrumento padrão, clique no botão vermelho, para que ele seja então alterado. </para> + +</sect2> + +<sect2 id="changing-the-look"> +<title +>Mudando o modo de aparência</title> + +<para +>A Visão dos Canais possui duas formas diferentes (por enquanto) de mostrar as notas tocadas, e você poderá selecioná-las no item <guimenuitem +>Opções da Janela de Canais...</guimenuitem +> do menu <guimenu +>Configurações</guimenu +>. </para> + +<para +>Você poderá optar entre um modo em que as teclas tocadas são pressionadas, como se fosse um piano normal (com <guilabel +>Aparência 3D</guilabel +>), ou um modo em que as teclas são também pintadas de vermelho, de modo que as teclas pressionadas sejam facilmente reconhecidas (<guilabel +>3D - preenchido</guilabel +>). Se você tocar piano ou outro instrumento musical, você poderá usar esta janela para aprender a tocar uma música sozinho. Eu usei Foi usada técnica e ela (junto com uma redução de tempo) é ótima para aprender novas composições. </para> + +</sect2> + +</sect1> + +<sect1 id="the-tempo-lcd"> +<title +>O <acronym +>LCD</acronym +> do Tempo</title> + +<para +>Isto mostra o tempo em que é tocada uma música, isto é, a velocidade da música. Quanto maior for este número, mais rapidamente será tocada a música. </para> + +<para +>Você poderá também alterar o tempo da canção, por isso, se uma música tocar muito depressa para você seguir as letras, você poderá tocá-la mais devagar. Para alterar o tempo, você poderá usar os cursores que aparecem de cada lado do <acronym +>LCD</acronym +>. </para> + +<para +>Logo que você tenha alterado o tempo, você poderá voltar ao valor padrão fazendo um duplo-clique no <acronym +>LCD</acronym +>. </para> + +</sect1> + +</chapter> + +<chapter id="key-bindings"> +<title +>Atalhos de teclado</title> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry +>Tecla</entry> +<entry +>Ação</entry> +</row> +</thead> +<tbody> +<row> +<entry +><keycap +>Espaço</keycap +></entry> +<entry +>Toca a música carregada, se não estiver tocando, ou coloca-a em pausa, se já estiver tocando.</entry> +</row> +<row> +<entry +><keycap +>Backspace</keycap +></entry> +<entry +>Pára de tocar</entry> +</row> +<row> +<entry +><keycap +>Seta Direita</keycap +></entry> +<entry +>Próxima música na coleção atual</entry> +</row> +<row> +<entry +><keycap +>Seta Esquerda</keycap +></entry> +<entry +>Música anterior na coleção atual</entry> +</row> +<row> +<entry +><keycap +>Seta Acima</keycap +></entry> +<entry +>Sobe uma linha na letra da música</entry> +</row> +<row> +<entry +><keycap +>Seta Abaixo</keycap +></entry> +<entry +>Desce uma linha na letra da música</entry> +</row> +<row> +<entry +><keycap +>Page Up</keycap +></entry> +<entry +>Sobe uma página na letra da música</entry> +</row> +<row> +<entry +><keycap +>Page Down</keycap +></entry> +<entry +>Desce uma página na letra da música</entry> +</row> +<row> +<entry +><keycap +>1</keycap +></entry> +<entry +>Mostra os eventos de texto</entry> +</row> +<row> +<entry +><keycap +>2</keycap +></entry> +<entry +>Mostra os eventos das letras</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +></entry> +<entry +>Abre uma música</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>Q</keycap +></keycombo +></entry> +<entry +>Sai do &kmid;</entry> +</row> +<row> +<entry +><keycap +>F1</keycap +></entry> +<entry +>Abre este documento</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +</chapter> + +<chapter id="frequently-asked-questions"> +<title +>Perguntas Mais Frequentes (FAQ)</title> + +<qandaset> +<qandaentry> +<question> +<para +>O que é exatamente um arquivo MIDI? </para> +</question> + +<answer> +<para +>Um arquivo MIDI é um arquivo que contém informações sobre como tocar uma música, isto é, contém apenas as notas, o ritmo, a velocidade, &etc;. Isto implica que o mesmo arquivo MIDI, quando for tocado em dois dispositivos diferentes, possa produzir resultados bastante diferentes, assim como uma sinfonia pode ser tocada de forma diferente por dois músicos diferentes. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Consigo obter um som melhor com um reprodutor de MP3/WAV, porque devo usar o &kmid;? </para> +</question> +<answer> +<para +>Bem, não se pode forçar ninguém a usar o &kmid;, mas um arquivo MIDI típico ocupa 50 Kb. enquanto que um arquivo MP3 típico ocupa 4 Mb. (e isto é uma taxa de compressão de 1:80 :-) . E, como um bom sintetizador, você poderá obter uma qualidade de som comparável. Mais ainda, com um arquivo MIDI, você poderá alterar os instrumentos individualmente, a velocidade da música, &etc;, por isso terá um maior controle global. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Não consigo fazer a minha placa AWE funcionar com o KMid; o que posso fazer? </para> +</question> +<answer> +<para +>Isto poderá acontecer quando você obtém uma distribuição binária (em RPM ou DEB) do &kmid;. Isso acontece porque o &kmid; foi compilado sem o suporte de AWE. Se não funcionar, você terá de obter um pacote com o código-fonte do mesmo (por exemplo da <ulink url="http://www.arrakis.es/~rlarrosa/kmid.html" +>página pessoal do &kmid;</ulink +>) </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Eu quero adicionar uma pasta inteira para uma coleção, mas ter que adicionar os arquivos MIDI, um a um, não é nada engraçado. </para> +</question> + +<answer> +<para +>Eu concordo, por isso é que o &kmid; suporta o 'Arrastar & Soltar'. Basta abrir, no &konqueror;, a pasta que deseja adicionar, selecionar todos os arquivos, arrastá-los e soltá-los no &kmid;. </para> +<para +>Certifique-se de ativar a opção <guimenuitem +>Auto-Adicionar à Coleção</guimenuitem +> antes, para que os arquivos sejam adicionados à coleção atual. Se você não fizer isto, os arquivos serão adicionados à Coleção Temporária. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Não consigo seguir as letras; está tocando muito depressa! </para> +</question> +<answer> +<para +>Você poderá clicar na seta esquerda do <acronym +>LCD</acronym +> do tempo para a música tocar mais devagar. Lembre-se que poderá fazer duplo-clique no <acronym +>LCD</acronym +> para voltar ao tempo padrão. </para +> +</answer> +</qandaentry> +</qandaset> + +</chapter> + +<chapter id="final-notes"> +<title +>Notas finais</title> + +<sect1 id="some-tips-and-tricks"> +<title +>Alguns truques e dicas</title> + +<para +>Serão incluídas algumas sugestões para que você possa tirar o máximo proveito de todos os recursos do &kmid;: </para> + +<variablelist> +<varlistentry> +<term +>Abrindo arquivos</term> +<listitem> +<para +>Mantenha sempre uma tela do &kde; com uma janela do &konqueror; aberta na pasta base dos arquivos MIDI e o &kmid; nesta tela (se estiver tocando um arquivo MIDI) ou pregado (se estiver tocando um arquivo de Karaoke :-)). Desta forma, quando a coleção ativa terminar ou se a pessoa quiser tocar algum arquivo, poderá ir à janela do &konqueror;, selecionar os arquivos desejados, arrastá-los e soltá-los na janela do &kmid;. </para> + +<para +>Suponha que você deseje tocar alguns arquivos MIDI, mas não quer adicioná-los a nenhuma coleção; nesse caso, basta desligar a opção <guimenuitem +>Auto-Adicionar à Coleção</guimenuitem +> no menu <guimenu +>Coleções</guimenu +> e abrir os arquivos, para que eles sejam adicionados à Coleção Temporária. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Outro método para criar uma Coleção nova</term> +<listitem> +<para +>Suponha que você possui os arquivos MIDI <filename +>A.mid</filename +>, <filename +>B.mid</filename +> e <filename +>C.mid</filename +>. Primeiramente, você só deseja tocar o primeiro arquivo MIDI, por isso irá deselecionar a opção <guimenuitem +>Auto-Adicionar</guimenuitem +> e abrir o <filename +>A.mid</filename +>. Você irá obter então uma Coleção Temporária com apenas um arquivo MIDI. </para> +<para +>Então decide tocar também o B e o C, fazendo uma coleção com ambos, o que faria? </para> +<para +>Simples; selecione o <guimenuitem +>Auto-Adicionar</guimenuitem +> e abra os arquivos <filename +>B.mid</filename +> e <filename +>C.mid</filename +> (usando um dos vários métodos), para que eles sejam adicionados automaticamente à Coleção Temporária, que irá então ter o <filename +>A.mid</filename +>, o <filename +>B.mid</filename +> e o <filename +>C.mid</filename +>. A esta altura, você poderá abrir a janela de <guilabel +>Organizar as Coleções</guilabel +>, selecionar a Coleção Temporária e clicar no botão <literal +>Copiar</literal +>, indicando finalmente o nome da coleção nova. Assim, passa a ter uma coleção nova, que contém os arquivos MIDI A, B e C, e que não é removida quando você sair do &kmid;. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="hall-of-kmids-friends"> +<title +>Painel de amigos do &kmid;</title> + +<para +>Estas são algumas pessoas que enviaram para o autor alguns arquivos MIDI ou um postal; para todos eles, muito obrigado! Ouvir estas músicas e ler estes postais irão manter o autor cada vez mais programando no &kmid;. </para> + +<itemizedlist> +<listitem> +<para +>Ola Sigurdson - <literal +>Taking Care of Business</literal +> (Bachman Turner Overdrive)</para> +</listitem> +<listitem> +<para +>EG Lim - Um postal muito bonito mesmo de Penang.</para> +</listitem> +<listitem> +<para +>Guenther Starnberger - <literal +>Amadeus</literal +> (Falco) e <literal +>Schrei Nach Liebe</literal +> (Die Aerzte)</para> +</listitem> +<listitem> +<para +>Leandro Terrés - <literal +>All That She Wants</literal +> e <literal +>The Sign</literal +> (Ace of Base)</para> +</listitem> +<listitem> +<para +>Nick Stoic - Dois arquivos midi</para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="about-the-author"> +<title +>Sobre o autor</title> + +<para +>O &kmid; foi feito pelo Antonio Larrosa Jiménez, em Málaga (Espanha). Eu sou um estudante de Matemática na Universidade de Málaga, estando atualmente cursando o terceiro ano, assim não tenho muito tempo livre para os meus passatempos, embora tente sempre fazer alguns :-). Os meus passatempos incluem : Programar, colecionar arquivos MIDI, tocar música e provar teoremas ;-). </para> + +<para +>Se quiser saber onde obter arquivos de MIDI/Karaoke, se tiver alguma dúvida, um erro para comunicar, uma idéia ou uma funcionalidade que desejasse ver no &kmid; ou se simplesmente quiser deixar o autor contente, esteja à vontade para enviar um e-mail para: <email +>larrosa@kde.org</email +> ou <email +>antlarr@arrakis.es</email +> </para> + +<para +>ou envie uma carta por correio normal para: </para> + +<literallayout +>Antonio Larrosa Jimenez +Rio Arnoya 10 5B +Málaga (Espanha) +</literallayout> + +<para +>Você irá deixar o autor realmente contente se lhe enviar um postal do local onde vive ou um arquivo de MIDI/Karaoke de um grupo local do seu país. Todos que me enviarem um postal ou um arquivo MIDI irão ter o seu nome no Painel de Amigos do &kmid; (desde que não se oponham a isso). Por favor, contacte o autor antes de enviar os arquivos MIDI, porque ele já poderá tê-los. </para> + +<para +>O autor gostaria ainda de reforçar que o &kmid; foi feito completamente no tempo-livre, sem qualquer apoio monetário de nenhuma companhia ou particulares. Por isso, tenha em mente que, quando o usar, a única coisa que mantém o autor trabalhando nisto é a obtenção das reações dos seus usuários (um postal ou apenas um e-mail). </para> + +<para +>O autor gostaria também de agradecer às seguintes pessoas pela sua ajuda no desenvolvimento do &kmid;: </para> + +<itemizedlist> +<listitem> +<para +>Paul J. Leonard <email +>P.J.Leonard@bath.ac.uk</email +> - Suporte para placas AWE </para> +</listitem> +<listitem> +<para +>Sebestyen Zoltan <email +>szoli@digo.inf.elte.hu</email +> - Passagem para o BSD e testes com o AWE </para> +</listitem> +<listitem> +<para +>Christian Esken <email +>esken@kde.org</email +> - Por organizar os esforços multimídia do KDE </para> +</listitem> +<listitem> +<para +>Stephan Kulow <email +>coolo@kde.org</email +>- 'Scripts' do 'configure' e ajuda no <command +>automake</command +> e no <command +>CVS</command +> </para> +</listitem> +<listitem> +<para +>Jaroslav Kysela - Ajuda a fazer o suporte do controlador do &Linux; Ultrasound Project (Projeto Ultrasound do &Linux;) </para> +</listitem> +<listitem> +<para +>Takashi Iwai e Joseph H. Buehler - Correção da frequência das placas AWE, que estava muito alta </para> +</listitem> +<listitem> +<para +>Adrian Knoth - Por me dar boas notícias e várias sugestões </para> +</listitem> +<listitem> +<para +>Kevin Street - Correção para suportar o FreeBSD 3.0 </para> +</listitem> +<listitem> +<para +>Os agradecimentos vão também para o Jose Luis Sanchez pelo seu teste do suporte de GUS, ao Ignacio Garcia por testar o suporte do AWE, ao Hans Petter Bieker, Ola Sigurdson, Marc Diefenbruch, Peter Gritsch, Magnus Pfeffer, Urko Lusa, Peter-Paul Witta, Thorsten Westheider, Ulrich Cordes e a todos que enviaram para o autor as correções, relatórios de erros ou apenas mensagens de e-mail encorajando-me. </para> +</listitem> +<listitem> +<para +>E, claro, a todos os músicos fabulosos na Net que continuam fornecendo à equipe os vários arquivos MIDI e Karoake maravilhosos. </para> +</listitem> +</itemizedlist> + +<para +>Tradução de Marcus Gama<email +>marcus_gama@uol.com.br</email +></para +> + +</sect1> + +<sect1 id="copyright-and-license"> +<title +>Créditos e Licença</title> + +<para +>O &kmid; possui direitos autorais de Antonio Larrosa Jiménez, 1999-2001</para> + +<para +>A documentação possui direitos autorais de Antonio Larrosa Jiménez 1999, 2001</para> +&underFDL; &underGPL; </sect1> + +</chapter> + +<appendix id="installation"> +<title +>Instalação</title> + +<sect1 id="how-to-obtain-kmid"> +<title +>Como obter o &kmid;</title> +&install.intro.documentation; <para +>Adicionalmente, o &kmid; pode ser encontrado na sua página pessoal, que está em <ulink url="http://www.arrakis.es/~rlarrosa/kmid.html" +> http://www.arrakis.es/~rlarrosa/kmid.html</ulink +>. Na página pessoal, você poderá acompanhar o seu desenvolvimento, ver algumas informações sobre ele, algumas imagens, uma lista dos sítios onde você poderá obter mais músicas de Karaoke, &etc; </para> + +</sect1> + +<sect1 id="requirements"> +<title +>Requisitos</title> + +<para +>O &kmid; precisa, para funcionar, de:</para> + +<itemizedlist> +<listitem> +<para +>&kde;. Bem, você, provavelmente, já terá isto :-) </para> +</listitem> +<listitem> +<para +>Uma placa de som. Uma boa placa de som e/ou sintetizador externo são recomendados, um vez que a qualidade do som depende em grande medida da sua placa de som. Não é o mesmo tocar a música com um dispositivo FM ou com uma placa AWE. </para> + +<para +>Se você não tiver uma placa de som, pode ainda compilar o &kmid; com o <literal +>MODE_DEMO_ONLYVISUAL</literal +> definido para que ele rode como se tivesse uma (mas você não irá obter nenhuma música, obviamente :-( ). </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="compilation-and-installation"> +<title +>Compilação e Instalação</title> +&install.compile.documentation; <para +>Eu incluí alguns exemplos instalados na <filename class="directory" +>$dollar;<envar +>KDEDIR</envar +>/share/apps/kmid</filename +> </para> + +<para +>Se tiver algum problema, não hesite em contactar uma lista de correio do &kde; ou em enviar um relatório diretamente para mim. </para> + +</sect1> + +</appendix> + +</book> +<!-- +Local Variables: +mode: sgml +sgml-omittag: nil +sgml-shorttag: t +End: +--> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kmix/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/kmix/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kmix/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kmix/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/kmix/Makefile.in new file mode 100644 index 00000000000..39595d3369d --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kmix/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kmix +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmix/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmix/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kmix/index.cache.bz2 b/tde-i18n-pt_BR/docs/tdemultimedia/kmix/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..80243f5d0b3 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kmix/index.cache.bz2 diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kmix/index.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/kmix/index.docbook new file mode 100644 index 00000000000..4f04c8fdce0 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kmix/index.docbook @@ -0,0 +1,817 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kmix;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % Brazilian-Portuguese "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Manual do &kmix;</title> + +<authorgroup> +<author +><firstname +>Matt</firstname +> <surname +>Johnston</surname +> <affiliation +> <address +><email +>mattj@flashmail.com</email +></address> +</affiliation> +</author> + +<othercredit role="developer" +><firstname +>Christian</firstname +> <surname +>Esken</surname +> <affiliation +><address +><email +>esken@kde.org</email +></address +></affiliation> +<contrib +>Desenvolvimento</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Helio</firstname +> <surname +>Chissini de Castro</surname +> <affiliation +><address +><email +>helio@kde.org</email +></address +></affiliation> +<contrib +>Desenvolvimento</contrib> +</othercredit> + + +<othercredit role="developer" +><firstname +>Stefan</firstname +> <surname +>Schimanski</surname +> <affiliation +><address +><email +>1Stein@gmx.de</email +></address +></affiliation> +<contrib +>Desenvolvimento</contrib> +</othercredit> + +<othercredit role="reviewer" +><firstname +>Lauri</firstname +> <surname +>Watts</surname +> <affiliation +><address +><email +>lauri@kde.org</email +></address +></affiliation> +<contrib +>Revisão</contrib> +</othercredit> +<othercredit role="translator" +><firstname +>Marcus</firstname +><surname +>Gama</surname +><affiliation +><address +><email +>marcus_gama@uol.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> + +<copyright> +<year +>1996</year +><year +>2005</year> +<holder +>Christian Esken & Matt Johnston</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2005-02-08</date> +<releaseinfo +>2.2</releaseinfo> + +<abstract +><para +>O &kmix; é um aplicativo que permite alterar o volume da sua placa de som.</para +></abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>KMix</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>som</keyword> +<keyword +>volume</keyword> +<keyword +>mixador</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Introdução</title> + +<para +>O &kmix; é o programa mixador do &kde; para a placa de som. Apesar de pequeno, possuí muitas funções. O programa deverá fornecer controles para cada uma das suas placas de som.</para> + +<para +>O &kmix; suporta várias plataformas e controladores de som:</para> + +<itemizedlist> +<listitem +><para +>O controlador de som ALSA.</para +></listitem> +<listitem +><para +>Todas as plataformas Open Sound System. Foi explicitamente testado em &Linux; FreeBSD, NetBSD and BSDI.</para +></listitem> +<listitem +><para +>Máquinas baseadas no &Solaris;.</para +></listitem> +<listitem +><para +>Máquinas baseadas no &IRIX;.</para +></listitem> +<listitem +><para +>Máquinas baseadas no &HP-UX;.</para +></listitem> +</itemizedlist> + +<para +>Se você tiver tanto os controladores ALSA como os do Open Sound System instalados, o KMix usará o controlador ALSA.</para> + +</chapter> + +<chapter id="working-with-kmix"> +<title +>Trabalhando com o &kmix;</title> + +<sect1 id="basic-usage"> +<title +>Fundamentos</title> + +<para +>O funcionamento do &kmix; é bastante direto. Todo o dispositivo de mixagem que a placa de som fornece é representado por uma barra de controle de volume. Dispositivos mono possuem apenas uma barra, dispositivos estéreo podem ter uma ou duas, dependendo da sua escolha. Adicionalmente existe barra deslizante no fundo da janela do &kmix;. Se você possui mais de uma placa de som, uma lista será exibida no topo da janela, onde poderá selecionar entre suas placas de som. <screenshot> +<screeninfo +>A Janela Principal do &kmix;</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-window.png" format="PNG"/></imageobject> +<textobject +><phrase +>A Janela Principal do &kmix;</phrase +></textobject> +</mediaobject> +</screenshot> + +</para> + + +<para +>A janela tem três seções com controles da placa de som: <simplelist> +<member +>Saída: Isto contém os controles que estão mais relacionados com a saída ou reprodução de som, como o controle de volume "Master" (mestre).</member> +<member +>Entrada: Isto contém os controles mais relacionados com a gravação, como o "Capture" (Captura).</member> +<member +>Opções: Isto contém todas as opções que permitem apenas LIGAR ou DESLIGAR alguma funcionalidade (como o "Mic Boost (+20dB)") e as opções de múltipla-escolha como o "Selecione o Microfone: Mic1 ou Mic2").</member> +</simplelist> +</para> + +<para +>Além dos controles de volume, o KMix também contém LED's. A regra geral das cores é:</para> +<simplelist> +<member +>Verde: Um LED que lida com a reprodução</member> +<member +>Vermelho: Um LED que lida com a gravação</member> +<member +>Amarelo: Um LED que lida com as capacidades especiais da placa de som</member> +</simplelist> +</sect1> + +<sect1 id="volume-sliders"> +<title +>Controles de volume</title> + +<para +>Os controles de volume na seção "Saída" e "Entrada" consistem em (de cima para baixo): <screenshot> +<screeninfo +>Controle do Volume (Seção "Entrada")</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-channel-playback.png" format="PNG"/></imageobject> +<textobject +><phrase +>Controle do Volume (Seção "Entrada")</phrase +></textobject> +</mediaobject> +</screenshot> + +<simplelist> +<member +>Um ícone, representando a função do controle.</member> +<member +>Um LED Verde de Mudo, que permite desligar um controle (A luz apaga/fica mais escura) ou voltar a ligá-lo (a luz liga/fica brilhante).</member> +<member +>Uma barra para controle de volume (Sugestão: Você poderá ocultar a legenda da barra, por exemplo, se a mesa de mistura ocupar muito espaço da sua tela).</member> +<member +>Se um controle suportar a gravação, irá existir um LED vermelho de Gravação. Se o LED estiver aceso (vermelho claro), o controle está selecionado para gravação. Se não estiver aceso (vermelho escuro), o controle NÃO está selecionado para gravação.</member> +</simplelist> + +<screenshot> +<screeninfo +>Controle de volume com Opções de Gravação (Seção "Saída")</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-channel-record.png" format="PNG"/></imageobject> +<textobject +><phrase +>Controle de volume com Opções de Gravação (Seção "Saída")</phrase +></textobject> +</mediaobject> +</screenshot> + + +</para> + +<para +>Os controles na seção "Opções" consistem num LED e numa breve descrição da função. Lembre-se, por favor, que os LEDs vermelhos são para gravação, enquanto os LEDs amarelos são para os recursos especiais da placa de som. Se não tiver certeza do significado de um controle, peça ao fornecedor do controlador da placa de som (para a maioria das distribuições Linux atuais é o ALSA em http://www.alsa-project.org).</para> + +<para +>As barras de volume possuem um menu de contexto, acessível através de um clique no botão direito na barra ou no ícone do dispositivo (no topo). Algumas entradas são possíveis, mas apenas as aplicáveis são mostradas.</para> + +<variablelist> + +<varlistentry> +<term +><guilabel +>Separar Canais</guilabel +></term> +<listitem +><para +>Mostra uma ou duas barras de volume. Isto aplica-se apenas a dispositivos estéreo. A barra de controle direita controla o volume do lado direito, e a esquerda controla o volume do lado esquerdo.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Mudo</guilabel +></term> +<listitem +><para +>Desliga ou liga o som do dispositivo</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Ocultar</guilabel +></term> +<listitem +><para +>Se não estiver interessado em regular este dispositivo pode ocultá-lo com esta opção. Se você desejar mostrá-lo novamente, apenas terá que a selecionar a opção <guilabel +>Canais</guilabel +> (ver abaixo)</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Configurar Atalhos</guilabel +></term> +<listitem +><para +>Você pode controlar um dispositivo com o teclado. Use esta opção do menu para mostrar o dialogo do &kde; <guilabel +>Configurar Atalhos</guilabel +>. Aqui você pode definir as teclas para aumentar e diminuir o volume, bem como para tirar o som ao dispositivo. As teclas são globais e funcionam mesmo quando o &kmix; está iconificado ou embutido.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Canais</guilabel +></term> +<listitem +><para +>Você irá obter um diálogo onde poderá configurar, por seção (Saída, Entrada, Opções), que canais deseja ver.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Mostrar Barra de Menu</guilabel +></term> +<listitem +><para +>Esta opção não é específica de nenhum dispositivo, mas afeta a janela do mixador. Você pode usar esta opção para ocultar ou mostrar a barra de menu. Também poderá fazer isto clicando no Atalho (normalmente CTRL-m)</para +></listitem> +</varlistentry> + +</variablelist> +</sect1> + +<sect1 id="panning-slider"> +<title +>Barra deslizante</title> + +<para +>Com esta barra você pode controlar a distribuição de volume entre a caixa de som esquerda e direita. Esta barra é um regulador geral, afetando todos os Volumes Mestres. A posição central é a padrão. Arrastando a barra para a esquerda diminui o volume na caixa de som direita, e vice versa para a direita. Obviamente, isto pode estar trocado se suas caixas de som não estiverem posicionadas corretamente.</para> +<para +>Para os Sistemas Surround, observe que o dispositivo Master (mestre) normalmente regula apenas os alto-falantes frontais. Esta é uma limitação da sua placa de som. Se a sua placa de som tiver </para +> +<para +>Se a sua placa de som não tiver um dispositivo Master, algum outro dispositivo poderá ser obtido pelo KMix - para a maioria das pessoas este é o controle Wave (ou PCM).</para> + +</sect1> + +<sect1 id="configuration-options"> +<title +>Opções de configuração</title> + +<para +>Use o <guilabel +>Menu -> Configuração -> Configurar o KMix...</guilabel +> para escolher as opções. Estes itens são:</para> + +<variablelist> +<varlistentry> +<term +><guilabel +>Embutir no painel</guilabel +></term> +<listitem +><para +>Se selecionado, o &kmix; irá ser embutido quando clicar no botão de fechar janela. Se não estiver selecionado, o &kmix; será encerrado quando clicar no botão de fechar janela. Atenção: após encerrar você não poderá controlar o volume através das teclas escolhidas por você.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Habilitar o controle de volume no painel de sistema</guilabel +></term> +<listitem +><para +>Se habilitado, ao clicar com o botão esquerdo no ícone da bandeja do KMix, irá mostrar uma janela com um controle de volume para o dispositivo preferido (Dica: atualmente você não pode mudar este dispositivo - ele é selecionado pelo KMix em alternativa). Se a opção estiver desativada, a janela principal do KMix será mostrada por completo ao clicar com o botão esquerdo no ícone da bandeja.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Mostrar graduação</guilabel +></term> +<listitem +><para +>Mostrar linhas para as graduações nas barras.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Mostrar rótulos</guilabel +></term> +<listitem +><para +>Exibe rótulos para cada um dos dispositivos de som. Quer esta função esteja selecionada ou não, você verá esta informação em texto, sempre que passar com o mouse por cima do ícone de cada dispositivo.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Restaurar volumes no login</guilabel +></term> +<listitem +><para +>Faz com que o KDE restaure os volumes quando você se logar de novo. Isto restaura os seus níveis de volume pessoais, que são gravados quando você sair. Se o seu Sistema Operacional gravar os níveis de volume, você talvez não precise desta opção (embora, num computador com vários usuários isto ainda seja necessário).</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + + +</chapter> + + +<chapter id="working-with-kmixapplet"> +<title +>O painel do mini-aplicativo do &kmix;</title> + +<para +>O painel do mini-aplicativo do &kmix;é uma interface alternativa do &kmix;. Você pode adicioná-lo ao painel do KDE através do menu do painel (<guilabel +>Menu do Painel</guilabel +> -> <guilabel +>Adicionar</guilabel +> -> <guilabel +>Mini-aplicativo</guilabel +> -> <guilabel +>Mini-aplicativo KMix</guilabel +>). </para> + +<para +>Você pode trabalhar com o mini-aplicativo &kmix; conforme descrito na <link linkend="working-with-kmix" +>janela principal</link +> incluindo o menu de contexto. Devido ao espaço limitado do painel, existem algumas diferenças: <simplelist> +<member +>Menu principal não disponível.</member> +<member +>Se tiver várias placas de som, não será possível mudar a seleção do mixador depois da seleção inicial.</member> +<member +>Sem ícone embutido. Se você quiser usar o ícone embutido terá que adicionalmente iniciar o &kmix;através do menu K (normalmente em <guilabel +>Menu-K</guilabel +> -> <guilabel +>Multimídia</guilabel +> -> <guilabel +>Mixagem de Som</guilabel +>).</member> +<member +>Os ícones só estão disponíveis quando o painel possuir dimensão suficiente.</member> +<member +>Não estão disponíveis os rótulos do dispositivo.</member> +<member +>A configuração é efetuada através do menu do painel - você pode configurar cores e a direção da barra aqui.</member> +<member +>Sem gravação automática de volume. Se quiser gravar os seus níveis de volume quando sair para serem restaurados mais tarde, terá também que iniciar o KMix a partir do menu K.</member> +</simplelist> + +</para> +</chapter> + + +<chapter id="advanced-kmix"> +<title +>Recursos avançados do KMix</title> + + + +<warning +><para +>Este capítulo descreve uma funcionalidade do &kmix; destinada aos usuários experientes. A maior parte dos usuários nunca necessitará dela, assim você pode seguramente pular este capítulo</para +></warning> + + +<sect1 id="dcop-overview"> +<title +>A Interface DCOP</title> + +<para +>Às vezes você deseja fazer algo especializado. Algo como controlar o mixador a partir de outro aplicativo ou tornar mudo o dispositivo mestre todos os dias às 10 da noite. O &kmix; possui uma interface DCOP que lhe permite alcançar muito com o mínimo esforço. Você pode abrir um console e digitar <guilabel +>dcop kmix</guilabel +> para explorar a interface DCOP do &kmix;. As interfaces específicas do &kmix; são:</para> + +<variablelist> +<varlistentry> +<term +><guilabel +>Mixer0</guilabel +></term> +<listitem +><para +>Permite controlar o primeiro mixador. Você pode definir níveis de volume, tornar mudo o dispositivo, alterar o balanço, obter o nome do mixador e muito mais. Digite <guilabel +>dcop kmix Mixer0</guilabel +> se quiser explorar todas as funcionalidades. Existem mais entradas como <guilabel +>Mixer1</guilabel +> para o caso tenha instalado várias placas de som.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>kmix-mainwindow#1</guilabel +></term> +<listitem +><para +>O estilo gráfico da janela pode ser controlado com este comando. Você pode tornar invisível ou visível a janela, redimensioná-la e muito mais. Digite <guilabel +>dcop kmix kmix-mainwindow#1</guilabel +> se quiser explorar todas as funcionalidades.</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + + + + + +<sect1 id="dcop-examples"> +<title +>Exemplos do DCOP</title> + +<variablelist> +<varlistentry> +<term +><guilabel +>dcop kmix kmix-mainwindow#1 hide</guilabel +></term> +<listitem +><para +>Oculta a janela gráfica. Digite <guilabel +>dcop kmix kmix-mainwindow#1 show</guilabel +> ou clique no ícone embutido para mostrá-la novamente.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>dcop kmix kmix-mainwindow#1 resize 1 1</guilabel +></term> +<listitem +><para +>Redimensiona a janela gráfica para a menor dimensão possível. Esta dimensão permite que todas as barras ( e outros elementos gráficos) se enquadrem na janela.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>dcop kmix Mixer0 mixerName</guilabel +></term> +<listitem +><para +>Retorna o nome do primeiro mixador, por exemplo <guilabel +>Sound Fusion CS46xx</guilabel +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>dcop kmix Mixer1 setVolume 0 10</guilabel +></term> +<listitem +><para +>Define o nível de volume do segundo mixador, dispositivo em percentagem de 0 a 10. Dispositivo 0 normalmente o dispositivo mestre, embora nem sempre. Se quiser desativar o (primeiro) dispositivo principal da segunda placa de som , pode usar <guilabel +>dcop kmix Mixer1 setMasterVolume 0</guilabel +></para +></listitem> +</varlistentry> +</variablelist> + +<para +>Você pode executar estes comandos diretamente através de um console no KDE. Se precisar executar comandos dcop de outro local, por exemplo a partir de um script de crontab, você tem que definir a variável de ambiente <guilabel +>DCOPSERVER</guilabel +> (como na primeira linha do seu ~/.DCOPservidor_nome da máquina_:0 file), por exemplo: </para> + <!-- Don't know a better way to format code - esken --> +<simplelist> +<member +>#!/bin/sh</member> +<member +>DCOPSERVER=`cat /home/suapasta/.DCOPservidor_nome da máquina_:0 | grep local`</member> +<member +>export DCOPSERVER</member> +<member +>dcop kmix Mixer0 setMasterVolume 0</member> +</simplelist> + +</sect1> + +<sect1 id="tips-and-tricks"> +<title +>Dicas e Truques</title> + +<variablelist> +<varlistentry> +<term +><guilabel +>Usando os controladores ALSA e OSS ao mesmo tempo +></guilabel +></term> +<listitem> +<para +>O KMix no Linux pode usar tanto o controlador ALSA como o controlador OSS. Se você precisar utilizar os dois controladores ao mesmo (situação rara), pode fazer o seguinte: Sair do KMix e adicionar a seguinta linha no seu arquivo <guilabel +>kmixrc</guilabel +> na seção de configuração global.</para> +<para +><guilabel +>MultiDriver=true</guilabel +></para> +<para +>Inicie novamente o KMix. Se clicar em <guilabel +>Ajuda->Informação de Hardware</guilabel +> deverá ver "<guilabel +>controladores de Som utilizados: ALSA0.9 + OSS</guilabel +>" e "<guilabel +>Modo experimental de controlador-múltiplo ativado</guilabel +>"</para> +<warning +><para +>Aviso: Provavelmente irá ver todas os mixadores duplicados.</para +><para +>Não existe suporte para esta configuração.</para +></warning> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +</chapter> + +<chapter id="credits"> +<title +>Créditos e Licença</title> + +<para +>Desenvolvedores principais</para> + +<itemizedlist> +<listitem +><para +>Direitos Autorais de 1996-2000 Christian Esken</para +></listitem> +<listitem +><para +>Direitos Autorais de 2000-2003 Christian Esken & Stefan Schimanski</para +></listitem> +<listitem +><para +>Direitos Autorais de 2003-2005 Christian Esken & Helio Chissini de Castro</para +></listitem> +</itemizedlist> + +<para +>Contribuições:</para> + +<itemizedlist> +<listitem +><para +>Christian Esken <email +>esken@kde.org</email +></para +></listitem> +<listitem +><para +>Stefan Schimanski <email +>1Stein@gmx.de</email +></para +></listitem> +<listitem +><para +>Paul Kendall <email +>paul@orion.co.nz</email +> - Porte para SGI</para +></listitem> +<listitem +><para +>Sebestyen Zoltan <email +>szoli@digo.inf.elte.hu</email +> - Correções para FreeBSD</para +></listitem> +<listitem +><para +>Faraut Jean-Louis <email +>jlf@essi.fr</email +> - Correções para Solaris</para +></listitem> +<listitem +><para +>Nick Lopez <email +>kimo_sabe@usa.net</email +> - Porte para ALSA</para +></listitem> +<listitem +><para +>Helge Deller <email +>deller@gmx.de</email +> - Porte para HP-UX</para +></listitem> +<listitem +><para +>Lennart Augustsson <email +>augustss@cs.chalmers.se</email +> - Correções para o *BSD</para +></listitem> +</itemizedlist> + +<para +>Direitos Autorais de Documentação 2000 Matt Johnston <email +>mattj@flashmail.com</email +></para> + +<para +>Atualizado em 2003 para corresponder ao &kmix; V1.91 por Christian Esken <email +>esken@kde.org</email +></para> + +<para +>Atualizado em 2005 para corresponder ao &kmix; V2.2 por Christian Esken <email +>esken@kde.org</email +></para> + + +<para +>Baseado na documentação de Christian Esken <email +>esken@kde.org</email +></para> +<para +>Tradução de Marcus Gama<email +>marcus_gama@uol.com.br</email +></para +> +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Instalação</title> + +<sect1 id="getting-kmix"> +<title +>Como obter o &kmix;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Requisitos</title> + +<para +>Obviamente, o &kmix; só é útil se você tiver uma placa de som. O &kmix; suporta várias plataformas e controladores de som:</para> + +<itemizedlist> +<listitem +><para +>Todas as plataformas Open Sound System. Foi explicitamente testado em &Linux; FreeBSD, NetBSD and BSDI.</para +></listitem> +<listitem +><para +>Máquinas baseadas no &Solaris;.</para +></listitem> +<listitem +><para +>Máquinas baseadas no &IRIX;.</para +></listitem> +<listitem +><para +>O controlador de som ALSA.</para +></listitem> +<listitem +><para +>Máquinas baseadas no &HP-UX;.</para +></listitem> +</itemizedlist> + +</sect1> + +<sect1 id="compilation"> +<title +>Compilação e Instalação</title> +&install.compile.documentation; </sect1> + +</appendix> + +</book> +<!-- +Local Variables: +mode: sgml +sgml-omittag: nil +sgml-shorttag: t +End: +--> + diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/krec/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/krec/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/krec/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/krec/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/krec/Makefile.in new file mode 100644 index 00000000000..8f524359db9 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/krec/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/krec +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/krec/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/krec/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/krec/index.cache.bz2 b/tde-i18n-pt_BR/docs/tdemultimedia/krec/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..082d935a307 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/krec/index.cache.bz2 diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/krec/index.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/krec/index.docbook new file mode 100644 index 00000000000..9dd9eb09996 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/krec/index.docbook @@ -0,0 +1,651 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&krec;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Brazilian-Portuguese "INCLUDE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>Manual do &krec;</title> + +<authorgroup> +<author +><firstname +>Arnold</firstname +> <surname +>Krille</surname +> <affiliation +> <address +><email +>arnold@arnoldarts.de</email +></address> +</affiliation> +</author> +</authorgroup> + +<othercredit role="translator" +><firstname +>Marcus</firstname +><surname +>Gama</surname +><affiliation +><address +><email +>marcus_gama@uol.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> + +<copyright> +<year +>2002</year> +<year +>2003</year> +<year +>2004</year> +<holder +>Arnold Krille</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2004-03-01</date> +<releaseinfo +>0.5.1</releaseinfo> + +<!-- + vim: tw=80 et sw=2 ts=2 +--> +<abstract> +<para +>O &krec; é um aplicativo de gravação para o &arts;. Pode ser usado para gravar qualquer som vindo ou enviado através do computador. Alguns efeitos dinâmicos estão implementados tal como a possibilidade de tocar o que estiver gravando. </para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>KRec</keyword> +<keyword +>aRts</keyword> +<keyword +>gravar</keyword> +<keyword +>interface</keyword> +</keywordset> + +</bookinfo> + +<!-- + TODO: (ordered by priority) + - Explained: + - Mainwidget + - more on exports + + Quality settings + + possible more examples for the compressors + + Configuration + + Recording from line-in +--> + +<chapter id="introduction"> +<title +>Introdução</title> + +<sect1 id="why-krec"> +<title +>Porque eu escrevi o &krec;</title> + +<para +>Depois de trabalhar um pouco com o &arts;, cheguei à conclusão que o mesmo não possuía um aplicativo de gravação exceto a ferramenta de linha de comando <command +>artsrec</command +>. Tive que gravar um programa de rádio para uns colegas meus, mixar e masterizar e queria usar o &Linux; para a gravação. Comecei então a escrever o &krec;. </para> +</sect1> + +<sect1 id="what-krec-does"> +<title +>O que o &krec; faz</title> + +<para +>A finalidade do &krec; é bastante simples. Ele conecta-se ao servidor &arts; e grava o que para ele é redirecionado para arquivos. Estes arquivos estão num formato especial do &krec; mas é possível exportá-los para arquivos wave, ogg e mp3. </para> +<para +>O &krec; tem no entanto muito mais funcionalidades. Você pode efetuar gravações múltiplas num arquivo até com funcionalidades de sobreposição. </para> +</sect1> + +<sect1 id="bugs_and_info"> +<title +>Obtendo mais informações</title> +&reporting.bugs; &updating.documentation; </sect1> + +</chapter> + +<chapter id="first_glance"> +<title +>Uma primeira olhada no &krec;</title> + +<!--<para> +Let`s take a first glance at &krec; right after startup and I will try to give +some explainations what the different items are. +</para +>--> + +<screenshot> +<screeninfo +>Aqui está uma captura de tela do &krec;</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-keramik.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Aqui está uma captura de tela do &krec; imediatamente depois de ter sido iniciado.</phrase> +</textobject> +</mediaobject> +</screenshot> + +<sect1 id="first_glance_items"> +<title +>Detalhe da janela principal do &krec;</title> + +<itemizedlist> +<listitem +><para +>No topo encontramos a <emphasis +>barra de menu</emphasis +> e duas <emphasis +>barras de ferramentas</emphasis +>. A primeira contem items úteis do menu <guimenu +>Arquivos</guimenu +>, a segunda barra de ferramentas traz funções importantes do menu <guimenu +>Reproduzir</guimenu +>.</para +></listitem> +<listitem +><para +>A parte central possui partes importantes: na parte esquerda encontra-se o medidor 'VU-Meter' exibindo informações do volume do sinal áudio de atualmente tocado/gravado combinado com um controle de volume para ajustar o nível.</para +></listitem> +<listitem +><para +>A zona central mostra o arquivo e consiste de quatro partes. A primeiro no topo onde se encontra o nome do arquivo, a segunda evidencia as partes gravadas em ordem cronológica e por duração. É permitido desativar ou apagar partes através do menu de contexto. Abaixo está a linha de tempo onde poderá verificar a posição atual e (clicando) mover para a posição desejada. A parte inferior a este bloco contém dois quadros que informam sobre a posição e a duração no formato de tempo que desejar.</para +></listitem> +<listitem +><para +>Na zona inferior existe outra barra de ferramentas contendo um compressor para editar a sua gravação e uma barra de estado mostrando todo tipo de mensagens.</para +></listitem> +</itemizedlist> + +<para +>Veja <xref linkend="krec_explained"/> para mais informações. </para> + +</sect1> +</chapter> + +<chapter id="recording_howtos"> +<title +>Como gravar</title> + +<para +>Este capítulo contém alguns tutoriais passo a passo que lhe mostram o modo de obter boas gravações com o &krec;. </para> + +<sect1 id="recording_from_music"> +<title +>Gravação a partir de fonte de música interna</title> + +<orderedlist> +<listitem +><para +>A primeira coisa a fazer é uma gravação a partir do seu leitor de áudio favorito do &kde;. Assim inicie o &noatun;, o <application +>JuK</application +>; ou o &kaboodle;. Poderíamos utilizar outros leitores mas eles devem usar o &arts; como saída, caso contrário a gravação seria um pouco mais complexa e além do objetivo desta seção. Por isso saia da sombra e selecione uma música para tocar num dos três leitores (todos estes são distribuídos com o tdemultimedia quando obteve o &krec;). </para +></listitem> +<listitem +><para +>No &krec; selecione o <guimenuitem +>Gerenciador de Áudio</guimenuitem +> a partir do menu <guimenu +>Ferramentas</guimenu +>. Você verá então pelo menos uma linha para o &krec;::In e uma linha para o &krec;::Out. A segunda coluna informa sobre o tipo do item, ou <emphasis +>reproduzir</emphasis +> ou <emphasis +>gravar</emphasis +>. A última coluna informa sobre a origem e destino do som deste item. Atualmente o &krec;::In é (deverá ser?) conectado à <emphasis +>in_soundcard</emphasis +> que é o canal de entrada da placa de som mas como queremos gravar a partir do leitor e o leitor reproduz através da <emphasis +>saída_placa de som</emphasis +>, iremos clicar no item &krec;::In para mudar para outra fonte. Selecione <emphasis +>out_soundcard</emphasis +> da janela que aparecerá e clique <guibutton +>Ok</guibutton +>. Para aprender mais sobre o gerenciador de áudio veja <xref linkend="audio_manager"/>. </para +></listitem> +<listitem +><para +>Agora o medidor 'VU-Meter' no &krec; deverá subir ou descer de modo correspondente à música que estiver ouvindo (se não ouvir qualquer som não deverá então ver qualquer coisa no VU). </para +></listitem> +<listitem +><para +>Agora abra um novo arquivo clicando no primeiro item da barra de ferramentas ou selecionando <guimenuitem +>Novo</guimenuitem +> a partir do menu <guimenu +>Arquivos</guimenu +>. Aceite as opções sobre a qualidade por enquanto ou veja <xref linkend="quality"/> para mais informações. </para +></listitem> +<listitem +><para +>Selecione <guimenuitem +>Gravar</guimenuitem +> a partir do menu <guimenu +>Reproduzir</guimenu +> ou pressione a tecla <keycap +>R</keycap +>. Após terminar selecione <guimenuitem +>Parar</guimenuitem +> a partir do mesmo menu ou use a tecla <keycap +>S</keycap +>. </para +></listitem> +<listitem +><para +>Salve o trabalho pelo método padrão, se estiver interessado em exportar veja <xref linkend="exporting"/>.</para +></listitem> +</orderedlist> + +<para +>E é tudo! Agora você pode ouvir a sua gravação ou exportá-la (não se esqueça de retornar ao início). </para> + +</sect1> + +<sect1 id="recording_from_line_in"> +<title +>Gravando a partir de 'Line-In' ou 'Mic-In'</title> + +<para +>Gravar de fontes externas é um pouco mais complicado envolvendo uma variedade de aplicativos e dispositivos de hardware. Eu estou assumindo que o seu hardware está corretamente instalado, os controladores funcionando como devem e você consegue controlar o volume do hardware através do &kmix;. No &kmix; poderá também selecionar os canais para gravação o que basicamente significa que os seus sinais são enviados pelo conversor analógico-digital (abreviado ADC) e que possa ser lido pelo controlador e aplicativos. Este processo funciona de modo diferente na maioria das placas de som e controladores por isso terá que praticar um pouco antes de fazer isto com segurança... </para> +<para +>A segunda coisa mais importante é que o &arts; tem que rodar em modo 'full-duplex'. Isto significa que o &arts; lê e escreve a partir da placa de som ao mesmo tempo. Você terá que iniciar o &kcontrol; e editar configurações do sistema de som (ou pressione Alt+F2 e entre com <command +>kcmshell arts</command +>). Na segunda página você terá que se certificar que caixa de opção do 'full-duplex' esteja selecionada, e clicar <guibutton +>Aplicar</guibutton +> para reiniciar o &arts; o que significa que terá que reiniciar o &krec; também. </para> +<para +>Depois destes procedimentos o medidor 'VU-Meter' (veja <xref linkend="vu-meter"/> para mais informações) do &krec; deverá mover-se de acordo com o sinal áudio que deseja gravar e que tenha selecionado para gravação no &kmix;. Ajustar o volume para os valores corretos é muito importante para gravações adequadas. Se a amplificação vinda da placa de som for muito alta poderão ocorrer falhas digitais porque o <glossterm +>ADC</glossterm +> só pode criar valores entre um mínimo e um máximo e o sinal está muito alto para poder ser cortado digitalmente o que arruinará a gravação. Por outro lado se o volume estiver muito baixo você obterá um ruído e um silvo a partir do hardware áudio que será incluído na sua gravação. Logo terá que escolher um ponto médio tal que o sinal não esteja nem muito alto a ponto de ser cortado e nem muito baixo a ponto que seja perdido no ruído do hardware. </para> +<para +>Agora você pode ajustar o nível uma segunda vez no &krec; passando agora por uma amplificação por software. Aqui é melhor usar o compressor para equalizar as diferenças entre o silêncio e partes com volume muito alto. Mais informações sobre o compressor podem ser encontradas em <xref linkend="compressor"/>. </para> +<para +>Os passos restantes são os mesmos de <xref linkend="recording_from_music"/> do passo quatro e seguintes. Assim se você começou nessa seção já deverá sabê-los. </para> + +</sect1> +</chapter> + +<chapter id="krec_explained"> +<title +>O &krec; esplanado</title> + +<para +>Este capítulo descreve algumas partes e funções do &krec; em detalhes e fornece algumas dicas sobre o seu uso. Os items estão dispostos por ordem alfabética, e não por ordem de importância. </para> + +<sect1 id="audio_manager"> +<title +>O Gerenciador Áudio</title> +<para +>O gerenciador áudio é usado para conectar as saídas de diferentes aplicativos para barramentos novos ou existentes. Um barramento ('bus') é um tipo de distribuidor virtual de sinal. Toda a reprodução ou gravação pode ser conectada exatamente a um barramento mas múltiplos items poderão ser conectados a um barramento. Exemplo: a saída do &noatun; pode ser conectada à saída principal ('main out') <emphasis +>ou</emphasis +> a qualquer outro barramento. Mas múltiplos &noatun;s podem ser todos conectados à saída principal. </para> + +<sect2 id="audio_manager_mw"> +<title +>A janela principal do Gerenciador de Áudio</title> +<para +>Ela contém três colunas: </para> +<orderedlist> +<listitem +><para +>O nome do item que está tocando ou sendo gravado.</para +></listitem> +<listitem +><para +>O tipo do item seja <emphasis +>tocar</emphasis +> ou <emphasis +>gravar</emphasis +>.</para +></listitem> +<listitem +><para +>O barramento ao qual o item está conectado.</para +></listitem> +</orderedlist> +<para +>Clique num item e um diálogo para selecionar os barramentos desejados aparecerá. </para> +</sect2> +<sect2 id="audio_manager_dialog"> +<title +>O diálogo de barramentos</title> +<para +>A parte central mostra todos os barramentos existentes. Selecione um para enviar áudio ou receber através delr. Abaixo você pode criar novos barramentos para conectar ao item. </para> +<tip +><para +>Para gravar a partir de um leitor compatível com &arts; e ouvir aquilo que está atualmente sendo gravado crie um novo barramento (<emphasis +>teste</emphasis +> por exemplo), conecte o seu leitor a ele (não irá ouvir nada por enquanto), conecte o &krec;::In ao novo barramento também e ligue o <guimenuitem +>Reproduzir Através</guimenuitem +>. </para +></tip> +</sect2> + +</sect1> + +<sect1 id="compressor"> +<title +>O Compressor</title> +<para +>Se estiver gravando com um microfone poderá notar que o nível é algumas vezes quase cortado e algumas muito baixo especialmente quando se canta ou se grava voz. Para corrigir este problema você pode usar o compressor. Ele simplesmente reduz todos os sons que ultrapassam um determinado <emphasis +>nível</emphasis +>, determinado por uma valor fornecido em <emphasis +>taxa</emphasis +>. Note que o nível é logarítmico, um valor médio é ainda relativamente baixo, mas muito comum deste modo. Outra nota: a taxa encontra-se no seu valor máximo quando se encontra no seu lado esquerdo, o extremo direito significa sem compressão. Enquanto este método reduz o ruído existe um potenciômetro de saída que aumenta (ou reduz) o som. O <emphasis +>atacar</emphasis +> e <emphasis +>soltar</emphasis +> permite-lhe controlar o tempo após o qual o compressor reage (o tempo que decorrerá após o sinal de entrada exceder o nível) e o tempo para o qual o compressor ainda atuará depois do som ficar abaixo do mesmo nível. </para> +<tip +><para +>Teste-o enquanto fala com o microfone com a opção <quote +>Reproduzir Através</quote +> ativa e irá notar a diferença entre uma versão integral e uma comprimida.</para +></tip> +<sect2 id="compressor_tips"> +<title +>Dicas sobre a utilização do compressor</title> +<para +>Isto são <emphasis +>apenas</emphasis +> dicas. No final a única coisa que conta é como vai soar. Por isso se soar como você quer, provavelmente tem a configuração correta. E não hesite em fazer experiências. </para> +<glosslist> +<glossentry +><glossterm +>Voz normal</glossterm +><glossdef +><para +>A maioria das vezes o som de voz na rádio ou televisão está muito comprimida. Isto porque o principal problema da voz é ter um nível adequado no início da frase mas já inadequado no final. Além disso o final das palavras é menos sonoro que o início. Tudo isto torna impossível utilizar som de voz sem compressão. Exemplo de configuração: Ataque curto, soltura com tempo médio, baixo nível, taxa muito alta.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Controle 1: Limitando o nível</glossterm +><glossdef +><para +>Para limitar apenas os picos mas não comprimir toda a dinâmica use um nível alto, uma taxa alta, um ataque curto, e uma soltura de curta à média. Este procedimento protege a sua gravação de alguma distorção digital interna e, mantendo o nível baixo, remove picos raros e arranja mais espaço para o sinal atual em gravação.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Controle 2: Executando controle real</glossterm +><glossdef +><para +>Fazer controle real de música é difícil e depende totalmente do seu ouvido bem como da música a ser controlada. Normalmente você usará ataques rápidos para obter uma redução de nível suficiente para os graves da batida do tambor. Por outro lado não vai querer que a música tenha altos e baixos só por causa dos graves do tambor por isso irá selecionar uma série mais longa. O fator de compressão não deverá ser muito elevado. O ideal seria ligar um limitador depois do compressor para se ver livre dos cliques e dos cortes.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Instrumentos solitários</glossterm +><glossdef +><para +>Estas configurações dependem do tipo de instrumento. Na gravação é aconselhado o uso de uma opção limitadora.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Última dica</glossterm +><glossdef +><para +>Use os seus ouvidos e pratique um pouco. Tudo é permitido se soa bem!</para +></glossdef +></glossentry> +<!--<glossentry +><glossterm +>Term</glossterm +><glossdef +><para +>Definition</para +></glossdef +></glossentry +>--> +</glosslist> +</sect2> +</sect1> + +<sect1 id="configuration"> +<title +>Configuração</title> +<para +>Duas páginas estão disponíveis na configuração. A primeira destina-se a configurações gerais e explicadas nesta seção. A segunda sobre as configurações da qualidade padrão são descritas em <xref linkend="quality"/>. </para> +<screenshot> +<screeninfo +>Configurações gerais</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-configuration.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Editando as configurações gerais do &krec;.</phrase> +</textobject> +</mediaobject> +</screenshot> +<para +>A primeira parte é constituída por configurações sobre o modo de apresentar o tempo decorrido de gravação e posições. O estilo "Amostragem plana" mostra apenas o número de amostras, o segundo apresenta opcionalmente horas, minutos, segundos e amostras. O terceiro estilo é o mesmo do segundo exceto pela apresentação de quadros em vez de amostras. O quarto estilo mostra a dimensão em megabytes e kilobytes e é útil para controlar o espaço em disco. No lado direito dos estilos você tem a oportunidade de selecionar o número de quadros formados por segundo. </para> +<para +>A caixa de seleção abaixo faz com que a informação de tempo seja mais detalhada mostrando também a unidade de medida. </para> +<para +>Se quiser restaurar a dica do dia na inicialização você pode selecionar a próxima caixa de seleção. O botão abaixo volta a mostrar todas as mensagens onde selecionou "Não voltar a mostrar esta mensagem", principalmente mensagens das funções de exportação. </para> +</sect1> + +<sect1 id="exporting"> +<title +>Exportando</title> +<blockquote> +<attribution +>Um fã anônimo do &krec;</attribution> +<para +>O seu aplicativo é muito bom, uso-a todo o dia mas falta exportação para wave/mp3/ogg!</para> +</blockquote> +<para +>Aqui está: a funcionalidade de exportação definitiva para o &krec;. Os formatos de exportação disponíveis variam conforme as bibliotecas encontradas no momento da compilação, todas as atualmente disponíveis são descritas nas seções a seguir. </para> +<para +>A seleção do plugin de exportação desejado é efetuada através do nome de arquivo: Selecione <guimenuitem +>Exportar Arquivo...</guimenuitem +> a partir do menu <guimenu +>Arquivos</guimenu +>, escolha o nome para o arquivo exportado e a sua extensão tal como o plugin determinado pela sua extensão. A lista de extensões na caixa de diálogo mostra todos os plugins de exportação disponíveis. </para> +<para +>Para que entenda o uso da exportação, tecnicamente exportar funciona como tocar. Significa que terá que ir para a posição de onde pretende começar a exportar antes de tudo. Significa também que pode ver o progresso da exportação movendo-se desde a posição inicial marcada. E significa também que no futuro poderá exportar toda a seleção que deseje como se a tivesse tocando. </para> +<sect2 id="export_wave"> +<title +>Exportando para Wave (*.wav)</title> +<para +>O mais simples plugin de exportação. Exporta o seu arquivo &krec; para um arquivo wave com as configurações de qualidade que selecionou para todo o arquivo. </para> +</sect2> +<sect2 id="export_mp3"> +<title +>Exportando para MP3 (*.mp3)</title> +<para +>Talvez a possibilidade de exportação mais desejada. Ele exporta o seu arquivo &krec; para um mp3. </para> +<important +><para +>As configurações de qualidade que configurou na seção do &kcontrol; <quote +>Som & Multimídia</quote +> / <quote +>CDs de Áudio</quote +> são usadas nesta versão uma vez que o &krec; também usa as mesmas bibliotecas do recurso audiocd:/. </para +></important> +</sect2> +<sect2 id="export_ogg"> +<title +>Exportando para OGG (*.ogg)</title> +<para +>Isto exporta o seu arquivo &krec; para um arquivo ogg. </para> +<important +><para +>As configurações de qualidade que configurou na seção do &kcontrol; <quote +>Som & Multimídia</quote +> / <quote +>CDs de Áudio</quote +> são usadas nesta versão uma vez que o &krec; também usa as mesmas bibliotecas do recurso audiocd:/. </para +></important> +</sect2> +</sect1> + +<sect1 id="play_thru"> +<title +>Reproduzir através</title> +<para +>Para aqueles que desejam ouvir o que estão gravando existe uma opção <quote +>Reproduzir Através</quote +> muito útil, no menu <guimenu +>Reproduzir</guimenu +>. Aconselho o seu uso sempre que possível especialmente se efetuar coisas como usar o compressor ou outros efeitos e deseje controlar o que está atualmente sendo gravado. </para> +<caution +><para +>Certifique-se de não originar um ciclo de retorno enquanto grava a partir de <emphasis +>out_soundcard</emphasis +> com o <quote +>Reproduzir Através</quote +> ativado. Este ciclo é muito para o pobre &arts; e atrasa o sistema! Você poderá matar o &arts;... </para +><para +>A razão deve-se ao fato do &arts; calcular um cruzamento áudio para todas as amostras (de fato blocos de amostras) e se a amostra é construída através de ciclos o &arts; tem que calcular mais do que é possível. </para +></caution> +</sect1> + +<sect1 id="quality"> +<title +>Configurações de qualidade</title> +<screenshot> +<screeninfo +>As propriedades para novos arquivos</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-new_file_properties.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Este é o diálogo para escolha das propriedades dos novos arquivos.</phrase> +</textobject> +</mediaobject> +</screenshot> +<para +>Ao criar um novo arquivo &krec; está caixa de diálogo é apresentada e permite-lhe escolher algumas opções referentes à qualidade das gravações. Todas estas opções tem impacto no tamanho do arquivo. </para> +<para +>A <emphasis +>taxa de amostragem</emphasis +> é a taxa que indica ao sistema áudio quantas amostras deverão ser tiradas por segundo e a sua medida é em Hertz (Hz) e Kilohertz (kHz). Quanto mais alta a taxa mais alta é a frequência de gravação. Como são necessárias pelo menos duas amostras para formar uma onda <quote +>senoidal</quote +> a frequência de gravação máxima é metade da taxa de amostragem. O ouvido humano é capaz de ouvir tons até qualquer coisa como 10Khz a 20Khz dependendo da idade, crianças possivelmente ouvem perto de 20Khz enquanto que um adulto normal têm o seu máximo a 15Khz e pessoas mais idosas podem descer a 10Khz. Mas mesmo sem ouvir as frequências mais altas estas ainda continuam a exercer o seu efeito sobre o que é ouvido e sentido (palavra chave correspondente: acústica psíquica). </para> +<para +>O número de canais pode ser escolhido livremente dependendo da tarefa da gravação. Se estiver usando um microfone mono sem aplicar efeitos estéreo pode seguramente escolher <quote +>Mono</quote +> sem perda de informação. </para> +<para +>A última parte é o número de bits utilizado por amostra, possivelmente entre 8 a 16 bits. Quanto maior o número de bits mais passos estão disponíveis para a gama que vai desde o sinal mínimo a máximo. Sendo 8 bits um byte podemos-nos referir como uma amostra de um byte ou dois bytes. </para> +<para +>O espaço necessário para gravação pode ser calculado de um modo simples: a taxa de amostragem multiplicada pelo número de canais multiplicado pelo número de bytes por segundo multiplicado pelo número de segundos que se deseja gravar. </para> +<example +><title +>Cálculo do tamanho de um minuto em qualidade CD</title +><para +>Para um minuto (60 segundos) de áudio em qualidade CD ((44100Hz, 16bits, estéreo) o espaço necessário é: 44100 * 2 * 2 * 60 = 1058400 Bytes = 10335.938 Kilobytes. Cerca de 10 MByte de dados por minuto. </para +></example> +<tip +><para +>Use sempre a melhor qualidade necessária! A redução posterior da qualidade é possível, mas melhorá-la torna-se impossível pelo fato de ser necessário mais informação disponível. </para +></tip> +<para +>O último item abaixo do botão é uma caixa de opção para inserir valores padrão para todos os arquivos novos sem mostrar esta caixa de diálogo novamente. </para> +<para +>Como a caixa de diálogo também está disponível na configuração para escolher as opções padrão, a caixa de seleção "Usar padrões..." também está disponível para que apareça a caixa de diálogo para cada arquivo. </para> +</sect1> + +<sect1 id="vu-meter"> +<title +>Medidor 'VU-Meter'</title> +<para +>Sendo o compressor pouco necessário para a maioria das tarefas, o 'vu-meter' com o seu controle de volume embutido é uma das partes mais importantes do &krec; para as gravações. Ele mostra o nível atual da gravação que está sendo feita para um arquivo depois de usados efeitos e depois do volume ter sido definido no controle. Se este estiver na zona vermelho escuro, provavelmente a gravação estará cortada e não soará bem. Se se mantém nos 2% provavelmente não irá ouvir grande coisa da gravação. </para> +<tip +><para +>Para boas gravações o nível deverá estar entre -12dB and 0dB na maior parte do tempo. </para +></tip> +<tip +><para +>Use o compressor para edição dos aspectos dinâmicos das suas gravações. Veja <xref linkend="compressor"/> para mais informações. </para +></tip> +</sect1> + +</chapter> + + + +<chapter id="credits"> +<title +>Créditos e Licença</title> +<para +>&krec; </para> +<para +>Direitos autorais do programa 2002-2003 Arnold Krille<email +>arnold@arnoldarts.de</email +> </para> +<para +>Direitos autorais da documentação 2002-2004 Arnold Krille <email +>arnold@arnoldarts.de</email +> </para> +<para +>Tradução de Marcus Gama<email +>marcus_gama@uol.com.br</email +></para +> +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Instalação</title> + +<sect1 id="getting-krec"> +<title +>Como obter o &krec;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Requisitos</title> +<para +>Para usar com sucesso o &krec; 0.5.1, você necessita do &kde; 3.3. </para> +<para +>O &krec; deverá estar dentro do pacote tdemultimedia. Este pacote necessita do &kde; e do &arts; funcionando. </para> +</sect1> + +<sect1 id="compilation"> +<title +>Compilação e Instalação</title> +&install.compile.documentation; </sect1> + +</appendix> + +&documentation.index; +</book> + +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +End: +--> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kscd/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/kscd/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kscd/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kscd/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/kscd/Makefile.in new file mode 100644 index 00000000000..e56c0cc3e12 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kscd/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kscd +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kscd/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kscd/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kscd/index.cache.bz2 b/tde-i18n-pt_BR/docs/tdemultimedia/kscd/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..e83f674a022 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kscd/index.cache.bz2 diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/kscd/index.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/kscd/index.docbook new file mode 100644 index 00000000000..e128433a6d8 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/kscd/index.docbook @@ -0,0 +1,1194 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kscd;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % Brazilian-Portuguese "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>O Manual do &kscd;</title> + +<authorgroup> + +<author +><firstname +>Jonathan</firstname +> <surname +>Singer</surname +> <affiliation +><address +><email +>jsinger@leeta.net</email +></address +></affiliation> +</author> + +<author +><firstname +>David</firstname +> <surname +>White</surname +> <affiliation +><address +><email +>a9403784@unet.univie.ac.at</email +></address> +</affiliation> +</author> + +<othercredit role="developer" +><firstname +>Bernd</firstname +> <othername +>Johannes</othername +> <surname +>Wuebben</surname +> <affiliation +><address +><email +>wuebben@kde.org</email +></address +></affiliation> +<contrib +>Desenvolvimento</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Dirk</firstname +> <surname +>Forsterling</surname +> <affiliation +><address +><email +>milliByte@gmx.net</email +></address +></affiliation> +<contrib +>Desenvolvimento</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Dirk</firstname +> <surname +>Foersterling</surname +> <affiliation +><address +><email +>milliByte@gmx.net</email +></address +></affiliation> +<contrib +>Desenvolvimento</contrib> +</othercredit> + +<othercredit role="reviewer" +><firstname +>Lauri</firstname +> <surname +>Watts</surname +> <affiliation +><address +><email +>lauri@kde.org</email +></address +></affiliation> +<contrib +>Revisão</contrib> +</othercredit> +<othercredit role="translator" +><firstname +>Marcus</firstname +><surname +>Gama</surname +><affiliation +><address +><email +>marcus_gama@uol.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> + +<copyright> +<year +>2000</year +><year +>2004</year> +<holder +>J Singer</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + + +<date +>2002-10-07</date> +<releaseinfo +>1.4</releaseinfo> + +<abstract> +<para +>O &kscd; é um leitor de <abbrev +>CD</abbrev +>s pequeno, rápido e com suporte <abbrev +>CDDB</abbrev +> para as plataformas de &UNIX;.</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>kscd</keyword> +<keyword +>música</keyword> +<keyword +>CD</keyword> +<keyword +>áudio</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Introdução</title> + +<para +>O &kscd; é um leitor de &CD;s rápido, com suporte <abbrev +>CDDB</abbrev +>, para a plataforma &UNIX;. &kscd; significa <quote +>The KDE Project's small/simple &CD; player</quote +> (O Projeto do KDE para um Tocador de &CD; pequeno/simples).</para> + +<para +><emphasis +>Novo</emphasis +>: o programa <filename +>workman2cddb.pl</filename +> em Perl fornecido para facilitar a transição para os usuários do 'workman'.</para> + +<para +>Eu espero que você goste deste tocador de &CD;s.</para> + +<para +>Bernd Johannes Wuebben</para> + +<para +><email +>wuebben@kde.org</email +></para> + +<sect1 id="supported-platforms"> +<title +>Plataformas Suportadas</title> + +<para +>O &kscd; suporta explicitamente as seguintes plataformas:</para> + +<itemizedlist> +<listitem +><para +>Linux</para +></listitem> +<listitem +><para +>FreeBSD</para +></listitem> +<listitem +><para +>NetBSD</para +></listitem> +<listitem +><para +>BSD386</para +></listitem> +<listitem +><para +>Sun</para +></listitem> +<listitem +><para +>&Solaris; (incluindo o suporte do <acronym +>cdda</acronym +>)</para +></listitem> +<listitem +><para +>&HP-UX;</para +></listitem> +<listitem +><para +>Irix da &SGI; (incluindo o suporte do <abbrev +>cdda</abbrev +>)</para +></listitem> +<listitem +><para +>Sony NEWS</para +></listitem> +<listitem +><para +>OSF/1</para +></listitem> +<listitem +><para +>Ultrix</para +></listitem> +</itemizedlist> + +<para +>e deverá conseguir ser compilado em muitas outras com poucas modificações.</para> + +</sect1> + +</chapter> + +<chapter id="onscreen-fundamentals"> +<title +>Fundamentos do tela</title> + +<sect1 id="basic-operation"> +<title +>Operação Básica</title> + +<screenshot> +<screeninfo +>A Interface do &kscd;.</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kscd.png" format="PNG"/></imageobject> +<textobject +><phrase +>A Interface do &kscd;.</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Esta é a janela principal do &kscd;. Você deverá ver algo do gênero quando inicia o &kscd;. Os controles desta janela são explanados abaixo, sem nenhuma ordem em particular.</para> + +<sect2 id="control-panel"> +<title +>O Painel de Controle</title> + +<screenshot> +<screeninfo +>O Painel de Controle</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd2.png" format="PNG"/></imageobject> +<textobject +><phrase +>O Painel de Controle</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Este é o painel de controle principal do &kscd;. A função destes botões deverá ser familiar para todos os que já usaram um tocador de &CD;s alguma vez.</para> + +<para +>O botão superior no diagrama alterna entre a reprodução e a pausa do &CD;. O botão esquerdo da segunda linha interompe a reprodução do &CD;. O botão direito da segunda linha ejeta o &CD;. Os dois botões da terceira fila avançam (direita) ou recuam (esquerda) o &CD; para o início da faixa seguinte ou anterior. O botão esquerdo da linha inferior alterna o modo de reprodução aleatória entre ligado e desligado; o botão direito da mesma linha alterna a leitura em ciclo, de modo que o &CD; irá começar a tocar de novo do início quando chegar ao fim da última faixa de áudio.</para> +</sect2> + + +<sect2 id="status-display"> +<title +>O Mostrador de Estado</title> + +<screenshot> +<screeninfo +>O Mostrador de Estado</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd3.png" format="PNG"/></imageobject> +<textobject +><phrase +>o Mostrador de Estado</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Este é o mostrador de estado. Começando de cima, da direita para a esquerda, está o mostrador de tempo principal (veja abaixo uma discussão sobre os diversos modos possíveis de apresentação do tempo), o estado da unidade de &CD-ROM;, o tempo total de reprodução do &CD; de áudio, a configuração atual do volume e o número atual e total da faixa (atual/total). As duas linhas inferiores mostram o artista e o título do &CD;, e depois o título da faixa, assumindo que existem registros apropriados no <acronym +>CDDB</acronym +> local ou da rede (Base de Dados de &CD;s.)</para> + +<para +>Clique no mostrador de tempo para alternar entre os possíveis modos de exibição do tempo principal. Por padrão, o &kscd; mostra o tempo decorrido na faixa atual, se o &CD; estiver em reprodução, ou então ––:–– ou 00:00 se o &CD; não estiver sendo tocado. Clicar no mostrador alterna, em sequência, para o tempo restante da faixa, o tempo total decorrido e o tempo total restante.</para> +</sect2> + +<sect2 id="configuration-button"> +<title +>O botão de <guibutton +>Configuração</guibutton +></title> + +<screenshot> +<screeninfo +>O botão Extras</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd5.png" format="PNG"/></imageobject> +<textobject +><phrase +>O botão Extras</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Este botão abre um menu com um conjunto de opções. Você pode optar por abrir o painel de configuração do &kscd;. Isto permite-lhe configurar o &kscd; para funcionar na sua máquina de acordo com o seu gosto. Veja a seção <link linkend="configuring-kscd" +>configurando o &kscd;</link +> para mais detalhes sobre como configurar o &kscd;</para> +<para +>O menu contém várias ferramentas para ajudá-lo a procurar por informações sobre o artista na Internet. Você poderá saber mais sobre as datas de espetáculos, informações de compras e outras informações clicando neste botão e escolhendo a opção apropriada no menu de contexto que aparece.</para> +<para +>Este menu também permite abrir este documento de ajuda, relatar erros, aprender mais sobre o &kscd; e o &kde; e sair do &kscd;.</para> +</sect2> + +<sect2 id="cddb-button"> +<title +>O botão do <guibutton +>CDDB</guibutton +></title> + +<screenshot> +<screeninfo +>O botão do <acronym +>CDDB</acronym +></screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd6.png" format="PNG"/></imageobject> +<textobject +><phrase +>O botão do <acronym +>CDDB</acronym +></phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Este botão abre o painel de edição dos registros do <acronym +>CDDB</acronym +> (Compact Disc Data Base - Base de Dados de Discos Compactos). </para> + +<para +>O <acronym +>CDDB</acronym +> pode dentificar o seu &CD; e obter uma lista das faixas para esse &CD; a partir da rede ou poderá carregar a partir do sistema de arquivos. Veja a seção do <link linkend="cddb-editor" +>Editor da Base de Dados de &CD;s</link +> para mais detalhes sobre como usar esta ferramenta.</para> +</sect2> + + + + +<sect2> +<title +>O botão Volume</title> + +<screenshot> +<screeninfo +>O botão Volume</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd9.png" format="PNG"/></imageobject> +<textobject +><phrase +>A barra de Volume</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Este botão abre uma barra que controla o volume da saída de áudio do &CD;. Para a direita fica mais alto, enquanto que para a esquerda fica mais baixo. Se você estiver reproduzindo o seu &CD; através da sua placa de som, o mixador da placa de som irá afetar também o volume da reprodução.</para> +</sect2> + + +<sect2> +<title +>O seletor de faixas</title> + +<screenshot> +<screeninfo +>O seletor de faixas</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd11.png" format="PNG"/></imageobject> +<textobject +><phrase +>O seletor de faixas</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Esta caixa combinada mostra a faixa atual e permite-lhe selecionar diretamente a faixa a ser reproduzida. </para> +</sect2> + +</sect1> +</chapter> + +<chapter id="configuring-kscd"> +<title +>Configurando o &kscd;</title> +<sect1 id="configuration-intro"> +<title +>A janela de configuração principal</title> + +<para +>A janela de configuração principal do &kscd; é um diálogo com abas com três seções principais. </para> + +<itemizedlist> +<listitem +><para +><link linkend="kscd-options-tab" +><guilabel +>Reprodutor de CDs</guilabel +></link +></para +></listitem> +<listitem +><para +><link linkend="freedb-tab" +><guilabel +>Procura Freedb</guilabel +></link +></para +></listitem> +<listitem +><para +><link linkend="smtp-options" +><guilabel +>Envio Freedb</guilabel> +</link +></para +></listitem> +</itemizedlist> +</sect1> + +<sect1 id="kscd-options-tab"> +<title +>A aba <guilabel +>Reprodutor de CDs</guilabel +></title> + +<screenshot> +<screeninfo +>A aba <guilabel +>Reprodutor de CDs</guilabel +></screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd12.png" format="PNG"/></imageobject> +<textobject +><phrase +>A aba de <guilabel +>Configuração do KSCD</guilabel +></phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Os campos <guilabel +>Cor do LCD</guilabel +> e <guilabel +>Cor de Fundo</guilabel +> mostram a cor selecionada para o texto e para o fundo do mostrador de estado. Clique nas barras de cores para alterar essas cores.</para> + + +<!-- +<para +>The <guilabel +>Unix mail command</guilabel +> field shows the +command used to send new <acronym +>CDDB</acronym +> entries to the +database. The default value is <userinput +><command +>mail</command> +<option +>-s <replaceable +>%s</replaceable +></option +></userinput +>. You +will need to make sure this command will actually send mail to +non-local systems if you want to submit <acronym +>CDDB</acronym> +entries, especially if you access the Internet through a dial-up +connection. Check the documentation for your &Linux; distribution for +details. Some Linux distributions that use sendmail to deliver e-mail +require only that you enter your mail host into the +<option +>"Smart" relay host</option +> field in +<filename +>/etc/sendmail.cf</filename +>. In addition, the +<acronym +>CDDB</acronym +> site will want to be able to mail you back; it +may therefore also be necessary to edit +<filename +>/etc/sendmail.cf</filename +> to ensure that the return +address on the submission is valid. Your mileage is likely to vary. If +all else fails, use <link linkend="smtp-options" +>SMTP</link> +instead.</para> + +<para +>The <guilabel +>WWW-Browser</guilabel +> section lets you choose which web +browser to use to access the web sites in the <link linkend="information-button" +>information button</link +> menus. You can choose +either &konqueror; or a custom browser with the radio buttons. By default, the +<guilabel +>Use Custom Browser</guilabel +> field contains +<userinput +><command +>kfmclient</command> +<option +><replaceable +>openURL %s</replaceable +></option +></userinput +>.</para> +--> + +<para +><guilabel +>Mostrar ícone na bandeja do sistema</guilabel +> faz com que um controle para o &kscd; apareça no painel do &kicker;.</para> + +<para +>Configura o <guilabel +>Intervalo de salto</guilabel +> para o número de segundos a serem avançados ou recuados quando os botões <guibutton +>avançar</guibutton +> ou <guibutton +>recuar</guibutton +> no Painel de Controle forem clicados.</para> + +<para +>O <guilabel +>Executar automaticamente quando o CD for inserido</guilabel +> faz com que o &CD; comece a tocar quando a bandeja do &CD; for fechada, sem ter que pressionar o botão <guibutton +>Tocar</guibutton +>.</para> + +<para +><guilabel +>Ejetar o CD ao terminar a reprodução</guilabel +> faz com que o &CD; seja ejetado do leitor quando terminar a reprodução.</para> + +<para +><guilabel +>Parar a reprodução do CD ao sair</guilabel +> faz com que a leitura do &CD; pare quando o &kscd; é fechado.</para> + + + +<para +>O campo <guilabel +>Dispositivo de CD-ROM</guilabel +> contém o nome do dispositivo de &CD-ROM; a ser usado para tocar os &CD;s de áudio. O valor padrão é <filename +>/dev/cdrom</filename +>. As permissões para este dispositivo deverão estar definidas para permitir o acesso a este dispositivo para leitura. A alteração das permissões neste dispositivo irão normalmente exigir privilégios de super-usuário e poderão ser feitas na linha de comando ou no Modo de Super-Usuário do &konqueror;.</para> + +<para +>O botão <guibutton +>Ajuda</guibutton +> abre a página do conteúdo da ajuda do &kscd;. O botão <guibutton +>OK</guibutton +> salva as opções atuais e sai; o <guibutton +>Aplicar</guibutton +> salva as opções atuais sem sair; o <guibutton +>Cancelar</guibutton +> sai sem salvar. </para> +</sect1> + +<sect1 id="freedb-tab"> +<title +>A aba <guilabel +>Procura freedb</guilabel +></title> +<screenshot> +<screeninfo +>A aba <guilabel +>Procura freedb</guilabel +> da janela de configuração</screeninfo> +<mediaobject> +<imageobject +> <imagedata fileref="kscd14.png" format="PNG"/> </imageobject> +<textobject +><phrase +>A aba <guilabel +>Procura freedb</guilabel +> da janela de configuração</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>A aba <guilabel +>Procura freedb</guilabel +> configura as funções do <acronym +>CDDB</acronym +> no &kscd;.</para> + +<para +>A opção <guilabel +>Modo</guilabel +> determina como as pesquisas do <acronym +>CDDB</acronym +> são feitas. Se escolher a opção <guilabel +>Somente cache</guilabel +> significa que só a informação que já existir no seu computador será usada. O <guilabel +>Cache e remoto</guilabel +> irá procurar a informação que você não tem ainda, enquanto que o <guilabel +>Somente remoto</guilabel +> vai procurar todos os discos na Internet. O tempo-limite para a pesquisa poderá também ser configurado.</para> + + +<para +>A lista <guilabel +>Servidor de CDDB:</guilabel +> permite-lhe especificar o seu servidor freedb. Insira o endereço e o número da porta do servidor. Selecione um item desta lista, para que apareça no campo de texto abaixo. O forma de conexão (CDDB ou HTTP) poderão também ser definidos (É pouco provável que você queira alterar algum destes campos em relação aos valores padrão). O <guilabel +>Pastas de Cache:</guilabel +> permite-lhe escolher a pasta em que deseja salvar os registros do <acronym +>CDDB</acronym +> localmente.</para> + +<!-- +<para +>The <guilabel +>Send freedb submissions to:</guilabel +> field contains the +e-mail address to which to submit <abbrev +>CDDB</abbrev +> entries. The default address +is <email +>freedb-submit@freedb.org</email +>. As of version 0.8, +<acronym +>CDDB</acronym +> entries from &kscd; are accepted for inclusion in the +database. Enter servers manually by entering the address in the upper box and hitting the +<guiicon +>+</guiicon +> button. Hit the <guiicon +>-</guiicon +> button to delete the selected entry +from the list. The <guibutton +>Defaults</guibutton +> button restores all settings +to the default values.The <guibutton +>Help</guibutton +> button opens the &kscd; +help home page (this document).</para> + +<para +>The <guibutton +>Help</guibutton +> button opens the &kscd; help contents +page. <guibutton +>OK</guibutton +> saves the current settings and exits; +<guibutton +>Apply</guibutton +> saves the current settings without exiting; +<guibutton +>Cancel</guibutton +> exits without saving. </para> +--> +</sect1> + +<sect1 id="smtp-options"> +<title +>A aba <guilabel +>Envio de freedb</guilabel +></title> + +<screenshot> +<screeninfo +>A aba de Envio freedb</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd16.png" format="PNG"/></imageobject> +</mediaobject> +</screenshot> + +<para +>A aba de Envio do freedb configura a conexão a um servidor de e-mail para enviar os novos registros de <acronym +>CDDB</acronym +>. Isto é útil se você não tiver o seu próprio sistema configurado como um servidor. Assinale a opção <guilabel +>Habilitar envios por SMTP</guilabel +> para usar esta funcionalidade.</para> + +<para +>Você poderá optar por <guilabel +>Usar os endereços de e-mail do Centro de Controle</guilabel +> se desejar. Se você quiser abrir o módulo do &kcontrol; para configurar este endereço de e-mail, clique no campo <guilabel +>Abrir o painel de controle do endereço de e-mail</guilabel +>. A alteração do endereço aqui irá alterar o endereço padrão para todos os aplicativos do &kde; que usam esta opção, não só para o &kscd;, por isso faça isto com cuidado.</para> + +<para +>Caso contrário, selecione o seu perfil de e-mail preferido na opção <guilabel +>Usar os seguintes endereços de e-mail</guilabel +>. Insira o seu endereço de e-mail, um endereço de resposta, se desejar e o endereço do servidor de <acronym +>SMTP</acronym +> no campo <guilabel +>Servidor:</guilabel +> e o número da porta (normalmente a <userinput +>25</userinput +>) no campo <guilabel +>Porta:</guilabel +>.</para> + + +<para +>O botão <guibutton +>Ajuda</guibutton +> abre a página do conteúdo da ajuda do &kscd;. O botão <guibutton +>OK</guibutton +> salva as opções atuais e sai; o <guibutton +>Aplicar</guibutton +> salva as opções atuais sem sair; o <guibutton +>Cancelar</guibutton +> sai sem salvar. </para> +</sect1> + + +</chapter> + +<chapter id="cddb-editor"> +<title +>O <guilabel +>Editor da Base de Dados de CDs</guilabel +></title> + +<screenshot> +<screeninfo +>O Editor da Base de Dados dos CDs</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd13.png" format="PNG"/></imageobject> +<textobject +><phrase +>O Editor da Base de Dados dos CDs</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>O Editor de Bases de Dados de &CD;s permite-lhe modificar, baixar, salvar, anotar e enviar registros de <link linkend="cddb-support" +><acronym +>CDDB</acronym +> (Compact Disc Data Base - Base de Dados de CDs)</link +>.</para> + +<para +>Se existir um registro na sua árvore de <acronym +>CDDB</acronym +> local (veja a seção de <link linkend="freedb-tab" +>CDDB</link +> no capítulo de Configuração) do &CD; na sua unidade de &CD-ROM;, ou se o disco foi encontrado no freedb, você irá ver o nome do artista e o título do &CD; nos campos <guilabel +>Artista:</guilabel +> e <guilabel +>Título</guilabel +> e uma lista com os títulos na área de seleção das <interface +>Faixas</interface +>. Caso contrário, você irá ver uma lista com as faixas e tempos de execução, mas sem títulos.</para> + +<para +>Você poderá fazer uma anotação do disco inteiro com o botão <guibutton +>Comentário</guibutton +> abaixo do campo <guilabel +>Título</guilabel +> ou para uma faixa selecionada na lista <guilabel +>Faixas</guilabel +> com o botão <guibutton +>Comentário</guibutton +> adjacente. Se você selecionar uma faixa na lista <guilabel +>Faixas</guilabel +>, o título, se estiver presente, irá aparecer no campo <guilabel +>Título</guilabel +> abaixo. Você poderá escrever um título para a faixa nesse campo ou editar o registro de acordo com as suas necessidades. Clique na tecla <keycap +>Return</keycap +> do seu teclado e o texto irá aparecer na linha adequada da caixa de seleção.</para> + +<para +>Logo que todas as faixas tenham títulos e os campos <guilabel +>Artista:</guilabel +> e <guilabel +>Título</guilabel +> tenham sido preenchidos, você poderá clicar no botão <guibutton +>Enviar</guibutton +> para submeter os resultados por e-mail para o freedb.</para> + +<para +>Será pedido para selecionar uma categoria para o envio. O <guilabel +>ID do Disco</guilabel +> mostra o código de 32 bits usado pelo freedb para identificar um disco compacto. Acima do código identificador está a categoria do registro do <guilabel +>freedb</guilabel +>. Estas categorias correspondem à árvore de sub-pastas da pasta escolhida na <guilabel +>Pasta Base do freedb:</guilabel +> na página do <link linkend="freedb-tab" +><guilabel +>freedb</guilabel +></link +> da janela de Configuração do &kscd;.</para> + +<para +>O campo <guilabel +>Duração Total:</guilabel +> mostra o tempo total de reprodução do &CD;.</para> + +<para +>Clique no botão <guibutton +>Obter Informação</guibutton +> para obter os dados do <acronym +>CDDB</acronym +>. Clique no botão <guibutton +>OK</guibutton +> para salvar localmente as suas alterações. O botão <guibutton +>Cancelar</guibutton +> fecha o Editor de Bases de Dados do &CD; sem salvar.</para> + +</chapter> + +<chapter id="using-kscd-in-the-panel"> +<title +>Usando o &kscd; no Painel do &kde;</title> + +<screenshot> +<screeninfo +>Usando o &kscd; no Painel do &kde;</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd18.png" format="PNG"/></imageobject> +<textobject +><phrase +>Usando o &kscd; no Painel do &kde;</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Quando a opção <guilabel +>Mostrar ícone na bandeja do sistema</guilabel +> estiver assinalada, um pequeno mini-aplicativo do &kscd; é também mostrado no <application +>painel do KDE</application +>. Ao contrário da janela principal do &kscd;, este mini-aplicativo fica disponível em qualquer tela. Um clique com o &RMB; no mini-aplicativo fará surgir um menu para controlar a reprodução do &CD;. Clicar com o botão <mousebutton +>esquerdo</mousebutton +> no mini-aplicativo irá ocultar a janela principal do &kscd;. Se a janela principal estiver oculta, um segundo clique com o botão <mousebutton +>esquerdo</mousebutton +> no mini-aplicativo irá restaurá-la. </para> + +<note +><para +>Para ser mais exato, o mini-aplicativo é mostrado na <application +>bandeja do sistema</application +> do painel. Se não aparecer nenhum mini-aplicativo quando o &kscd; é minimizado, você poderá ter removido a bandeja. Para adicioná-la, clique com o botão <mousebutton +>direito</mousebutton +> num espaço vazio do painel e selecione <menuchoice +><guisubmenu +>Adicionar</guisubmenu +> <guisubmenu +>Mini-aplicativo</guisubmenu +> <guimenuitem +>Bandeja do Sistema</guimenuitem +> </menuchoice +></para +></note> + +</chapter> + +<chapter id="cddb-support"> +<title +>Suporte ao <acronym +>CDDB</acronym +></title> + +<para +>O freedb é uma base de dados distribuída na rede que está acessível na Internet e que contém informações sobre a maioria dos &CD;s de áudio em circulação. Se você tiver acesso à Internet, você poderá nunca ter que introduzir manualmente as informações das faixas para os seus &CD;s se tiver isto configurado convenientemente. Veja a subseção da <link linkend="freedb-tab" +>aba do freedb</link +> no capítulo de configuração do &kscd; para obter informações mais detalhadas sobre como configurar este serviço, e a seção do <link linkend="cddb-editor" +>Editor de Bases de Dados de CDs</link +> para mais instruções sobre como editar os registros do <acronym +>CDDB</acronym +>.</para> + +<para +>O uso do <acronym +>CDDB</acronym +> é livre. São encorajados os envios por parte dos usuários.</para> + +<para +>Ao preparar os registros para o <acronym +>CDDB</acronym +>, tenha em mente os seguintes pontos:</para> + +<itemizedlist> +<listitem +><para +>Use caracteres latinos <quote +>padrão</quote +> nos registros. Alguns caracteres especiais são suportados, mas submissões em Cirílico ou Grego, por exemplo, não poderão ser aceitas.</para +></listitem> +<listitem +><para +>Use só um caractere <keysym +>/</keysym +> no campo <guilabel +>Artista do Disco / Título</guilabel +> no Editor de Bases de Dados do &CD;.</para> + +<para +>Para os &CD;s clássicos, é uma prática normal colocar o nome do compositor na seção do Artista (antes da barra) e o nome do cantor na seção Título (depois da barra).</para +></listitem +> +<listitem +><para +>Se enviar um registro que já exista na base de dados, todas as informações adicionais que enviar poderão ser adicionadas ao registro existente.</para> +</listitem> +</itemizedlist> + +<para +>Por padrão, o &kscd; instala as categorias-padrão do <acronym +>CDDB</acronym +> em <filename class="directory" +>$KDEDIR/share/apps/kscd/cddb</filename +>. Você poderá criar tantas sub-pastas de categorias quantas desejar. Contudo, ao enviar, só as categorias oficiais do <acronym +>CDDB</acronym +> serão apresentadas. O endereço de envio padrão é o <email +>freedb-submit@freedb.org</email +>. Para mais informações sobre o <abbrev +>freedb</abbrev +> visite a página pessoal do <abbrev +>freedb</abbrev +>.</para> + +<para +>O registro de <acronym +>CDDB</acronym +> local para um determinado &CD; é armazenado no arquivo <filename +><replaceable +>nome da categoria</replaceable +>/<replaceable +>ID do disco</replaceable +></filename +> na Pasta de Base do <acronym +>CDDB</acronym +>. Estes arquivos poderão ser editados com qualquer editor de texto se não tiver nada de melhor para fazer com o seu tempo livre.</para> + +</chapter> + +<chapter id="questions-and-answers"> +<title +>Perguntas e respostas</title> + +<qandaset> +<qandaentry> +<question +><para +>Eu vejo este diálogo quando inicio o &kscd;. O que está errado?</para> +<screenshot> +<screeninfo +>Diálogo de erro</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd19.png" format ="PNG"/></imageobject> +<textobject +><phrase +>Diálogo de erro</phrase +></textobject> +</mediaobject> +</screenshot> +</question> +<answer +><para +>Isto significa que o &kscd; não conseguiu acessar à sua unidade de &CD-ROM;. O nome do dispositivo no campo <guilabel +>Dispositivo de &CD-ROM;</guilabel +> na <guilabel +>Configuração do Kscd</guilabel +> deverá referir-se ao dispositivo de bloco associado com a sua unidade de &CD-ROM;. Isto poderá ser uma ligação (simbólica ou real) para o dispositivo <acronym +>IDE</acronym +> (<filename +>/dev/hdx</filename +>) ou <acronym +>SCSI</acronym +> (<filename +>/dev/sdx</filename +>) apropriado.</para> + +<para +>O arquivo do dispositivo normalmente pertence ao usuário 'root' no grupo 'root', e não permite aos usuários normais acessarem diretamente a ele para leitura, escrita ou execução. Isto não tem <emphasis +>nada</emphasis +> a ver com o comando <application +>SUID</application +> (Set User <acronym +>ID</acronym +> - que usam a função <function +>setuid()</function +> da biblioteca-padrão do Un*x para assumir a identidade de outro usuário) que é o <command +>mount</command +>, que não tem problema nenhum com as permissões; o &kscd; precisa de ser capaz de criar um descritor de arquivo para referir-se ao dispositivo de &CD; para controlar a unidade de &CD-ROM; e ler os dados brutos a partir do disco.</para> + +<para +>Se você tiver a senha do 'root', poderá corrigir isto rápida e facilmente. Mude para 'root' e digite <userinput +><command +>chmod</command +> <option +>a+r</option +> <filename +><replaceable +>/dev/cdrom</replaceable +></filename +></userinput +> para permitir a qualquer usuário no seu sistema ler do dispositivo <filename +>/dev/cdrom</filename +>. Se a sua unidade de &CD-ROM; for outra qualquer, mude as permissões nesse dispositivo com o mesmo procedimento. Se não tiver a senha de 'root', peça ao seu administrador de sistemas para lhe dar permissões de leitura ao seu dispositivo de &CD-ROM;.</para> + +<para +>Veja também o capítulo sobre a <link linkend="configuring-kscd" +>configuração do KSCD </link +></para +></answer> +</qandaentry> + +<qandaentry +> +<question +><para +>Não consigo colocar o <acronym +>CDDB</acronym +> funcionando. É possível obter alguma informação detalhada sobre o que está ocorrendo de errado?</para +></question +> +<answer +><para +>Se você estiver tendo problemas com a funcionalidade do <acronym +>CDDB</acronym +> tente iniciar o &kscd; a partir da linha de comando com a opção <option +>-d</option +> e veja o resultado da depuração.</para +></answer +> +</qandaentry> +</qandaset> +</chapter> + +<chapter id="credits-and-license"> +<title +>Créditos e licenças</title> + +<para +>Direitos Autorais &kscd; 1997,1998 Bernd Johannes Wuebben <email +>wuebben@kde.org</email +>wuebben +></para> + +<para +>O &kscd; contém código de: </para> +<itemizedlist> +<listitem +><para +><application +>workman</application +> 1.4 beta 3 Direitos Autorais (c) Steven Grimm <email +>koreth@hyperion.com</email +></para +></listitem> +</itemizedlist> + +<para +>Muito obrigado ao Ti Kan e ao Steve Scherf, os inventores do conceito da base de dados do <acronym +>CDDB</acronym +>. Vá a <ulink url="http://www.cddb.com/" +>http://www.cddb.com</ulink +> para obter mais informações sobre o <acronym +>CDDB</acronym +>.</para> + +<para +>Um especial agradecimento também a David White que fez a documentação original de ajuda do &kscd;. Belo trabalho, David!</para> + +<para +>Documentação atualizada para o KDE 2.0, com direitos autorais de Jonathan Singer <email +>jsinger@leeta.net.</email +></para> +<para +>Tradução de Marcus Gama<email +>marcus_gama@uol.com.br</email +></para +> +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Instalação</title> + +<sect1 id="how-to-obtain-kscd"> +<title +>Como obter o &kscd;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Requisitos</title> + +<para +>Para poder compilar com sucesso o &kscd;, você precisa das últimas versões das bibliotecas do KDE, assim como da biblioteca de C++ &Qt;. Todas as bibliotecas necessárias, assim como o próprio &kscd; poderão ser encontradas no servidor de &FTP; do &kde; em <ulink url="ftp://ftp.kde.org/pub/kde/" +>ftp://ftp.kde.org/pub/kde/</ulink +>.</para> + +</sect1 +> + +<sect1 id="compilation-and-installation" +> +<title +>Compilação e Instalação</title +> &install.compile.documentation; <para +>Por favor informe o responsável atual, Dirk Foersterling, em <email +>milliByte@gmlx.net</email +> sobre qualquer modificação que você tenha efetuado para fazer o &kscd; a compilar na sua plataforma.</para> + +</sect1> + +</appendix> + +&documentation.index; +</book> +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes: nil +sgml-general-insert-case: lower +End: +--> diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/noatun/Makefile.am b/tde-i18n-pt_BR/docs/tdemultimedia/noatun/Makefile.am new file mode 100644 index 00000000000..babf802f3a2 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/noatun/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = pt_BR +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/noatun/Makefile.in b/tde-i18n-pt_BR/docs/tdemultimedia/noatun/Makefile.in new file mode 100644 index 00000000000..ddefb0961c7 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/noatun/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/noatun +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = pt_BR +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/noatun/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/noatun/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/noatun/index.cache.bz2 b/tde-i18n-pt_BR/docs/tdemultimedia/noatun/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..bba179c9893 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/noatun/index.cache.bz2 diff --git a/tde-i18n-pt_BR/docs/tdemultimedia/noatun/index.docbook b/tde-i18n-pt_BR/docs/tdemultimedia/noatun/index.docbook new file mode 100644 index 00000000000..31608149099 --- /dev/null +++ b/tde-i18n-pt_BR/docs/tdemultimedia/noatun/index.docbook @@ -0,0 +1,644 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&noatun;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % Brazilian-Portuguese "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>Manual do &noatun;</title> + +<authorgroup> +<author +><firstname +>Charles</firstname +> <surname +>Samuels</surname +> <affiliation +> <address +><email +>charles@kde.org</email +></address> +</affiliation> +</author> +<othercredit role="translator" +><firstname +>Marcus</firstname +><surname +>Gama</surname +><affiliation +><address +><email +>marcus_gama@uol.com.br</email +></address +></affiliation +><contrib +>Tradução</contrib +></othercredit +> +</authorgroup> + +<copyright> +<year +>2001</year +><year +>2002</year> +<holder +>Charles Samuels</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2002-03-01</date> +<releaseinfo +>2.00.00</releaseinfo +> <!-- Use App version here --> + +<abstract> +<para +>O &noatun; é um reprodutor multimídia completo baseado em plugins para o &kde;.</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>Noatun</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>mp3</keyword> +<keyword +>música</keyword> +<keyword +>mídia</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Introdução</title> + +<para +>O &noatun; é um reprodutor multimídia completo baseado em plugins para o &kde;.</para> + +<sect1 id="features"> +<title +>Recursos</title> + +<para +>O &noatun; é uma elaborada interface visual para o &arts; — o Sintetizador Analógico em Tempo Real . Para acrescentar objetos de reprodução adicionais, vá para <ulink url="http://noatun.kde.org/plugins.phtml" +> http://noatun.kde.org/plugins.phtml</ulink +>, ou a <ulink url="http://mpeglib.sf.net" +>http://mpeglib.sf.net</ulink +>. Por padrão o &arts; suporta os formatos MP3 e MPEG-1. O formato Vorbis é também suportado se as bibliotecas do Vorbis tiverem sido disponibilizadas durante a compilação do &kde;. </para> + +</sect1> +</chapter> + +<chapter id="using-noatun"> +<title +>Usando o &noatun;</title> + +<para +>O &noatun;, por padrão é iniciado com um plugin de interface com o usuário denominado 'Excelente'. Este plugin foi escolhido pelo fato de ser similar a maioria dos outros aplicativos do &kde;.</para> + +<para +>O &noatun; é único por não existirem duas instalações iguais e por não ter um interface padronizada, apesar de existir uma padrão inicial. Você está livre para misturar e ajustar a sua seleção de plugins e personalizar o &noatun; até torná-lo seu reprodutor multimídia ideal! </para> + +<sect1 id="title-format"> +<title +>Formato do Título</title> +<para +>A janela de preferências do &noatun; possui uma caixa de texto <guilabel +>Formato do Título</guilabel +> ímpar. Você poderá introduzir um string de formato para personalizar como o título aparece. </para> + +<itemizedlist> +<listitem +><para +>Qualquer texto aparece normalmente, a não ser que esteja entre <literal +>$( )</literal +>.</para +></listitem> +<listitem +><para +>O texto entre <literal +>$( )</literal +> será lido pelo &noatun; de acordo com o item fornecido, que irá substituir o texto com seu valor.</para +></listitem> +<listitem +><para +>Se entre <literal +>$( )</literal +> existem aspas, esse texto será apresentado normalmente, mas somente se a propriedade desse nome existir.</para +></listitem> +<listitem +><para +>As aspas podem estar no início do <literal +>$( )</literal +>, no final, ou no início e fim simultaneamente.</para +></listitem> +</itemizedlist> + +<para +>Por exemplo, <literal +>$(bitrate)</literal +> é substituído pela taxa de bits do arquivo, como carregada pelo plugin Metatag. No entanto, se inserir aspas naquele campo, o texto entre aspas, será mostrado: por exemplo, <literal +>$(bitrate"kbps")</literal +> fornecerá a informação sobre a taxa de bits do arquivo, seguido pelos caracteres <literal +>"kbps" </literal +>. Isto não será mostrado no entanto se a propriedade <quote +>bitrate</quote +> não existir. </para +> +</sect1> + +</chapter> + +<chapter id="using-noatun-plugins"> +<title +>Usando Plugins no &noatun;</title> + +<para +>Você poderá selecionar diferentes plugins indo ao menu <guimenuitem +>Configurações</guimenuitem +>, e selecionando <guimenuitem +>Configurar o &noatun;...</guimenuitem +>. Vá para a página <guilabel +>Plugins</guilabel +> selecionando o item adequado da lista. Então poderá ativar os plugins selecionando a caixa correspondente ao seu nome. O &noatun; requer pelo menos um plugin de interface com o usuário, e um plugin de lista de reprodução. </para> + +<sect1 id="milk-chocolate"> +<title +>Leite com Chocolate</title> + +<para +>Leite com Chocolate é uma interface com o usuário simples e pequena Os botões comportam-se como um tocador de CD, onde o botão de <guiicon +>ejetar</guiicon +> abre a lista de reprodução. O botão com uma <guiicon +>folha com uma cruz</guiicon +> remove o item atual da lista de reprodução, mas não apaga o arquivo do disco, e o botão de <guiicon +>seta</guiicon +> configura o modo de repetição. Um menu está disponível através do &RMB; clicando em qualquer parte da janela.</para> + +</sect1> + +<sect1 id="young-hickory"> + +<title +>Young Hickory</title> + +<para +>Young Hickory é um plugin para a Bandeja do Sistema do &kde;, a área junto ao relógio, por padrão.</para> + +<para +>Clicando no ícone com &RMB; é mostrado um pequeno menu, e ao clicar com o &LMB; será alternada a visibilidade da sua janela de interface com o usuário do &noatun;. Note que as listas de reprodução por exemplo, não são consideradas como interfaces do usuário.</para> + +</sect1> + +<sect1 id="html-exporter"> +<title +>Exportar Lista de Reprodução em <acronym +>HTML</acronym +></title> + +<para +>Este plugin colocará a lista de reprodução numa elegante tabela <acronym +>HTML</acronym +>. Sua página de preferências fornecerá a possibilidade de configurar cores, imagem de fundo, e habilitar o modo 'Pairar', para mudança de cores quando o cursor estiver sobre uma ligação.</para> + +<para +>Depois de configurar as opções, o menu <guimenu +>Ações</guimenu +>, <guimenuitem +>Exportar Lista de Reprodução...</guimenuitem +> abrirá um diálogo de arquivo para que selecione onde salvar o arquivo de saída. </para> + +</sect1> + +<sect1 id="kjofol-skin"> +<title +>Estilos <application +>K-Jöfol</application +></title> + +<para +>O carregador de estilos <application +>K-Jöfol</application +> do &noatun;, é uma re-implementação de um programa do &Windows; com o mesmo nome.</para> + +<para +>A implementação do &noatun; possui infelizmente algumas limitações. Por exemplo os estilos tem que ser previamente descomprimidos para o disco para que sejam carregados.</para> + +<para +>Para instalar um estilo (formato ZIP, no &Windows;) você poderá usar o carregador de estilos que se encontra na caixa de diálogo das preferências do &noatun;.</para> + +<para +>Devido a algums estilos não estarem corretamente empacotados e o instalador de estilos não adivinhar tudo, você poderá ainda seguir os seguintes comandos se uma determinada instalação de um estilo falhar:</para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>cd</command +> <filename class="directory" +>$KDEHOME/share/apps/noatun</filename +></userinput> +<prompt +>%</prompt +> <userinput +><command +>mkdir</command +> <option +>kjskins</option +></userinput +> (se necessário) +<prompt +>%</prompt +> <userinput +><command +>cd</command +> <option +>kjskins</option +></userinput> +<prompt +>%</prompt +> <userinput +><command +>mkdir</command +> <option +>nova estilo</option +> ; <command +>cd</command +> <replaceable +>novo estilo</replaceable +></userinput> +<prompt +>%</prompt +> <userinput +><command +>unzip</command +> <replaceable +>/caminho/para/novo_estilo.zip</replaceable +></userinput +></screen> + +<para +>Você pode também criar os seus próprios estilos com a ajuda do tutorial <ulink url="http://www.angelfire.com/mo/nequiem/tutorial.html" +>http://www.angelfire.com/mo/nequiem/tutorial.html</ulink +>. </para> + +</sect1> + +<sect1 id="splitplaylist"> +<title +>A Lista de Reprodução Dividida</title> + +<para +>A Lista de Reprodução Dividida possui um desenho simples e clássico. Um duplo clique em qualquer entrada da lista irá acioná-la (como se tivesse selecionado-o e pressionado <keycap +>Enter</keycap +>). Você poderá arrastar arquivos bem como &URL;s. </para> + +<para +>Como o &kde; 3.0, o Lista de Reprodução Dividida (<acronym +>SPL</acronym +>) armazena seus dados no formato &XML;, mas automaticamente importará a lista <acronym +>m3u</acronym +> se o arquivo &XML; não existir. Isto significa que você poderá modificar o arquivo m3u, e excluir o arquivo &XML; para automaticamente gerar listas de reprodução. </para> + +<para +>O nome Lista de Reprodução Dividida é um pouco enganador, na medida em que a lista não está realmente dividida. Este nome resulta do seu desenho original (remontando aos primeiros dias do &noatun;) onde estava realmente dividida. </para> +</sect1> + +<sect1 id="winampskin"> +<title +>Estilos do Winamp</title> +<para +>Se você estiver atualmente usando o estilo <trademark +>Winamp</trademark +>, por certo já deverá ter reparado que ele é familiar. Clicar no temporizador alternará entre o modo de contagem crescente ou decrescente. Selecionar a região de Escopo sob ele habilitará e desabilitará o escopo. Você poderá também fazer um duplo clique na barra de título para alternar o modo de sombra da Janela. Clicar com o botão <mousebutton +>direito</mousebutton +> (ou clicando no ícone superior esquerdo) mostrará a barra de ferramentas padrão do &noatun;. </para> +<para +>Você poderá instalar novos estilos em <filename class="directory" +>$KDEHOME/share/apps/noatun/skins/winamp</filename +>, criando uma pasta para eles, e então extraindo-os para esta pasta. Os arquivos de estilo <trademark +>Winamp </trademark +> com a extensão <literal role="extension" +>.wsz</literal +> podem ser tratados como arquivos zip normais. Você poderá no entanto ter que renomeá-los antes que possa descomprimí-los. </para> +</sect1> + +<sect1 id="metatag"> +<title +>Metatag</title> +<para +>Metatag é um plugin que carrega informações sobre um arquivo através do KFile, o mesmo mecanismo que é usado no &konqueror; para as dicas exibidas quando o mouse paira por cima de um arquivo qualquer. Além de carregar informações, ele também suporta edição através do menu <guimenu +>Ações</guimenu +> no subitem <guimenu +>Edição de Tag</guimenu +>. Ele suporta edição de tags <acronym +>ID3</acronym +>, bem como de tags OggVorbis. Ele lê também a taxa de bits dos arquivos. </para> +</sect1> + +<sect1 id="keyz"> +<title +>Keyz</title> +<para +>Carsten Pfeiffer decidiu quebrar a longa tradição do &noatun; de criação de nomear um plugin da maneira mais imprecisa possível, como ficou provado tanto pelos plugins Leite com Chocolate, Young Hickory, e muitos outros. Qual a vantagem de trocar um S por um Z? Sons que pessoas que falam o Inglês-Americano não distinguem! </para> +<para +>Contudo, apenas pelo fato do nome não ser original não significa que é um plugin inferior. Pelo contrário, ele permite a atribuição de teclas de atalho para algumas ações do &noatun;. A verdadeira beleza nestas teclas de atalho, é que funcionam em qualquer situação, e não apenas dentro do &noatun;. Assim isto pode finalmente fazer valer a pena os <quote +>Teclados Multimídia</quote +>. </para> +</sect1> + +<sect1 id="ir-control"> +<title +>Controle por Infravermelho</title> +<para +>Se você tiver um controle por Infravermelho no seu computador (como os da televisão com sintonizadores <trademark class="registered" +>Brooktree</trademark +>), e o seu controle for suportado pelo <ulink url="http://www.lirc.org" +>LIRC</ulink +>, então isto deverá funcionar. Tal como Keyz, o nome é muito objetivo, mas o plugin permite-lhe atribuir ações a cliques de botões. </para> +<para +>Para atribuir ações ao pressionamento de uma tecla, carregue o plugin, vá á página de Controle do Infravermelho na janela de configuração do &noatun;. Selecione a tecla na lista, e escolha a ação a ser executada na caixa combinada abaixo. Se numa ação como por exemplo o controle de volume, quiser executar a ação repetidamente, ative a caixa e selecione o intervalo entre ações. </para> +<para +>Se você tiver uma placa de <acronym +>TV</acronym +>, um truque conveniente é atribuir o botão <guibutton +>Mute</guibutton +> à ação Pausa, permitindo assim tirar o som do aplicativo de <acronym +>TV</acronym +>, enquanto pausa o &noatun;, e vice-versa, particularmente utíl no caso dos comerciais. </para> +</sect1> +</chapter> + +<chapter id="questions-answers-and-tips"> + +<title +>Perguntas, Respostas e Dicas</title> + +<qandaset id="faq"> +<title +>Perguntas mais frequentes</title> +<qandaentry> +<question> +<para +>A música pula muito quando se movimenta janelas.</para> +</question> +<answer> +<para +>Você pode ter aumentar o buffer do &arts; do seguinte modo: </para +> + +<itemizedlist +> +<listitem +><para +>Inicie o &kcontrol;</para +></listitem> +<listitem +><para +>Vá para o grupo <guilabel +>Som</guilabel +></para +></listitem +> +<listitem +><para +>Vá para a seção <guilabel +>Servidor de Som</guilabel +></para +></listitem +> +<listitem +><para +>Aumente o tempo de resposta —, 384ms é normalmente suficiente para a maioria dos computadores.</para +></listitem +> +</itemizedlist +> + +<para +>Você poderá também considerar executar o servidor de som com prioridade de tempo real se o tempo de resposta não ajudar. Fique atento pois isto pode provocar um bloqueio no sistema. </para +> + +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Eu não consigo remover a lista de reprodução ou a interface de usuário da lista de plugins.</para> +</question> +<answer> +<para +>Uma vez que o &noatun; necessita de pelo menos uma interface com o usuário carregada e uma lista de reprodução, você terá que adicionar um plugin de interface antes de remover o antigo. Adicionar uma nova lista de reprodução removerá automaticamente a antiga. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Onde posso obter mais plugins?</para> +</question> +<answer> +<para +>Os programadores de programas de terceiros podem submeter os seus plugins no <ulink url="http://noatun.kde.org/plugins.phtml" +>sítio web do &noatun;</ulink +>, local onde podem ser baixados por você, usuário. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Como posso escrever um plugin para o &noatun;?</para> +</question> +<answer> +<para +>A documentação, uma referência da <acronym +>API</acronym +>, e exemplo de código fonte estão disponíveis no <ulink url="http://noatun.kde.org" +>sítio web do &noatun;</ulink +>. Do mesmo modo, e no espírito do software de código aberto o código fonte do &noatun; e todos os plugins padrão estão disponíveis. </para> +</answer> +</qandaentry> +</qandaset> +</chapter> + +<chapter id="credits-and-licenses"> +<title +>Créditos e Licenças</title> + +<para +>Direitos autorais do programa 2000-2002 Charles Samuels <email +>charles@kde.org</email +></para> + +<para +>Direitos autorais da documentação 2002 Charles Samuels <email +>charles@kde.org</email +></para> + +<para +>O &noatun; foi trazido até você pelas seguintes pessoas:</para> + +<itemizedlist> +<listitem> +<para +>Charles Samuels <email +>charles@kde.org</email +></para> +</listitem> +<listitem> +<para +>Neil Stevens <email +>multivac@fcmail.com</email +></para> +</listitem> +<listitem> +<para +>Stefan Westerfeld <email +>stefan@space.twc.de</email +></para> +</listitem> +<listitem> +<para +>Martin Vogt <email +>mvogt@rhrk.uni-kl.de</email +></para> +</listitem> +<listitem> +<para +>Malte Starostik <email +>malte.starostik@t-online.de</email +></para> +</listitem> +<listitem> +<para +>Nikolas Zimmermann <email +>wildfox@kde.org</email +></para> +</listitem> +<listitem> +<para +>Stefan Schimanski <email +>1Stein@gmx.de</email +></para> +</listitem> +</itemizedlist> +<para +>Tradução de Marcus Gama<email +>marcus_gama@uol.com.br</email +></para +> +&underFDL; &underBSDLicense; </chapter> + +<appendix id="installation"> +<title +>Instalação</title> + +<sect1 id="how-to-obtain-Noatun"> +<title +>Como obter o &noatun;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Requisitos</title> + +<para +>O &noatun; requer no mínimo um Pentium 200 com &Linux;, um PowerPC com &Linux; 2.4.1 ou superior, ou outras plataformas. Suporte para mais plataformas será disponibilizado em breve.</para> + +<para +>Para que uma plataforma seja facilmente suportada, terá que ter suporte 'pthread', e o sistema de saída de som <acronym +>OSS</acronym +>, no entanto o sistema <acronym +>ALSA</acronym +> é suportado no &Linux;.</para> + +</sect1> + +<sect1 id="compilation-and-installation"> +<title +>Compilação e Instalação</title> +&install.compile.documentation; <para +>Se você deparar-se com algum problema, por favor reporte ao autor em <email +>charles@kde.org</email +>.</para> + +<para +>Se você possui esta documentação, provavelmente já terá compilado o &noatun;</para> + +</sect1> + +</appendix> + +<glossary id="glossary"> +<title +>Glossário</title> + +<glossentry id="gloss-mc"> +<glossterm +>Leite com Chocolate</glossterm +><glossdef> +<para +>Leite com Chocolate é um plugin de interface de usuário simples e minimalista </para +></glossdef +></glossentry> + +<glossentry id="gloss-arts"> +<glossterm +>&arts;</glossterm +><glossdef> +<para +>&arts; é um sintetizador analógico em tempo real. Uma estrutura de mídia poderosa utilizada pelo &noatun; </para +></glossdef +></glossentry> +<glossentry id="gloss-kj"> +<glossterm +>K-Jöfol</glossterm +><glossdef> +<para +>Este plugin carrega estilos originalmente usadas num reprodutor de mídia do &Windows; de mesmo nome. </para +></glossdef +></glossentry> + +<glossentry id="gloss-keyz"> +<glossterm +>Keyz</glossterm +><glossdef> +<para +>Keyz permite-lhe atribuir teclas a ações no &noatun; </para +></glossdef +></glossentry> +<glossentry id="gloss-young-hickory"> +<glossterm +>Young Hickory</glossterm +><glossdef> +<para +>Young Hickory é um plugin da barra de sistema. </para +></glossdef +></glossentry> +<glossentry id="gloss-kaiman"> +<glossterm +>Noatun</glossterm +><glossdef> +<para +>Kaiman é um plugin que carrega estilos do reprodutor de mídia GQMPEG. Kaiman é um antecessor do &noatun;, foi distribuído com o &kde; para o &kde; 2.0. Quando o &noatun; foi introduzido no &kde; 2.1, o carregador de estilos Kaiman tornou-se um plugin do &noatun;. </para +></glossdef +></glossentry> + +</glossary> + +&documentation.index; +</book> + |