From f7e7a923aca8be643f9ae6f7252f9fb27b3d2c3b Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 3 Dec 2011 11:05:10 -0600 Subject: Second part of prior commit --- tde-i18n-de/docs/tdemultimedia/Makefile.am | 4 + tde-i18n-de/docs/tdemultimedia/Makefile.in | 587 +++++ .../docs/tdemultimedia/artsbuilder/Makefile.am | 4 + .../docs/tdemultimedia/artsbuilder/Makefile.in | 635 +++++ .../docs/tdemultimedia/artsbuilder/apis.docbook | 434 ++++ .../tdemultimedia/artsbuilder/artsbuilder.docbook | 917 ++++++++ .../docs/tdemultimedia/artsbuilder/detail.docbook | 1340 +++++++++++ .../tdemultimedia/artsbuilder/digitalaudio.docbook | 16 + .../docs/tdemultimedia/artsbuilder/faq.docbook | 1312 +++++++++++ .../docs/tdemultimedia/artsbuilder/future.docbook | 401 ++++ .../tdemultimedia/artsbuilder/glossary.docbook | 173 ++ .../docs/tdemultimedia/artsbuilder/gui.docbook | 29 + .../docs/tdemultimedia/artsbuilder/helping.docbook | 237 ++ .../docs/tdemultimedia/artsbuilder/index.cache.bz2 | Bin 0 -> 84014 bytes .../docs/tdemultimedia/artsbuilder/index.docbook | 417 ++++ .../docs/tdemultimedia/artsbuilder/mcop.docbook | 1899 +++++++++++++++ .../docs/tdemultimedia/artsbuilder/midi.docbook | 506 ++++ .../tdemultimedia/artsbuilder/midiintro.docbook | 16 + .../docs/tdemultimedia/artsbuilder/modules.docbook | 1331 +++++++++++ .../docs/tdemultimedia/artsbuilder/porting.docbook | 50 + .../tdemultimedia/artsbuilder/references.docbook | 61 + .../docs/tdemultimedia/artsbuilder/tools.docbook | 1007 ++++++++ tde-i18n-de/docs/tdemultimedia/juk/Makefile.am | 4 + tde-i18n-de/docs/tdemultimedia/juk/Makefile.in | 635 +++++ .../docs/tdemultimedia/juk/history-playlist.png | Bin 0 -> 3182 bytes tde-i18n-de/docs/tdemultimedia/juk/index.cache.bz2 | Bin 0 -> 17644 bytes tde-i18n-de/docs/tdemultimedia/juk/index.docbook | 2425 ++++++++++++++++++++ .../docs/tdemultimedia/juk/juk-adv-search.png | Bin 0 -> 28945 bytes .../docs/tdemultimedia/juk/juk-file-renamer.png | Bin 0 -> 25786 bytes tde-i18n-de/docs/tdemultimedia/juk/juk-main.png | Bin 0 -> 67739 bytes .../docs/tdemultimedia/juk/juk-tag-guesser.png | Bin 0 -> 26641 bytes .../docs/tdemultimedia/juk/normal-playlist.png | Bin 0 -> 2312 bytes .../docs/tdemultimedia/juk/search-playlist.png | Bin 0 -> 2246 bytes tde-i18n-de/docs/tdemultimedia/juk/toolbar.png | Bin 0 -> 13233 bytes .../docs/tdemultimedia/kaboodle/Makefile.am | 4 + .../docs/tdemultimedia/kaboodle/Makefile.in | 635 +++++ .../docs/tdemultimedia/kaboodle/index.cache.bz2 | Bin 0 -> 2444 bytes .../docs/tdemultimedia/kaboodle/index.docbook | 110 + .../docs/tdemultimedia/kioslave/Makefile.am | 4 + .../docs/tdemultimedia/kioslave/Makefile.in | 613 +++++ .../docs/tdemultimedia/kioslave/audiocd.docbook | 329 +++ tde-i18n-de/docs/tdemultimedia/kmid/Makefile.am | 4 + tde-i18n-de/docs/tdemultimedia/kmid/Makefile.in | 635 +++++ .../docs/tdemultimedia/kmid/index.cache.bz2 | Bin 0 -> 16267 bytes tde-i18n-de/docs/tdemultimedia/kmid/index.docbook | 1420 ++++++++++++ tde-i18n-de/docs/tdemultimedia/kmix/Makefile.am | 4 + tde-i18n-de/docs/tdemultimedia/kmix/Makefile.in | 635 +++++ .../docs/tdemultimedia/kmix/index.cache.bz2 | Bin 0 -> 10469 bytes tde-i18n-de/docs/tdemultimedia/kmix/index.docbook | 984 ++++++++ .../tdemultimedia/kmix/kmix-channel-playback.png | Bin 0 -> 1603 bytes .../tdemultimedia/kmix/kmix-channel-record.png | Bin 0 -> 1478 bytes .../docs/tdemultimedia/kmix/kmix-window.png | Bin 0 -> 13237 bytes tde-i18n-de/docs/tdemultimedia/krec/Makefile.am | 4 + tde-i18n-de/docs/tdemultimedia/krec/Makefile.in | 635 +++++ .../docs/tdemultimedia/krec/index.cache.bz2 | Bin 0 -> 13040 bytes tde-i18n-de/docs/tdemultimedia/krec/index.docbook | 669 ++++++ .../docs/tdemultimedia/krec/krec-configuration.png | Bin 0 -> 27771 bytes .../docs/tdemultimedia/krec/krec-hicolor.png | Bin 0 -> 14914 bytes .../docs/tdemultimedia/krec/krec-keramik.png | Bin 0 -> 21383 bytes .../krec/krec-new_file_properties.png | Bin 0 -> 9371 bytes tde-i18n-de/docs/tdemultimedia/kscd/Makefile.am | 4 + tde-i18n-de/docs/tdemultimedia/kscd/Makefile.in | 635 +++++ .../docs/tdemultimedia/kscd/index.cache.bz2 | Bin 0 -> 11297 bytes tde-i18n-de/docs/tdemultimedia/kscd/index.docbook | 1212 ++++++++++ tde-i18n-de/docs/tdemultimedia/kscd/kscd.png | Bin 0 -> 10389 bytes tde-i18n-de/docs/tdemultimedia/kscd/kscd11.png | Bin 0 -> 1383 bytes tde-i18n-de/docs/tdemultimedia/kscd/kscd12.png | Bin 0 -> 26239 bytes tde-i18n-de/docs/tdemultimedia/kscd/kscd13.png | Bin 0 -> 14452 bytes tde-i18n-de/docs/tdemultimedia/kscd/kscd14.png | Bin 0 -> 26052 bytes tde-i18n-de/docs/tdemultimedia/kscd/kscd16.png | Bin 0 -> 21772 bytes tde-i18n-de/docs/tdemultimedia/kscd/kscd3.png | Bin 0 -> 851 bytes tde-i18n-de/docs/tdemultimedia/noatun/Makefile.am | 4 + tde-i18n-de/docs/tdemultimedia/noatun/Makefile.in | 635 +++++ .../docs/tdemultimedia/noatun/index.cache.bz2 | Bin 0 -> 9966 bytes .../docs/tdemultimedia/noatun/index.docbook | 644 ++++++ 75 files changed, 24259 insertions(+) create mode 100644 tde-i18n-de/docs/tdemultimedia/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/apis.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/artsbuilder.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/detail.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/digitalaudio.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/faq.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/future.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/glossary.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/gui.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/helping.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/index.cache.bz2 create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/index.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/mcop.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/midi.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/midiintro.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/modules.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/porting.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/references.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/artsbuilder/tools.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/history-playlist.png create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/index.cache.bz2 create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/index.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/juk-adv-search.png create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/juk-file-renamer.png create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/juk-main.png create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/juk-tag-guesser.png create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/normal-playlist.png create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/search-playlist.png create mode 100644 tde-i18n-de/docs/tdemultimedia/juk/toolbar.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kaboodle/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/kaboodle/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/kaboodle/index.cache.bz2 create mode 100644 tde-i18n-de/docs/tdemultimedia/kaboodle/index.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/kioslave/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/kioslave/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/kioslave/audiocd.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/kmid/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/kmid/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/kmid/index.cache.bz2 create mode 100644 tde-i18n-de/docs/tdemultimedia/kmid/index.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/kmix/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/kmix/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/kmix/index.cache.bz2 create mode 100644 tde-i18n-de/docs/tdemultimedia/kmix/index.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/kmix/kmix-channel-playback.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kmix/kmix-channel-record.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kmix/kmix-window.png create mode 100644 tde-i18n-de/docs/tdemultimedia/krec/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/krec/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/krec/index.cache.bz2 create mode 100644 tde-i18n-de/docs/tdemultimedia/krec/index.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/krec/krec-configuration.png create mode 100644 tde-i18n-de/docs/tdemultimedia/krec/krec-hicolor.png create mode 100644 tde-i18n-de/docs/tdemultimedia/krec/krec-keramik.png create mode 100644 tde-i18n-de/docs/tdemultimedia/krec/krec-new_file_properties.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/index.cache.bz2 create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/index.docbook create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/kscd.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/kscd11.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/kscd12.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/kscd13.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/kscd14.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/kscd16.png create mode 100644 tde-i18n-de/docs/tdemultimedia/kscd/kscd3.png create mode 100644 tde-i18n-de/docs/tdemultimedia/noatun/Makefile.am create mode 100644 tde-i18n-de/docs/tdemultimedia/noatun/Makefile.in create mode 100644 tde-i18n-de/docs/tdemultimedia/noatun/index.cache.bz2 create mode 100644 tde-i18n-de/docs/tdemultimedia/noatun/index.docbook (limited to 'tde-i18n-de/docs/tdemultimedia') diff --git a/tde-i18n-de/docs/tdemultimedia/Makefile.am b/tde-i18n-de/docs/tdemultimedia/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/Makefile.in b/tde-i18n-de/docs/tdemultimedia/Makefile.in new file mode 100644 index 00000000000..b3e7ca8d036 --- /dev/null +++ b/tde-i18n-de/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 = de +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. juk kioslave artsbuilder noatun kaboodle kmid krec kmix 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-de/docs/tdemultimedia/artsbuilder/Makefile.am b/tde-i18n-de/docs/tdemultimedia/artsbuilder/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/Makefile.in b/tde-i18n-de/docs/tdemultimedia/artsbuilder/Makefile.in new file mode 100644 index 00000000000..5425492fe7a --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/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/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 = de +#>- 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-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=future.docbook index.docbook porting.docbook glossary.docbook helping.docbook artsbuilder.docbook detail.docbook midiintro.docbook modules.docbook mcop.docbook gui.docbook faq.docbook index.cache.bz2 midi.docbook tools.docbook Makefile.in digitalaudio.docbook references.docbook apis.docbook Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) glossary.docbook porting.docbook apis.docbook gui.docbook references.docbook mcop.docbook index.docbook detail.docbook future.docbook artsbuilder.docbook digitalaudio.docbook faq.docbook modules.docbook tools.docbook midi.docbook helping.docbook midiintro.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)/artsbuilder + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder + @for base in glossary.docbook porting.docbook apis.docbook gui.docbook references.docbook mcop.docbook index.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 gui.docbook references.docbook mcop.docbook index.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 gui.docbook references.docbook mcop.docbook index.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-de/docs/tdemultimedia/artsbuilder/apis.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/apis.docbook new file mode 100644 index 00000000000..331fa1482d6 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/apis.docbook @@ -0,0 +1,434 @@ + + + +&arts; Application Programming Interfaces + + +Überblick +aRts is not only a piece of software, it also provides a variety of APIs for a variety of purposes. In this section, I will try to describe the "big picture", a brief glance what those APIs are supposed to do, and how they interact. + +There is one important distinction to make: most of the APIs are language and location independent because they are specified as mcopidl. That is, you can basically use the services they offer from any language, implement them in any language, and you will not have to care whether you are talking to local or remote objects. Here is a list of these first: + + + + +core.idl + Basic definitions that form the core of the MCOP functionality, such as the protocol itself, definitions of the object, the trader, the flow system and so on. + + + + +artsflow.idl + + These contain the flow system you will use for connecting audio streams, the definition of Arts::SynthModule which is the base for any interface that has streams, and finally a few useful audio objects + + + + +kmedia2.idl + + + Here, an object that can play a media, Arts::PlayObject gets defined. Media players such as the KDE media player noatun will be able to play any media for which a PlayObject can be found. So it makes sense to implement PlayObjects for various formats (such as mp3, mpg video, midi, wav, ...) on that base, and there are a lot already. + + + + +soundserver.idl + + Here, an interface for the system wide sound server artsd is defined. The interface is called Arts::SoundServer, which implements functionality like accepting streams from the network, playing samples, creating custom other aRts objects and so on. Network transparency is implied due to the use of MCOP (as for everything else here). + + + + +artsbuilder.idl + This module defines basic flow graph functionality, that is, combining simpler objects to more complex ones, by defining a graph of them. It defines the basic interface Arts::StructureDesc, Arts::ModuleDesc and Arts::PortDesc which contain a description of a structure, module, and port. There is also a way to get a "living network of objects" out of these connection and value descriptions, using a factory. + + + + +artsmidi.idl + + This module defines basic midi functionality, like objects that produce midi events, what is a midi event, an Arts::MidiManager to connect the producers and consumers of midi events, and so on. As always network transparency implied. + + + + +artsmodules.idl + Here are various additional filters, oscillators, effects, delays and so on, everything required for real useful signal processing, and to build complex instruments and effects out of these basic building blocks. + + + + +artsgui.idl + + This cares about visual objects. It defines the basic type Arts::Widget from which all GUI modules derive. This will produce toolkit independency, and ... visual GUI editing, and serializable GUIs. Also, as the GUI elements have normal attributes, their values can be straight forward connected to some signal processing modules. (I.e. the value of a slider to the cutoff of a filter). As always: network transparent. + + + + +Where possible, aRts itself is implemented using IDL. On the other hand, there are some language specific APIs, using either plain C++ or plain C. It is usually wise to use IDL interfaces where possible, and the other APIs where necessary. Here is a list of language specific APIs: + + + + +KNotify, KAudioPlayer (included in libtdecore) + + These are convenience KDE APIs for the simple and common common case, where you just want to play a sample. The APIs are plain C++, Qt/KDE optimized, and as easy as it can get. + + + + +libartsc + Plain C interface for the sound server. Very useful for porting legacy applications. + + + + +libmcop + + Here all magic for MCOP happens. The library contains the basic things you need to know for writing a simple MCOP application, the dispatcher, timers, iomanagement, but also the internals to make the MCOP protocol itself work. + + + + +libartsflow + Besides the implementation of artsflow.idl, some useful utilities like sampling rate conversion. + + + + +libqiomanager + + Integration of MCOP into the Qt event loop, when you write Qt applications using MCOP. + + + + + + + + + +knotify +Noch nicht geschrieben. + + + +kaudioplayer +Noch nicht geschrieben. + + + +libkmid +Noch nicht geschrieben. + + + +kmedia2 +Noch nicht geschrieben. + + + +sound server +Noch nicht geschrieben. + + + +artsflow +Noch nicht geschrieben. + + + +C <acronym +>API</acronym +> + + +Einleitung + +The &arts; C API was designed to make it easy to writing and port plain C applications to the &arts; sound server. It provides streaming functionality (sending sample streams to artsd), either blocking or non-blocking. For most applications you simply remove the few system calls that deal with your audio device and replace them with the appropriate &arts; calls. + +I did two ports as a proof of concept: mpg123 and quake. You can get the patches from here. Feel free to submit your own patches to the maintainer of &arts; or of multimedia software packages so that they can integrate &arts; support into their code. + + + + +Quick Walkthrough + +Sending audio to the sound server with the API is very simple: + +include the header file using #include <artsc.h> +initialize the API with arts_init() +create a stream with arts_play_stream() +configure specific parameters with arts_stream_set() +write sampling data to the stream with arts_write() +close the stream with arts_close_stream() +free the API with arts_free() + + +Here is a small example program that illustrates this: + +#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; +} + + + + +Compiling and Linking: <application +>artsc-config</application +> + +To easily compile and link programs using the &arts; C API, the artsc-config utility is provided which knows which libraries you need to link and where the includes are. It is called using + +artsc-config + + +to find out the libraries and + +artsc-config + + +to find out additional C compiler flags. The example above could have been compiled using the command line: + +cc + +cc + + + + + +Library Reference + +[TODO: generate the documentation for artsc.h using kdoc] + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/artsbuilder.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/artsbuilder.docbook new file mode 100644 index 00000000000..7b189cffc4f --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/artsbuilder.docbook @@ -0,0 +1,917 @@ + +&arts-builder; + + +Überblick + +Wenn Sie &arts-builder; verwenden wollen, sollten Sie zuerste den Klangserver (&artsd;) starten. Normalerweise ist er bereits gestartet, wenn Sie &kde; 2.1 oder höher verwenden. Ansonsten können Sie ihn in &kcontrol; unter Sound & MultimediaSound-System zum automatischen Start einrichten. + +Wenn Sie &arts; verwenden, startet es kleine Module. &arts-builder; ist ein Werkzeug zur Erstellung neuer Strukturen von kleinen verbundenen Modulen. Sie können die Module einfach innerhalb des Gitters anordnen. Wählen Sie dazu aus dem Menü Module aus und klicken Sie dann irgendwo im grün-grauen Bereich. + +Module habe üblicherweise Kanäle (durch die Audiosignale hinein und hinaus gelangen). Um zwei Kanäle zu verbinden, klicken Sie auf den Ersten (dadurch wird er orange) und dann auf den Zweiten. Sie können einen Eingabekanal (auf der oberen Modulseite) nur mit einem Ausgabekanal (auf der unteren Modulseite) verbinden. Wenn Sie einem Kanal einen festen Werte geben wollen (oder einen Kanal trennen wollen) so doppelklicken Sie auf diesen. + + + + +Einführung + + +Schritt 1 + +Starten Sie &arts-builder;. + +Um die Ausgabe zu hören, benötigen Sie ein Synth_AMAN_PLAY-Modul. Sie erstellen ein solches Modul, indem Sie Module Synthese SoundIO Synth_AMAN_PLAY auswählen und auf einen freien Platz im Modulbereich klicken. Platzieren Sie das Modul unterhalb der fünften Linie, da wir noch einige Module oberhalb einfügen werden. + +Das Modul hat die Parameter title und autoRestoreID (in der Nähe des linken Kanals) zur Identifikation. Um diese auszufüllen, doppelklicken Sie auf diese Kanäle, wählen Sie konstanter Wert und tippen Sie tutorial in das Eingabefeld. Klicken Sie auf OK zur Bestätigung. + +Klicken Sie auf DateiStruktur ausführen . Sie hören bisher nichts. Das Abspielmodul benötigt irgendetwas als Eingabe. Wenn Sie der Stille eine Weile gelauscht haben, klicken Sie auf OK und gehen Sie zu Schritt 2 + + + +Schritt 2 + +Erstellen Sie ein Synth_WAVE_SIN-Modul (im Menü unter Module Synthese Wellenformen ) und fügen Sie dieses Modul oberhalb von Synth_AMAN_PLAY ein (lassen Sie eine Zeile Platz dazwischen). + +Wie Sie sehen, produziert dieses Modul eine Ausgabe, erfordert aber eine Position pos als Eingabe. Verbinden Sie zuerst die Ausgabe mit den Lautsprechern. Klicken Sie auf den Kanal out des Synth_WAVE_SIN-Modules und dann auf den Kanal left des Synth_AMAN_PLAY-Modules. Damit sind diese zwei Module verbunden. + +Keiner der Oszillatoren in &arts; benötigt eine Frequenz als Eingabe, sondern nur eine Position innerhalb der Welle. Die Position muss zwischen 0 und 1 liegen. Das wird für ein Standard-Synth_WAVE_SIN-Modul auf den Bereich 0 bis 2*Pi umgerechnet. Um eine bestimmte Frequenz zu erzeugen, benötigen Sie ein Synth_FREQUENCY-Modul. + +Erstellen Sie ein Synth_FREQUENCY-Modul (unter Module Synthese Oszillation & Modulation ) und verbinden Sie den pos-Ausgang mit dem pos-Eingang des Synth_WAVE_SIN-Modules. Legen Sie den Frequenzeingang des Frequenzgenerators auf den konstanten Wert 440. + + +Wählen Sie DateiStruktur ausführen. Sie sollten einen Sinuston von 440 Hz in einem von Ihren Lautsprechern hören. Wenn Sie genug zugehört haben, klicken Sie auf OK und gehen Sie zu Schritt 3. + + + + +Schritt 3 + +Es würde sich besser anhören, wenn der Sinuston aus beiden Lautsprechern zu hören wäre. Verbinden Sie den rechten Eingang von Synth_PLAY auch mit dem Ausgang von Synth_WAVE_SIN. + +Erstellen Sie ein Synth_SEQUENCE-Objekt (durch Module Synthese Midi & Sequencing ). Es sollte am oberen Rand platziert werden. Wenn Sie mehr Platz benötigen, können Sie die anderen Module verschieben, indem Sie sie auswählen (um mehrere auszuwählen, verwenden Sie &Shift;) und mit der Maus bewegen. + +Nun verbinden Sie den Frequenzausgaben von Synth_SEQUENCE mit dem Frequenzeingang des Synth_FREQUENCY-Moduls. Stellen Sie die Geschwindigkeit der Sequenz auf den konstanten Wert 0.13 (der Geschwindigkeitseingang ist der linke). + +Geben Sie nun für den rechten Eingang (Sequenz) von Synth_SEQUENCE als konstanten Wert A-3;C-4;E-4;C-4 ein. Das legt eine Sequenz fest. Mehr dazu finden Sie im Abschnitt Modulreferenz. + + +Synth_SEQUENCE benötigt unbedingt eine Sequenz und eine Geschwindigkeit. Ohne diese Angaben wird das Programm vermutlich abstürzen. + + +Wählen Sie DateiStruktur ausführen . Sie sollten nun eine nette Sequenz hören. Klicken Sie auf OK und gehen Sie zu Schritt 4. + + + +Schritt 4 + +Erstellen Sie ein Synth_PSCALE-Modul (durch Module Synthese Hüllkurven ). Trennen Sie den Ausgang der SIN-Welle durch doppelklicken und auswählen von nicht verbunden. Verbinden Sie + + +den SIN-Ausgang mit dem Eingang (inval) von PSCALE + + +Den Ausgang von PSCALE mit dem linken Eingang von AMAN_PLAY + + +den Ausgang von PSCALE mit dem rechten Eingang von AMAN_PLAY + + +den SEQUENCE-Ausgang (pos) mit dem PSCAL-Eingang (pos). + + + +Setzen Sie schließlich den Eingang top von PSCALE auf einen konstanten Wert, z.B. 0.1. + +Das funktioniert folgendermaßen: Das Modul Synth_SEQUENCE gibt zusätzliche Informationen über die Position der gerade erklingenden Note, wobei 0 gerade gestartet und 1 beendet bedeutet. Das Modul Synth_PSCALE skaliert die Lautstärke des Audiostroms von 0 (Ruhe) über 1 (Originallautstärke) zurück zu 0 (Ruhe) abhängig von der Position. Die Position, an der die Maximallautstärke erklingen soll, kann als Positionswert (pos) angegeben werden. 0.1 bedeutet, das nach 10% der Note die Lautstärke ihren Maximalwert erreicht und danach der Ausklingvorgang startet. + + +Wählen Sie DateiStruktur ausführen . Sie sollten nun eine nette Sequenz hören. Klicken Sie auf OK und gehen Sie zu Schritt 4. + + + + +Schritt 5: Daten sollen übertragen werden ;-) + +Starten Sie &arts-builder; ein zweites Mal + +Erstellen Sie ein Synth_AMAN_PLAY-Modul und benennen Sie es sinnvoll. Erstellen Sie ein Synth_BUS_DOWNLINK-Modul und: + + + +benennen Sie den Synth_BUS_DOWNLINK-Bus mit dem Namen Audio (das ist nur ein Name, man könnte auch jeden anderen Name verwenden) + + +Verbinden Sie den linken Ausgang von Synth_BUS_DOWNLINKmit dem linken Eingang von Synth_AMAN_PLAY + + +Verbinden Sie den rechten Ausgang von Synth_BUS_DOWNLINK mit dem rechten Eingang von Synth_AMAN_PLAY + + + +Wenn Sie die Struktur jetzt ausführen, hören Sie noch nichts. + +Gehen Sie zurück zur ersten Struktur in der ersten Instanz von &arts-builder; mit dem Synth_WAVE_SIN-Modul und ersetzen Sie das Modul Synth_AMAN_PLAY durch ein Synth_BUS_UPLINK,-Modul und benennen Sie es Audio (oder den Namen, den Sie für die entsprechende Komponente in der zweiten Instanz von &arts-builder; verwendet haben). Um ein Modul zu löschen, wählen Sie es aus und wählen Sie BearbeitenLöschen aus dem Menü ( oder drücken Sie die Entfernen-Taste). + +Wählen Sie Datei Struktur ausführen. Sie hören die Notensequenz wiedergegeben über die Bus-Verbindung. + +Wenn Sie herausfinden wollen, wozu eine solche Funktion nützlich ist, klicken Sie auf OK ( in der Instanz, die das Synth_SEQUENCE-Modul enthält, die andere Struktur wird nicht verändert) und gehen Sie zu Schritt 6. + + + +Schritt 6 Übertragung für Fortgeschrittene + +Wählen Sie DateiStruktur umbenennen in der Instanz, die das Synth_SEQUENCE-Modul enthält und benennen Sie die Struktur Anleitung. Bestätigen Sie mit OK. + +Wählen Sie DateiSpeichern + +Starten Sie eine weitere Instanz von &arts-builder; und wählen Sie DateiÖffnen und laden Sie die Struktur Anleitung. + +Nun wählen Sie im Menü DateiStruktur ausführen in beiden Instanzen. Sie hören nun die gleiche Struktur zweimal. Abhängig von der Zeitverschiebung wird es mehr oder weniger glücklich klingen. + +An dieser Stelle können Sie noch folgendes tun: Starten Sie &noatun; und spielen Sie einige mp3-Dateien ab. Starten Sie &artscontrol; und wählen Sie AnsichtAudiomanager anzeigen. Es wird &noatun; und ihre Struktur Anleitung angezeigt. Klicken Sie doppelt auf &noatun;. Daraufhin wird eine Liste der Ausgabegeräte angezeigt. Auch die Struktur wird mit aufgeführt. Sie können die Ausgabe von &noatun; über den Audio-Bus durch ihre Wiedergabestruktur leiten. + + + +Schritt 7: Midi-Synthese + +Jetzt wollen wir den Sinusgenerator in ein wirkliches Musikinstrument verwandeln. Dazu benötigen Sie ein Gerät, das &MIDI;-Ereignisse an &arts; senden kann. Sie können ein externes Keyboard (wie im folgenden beschrieben wird) aber auch einen Sequenzer, der den Midi-bus unterstützt, wie &brahms; verwenden. + +Beenden Sie zuerst alle überflüssigen Instanzen von &arts-builder;. Sie benötigen lediglich die Instanz mit dem Sinusgenerator. Wählen Sie dreimal Kanäle Audio-Eingangssignal erstellen und dreimal Kanäle Audio-Ausgangssignal erstellen und platzieren Sie die Module geeignet. + +Wählen Sie Kanäle Positionen/Namen ändern und benennen Sie die Kanäle um in frequency(Frequenz), velocity(Lautstärke), pressed(gedrückt), left(links), right(rechts) und done(stopp) um. + +Sie können nun das Modul Synth_SEQUENCE löschen und stattdessen den Frequenzeingangskanal mit dem Modul Synth_FREQUENCY-Eingang verbinden. Was soll nun mit dem pos-Eingang passieren? Dieser Eingang bleibt unbesetzt, da es keinen Algorithmus der Welt gibt, der vorausberechnen kann, wann ein Spieler die Taste des Keyboards, die er gerade gedrückt hat, wieder loslassen wird. Daher haben wir nur einen Parameter gedrückt stattdessen, der anzeigt, ob der Spieler die Taste noch gedrückt hält (gedrückt=1: Taste immer noch heruntergehalten; gedrückt=0: Taste losgelassen) + +Das Synth_PSCALE-Objekt muss nun auch ersetzt werden. Ersetzen Sie es durch ein Synth_ENVELOPE_ADSR-Modul (durch ModuleSynthese Hüllkurven). Verbinden Sie: + + + +den Struktureingang mit dem Ausgang active von ADSR + + +den SIN-Ausgang mit dem Eingang (inval) von ADSR + + +den Ausgang (outvalue) von ADSR mit dem linken Strukturausgang + +den ADSR-Ausgang (outvalue) mit dem rechten Strukturausgang + + + +Setzen Sie die Parameter attack auf 0.1, decay auf 0.2, sustain auf 0.7 und release auf 0.1. + +Weiterhin müssen wir daran denken, das die Instrumentenstruktur wissen muss, wenn der Spieler mit spielen fertig ist, da sonst der letzte Klang nicht beendet wird, auch wenn die letzte Taste losgelassen worden ist. Glücklicherweise weiß die ADSR-Hüllkurve (envelope), wann nichs mehr zu hören ist, da das Signal nach dem Loslassen der letzten Taste irgendwann auf Null reduziert wird. + +Das wird erreicht, indem der Ausgang done auf 1 gesetzt wird. Verbinden Sie diesen Ausgang mit dem Ausgangskanal stopp. Damit wird die Struktur beendet, sobald dieser Ausgang auf 1 wechselt. + +Benennen Sie die Struktur in Instrument_Anleitung um (durch Datei Struktur umbenennen). Speichern Sie die Struktur nun (der vorgegebene Name sollte jetzt Instrument_Anleitung sein).Starten Sie nun artscontrol, wählen Sie AnsichtMidi-Manager und wählen SieHinzufügenaRts-Synthese Midi-Ausgabe. Hier sollten Sie in der Lage sein, ihr Instrument (Anleitung) auszuwählen. + +Wenn Sie jetzt ein Terminal öffnen und midisend eintippen, sollte midisend und das Instrument im &arts; &MIDI;-Manager angezeigt werden. Wählen Sie beides aus und klicken Sie auf Verbinden. Damit sind die Vorbereitungen abgeschlossen. Nehmen Sie nun ihr Keyboard und beginnen Sie zu spielen (selbstverständlich nachdem Sie es mit dem Computer verbunden haben). + + + +Hinweise + +Sie sind nun in der Lage, &arts; zu verwenden. Hier sind noch einige Tipps, die den Umgang mit Strukturen verbessern können: + + + +Versuchen Sie andere Module anstelle von SIN. Wenn Sie eine TRI-Wellenform verwenden, werden Sie vermutlich feststellen, das diese Wellenform nicht besonders hübsch klingt. Hängen Sie einen SHELVE_CUTOFF-Filter an das TRI-Modul, um alle Frequenzen oberhalb einer bestimmten Grenzfrequenz (versuchen Sie etwa 1000 Hz oder besser noch die doppelte Eingabefrequenz +200 Hz oder einen ähnlichen Wert). + + +Verwenden Sie mehrere Oszillatoren zusammen. Synth_XFADE kann zum kreuzweisen mixen (cross fade) von zwei Signalen verwendet werden, Synth_ADD zum Addieren von zwei Signalen. + + +Verstimmen Sie die Oszillatoren geringfügig gegeneinander. Das erzeugt nette Schwebungen. + + +Experimentieren Sie mit mehreren Hüllkurven (envelopes) gleichzeitig. + + +Stellen Sie Instrumente zusammen, die verschiedene Signale auf den linken und rechten Ausgang legen. + + +Verarbeiten Sie das Signal, das aus dem Downlink-Bus kommt, weiter. Sie können für einen Echo-Effekt das ursprüngliche Signal etwas verzögert dazumischen. + + +Verwenden Sie die Lautstärkeeinstellung (die Stärke, mit der die Taste gedrückt worden ist). Ein besonderer Effekt entsteht, wenn der Lautstärkewert nicht nur die Ausgabelautstärke sondern auch den Klang des Instrumentes verändert (zum Beispiel die Grenzfrequenz). + + +... + + + +Wenn Sie eine besondere Struktur konstruiert haben, schicken Sie sie an die &arts;-Internetseite. Sie kann dann der nächsten Version beigelegt werden. + + + + + +Beispiele + +Die Beispiele, mit denen &arts-builder; verteilt wird, können Sie unter DateiBeispiel öffnen ... finden. Einige befinden sich im angezeigten Verzeichnis, einige (die in der aktuellen Version aus irgendwelchen Gründen nicht funktionieren) befinden sich im todo-Verzeichnis. +Die Beispiele können in mehrere Kategorien eingeteilt werden: + + + +Modulbeispiele demonstrieren jeweils eines der in arts enthaltenen Modules (example_*.arts benannt). Sie senden üblicherweise irgendwelche Ausgaben an die Soundkarte. + + + +Instrumente (mit Namen instrument_*.arts) sind aus den grundlegenden arts-Modulen zusammengesetzt. Sie haben standardisierte Ein- und Ausgabekanäle, so dass sie mit dem &MIDI;-Manager aus &artscontrol; verwendet werden können. + + + +Vorlagen ( mit Namen template_*.arts) zur Erstellung neuer Module. + + + +Effekte (mit Namen effect_*.arts) können als Bausteine verwendet werden [momentan alle im todo-Verzeichnis] + + + +Mixer-Elemente (mit Namen mixer_element_*.arts) können zur Erstellung von Mixern mit graphischen Kontrollelementen verwendet werden [momentan alle im todo-Verzeichnis ] + + + +Verschiedene Module, die in keine der angegebenen Kategorien passen. + + + + +Detailierte Beschreibung der einzelnen Module: + +example_stereo_beep.arts + +Sendet einen 440Hz-Sinuston an den linken und einen 880Hz-Sinuston an den rechten Kanal der Soundkarte. Dieses Modul wird in der &arts;-Dokumentation erwähnt. + + + + +example_sine.arts + +Erzeugt einen 440Hz-Sinuston. + + + + +example_pulse.arts + +Erzeugt einen 440Hz-Impulston mit 20%-Arbeitswiederholung (duty cycle). + + + + +example_softsaw.arts + +Erzeugt eine 440Hz-Sägezahnschwingung. + + + + +example_square.arts + +Erzeugt eine 440Hz-Rechteckschwingung. + + + + +example_tri.arts + +Erzeugt eine 440Hz-Dreieckschwingung. + + + + +example_noise.arts + +Erzeugt weißen Lärm. + + + + +example_dtmf1.arts + +Erzeugt einen Doppelton aus einer 697Hz- und 1209Hz-Sinusschwingung, die mit 0.5 skaliert und addiert werden. Es entsteht der DTMF-Ton für die Ziffer "1" einer Telefontastatur. + + + + +example_atan_saturate.arts + +Eine Dreieckschwingung wird mit einem atan-Sättigungsfilter verändert. + + + + +example_autopanner.arts + +Verwendet ein Autopan-Modul, um einen 400Hz-Sinuston mit einer Frequenz von 2 Hz zwischen dem linken und rechten Lautsprecher hin- und herzubewegen. + + + + +example_brickwall.arts + +Skaliert eine Sinusschwingung mit dem Faktor 5 und verändert sie mit einem brickwall-Begrenzer. + + + + +example_bus.arts + +Vom Bus mit dem Namen Bus wird zum Bus out_soundcard eine Verbindung mit vertauschten Kanälen hergestellt. + + + + +example_cdelay.arts + +Verbindet von einem Bus namens Delay zum rechten Ausgangskanal mit einer Verzögerung von 0.5 Sekunden (cdelay), während der linke Kanal unverändert bleibt. Mit &artscontrol; können Sie diesen Effekt mit einem Abspieler verbinden. Das Resultat ist hörenswert. + + + + +example_delay.arts + +Das gleiche Beispiel wie example_cdelay.arts, mit dem Unterschied, dass der delay-Effekt anstelle von cdelay verwendet wird. + + + + +example_capture_wav.arts + +Mit dem Modul Synth_CAPTURE_WAV wird ein 400Hz-Sinuston als wav-Datei gespeichert. Lassen Sie das Modul für 2 Sekunden laufen und untersuchen Sie die in /tmp erzeugte Datei. Sie können Sie mit einem Spieler wie kaiman abspielen. + + + + +example_data.arts + +Mit einem Data-Modul wird ein konstanter Strom mit dem Wert 3 erzeugt und für die periodische Anzeige an ein Debug-Modul gesendet. Das Beispiel enthält weiterhin ein Nil-Modul, das demonstriert, wie man eine Struktur erzeugt, die gar nichts tut. + + + + +example_adsr.arts + +Demonstriert, wie man mit dem Envelope-Adsr-Modul einen einfachen Instrumentenklang erzeugt, der durch eine Rechteckschwingung geschaltet wird. + + + + +example_fm.arts + +Ein FM-Quellmodul erzeugt einen 440Hz-Sinuston, der dann mit 5 Hz frequenzmoduliert wird. + + + + +example_freeverb.arts + +Verbindet den Freeverb-Effekt von einem Bus downlink zu einem Bus outlink. Sie können mit artscontrol diesen Effekt mit einem Spieler verbinden und sich das Resultat anhören. + + + + +example_flanger.arts + +Implementiert einen einfachen Flanger-Effekt (scheint bisher nicht zu funktionieren). + + + + +example_moog.arts + +Diese Struktur kombiniert zwei Kanäle von einem Bus, schickt das Signal durch einen Moog-VCF-Filter und das Ergebnis auf den out_soundcard-Bus. + + + + +example_pitch_shift.arts + +Diese Struktur schickt den linken Kanal von Soundkartendaten durch einen Höhenverschiebungseffekt (pitch shift). Mit dem Speed-Parameter kann der Effekt modifiziert werden. + + + + +example_rc.arts + +Diese Struktur sendet weißen Lärm durch einen RC-Filter und dann an die Soundkarte. Betrachten Sie das Ergebnis in der FFT-Anzeige von artscontrol, um den Unterschied zu ungefiltertem Lärm zu sehen. + + + + +example_sequence.arts + +Demonstriert die Verwendung des Sequencer-Moduls durch das Abspielen einer Notensequenz. + + + + +example_shelve_cutoff.arts + +Diese Struktur schickt weißen Lärm durch einen Shelve-Cutoff-Filter und dann an die Soundkarte. Das Ergebnis können Sie in der FFT-Anzeige von artscontrol betrachten. + + + + +example_equalizer.arts + +Demonstriert das Std_Equalizer-Modul. Es hebt die Höhen und Tiefen um 6dB an. + + + + +example_tremolo.arts + +Demonstriert den Tremolo-Effekt. Der rechte und linke Kanal werden mit einem 10Hz-Tremolo moduliert. + + + + +example_xfade.arts + +Dieses Beispiel mixt einen 440Hz- und einen 880Hz-Sinuston mit einem "cross fader". Verändern Sie die Prozentanzeige von -1 bis 1, um die Mischung der zwei Signale zu beeinflussen. + + + + +example_pscale.arts + +Demonstriert das Pscale-Modul (ich zweifle, dass dieses Beipiel aussagekräftig ist). + + + + +example_play_wav.arts + +Illustriert das Play_Wave-Modul. Sie müssen den kompletten Pfad zur wav-Datei als Parameter filename angeben. + + + + +example_multi_add.arts + +Zeigt, wie das Multi_Add-Modul eine beliebige Anzahl Eingangssignale aufsummiert. Drei Eingänge mit den Werten 1,2 und 3 erzeugen den Ausgangswert 6. + + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/detail.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/detail.docbook new file mode 100644 index 00000000000..69cd2931360 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/detail.docbook @@ -0,0 +1,1340 @@ + + + +Details zu &arts; + + +Architektur + + Die Struktur von &arts;. + + + +Module & Kanäle + + &arts; beruht auf einem Synthesemodell, bei dem aus kleinen Modulen, die jedes für sich eine spezialisierte Aufgabe haben, komplexe Strukturen aufgebaut werden. Die Module haben normalerweise Eingänge, über die Signale und Parameter übergeben werden, und Ausgänge, an denen die Ergebnissignale anliegen. + + Das Modul Synth_ADD zum Beispiel addiert die zwei Eingangssignal zu einem Summensignal, das als Ausgangssignal verfügbar ist. Die Stellen, mit denen die Ein-/Ausgangssignale verbunden werden heißen Kanäle (ports). + + + + +Strukturen + + Eine Struktur besteht aus mehreren verbundenen Modulen, bei denen einige Kanäle feste Parameter haben, andere untereinander verbunden sind während einige Kanäle vielleicht gar nicht verbunden sind. + + &arts-builder; dient zur Beschreibung dieser Strukturen. Sie beschreiben, welche Module in welcher Weise verbunden werden sollen. Wenn Sie damit fertig sind, können Sie die Beschreibung speichern oder &arts; zu der Erzeugung der Struktur veranlassen (Struktur ausführen). + + Als Ergebnis hören Sie wahrscheinlich einige Klänge, falls nichts schiefgegangen ist. + + + + + +Aussetzer + + +Was bedeutet Verzögerung? + + Angenommen Sie haben ein Programm mit Namen Mausklick, das ein Klicken von sich geben soll, wenn Sie eine Maustaste betätigen. Die Verzögerungszeit ist die Zeit zwischen dem Betätigen der Maustaste und dem Ertönen des Klicken. Die Einstellung der Verzögerungszeit besteht aus mehreren Verzögerungszeiten, die unterschiedliche Ursachen haben. + + + + +Verzögerungszeit in einfachen Anwendungen + + In dieser einfachen Anwendung werden an folgenden Stellen Verzögerungen verursacht: + + Zeit, die der Betriebssystemkern benötigt, um dem X11-Server den Mausklick mitzuteilen. Zeit, die der X11-Server benötigt, um der Anwendung den Mausklick mitzuteilen. Zeit, die die Anwendung benötigt, um aufgrund des Mausklicks einen Klick-Ton auszulösen. Zeit, die die Anwendung benötigt, um dem Soundserver den Befehl zum Klick-Ton zu geben. Zeit, die der Klick-Ton benötigt (den der Soundserver sofort in den Ausgabestrom einmischt), um den Datenpuffer zu passieren, bis er die Stelle erreicht, an der die Soundkarte gerade Daten wiedergibt. Zeit, die der Klick-Ton von den Lautsprechern bis zu Ihrem Ohr benötigt. + + Die ersten drei Verzögerungszeiten sind extern für &arts;. Sie sind wichtig, aber nicht Gegenstand dieser Dokumentation. Sie sollten sich dennoch dieser Verzögerungen bewusst sein, denn selbst wenn Sie alle anderen Verzögerungen sehr gering halten, erhalten Sie vielleicht dennoch nicht exakt die erwarteten Resultate. + + Ein Spielbefehl an den Server besteht normalerweise aus einem &MCOP;-Funktionsaufruf. Es gibt Geschwindigkeitstests,die belegen, dass ein solcher Befehl auf einem Rechner bei der jetzigen Implementation etwa 9000 mal pro Sekunde ausgeführt werden kann. Ich denke, das meiste der Zeit wird Kernel-Overhead für die Umschaltung zwischen verschiedenen Anwendungen sein. Natürlich hängen diese Werte von den exakten Parametertypen des Aufrufs ab. Die Übergabe eines vollständigen Bildes in einem Aufruf dauert länger als die Übergabe eines einzigen Werte. Das Gleiche gilt für den Rückgabewert. Für normale Zeichenketten (wie der Dateiname der zu spielenden wav-Datei) sollte das aber kein Problem darstellen. + + Das bedeutet, diese Zeit kann mit 1/9000 Sekunde abgeschätzt werden. Das ist weniger als 0,15 ms. Sie werden sehen, das diese Zeitspanne unwichtig ist. + + Die nächste Verzögerungszeit ist die Zeit vom Starten des Soundservers und der Ankunft dieses Beginns auf der Soundkarte. Der Server muss einen Puffer verwenden, damit man keine Aussetzer hört, wenn eine andere Anwendung wie der X11-Server oder das Mausklick-Programm aktiv sind. Das wird unter &Linux; verwirklicht, indem eine Anzahl Bruchstücke einer bestimmte Größe erzeugt werden. Der Server füllt die Bruchstücke und die Soundkarte spielt die Bruchstücke ab. + + Angenommen es gibt drei Bruchstücke. Der Server füllt das Erste, die Soundkarte beginnt mit dem Abspielen. Der Server füllt das Zweite. Der Server füllt das Dritte. Der Server ist fertig, andere Anwendungen können nun aktiviert werden. + + Nach dem ersten Bruchstück spielt die Soundkarte das Zweite ab und der Server füllt das erste Bruchstück wieder. Das geht immer so weiter. + + Damit ergibt sich eine maximale Verzögerungszeit von (Anzahl der Bruchstücke)*(Größe eines Bruchstückes)/(Samplingrate * (Größe eines Samples)). Bei 44kHz Stereo und 7 Bruchstücken von je 1024 Byte Größe (die aktuellen Standardwerte von aRts) entspricht das einer Verzögerungszeit von 40 ms. + + Diese Werte können Sie Ihren Anforderungen anpassen. Allerdings steigt die CPU-Belastung mit kleineren Verzögerungszeiten, da der Soundserver die Puffer häufiger und in kleineren Bruchstücken füllen muss. Es ist außerdem meistens unmöglich, bessere Werte zu erreichen, ohne das Aussetzer zu hören sind, es sei denn, sie versehen den Soundserver mit Echtzeit-Priorität. + + Dennoch ist eine Einstellung von 3 Bruchstücken mit je 256 Bytes, die einer Verzögerung von 4,4 ms entsprechen, realistisch. Mit 4,4 ms Verzögerungszeit belastet &arts; die CPU im Ruhezustand mit 7,5%. Mit einer Verzögerung von 40 ms beträgt die Belastung etwa 3% (bei einem PII-350, diese Werte können abhängig von der Soundkarte, Kernel-Version und anderen Faktoren variieren). + + Jetzt zu der Zeit, die der Klick-Ton von den Lautsprechern bis zum Ohr benötigt. Bei einer angenommenen Distanz von 2 Metern ergibt sich bei einer Schallgeschwindigkeit von 330 Meter pro Sekunde eine Verzögerung von etwa 6 ms. + + + + +Verzögerungszeit in Streaming-Anwendungen + + Streaming-Anwendungen produzieren ihre Klänge selbst. Angenommen, ein Spiel, das einen konstanten Strom von Samples erzeugt, soll nun für die Wiedergabe durch &arts; verwendet werden. Als Beispiel: Wenn ich eine Taste drücke, hüpft die Spielfigur und es ertönt ein Boing-Klang. + + Als Erstes muss man wissen, wie &arts; Streaming realisiert. Der Ablauf ist ähnlich wie bei der Ausgabe auf einer Soundkarte. Das Spiel sendet einige Pakete mit Samples zum Soundserver. Angenommen, es sinc drei Pakete. Sobald der Soundserver das erste Paket wiedergegeben hat, schickt er eine Bestätigung zurück zum Spiel. + + Das Spiel erzeugt ein neues Paket und schickt es zum Server. Währenddessen verarbeitet der Server das zweite Paket und so weiter. Die Verzögerungszeiten hier sind ähnlich wie bei dem einfachen Beispiel: + + Zeit, bis der Betriebssystemkern dem X11-Server den Tastendruck mitgeteilt hat. Zeit, bis der X11-Server dem Spiel den Tastendruck mitgeteilt hat. Zeit, bis das Spiel entschieden hat, das aufgrund des Tastendrucks ein Boing-Ton auszugeben ist. Zeit, bis das Paket mit dem Anfang des Boing-Tons den Soundserver erreicht hat. Zeit, bis der Boing-Ton (den der Soundserver sofort in die Ausgabe einmischt) den Datenpuffer passiert hat bis zu der Stelle, an der die Soundkarte gerade wiedergibt. Zeit, die der Boing-Ton von den Lautsprechern bis zum Ohr benötigt. + + Die externen Verzögerungen sind gehen wiederum über den Inhalt dieses Dokumentes hinaus. + + Offensichtlich hängt die Streaming-Verzögerung von der Zeit ab, die alle Pakete benötigen, einmal wiedergegeben zu werden. Also ist diese Zeit (Anzahl der Pakete)*(Größe eines Paketes)/(Samplingrate * (Größe eines Samples)) + + Wie man sieht, ist das die gleiche Formel, wie sie bei den Bruchstücken verwandt wird. Für Spiele sind solch geringer Verzögerungszeiten wie oben überflüssig. Eine realistische Festlegung für Spiekle wären 2046 Bytes pro Paket bei drei Paketen. Die resultierende Verzögerung ist dann etwa 35 ms. + + Diese Berechnung basiert auf folgenden Annahmen: das Spiel rendert 25 Bilder pro Sekunde (für die Anzeige). Einen Verschiebung zwischen Ton und Film von einem Bild nimmt man nicht wahr. Daher ist eine Verzögerung von 1/25 Sekunde für Streaming akzeptabel, was wiederum bedeutet, das 40ms in Ordnung sind. + + Außerdem werden die meisten Leute ihre Spiele nicht mit Echtzeit-Priorität spielen und daher ist die Gefahr von Aussetzern nicht zu vernachlässigen. Bei 3 Paketen je 256 Bytes ist Streaming möglich (nach eigenen Tests) - es verbraucht aber eine Menge CPU-Zeit. + + Für die Serververzögerungszeiten können Sie genau wie oben rechnen. + + + + +Einige Überlegungen zu <acronym +>CPU</acronym +>-Zeit + + Es gibt eine Menge Faktoren, die in komplexen Situationen mit einigen Streaming-Anwendungen und einigen Anderen sowie einigen Plugins auf dem Server einen Einfluß auf die CPU-Zeit haben. Um einige zu nennen: + + CPU-Zeit für die notwendigen Berechnungen. &arts; interner Scheduler-Aufwand - wie &arts; entscheidet, wann welches Modul was berechnen soll. Aufwand zur Konvertierung von Ganzzahlen in Kommazahlen. &MCOP;-Protokoll-Aufwand. Kernel: Prozeß-/Kontextumschaltung. Kernel: Kommunikationsaufwand. + + Für die CPU-Berechnungszeit bei zwei gleichzeitig abgespielten Datenströmen muss man Additionen durchführen. Falls man einen Filter verwendet, sind einige weitere Berechnungen notwendig. Ein einfaches Beispiel mit zwei Strömen mit vier CPU-Zyklen pro Addition führen auf einem 350MHz-Prozessor zu 44100*2*4/350000000 = 0,1% CPU-Auslastung. + + &arts; internes Scheduling: &arts; muss bestimmen, welches Plugin wann was berechnet. Das benötigt Zeit. Wenn man Genaueres wissen will, sollte man einen Profiler zu Rate ziehen. Generell lässt sich Folgendes sagen: je weniger Wert man auf Echtzeit legt (also je größer die zu berechnenden Blöcke sind) um so wenig Scheduling Zeit wird benötigt. Bei mehr als 128 Samples in einem Stück (also einer Bruchstückgröße von 512 Bytes) ist der Scheduling-Aufwand wahrscheinlich nicht einmal nennenswert. + + Aufwand zur Konvertierung von Ganzzahlen in Kommazahlen: &arts; verwendet intern Kommazahlen als Datenformat. Sie sind einfach zu verarbeiten und auf zeitgemäßen Prozessoren kaum langsamer als Ganzzahlen. Wenn aber Programme ihre Daten nicht in Kommazahlen abspielen (wie ein Spiel, das seine Känge über &arts; ausgibt), müssen diese Daten konvertiert werden. Das Gleiche gilt für die Ausgabe auf einer Soundkarte. Soundkarten benötigen Ganzzahlen, also muss eine Konvertierung durchgeführt werden. + + Die folgenden Zahlen gehören zu einem Celeron, ungefähre ticks pro Sample, mit -O2 +egcs 2.91.66 (berechnet von Eugene Smith hamster@null.ru). Diese Zahlen sind naturgemäß sehr prozessorabhängig. + + +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 + + + Das bedeutet 1% CPU-Zeit für die Konvertierung und 5% für die Interpolation auf diesem 350 MHz-Prozessor. + + &MCOP; Protokoll-Aufwand: &MCOP; verträgt ungefähr 9000 Aufrufe pro Sekunde. Das hat wenige mit &MCOP; als mit den zwei Kernelgründen zu tun, die weiter unten beschrieben werden. Dennoch gibt das einen Anhaltspunkt für die Berechnung der Kosten von Streaming. + + Jedes übertragene Datenpaket erfordert einen &MCOP;-Aufruf. Natürlich ist das nur ein Richtwert, da große Pakete langsamer als 9000 Pakete/s sind. + + Angenommen man verwendet als Paketgröße 1024 Bytes. Für einen Stream mit 44kHz Stereo muss man also 44100*4/1024 = 172 Pakete pro Sekunde übertragen. Weiter angenommen, 9000 Pakete pro Sekunde entspricht einer CPU-Auslastung von 100%, dann erhält man (172*100)/9000 = 2% CPU-Auslastung bei einem Streaming mit 1024 Bytes pro Paket. + + Das sind nur Näherungen. Sie zeigen aber deutlich, dass man viel besser dran ist (wenn man die Verzögerungszeit tolerieren kann) mit einer Paketgröße von 4096 Bytes. Wir können eine kompakte Rechnung durchführen, wenn wir die Paketgröße für 100% CPU-Auslastung berechnen mit 44100*4/9000 = 19,6 Samples; daraus erhalten wir folgende Formel: + + Streaming CPU-Auslastung in Prozent = 1960/(Paketgröße) + + das ergibt 0,5% CPU-Auslastung bei Streaming mit einer Paketgröße von 4096 Bytes. + + Kernel Prozeß-/Kontextumschaltung: dieser Aufwand ist ein Teil des &MCOP;-Protokolls. Die Umschaltung zwischen zwei Prozessen benötigt Zeit. Es wird der Speicher neu aufgeteilt, der Cache wird ungültig, und vieles mehr (falls ein Kernel-Experte dieses liest - teilen Sie mir bitte die genauen Gründe mit). Das bedeutet: es benötigt Zeit. + + Ich weiß nicht wie viele Kontextwechsel Linux verträgt, aber sicher nur eine endliche Zahl. Daher nehme ich an, das ein erheblicher Teil des &MCOP; Protokollaufwandes durch Kontextumschaltung zu Stande kommt. Ich führte einige Tests mit &MCOP;-Kommunikation innerhalb eines Prozesses durch. Sie war wesentlich schneller (etwa viermal so schnell). + + Kernel: Kommunikationsaufwand: Das ist ebenfalls ein Bestandteil des &MCOP; Protokollaufwandes. Die Datenübertragung zwischen Prozessen wird momentan mittels Sockets durchgeführt. Das ist praktisch, da die üblichen select()-Methoden verwendet werden können, um die Ankunft einer Nachricht zu überprüfen. Das kann leicht mit anderen Ein-/Ausgabequellen wie Audio Ein-/Ausgabe, X11-Server-Kommunikation und einigem Anderen kombiniert werden. + + Diese Lese- und Schreibaufrufe kosten mit Sicherheit Prozessorzeit. Kleine Aufrufe (um ein Midi-Ereignis zu übertragen) sind vermutlich nicht so schlimm, große Aufrufe (z.B. um ein Videobild mit einigen Megabytes zu übertragen) stellen sicherlich ein Problem dar. + + In &MCOP; sollte daher möglichst gemeinsam genutzter Speicher verwendet werden. Das sollte aber keine Änderungen für die Anwendungsprogrammierer mit sich bringen. + + Durch einen Profiler kann man herausbekommen, in welchem Maße genau heutiges Audio Streaming unter der Nichtverwendung von gemeinsam genutztem Speicher leidet. Da Audio Streaming mit &artsd; und artscat mit 6% CPU-Auslastung (Wiedergabe von mp3) durchgeführt werden kann (und 5% für den mp3-Dekoder), kann es nicht so schlimm sein. Das enthält alles einschließlich der notwendigen Berechnungen und dem Socket-Aufwand, daher vermute ich, durch gemeinsam genutzten Speicher könnten vielleicht 1% CPU-Auslastung gespart werden. + + + + +Einige genaue Zahlen + + Diese Zahlen wurden mit der aktuellen CVS-Version ermittelt. Außerdem wollte ich Grenzfälle testen, also sind das Fälle, die in normalen Anwendungen nicht auftreten sollten. + + Ich habe ein Programm namens streamsound geschrieben, das Streaming Daten an &arts; sendet. Die Anwendung läuft hier mit Echtzeit-Priorität (ohne Probleme) und einem kleinen Plugin (für Lauststärkeskalierung und Clipping) auf seiten des Servers: + + + 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 + + + Das Streaming wird jeweils mit 3 Bruchstücken je 1024 Bytes (18 ms) durchgeführt. Drei Programme laufen gleichzeitig. Das scheint ein bisschen zu viel zu sein; mit einem Profiler kann man versuchen, den Aufwand zu verbessern. + + Das ist ein nicht realistisches Testbeispiel. Als weiteren Test wurde versucht, die minimal mögliche Verzögerungszeit herauszufinden. Resultat: man kann Streaming ohne Unterbrechungen mit einem Anwendungsprogramm bei zwei Bruchstücken je 128 Bytes zwischen &arts; und der Soundkarte sowie zwischen der Anwendung und &arts; durchführen. Das entspricht einer maximalen Verzögerung von 128*4/44100*4 = 3 ms, wobei 1,5 ms von der Soundkarte und 1,5 ms durch die Kommunikation mit &arts; entstehen. Beide Anwendungen benötigen Echtzeit-Priorität. + + Das benötigt allerdings einen erheblichen Anteil der CPU. Das Beispiel liegt bei etwa 45% auf meinem P-II/350. Es wird ein Klicken hörbar, wenn man Fenster in X11 bewegt oder Festplattenaktivität verursacht. Das hängt mit dem Kernel zusammen. Das Problem ist, das zwei Echtzeitanwendungen einen erheblichen Aufwand verursachen, mehr noch, wenn Sie auch noch miteinander kommunizieren. + + Schließlich ein realistischeres Beispiel. Es besteht aus &arts; mit artsd und einem artscat (ein Streaming Programm) bei 16 Bruchstücken mit je 4096 Bytes: + + + 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 + + + + + + + + +Busse + + Busse sind dynamisch erzeugte Verbindungen zum Transport von Audiosignalen. Grundlegend werden alle Signale von Uplinks addiert und an die Downlinks weitergeleitet. + + Busse existieren momentan nur in Stereo. Wenn Sie Mono-Daten transportieren wollen, senden Sie sie über einen Kanal und setzen Sie den anderen auf Null. Zur Verwendung erstellen Sie einen oder mehrere Synth_BUS_UPLINK-Module und benennen Sie sie mit dem Busnamen, auf dem Sie senden sollen (z.B. audio oder drums). Dann senden Sie die Daten an diese Uplinks. + + Auf der anderen Seite benötigen Sie einen oder mehrere Synth_BUS_DOWNLINK-Module, denen Sie die gleichen Busnamen geben (also audio oder drums ... gleiche Busnamen werden verbunden). Über diese Busenden erscheinen die gesendeten Signale wieder in einer Struktur. + + Die Uplinks und Downlinks können zu unterschiedlichen Strukturen gehören. Sie können sogar zwei Instanzen von &arts-builder; verwenden und in einer davon einen Uplink und in der Anderen den passenden Downlink haben. + + Eine besondere Eigenschaft ist die Dynamik dieser Verbindungen. Teile können sich jederzeit ein- oder ausklinken; das sollte kein Klicken oder andere Geräusche verursachen. + + Natürlich sollte kein Teil ausgeklinkt werden, während sein Signalpegel höher als Null ist, da sonst natürlich ein Klicken zu hören sein wird. + + + + +Trader + + &arts;/&MCOP; basiert sehr auf der Aufteilung von Aufgaben in kleine Komponenten. Das System wird dadurch sehr flexibel, da man das System auf einfache Weise durch das Hinzufügen neuer Komponenten, die neue Effekte, Dateiformate, Oszillatoren, GUI-Elemente, ... bereitstellen, erweitert werden kann. Da beinahe alles als Komponente programmiert ist, kann beinahe alles einfach erweitert werden, ohne die existierenden Quellen zu verändern. Neue Komponenten, die das System erweitern, werden einfach dynamisch geladen. + + Für einen reibungslosen Ablauf sind zwei Dinge erforderlich: + + Komponenten müssen sich bekannt machen - sie müssen ihre Funktionen beschreiben, damit andere Programme sie verwenden können. Anwendungen müssen aktiv nach verwendbaren Komponenten suchen, anstatt immer die gleichen DInge für eine Aufgabe zu verwenden. + + Die Kombination davon: Komponenten, die sagen: Hier bin ich, verwende mich, und Anwendungen (oder, wenn man so will, andere Komponenten), die nach verwendbaren Komponenten suchen, um eine Aufgabe zu erledigen, nennt man Handel. + + In &arts; beschreiben Komponenten sich selbst, indem sie Werte festlegen, die sie als Eigenschaften unterstützen. Eine typische Eigenschaft einer Komponente zum Laden einer Datei könnte die Dateinamenerweiterung sein, die sie verarbeiten kann. Typische Werte könnten wav, aiff oder mp3 sein. + + Jede Komponente kann viele verschiedene Werte für eine Eigenschaft anbieten. Eine einzige Komponente kann somit sowohl das Einlesen von wav als auch aiff-Dateien anbieten, indem sie diese Werte für die Eigenschaft Extension angibt. + + Um das durchzuführen, muss die Komponente eine .mcopclass-Datei an geeigneter Stelle platzieren, in der sie die unterstützten Eigenschaften festlegt. Eine solche Datei könnte folgendermaßen aussehen (und würde in componentdir/Arts/WavPlayObject.mcopclass installiert): + + +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 + + + It is important that the filename of the .mcopclass-file also says what the interface of the component is called like. The trader doesn't look at the contents at all, if the file (like here) is called Arts/WavPlayObject.mcopclass, the component interface is called Arts::WavPlayObject (modules map to directories). + + To look for components, there are two interfaces (which are defined in core.idl, so you have them in every application), called Arts::TraderQuery and Arts::TraderOffer. You to go on a shopping tour for components like this: + + Create a query object: + Arts::TraderQuery query; + Specify what you want. As you saw above, components describe themselves using properties, for which they offer certain values. So specifying what you want is done by selecting components that support a certain value for a property. This is done using the supports method of a TraderQuery: + query.supports("Interface","Arts::PlayObject"); + query.supports("Extension","wav"); + Finally, perform the query using the query method. Then, you'll (hopefully) get some offers: + vector<Arts::TraderOffer> *offers = query.query(); + Now you can examine what you found. Important is the interfaceName method of TraderOffer, which will tell you the name of the component, that matched the query. You can also find out further properties by getProperty. The following code will simply iterate through all components, print their interface names (which could be used for creation), and delete the results of the query again: + vector<Arts::TraderOffer>::iterator i; + for(i = offers->begin(); i != offers->end(); i++) + cout << i->interfaceName() << endl; + delete offers; + + + For this kind of trading service to be useful, it is important to somehow agree on what kinds of properties components should usually define. It is essential that more or less all components in a certain area use the same set of properties to describe themselves (and the same set of values where applicable), so that applications (or other components) will be able to find them. + + Author (type string, optional): This can be used to ultimately let the world know that you wrote something. You can write anything you like in here, e-mail adress is of course helpful. + + Buildable (type boolean, recommended): This indicates whether the component is usable with RAD tools (such as &arts-builder;) which use components by assigning properties and connecting ports. It is recommended to set this value to true for almost any signal processing component (such as filters, effects, oscillators, ...), and for all other things which can be used in RAD like fashion, but not for internal stuff like for instance Arts::InterfaceRepo. + + Extension (type string, used where relevant): Everything dealing with files should consider using this. You should put the lowercase version of the file extension without the . here, so something like wav should be fine. + + Interface (type string, required): This should include the full list of (useful) interfaces your components supports, probably including Arts::Object and if applicable Arts::SynthModule. + + Language (type string, recommended): If you want your component to be dynamically loaded, you need to specify the language here. Currently, the only allowed value is C++, which means the component was written using the normal C++ API. If you do so, you'll also need to set the Library property below. + + Library (type string, used where relevant): Components written in C++ can be dynamically loaded. To do so, you have to compile them into a dynamically loadable libtool (.la) module. Here, you can specify the name of the .la-File that contains your component. Remember to use REGISTER_IMPLEMENTATION (as always). + + MimeType (type string, used where relevant): Everything dealing with files should consider using this. You should put the lowercase version of the standard mimetype here, for instance audio/x-wav. + + &URL; (type string, optional): If you like to let people know where they can find a new version of the component (or a homepage or anything), you can do it here. This should be standard &HTTP; or &FTP; &URL;. + + + + + + +Namespaces in &arts; + + +Einleitung + + Each namespace declaration corresponds to a module declaration in the &MCOP; &IDL;. + + +// mcop idl + +module M { + interface A + { + } +}; + +interface B; + + + In this case, the generated C++ code for the &IDL; snippet would look like this: + + +// C++ header + +namespace M { + /* declaration of A_base/A_skel/A_stub and similar */ + class A { // Smartwrapped reference class + /* [...] */ + }; +} + +/* declaration of B_base/B_skel/B_stub and similar */ +class B { + /* [...] */ +}; + + + So when referring the classes from the above example in your C++ code, you would have to write M::A, but only B. However, you can of course use using M somewhere - like with any namespace in C++. + + + + +How &arts; uses namespaces + + There is one global namespace called Arts, which all programs and libraries that belong to &arts; itself use to put their declarations in. This means, that when writing C++ code that depends on &arts;, you normally have to prefix every class you use with Arts::, like this: + + +int main(int argc, char **argv) +{ + Arts::Dispatcher dispatcher; + Arts::SimpleSoundServer server(Arts::Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/somefile.wav"); + + + The other alternative is to write a using once, like this: + + +using namespace Arts; + +int main(int argc, char **argv) +{ + Dispatcher dispatcher; + SimpleSoundServer server(Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/somefile.wav"); + [...] + + + In &IDL; files, you don't exactly have a choice. If you are writing code that belongs to &arts; itself, you'll have to put it into module &arts;. + + +// IDL File for aRts code: +#include <artsflow.idl> +module Arts { // put it into the Arts namespace + interface Synth_TWEAK : SynthModule + { + in audio stream invalue; + out audio stream outvalue; + attribute float tweakFactor; + }; +}; + + + If you write code that doesn't belong to &arts; itself, you should not put it into the Arts namespace. However, you can make an own namespace if you like. In any case, you'll have to prefix classes you use from &arts;. + + +// IDL File for code which doesn't belong to aRts: +#include <artsflow.idl> + +// either write without module declaration, then the generated classes will +// not use a namespace: +interface Synth_TWEAK2 : Arts::SynthModule +{ + in audio stream invalue; + out audio stream outvalue; + attribute float tweakFactor; +}; + +// however, you can also choose your own namespace, if you like, so if you +// write an application "PowerRadio", you could for instance do it like this: +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; + }; +}; + + + + + +Internals: How the Implementation Works + + Often, in interfaces, casts, method signatures and similar, &MCOP; needs to refer to names of types or interfaces. These are represented as string in the common &MCOP; datastructures, while the namespace is always fully represented in the C++ style. This means the strings would contain M::A and B, following the example above. + + Note this even applies if inside the &IDL; text the namespace qualifiers were not given, since the context made clear which namespace the interface A was meant to be used in. + + + + + +Threads in &arts; + + +Basics + + Using threads isn't possible on all platforms. This is why &arts; was originally written without using threading at all. For almost all problems, for each threaded solution to the problem, there is a non-threaded solution that does the same. + + For instance, instead of putting audio output in a seperate thread, and make it blocking, &arts; uses non-blocking audio output, and figures out when to write the next chunk of data using select(). + + However, &arts; (in very recent versions) at least provides support for people who do want to implement their objects using threads. For instance, if you already have code for an mp3 player, and the code expects the mp3 decoder to run in a seperate thread, it's usally the easiest thing to do to keep this design. + + The &arts;/&MCOP; implementation is built along sharing state between seperate objects in obvious and non-obvious ways. A small list of shared state includes: + + The Dispatcher object which does &MCOP; communication. The Reference counting (Smartwrappers). The IOManager which does timer and fd watches. The ObjectManager which creates objects and dynamically loads plugins. The FlowSystem which calls calculateBlock in the appropriate situations. + + All of the above objects don't expect to be used concurrently (&dh; called from seperate threads at the same time). Generally there are two ways of solving this: + + Require the caller of any functions on this objects to acquire a lock before using them. Making these objects really threadsafe and/or create per-thread instances of them. + + &arts; follows the first approach: you will need a lock whenever you talk to any of these objects. The second approach is harder to do. A hack which tries to achieve this is available at http://space.twc.de/~stefan/kde/download/arts-mt.tar.gz, but for the current point in time, a minimalistic approach will probably work better, and cause less problems with existing applications. + + + +When/how to acquire the lock? + + You can get/release the lock with the two functions: + + Arts::Dispatcher::lock() Arts::Dispatcher::unlock() + + Generally, you don't need to acquire the lock (and you shouldn't try to do so), if it is already held. A list of conditions when this is the case is: + + You receive a callback from the IOManager (timer or fd). You get call due to some &MCOP; request. You are called from the NotificationManager. You are called from the FlowSystem (calculateBlock) + + There are also some exceptions of functions. which you can only call in the main thread, and for that reason you will never need a lock to call them: + + Constructor/destructor of Dispatcher/IOManager. Dispatcher::run() / IOManager::run() IOManager::processOneEvent() + + But that is it. For everything else that is somehow related to &arts;, you will need to get the lock, and release it again when done. Always. Here is a simple example: + + +class SuspendTimeThread : Arts::Thread { +public: + void run() { + /* + * you need this lock because: + * - constructing a reference needs a lock (as global: will go to + * the object manager, which might in turn need the GlobalComm + * object to look up where to connect to) + * - assigning a smartwrapper needs a lock + * - constructing an object from reference needs a lock (because it + * might need to connect a server) + */ + Arts::Dispatcher::lock(); + Arts::SoundServer server = Arts::Reference("global:Arts_SoundServer"); + Arts::Dispatcher::unlock(); + + for(;;) { /* + * you need a lock here, because + * - dereferencing a smartwrapper needs a lock (because it might + * do lazy creation) + * - doing an MCOP invocation needs a lock + */ + Arts::Dispatcher::lock(); + long seconds = server.secondsUntilSuspend(); + Arts::Dispatcher::unlock(); + + printf("seconds until suspend = %d",seconds); + sleep(1); + } + } +} + + + + + + +Threading related classes + + The following threading related classes are currently available: + + Arts::Thread - which encapsulates a thread. Arts::Mutex - which encapsulates a mutex. Arts::ThreadCondition - which provides support to wake up threads which are waiting for a certain condition to become true. Arts::SystemThreads - which encapsulates the operating system threading layer (which offers a few helpful functions to application programmers). + + See the links for documentation. + + + + + +References and Error Handling + + &MCOP; references are one of the most central concepts in &MCOP; programming. This section will try to describe how exactly references are used, and will especially also try to cover cases of failure (server crashes). + + +Basic properties of references + + An &MCOP; reference is not an object, but a reference to an object: Even though the following declaration + Arts::Synth_PLAY p; + looks like a definition of an object, it only declares a reference to an object. As C++ programmer, you might also think of it as Synth_PLAY *, a kind of pointer to a Synth_PLAY object. This especially means, that p can be the same thing as a NULL pointer. You can create a NULL reference by assigning it explicitly + Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); + Invoking things on a NULL reference leads to a core dump + Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); + string s = p.toString(); + will lead to a core dump. Comparing this to a pointer, it is essentially the same as + QWindow* w = 0; + w->show(); + which every C++ programmer would know to avoid. Uninitialized objects try to lazy-create themselves upon first use + Arts::Synth_PLAY p; + string s = p.toString(); + is something different than dereferencing a NULL pointer. You didn't tell the object at all what it is, and now you try to use it. The guess here is that you want to have a new local instance of a Arts::Synth_PLAY object. Of course you might have wanted something else (like creating the object somewhere else, or using an existing remote object). However, it is a convenient short cut to creating objects. Lazy creation will not work once you assigned something else (like a null reference). The equivalent C++ terms would be + QWidget* w; + w->show(); + which obviously in C++ just plain segfaults. So this is different here. This lazy creation is tricky especially as not necessarily an implementation exists for your interface. For instance, consider an abstract thing like a Arts::PlayObject. There are certainly concrete PlayObjects like those for playing mp3s or wavs, but + Arts::PlayObject po; + po.play(); + will certainly fail. The problem is that although lazy creation kicks in, and tries to create a PlayObject, it fails, because there are only things like Arts::WavPlayObject and similar. Thus, use lazy creation only when you are sure that an implementation exists. References may point to the same object + Arts::SimpleSoundServer s = Arts::Reference("global:Arts_SimpleSoundServer"); + Arts::SimpleSoundServer s2 = s; + creates two references referring to the same object. It doesn't copy any value, and doesn't create two objects. All objects are reference counted So once an object isn't referred any longer by any references, it gets deleted. There is no way to explicitely delete an object, however, you can use something like this + Arts::Synth_PLAY p; + p.start(); + [...] + p = Arts::Synth_PLAY::null(); + to make the Synth_PLAY object go away in the end. Especially, it should never be necessary to use new and delete in conjunction with references. + + + + +The case of failure + + As references can point to remote objects, the servers containing these objects can crash. What happens then? + + A crash doesn't change whether a reference is a null reference. This means that if foo.isNull() was true before a server crash then it is also true after a server crash (which is clear). It also means that if foo.isNull() was false before a server crash (foo referred to an object) then it is also false after the server crash. Invoking methods on a valid reference stays safe Suppose the server containing the object calc crashed. Still calling things like + int k = calc.subtract(i,j) + are safe. Obviously subtract has to return something here, which it can't because the remote object no longer exists. In this case (k == 0) would be true. Generally, operations try to return something neutral as result, such as 0.0, a null reference for objects or empty strings, when the object no longer exists. Checking error() reveals whether something worked. In the above case, + int k = calc.subtract(i,j) + if(k.error()) { + printf("k is not i-j!\n"); + } + would print out k is not i-j whenever the remote invocation didn't work. Otherwise k is really the result of the subtract operation as performed by the remote object (no server crash). However, for methods doing things like deleting a file, you can't know for sure whether it really happened. Of course it happened if .error() is false. However, if .error() is true, there are two possibilities: The file got deleted, and the server crashed just after deleting it, but before transferring the result. The server crashed before beeing able to delete the file. Using nested invocations is dangerous in crash resistent programs Using something like + window.titlebar().setTitle("foo"); + is not a good idea. Suppose you know that window contains a valid Window reference. Suppose you know that window.titlebar() will return a Titlebar reference because the Window object is implemented properly. However, still the above statement isn't safe. What could happen is that the server containing the Window object has crashed. Then, regardless of how good the Window implementation is, you will get a null reference as result of the window.titlebar() operation. And then of course invoking setTitle on that null reference will lead to a crash as well. So a safe variant of this would be + Titlebar titlebar = window.titlebar(); + if(!window.error()) + titlebar.setTitle("foo"); + add the appropriate error handling if you like. If you don't trust the Window implementation, you might as well use + Titlebar titlebar = window.titlebar(); + if(!titlebar.isNull()) + titlebar.setTitle("foo"); + which are both safe. + + There are other conditions of failure, such as network disconnection (suppose you remove the cable between your server and client while your application runs). However their effect is the same like a server crash. + + Overall, it is of course a consideration of policy how strictly you try to trap communcation errors throughout your application. You might follow the if the server crashes, we need to debug the server until it never crashes again method, which would mean you need not bother about all these problems. + + + + +Internals: Distributed Reference Counting + + An object, to exist, must be owned by someone. If it isn't, it will cease to exist (more or less) immediately. Internally, ownership is indicated by calling _copy(), which increments an reference count, and given back by calling _release(). As soon as the reference count drops to zero, a delete will be done. + + As a variation of the theme, remote usage is indicated by _useRemote(), and dissolved by _releaseRemote(). These functions lead a list which server has invoked them (and thus owns the object). This is used in case this server disconnects (&dh; crash, network failure), to remove the references that are still on the objects. This is done in _disconnectRemote(). + + Now there is one problem. Consider a return value. Usually, the return value object will not be owned by the calling function any longer. It will however also not be owned by the caller, until the message holding the object is received. So there is a time of ownershipless objects. + + Now, when sending an object, one can be reasonable sure that as soon as it is received, it will be owned by somebody again, unless, again, the receiver dies. However this means that special care needs to be taken about object at least while sending, probably also while receiving, so that it doesn't die at once. + + The way &MCOP; does this is by tagging objects that are in process of being copied across the wire. Before such a copy is started, _copyRemote is called. This prevents the object from being freed for a while (5 seconds). Once the receiver calls _useRemote(), the tag is removed again. So all objects that are send over wire are tagged before transfer. + + If the receiver receives an object which is on his server, of course he will not _useRemote() it. For this special case, _cancelCopyRemote() exists to remove the tag manually. Other than that, there is also timer based tag removal, if tagging was done, but the receiver didn't really get the object (due to crash, network failure). This is done by the ReferenceClean class. + + + + + + +&GUI;-Elemente + + &GUI;-Elemente sind augenblicklich in einem experimentellen Stadium. Dieser Abschnitt beschreibt also, wie &arts; später einmal mit &GUI;-Elementen umgehen soll. Außerdem ist ein gewisser Teil an Programmzeilen bereits vorhanden. + + &GUI;-Elemente dienen der Interaktion eines Benutzers mit synthetisierten Strukturen. Im einfachsten Fall soll der Benutzer in der Lage sein, einige Parameter der Struktur direkt zu verändern (z.B. einen Verstärkungsfaktor, der vor dem Abspielmodul verwendet wird). + + In einem komplexeren Fall wäre vorstellbar, das ein Benutzer Parameter einer ganzen Gruppe von Strukturen oder noch nicht ausgeführten Strukturen ändert, wie z.B. die ADSR-Hüllkurve (envelope) des aktiven &MIDI;-Instrumentes. Eine andere denkbare Einstellung wäre der Dateiname eines Instrumentes, das auf einem Sample basiert. + + Auf der anderen Seite könnte der Benutzer überwachen wollen, was innerhalb des Synthesizers passiert. Dazu könnte es Oszilloskope, Spektrumanalysatoren, Lautstärkeanzeigen und Experimente geben, um z.B. in der Lage zu sein, den Frequenzgang eines bestimmten Filtermodules zu analysieren. + + Schließlich sollte es möglich sein, mit &GUI;-Elementen die gesamte Struktur zu kontrollieren, die in &arts; ausgeführt wird. Der Benutzer sollte in der Lage sein, Instrumente &MIDI;-Kanälen zuzuordnen, neue Effekte zu starten und zu seinem Hauptmischpult (das ebenfalls aus &arts;-Strukturen besteht) einen weiteren Kanal hinzuzufügen und eine neue Strategie für seine Equalizer einzustellen. + + Die &GUI;-Elemente bieten dem Benutzer damit Zugriff auf alle Möglichkeiten, die das virtuelle Studio &arts; bietet. Natürlich sollen die &GUI;-Elemente auch mit &MIDI;-Eingaben interagieren können (ein Schieberegler soll sich selbstständig in eine neue Position bewegen, wenn ein Midi-Ereignis gerade diesen Parameter geändert hat), weiterhin sollen die Elemente selbst Ereignisse generieren können, um die Aufnahme der Benutzereingaben zu ermöglichen. + + Technisch gesprochen benötigt man eine &IDL;-Basisklasse für alle Kontrollelemente (Arts::Widget) und kann von dieser eine Anzahl häufig verwendeter Kontrollelemente (wie Arts::Poti, Arts::Panel, Arts::Window, ...) ableiten. + + Diese Kontrollelemente sollten mit einer Bibliothek wie &Qt; oder Gtk implementiert werden. Schließlich sollten die &GUI;s der Effekte aus diesen Elementen gebildet werden. Ein Freeverb-Effekt könnte z.B. aus fünf Arts::Poti- und einem Arts::Window-Element gebildet werden. Wenn es also eine &Qt;-Implementation dieser grundlegenden Elemente gibt, kann der Effekt sich mit Hilfe von &Qt; darstellen. Wenn es eine Gtk-Implementation gibt, funktioniert das für Gtk ebenfalls (die Funktionsweise sollte mehr oder weniger gleichwertig sein). + + Da wir &IDL; benutzen, sollte &arts-builder; (oder andere Programme) in der Lage sein, &GUI;s optisch zusammenzuführen oder mit einigen Parametern basierend auf den Schnittstellen selbst zusammenzustellen. Es sollte relativ einfach sein, eine GUI nach Beschreibung erstellen-Klasse zu programmieren, die eine &GUI;-Beschreibung (in der Form Parameter und Kontrollelement) in ein &GUI;-Objekt umsetzt. + + Basierend auf &IDL; und dem &arts;/&MCOP;-Komponentenmodell sollte es genau so leicht sein, ein neues &GUI;-Objekt zu erstellen, wie es ist, ein neues Plugin für &arts; zu schreiben, das einen weiteren Filter bereitstellt. + + + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/digitalaudio.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/digitalaudio.docbook new file mode 100644 index 00000000000..46b868f0821 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/digitalaudio.docbook @@ -0,0 +1,16 @@ + + + +Einführung in digitale Audiobearbeitung + +digitales Sampling, Filter, Effekte, &etc; + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/faq.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/faq.docbook new file mode 100644 index 00000000000..ff9e1d5df97 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/faq.docbook @@ -0,0 +1,1312 @@ + + +Fragen und Antworten + +In diesem Abschnitt finden Sie die Antworten auf einige häufig gestellte Fragen zu &arts;. + + +Allgemeine Fragen + + + +Unterstützt &kde; die Ausgabe von Audio über meine Soundkarte? + + + +&kde; verwendet &arts; für das Abspielen von Klängen und &arts; verwendet die Kernel-Treiber von &Linux;, entweder OSS oder die OSS-Emulation von ALSA. Wenn Ihre Soundkarte entweder von ALSA oder OSS unterstützt und richtig eingerichtet wurde (&dh; irgendeine andere &Linux;-Anwendung kann Klänge ausgeben), funktionieren auch Klänge unter KDE. In speziellen Fällen können allerdings Probleme auftreten. Bei Problemen mit artsd kann man den Abschnitt über Hardware-Probleme lesen. +Inzwischen werden verschiedene andere Computersysteme unterstützt. Es folgt eine komplette Liste der Soundausgabe mit der aktuellen Version von &arts;. Falls das eigene Computersystem nicht aufgeführt ist, sollte man in Erwägung ziehen, &arts; selbst zu portieren. + + + + + +&arts; Audio Ein-/Ausgabe-Methode +Kommentar + + + + + +paud +Unterstützung des "Personal Audio Device" unter AIX + + + +alsa +Linux ALSA-0.5- und ALSA-0.9-Treiber + + + +libaudioio +Unterstützung der unter Solaris funktionierenden generischen Bibliothek "LibAudioIO" + + + +nas +NAS-Soundserver, nützlich für X-Terminals mit NAS-Unterstützung + + + +null +Null-Audiogerät, verwirft Soundausgaben + + + +oss +OSS-Unterstützung (Open Sound System) (funktioniert unter Linux, verschiedenen BSD-Varianten und anderen Plattformen mit installierten OSS-Treibern) + + + +toss +OSS-Unterstützung mit Threads, funktioniert manchmal in Installaionen besser, unter denen die Standardunterstützung für OSS versagt + + + +sgi +SGI "Direct Media"-Unterstützung unter IRIX + + + +sun +Solaris-Unterstützung + + + + + + + + + + +Ich kann keine wav-Dateien mit &artsd; abspielen! + + + +Überprüfen Sie, das &artsd; mitlibaudiofile gelinkt ist (ldd artsd). Falls das nicht der Fall ist, laden Sie das Paket tdesupport herunter und übersetzen Sie alles neu. + + + + + +Ich kann Klänge hören, wenn ich mich als root anmelde, aber kein anderer Benutzer kann Klänge hören! + + + +Die Berechtigungen für die Datei /dev/dsp entscheiden, welche Benutzer Klänge erhalten. Um jedem die erforderlichen Berechtigungen zu geben, müssen Sie Folgendes machen: + + + +Melden Sie sich als root an. + + + +Öffnen Sie ein &konqueror;-Fenster. + + + +Gehen Sie in den Ordner /dev. + + + +Klicken Sie mit der rechten Maustaste auf dsp und wählen Sie Eigenschaften. + + + +Klicken Sie auf die Karteikarte Berechtigungen. + + + +Markieren Sie Lesen und Schreiben in allen Bereichen. + + + +Klicken Sie auf OK. + + + +Sie können das gleiche erreichen, indem Sie in einem Terminal-Fenster chmod /dev/dsp eingeben. + +Um den Zugriff auf Klänge auf bestimmte Benutzer einzuschränken, können Sie Gruppenrechte verwenden. Bei einige &Linux;-Distributionen, z.B. Debian/Potato, gehört /dev/dsp bereits zur Gruppe audio. Sie müssen die gewünschten Benutzer lediglich zu dieser Gruppe hinzufügen. + + + + + +Das hilft für &artsd;, aber wie sieht es mit &kmix;, &kmid;, &kscd;,&etc; aus? + + + +Es gibt verschiedene andere Geräte, auf die Multimedia-Anwendungen zugreifen. Sie können sie alle genau so behanden; Sie können sie entweder für alle Benutzer freigeben oder Gruppenrechte zur Zugriffskontrolle verwenden. Hier ist eine Liste der beteiligten Geräte, die aber unvollständig sein kann (falls es mehrere Geräte einer Art gibt, sind sie in der Form midi0, midi1, ... benannt, nur das erste dieser Geräte ist in der folgenden Liste aufgeführt): + + + + +/dev/admmidi0 + + + + +/dev/adsp0 + + + + +/dev/amidi0 + + + + +/dev/amixer0 + + + + +/dev/audio + + + + +/dev/audio0 + + + + +/dev/cdrom + + + + +/dev/dmfm0 + + + + +/dev/dmmidi0 + + + + +/dev/dsp + + + + +/dev/dsp0 + + + + +/dev/midi0 + + + + +/dev/midi0 + + + + +/dev/midi00 + + + + +/dev/midi00 + + + + +/dev/mixer + + + + +/dev/mixer0 + + + + +/dev/mpu401data + + + + +/dev/mpu401stat + + + + +/dev/music + + + + +/dev/rmidi0 + + + + +/dev/rtc + + + + +/dev/sequencer + + + + +/dev/smpte0 + + + + +/dev/sndstat + + + + + + + + +Was kann ich tun, wenn artsd nicht startet oder während der Ausführung abstürzt? + + + +Versuchen Sie zuerst die Standardeinstellungen in &kcontrol; (oder wenn Sie manuell gestartet haben, geben Sie keine zusätzlichen Optionen an, außer vielleicht 10 4096). Besonders die Einstellung Volle Duplexfähigkeit aktivieren funktioniert bei einigen Treibern nicht. + +Eine gute Methode, Problemen mit artsd auf den Grund zu gehen, ist, &artsd; manuell zu starten. Öffnen Sie dazu ein &konsole;-Fenster und geben Sie folgenden Befehl: + +% artsd 10 4096 + +Sie können außerdem die Option hinzufügen. Sie sorgt für umfangreichere Statusmeldungen: +% artsd 10 4096 + +Sie erhalten bestimmt einige nützliche Informationen über die Startprobleme. Oder, wenn artsd abstürzt, während etwas Bestimmtes passiert, können Sie auch dieses ausprobieren und Informationen erhalten wie &artsd; abstürzt. Wenn Sie einen Fehlerbericht einsenden wollen, kann ein Backtrace mit gdb und/oder ein strace hilfreich sein. + + + + + +Kann ich &artsd; verschieben (die übersetzten Dateien in einen anderen Ordner verschieben)? + + + +Das funktioniert nicht perfekt. Das Problem ist, das &artswrapper; die Position von &artsd; aus Sicherheitsgründen fest einkompiliert hat. Sie können allerdings die .mcoprc-Datei (Einträge für Trader-Pfad/Erweiterungspfad) verwenden, damit ein verschobener &artsd; wenigstens seine Komponenten findet. Sehen Sie im Kapitel über die .mcoprc-Datei für genauere Vorgehenshinweise nach. + + + + + +Kann man &arts; mit gcc-3.0 kompilieren? + + + +Kurze Antwort: Nein, &arts; funktioniert nicht, wenn er mit GCC 3.0 kompiliert wird. + +Lange Antwort: In der offiziellen Version von GCC 3.0 gibt es zwei Fehler, die &arts; betreffen. Der Erste, GCC-Fehler c++/2733 ist relativ harmlos (und betrifft Probleme mit  Assembleranweisungen). Die Kompilation von convert.cc wird dadurch verhindert. Dieser Fehler ist im GCC-3.0-CVS bereits beseitigt und wird in einer Version GCC-3.0.1 oder höher beseitigt sein. Ein Notbehelf wurde zur CVS-Version von KDE/arts hinzugefügt. +Der zweite GCC-3.0-Fehler, c++/3145 (Erzeugung falscher Anweisungen in einigen Fällen von mehrfacher virtueller Vererbung) ist kritisch. Anwendng wie &artsd; stürzen ab beim Start ab, wenn sie mit GCC-3.0 kompiliert werden. Auch wenn bereits kleine Fortschritte zur Beseitigung dieses Problems erzielt wurden, stürzt &artsd; immer noch oft und unerwartet ab. + + + + +Welche Anwendungen funktionieren unter &arts;? + + + +Offensichtlich sind alle &kde;-Anwendungen für &arts; vorbereitet. Das schließt Folgende ein: + + +&noatun; +&arts-builder; +&aktion; +&kmid; +&kmidi; +&kmix; +&kscd; +&kde;-Spiele wie &kpoker; und &ktuberling; + + +Einige &kde;-Anwendungen, die bisher nicht Teil von &kde;-Veröffentlichungen sind (z.B. aus kdenonbeta) unterstützen &arts; auch. Das sind unter anderen: + + +&brahms; +Kaboodle +Kdao + + +Die folgenden Nicht-&kde;-Anwendungen funktionieren ebenfalls mit &arts;: + + +xmms (mit &arts;-Plugin) +Real Networks RealPlayer 8.0 (funktioniert mit &artsdsp;; vollständige &arts;-Unterstützung wird überlegt) + + +Die folgenden Anwendungen funktionieren nicht mit &arts;: + + +keine + + +Weitere Informationen finden Sie in den Antworten zu den Fragen im Abschnitt Nicht-&arts;-Anwendungen. + +Dieser Abschnitt ist unvollständig -- wenn Sie Informationen zu weiteren unterstützten und nicht unterstützten Anwendungen haben, senden Sie sie an den Autor, damit sie eingefügt werden können. + + + + + + +Nicht-&arts;-Anwendungen + + + +Sobald &kde; läuft, kann keine andere Anwendung auf die Klanggeräte zugreifen! + + +Während der &arts;-Soundserver von &kde; läuft, verwendet er die Klanggeräte. Wenn der Server für 60 Sekunden unbeschäftigt ist, setzt er aus und gibt die Geräte automatisch frei. + + + + + +Angeblich soll er nach 60 Sekunden aussetzen, er tut es aber nicht! + + +Wenn man artsd vom KDE Kontrollzentrum aus startet, beträgt die Standardeinstellung für das Aussetzen 60 Sekunden. Wenn man artsd dagegen von der Befehlszeile aus startet, muss man die Option -s verwenden, um die Zeit bis zum Aussetzen festzulegen, ansonsten wird das Aussetzen deaktiviert. +Augenblicklich funktioniert das Aussetzen nicht im Zusammenhang mit Full-Duplex. Schalten Sie in &kcontrol; Full-Duplex-Fähigkeit aus und das Aussetzen wird funktionieren. Full-Duplex deaktivieren, ist immer einer gute Idee, wenn Sie &arts; nur zum Abspielen und nicht zum Aufnehmen verwenden. + + + + + +Wie kann ich alte Nicht-&arts;-Anwendungen ausführen? + + + +Starten Sie sie mit Hilfe von &artsdsp;. Wenn Sie z.B. normalerweise eingeben würden: + +% mpg123 + +verwenden Sie stattdessen: + +% artsdsp + +Dadurch wird die Klangausgabe an &arts; umgeleitet. Diese Methode erfordert keine Veränderung der Anwendungen. Diese Übergangslösung unterstützt allerdings bisher nicht alle Fähigkeiten der Klanggeräte, daher werden einige Anwendungen dennoch nicht funktionieren. + + + + + +Ich kann &artsdsp; mit keiner Anwendung ausführen, es stürzt immer ab! + + +Sie benötigen eine aktuelle Version der glibc-Bibliothek; &artsdsp; funktioniert auf einigen älteren &Linux;-Distributionen nicht zuverlässig. Z.B. funktioniert das Programm unter Debian 2.1 (mit glibc 2.0) nicht, während es unter Debian 2.2 (mit glibc 2.1.3) funktioniert. + + + + + +Gibt es prinzipielle Hindernisse, sodass einige Anwendungen grundsätzlich nicht mit &artsdsp; funktionieren können? + + +Nein. Das Programm &artsdsp; führt zu einer etwas höheren CPU-Belastung als die direkte Verwendung des &arts;-APIs. Darüber hinaus kann jede nicht funktionierende Anwendung als Fehler in &artsdsp; betrachtet werden. Die Technik von &artsdsp; sollte bei richtiger Implementationjeder Anwendung eine Zusammenarbeit mit arts ermöglichen (einschließlich großer Anwendungen wie Quake 3). + + + + + +Was kann ich tun, wenn eine Anwendung nicht mit &artsdsp; funktioniert? + + +Sie können entweder warte, bis &artsd; automatisch aussetzt oder das Kommand artsshell verwenden, um den Server manuelle abzuschalten. Sie können den Server nur dann abschalten, wenn keine Anwendung &arts; verwendet und während &arts; abgeschaltet ist, können Sie keine Anwendungen starten, die den Server verwenden. + +Wenn der Server beschäftigt ist, gibt es einen brutalen Weg, ihn abzuschalten: + + +% killall ; killall +Now start your own application. +% kcminit + + +Damit stürtzt allerdings jede &arts;-Anwendung ab, sobald Sie den Server so abschalten. + + + + +Wie sieht es mit &kde;-1.x-Anwendungen aus? + + +Wenn Sie &kde;-1.x-Anwendungen benutzen, die den &kde;-1-Audioserver zur Ausgabe verwenden, müssen Sie das Programm kaudioserver starten. Sie können kaudioserver wie jede andere Nicht-&arts;-Anwendung behandeln: + +% artsdsp + + +Sie müssen kaudioserver installiert haben (aus der gleichen Quelle, von der Sie Ihre &kde;-1.x-Anwendungen bekommen haben) - er gehört zu &kde; 1.x, nicht &kde; 2. + + + + + +Wie sieht es mit Anwendungen aus, die den Enlightened Sound Daemon, ESD, verwenden? + + +Der Fall ist ähnlich zu kaudioserver. Solche Anwendungen benötigen den Server esd. Sie können esd mit Hilfe von &artsdsp; starten und jede ESD-Anwendung sollte so funktionieren: +% artsdsp + +Neuere Versionen von &arts; ( +>= 1.2.0) können auch auf den "enlightened sound daemon" anstelle der Soundkarte direkt ausgeben. In der Kommandozeile muss dann die -a Option verwendet werden. Zum Beispiel: +% artsd + +um die EsounD-Unterstützung zu aktivieren. Im &kde; reicht es, in &kcontrol; "Sound & Multimedia" / "Sound-System" die Audio-Hardware auf "Enlightened Sound Dämon" zu stellen. + + + + + + +Aussetzer + + + +Manchmal höre ich kurze Aussetzer in der Musik, ist das ein Fehler? + + +Das ist höchstwahrscheinlich kein Fehler sondern durch die Tatsache verursacht, das der &Linux;-Kernel keine guten Echtzeit-Fähigkeiten besitzt. Es gibt Situationen, in denen &arts; nicht mit der Wiedergabe mithalten kann.Sie können allerdings Echtzeit-Priorität aktivieren (in &kcontrol;) und eine große Antwortzeit verwenden (wie 250ms oder so groß wie möglich). Das sollte die Situation verbessern. + + + + + +Wie wirkt sich der Antwortzeitwert aus? + + +Der Hilfetext für diese Einstellung in &kcontrol; kann verwirren. Ein kleinerer Wert bedeutet, das &arts; eine kürzere Antwortzeit auf externe Ereignisse (&dh; die Zeit, die benötigt wird zwischen dem Schließen eines Fensters und dem von &artsd; abgespielten zugehörigen Klang) verwendet. Das bedeutet, das mehr CPU-Zeit benötigt wird und die Wahrscheinlichkeit von Aussetzern größer wird. + + + + + +Gibt es andere Einstellungen, die Aussetzer verhindern können? + + +Benutzer von IDE-Laufwerken, können das Programm hdparm verwenden, um ihr IDE-Laufwerk in den DMA-Modus umzuschalten. Eine Warnung: Dieser Modus funktioniert nicht auf jedem Computer und kann zu einem Systemgesamtabsturz und in seltenen Fällen zu Datenverlust führen. Lesen Sie die Dokumentation zu hdparm für genauere Informationen. Ich habe das folgende Kommando erfolgreich verwendet: + +% hdparm /dev/hda + + +Sie müssen dieses Kommando nach jedem Neustart ausführen, es ist also in einem Start-Skript am besten aufgehoben (wo genau ist unterschiedlich, auf Debian &Linux; üblicherweise in /etc/rc.boot). + + + + + +Die Verwendungvon Echtzeit-Priorität scheint keinen Einfluss zu haben? + + +Überprüfen Sie, ob artswrapper als suid root installiert ist. Viele Distributionen (wie z.B. SuSE7.x) installieren artswrapper nicht mit den richtigen Berechtigungen. Zur Überprüfung tippen Sie: ls -l $(which artswrapper). So sollte die Ausgabe aussehen: +% ls $(which artswrapper) +-rwsr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper + So sollte es nicht aussehen: +% ls $(which artswrapper) +-rwxr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper + Wenn das s fehlt, kann man es durch folgenden Befehl hinzufügen: % chown $(which artswrapper) +% chmod $(which artswrapper) + + + +Falls man &artswrapper; als SUID root ausführen lässt, wird sich durch Verringerung der Unterbrechungen die Qualität der Musikwiedergabe vermutlich erhöhen. Das erhöht allerdings auch die Wahrscheinlichkeit, dass ein Fehler im Programm oder ein böswilliger Benutzer den Rechner beschädigt. Im Mehr-Benutzerbetrieb kann die Ausgabe von hochwertigen Musikaufnahmen die Geschwindigkeit anderer Programme und Benutzer, die produktiv arbeiten, ernsthaft in Mitleidenschaft ziehen. + + + + + + + +Warum benötigt &artsd; so viel CPU-Zeit? + + +Überprüfen Sie Ihre Antwortzeit-Einstellung. Die aktuelle Version ist außerdem noch nicht optimiert. Das wird sich in Zukunft verbessern. Bis dahin ist keine richtige Vorhersage möglich, wie schnell &artsd; sein kann oder nicht sein kann. + + + + + +Netzwerk-Transparenz + + + +Was benötige ich für Netzwerk-Transparenz? + + +Sie müssen Netzwerk-Transparenz in den Soundserver-Einstellungen von &kcontrol; aktivieren (Sicherheits- und Transparenzinfo mittels X11-Server austauschen und Netzwerk-Transparenz aktivieren). Kopieren Sie Ihre .mcoprc-Datei auf alle Computer, von denen Sie diese Fähigkeit verwenden wollen. Melden Sie sich neu an. Stellen Sie sicher, das die Namensauflösung zwischen den interagierenden Computern funktioniert (&dh; sie müssen auflösbare Namen haben oder in der Datei /etc/hosts eingetragen sein). + +Das sollte alles sein. Falls immer noch Probleme bestehen, sind hier noch weitere Informationen. Der &arts; Soundserver-Prozess, &artsd;, sollte nur auf einem Computer laufen, demjenigen mit der Soundkarte, auf dem die Ausgabe erfolgen soll. Der Prozess kann automatisch beim Anmelden von &kde; gestartet werden (wenn Sie das in &kcontrol; einstellen), oder manuell durch Eingabe von: + +% artsd 5 8192 + + +Die Option ist für Netzwerk-Transparenz, die anderen steuern die Antwortzeit. + +Ihre .mcoprc-Datei sollte folgenden Eintrag haben: + +GlobalComm=Arts::X11GlobalComm + + +auf allen beteiligten Computern, damit die Netzwerk-Transparenz funktioniert. Das wird aktiviert durch die Kontrollzentrumseinstellung Sicherheits- und Transparenzinfo mittels X11-Server austauschen. + +Schließlich gibt es in jeder &kde;-Version aus der 2.0.x-Serie einen Fehler, der sich auswirkt, wenn kein Domain-Name eingetragen ist. Klienten von &artsd; suchen den Computer mit dem Soundserver durch die hostname. domainname-Kombination. Wenn Ihr Domain-Name leer ist, wird hostname. (beachten Sie den zusätzlichen Punkt). Fügen Sie einen solchen Eintrag in die Datei /etc/hosts (&dh; orion. wenn Ihr Host-Name orion lautet) ein, um das Problem zu umgehen. + + + + + + +Wie kann ich Fehler suchen, falls die Netzwerk-Transparenz nicht funktioniert? + + +Wenn Sie den &kde;-Quelltext haben, gehen Sie in tdelibs/arts/examples und führen Sie make aus, um einige Programme einschließlich referenceinfo zu übersetzen. Führen Sie dann + +% ./referenceinfo + + + aus. Die Ausgabe zeigt den Hostnamen und die von &arts; verwendeten Kanäle (ports) an. Die Ausgabe tcp:orion:1698 bedeutet, das jeder Klient, der Netzwerk-Transparenz verwenden will, sollte wissen, wie der Computer orion zu finden ist. + + + + + + +Hardware-spezifische Fragen + + + +Welche Hardware funktioniert mit artsd nicht gut? + + +Es scheint, als würden einige wenige Linuxtreiber in manchen Kernelversionen nicht gut mit aRts zusammenarbeiten. Bitte lesen sie die folgende Liste, bevor Sie einen Fehler melden. Wenn Sie Unvollständigkeiten finden, zögern Sie bitte nicht, diese uns zu melden. + + +Linuxtreiber / Soundkarte +Versagt unter +Arbeitet unter +Bemerkungen + + + + + +i810 driver (Intel 810 + AC97 Audio) +2.4.9 +2.4.18, 2.2.20, kommerzieller OSS-Treiber, alsa-0.5.12a mit OSS-Emulation +Der Treiber verursacht einen "cpu-overload". + + + +maestro 3/4 chipset +2.4.9 +? +Der Treiber verursacht manchmal einen "cpu-overload". + + + +aureal8820, aureal8830 Treiber von sourceforge +2.4.17 +? +Der Treiber verursacht eine "Assertion" / "cpu-overload". + + + +OSS Commercial 3.9.4g mit Aureal Vortex +? +? +Das System hängt sich auf. + + + +ymfpci +2.4.0, 2.4.12 +2.4.17 +Der Treiber verursacht eine "Assertion". + + + + + + + + + + + + + + + +Warum gibt es hardwarespezifische Probleme und wie sind diese zu lösen? + + +Das übliche Problem ist, dass manche Treiber aRts ungenügende oder unrichtige Informationen darüber geben, wann Sounddaten geschrieben werden sollen. Die meisten OSS-Treiber liefern korrekte Informationen, aber nicht alle. +Es ist zu bemerken, dass einige andere Anwendungen (wie z.B. xmms) ohne diese Daten auskommen und daher auch auf solcher Hardware fehlerfrei arbeiten. &arts; benötigt diese Daten aber und daher könnte artsd abstürzen. Dennoch handelt es sich um einen Treiberfehler und nicht um einen &arts;-Fehler. +Es gibt zwei Symptome, an denen man erkennt, dass artsd mit einem fehlerhaften Treiber arbeitet. Entweder versucht artsd ständig, neue Daten zu schreiben, was aber fehlschlägt und schließlich zu einer sehr hohen CPU-Last und schließlich zum Programmende führt. Beim zweiten Symptom wird artsd mit falschen Informationen darüber versorgt, wie viele Daten zu schreiben sind. In diesem Fall stoppt artsd mit einer Assertion wie: artsd: audiosubsys.cc:458: void Arts::AudioSubSystem::handleIO(int): +Assertion `len == can_write' failed. +Aborted + + + + + + + +Wo liegt das Problem, wenn eine hohe CPU-Last auftritt? + + +Normalerweise verwendet artsd select(), um herauszufinden, wann Daten geschrieben werden können. Danach wird ein ioctl(...GETOSPACE...) verwendet, um die Menge der zu schreibenden Daten herauszufinden. Schließlich werden die Daten tatsächlich geschrieben. +Ein Problem tritt auf, falls artsd ständig aktiviert wird oder falls nur minimale Datenmenge zu schreiben sind. Nach der OSS-Dokumentation aktiviert select() einen Prozess nur dann, wenn mindestens ein Fragment zu schreiben ist. Falls artsd allerdings aktiviert wird und es ist lediglich eine sehr geringe Datenmenge zu schreiben, fährt artsd fort, nur geringe Datenmenge zu schreiben. Das führt schließlich zu einer hohen CPU-Last. +Um das zu verhindern, darf der Treiber artsd nur dann aktivieren, wenn mindestens ein volles Fragment zu schreiben ist. + + + + + +Wo liegt der Fehler, wenn die Assertion auftritt? + + +Normalerweise verwendet artsd select(), um herauszufinden, wann Daten geschrieben werden können. Danach wird ein ioctl(...GETOSPACE...) verwendet, um die Menge der zu schreibenden Daten herauszufinden. Schließlich werden die Daten tatsächlich geschrieben. +Falls artsd nicht so viele Daten schreiben kann, wie ioctl anzeigt, wird eine Assertion ausgelöst. Um das zu beheben, sollte der Treiber die korrekte Größe des freien Speichers mitteilen. + + + + + +Andere Themen + + + +Ich kann &arts-builder; nicht verwenden. Er stürzt ab, wenn ich eine Struktur ausführen lassen will! + + +Der wahrscheinlichste Grund für dieses Problem ist die Verwendung von alten Strukturen oder Modulen, die von &kde;2-Version nicht mehr unterstützt werden. Unglücklicherweise bezieht sich die im Internet verfügbare Version auf &arts;-0.3.4.1, die lange überholt ist. Der am häufigsten berichtete Fehler ist der folgende: Wenn Struktur ausführen in &arts-builder; gestartet wird, erscheint die Fehlermeldung [artsd] Synth_PLAY: Audio-Subsystem wird schon verwendet. + +Sie sollten Synth_AMAN_PLAY an Stelle von Synth_PLAY verwenden und das Problem verschwindet. Weitere Informationen finden Sie in der Hilfedatei zu &arts-builder; (betätigen Sie F1 in &arts-builder;). + +Aktuelle Versionen von &arts-builder; (&kde; 2.1 Beta 1 und später) haben eine Menge von Beispielen, die Sie verwenden können. + + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/future.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/future.docbook new file mode 100644 index 00000000000..50a2b7b9749 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/future.docbook @@ -0,0 +1,401 @@ + + + +Künftige Arbeiten + +&arts; entwickelt sich zu schnell, als das an dieser Stelle eine aktuelle Liste möglich wäre. Informationen zu Plänen finden Sie in der Datei TODO und in den Mailinglisten. Sie sind eingeladen, sich bei der weiteren Planung und Implementation zu beteiligen. + +Dieses in der Entwicklung befindliche Dokument versucht einen Überblick darüber zu geben, wie neue Technologien in &arts; integriert werden. Es behandelt folgende Themen: + + +Wie Schnittstellen funktionieren. +Codecs: Dekodierung von mp3-Strömen in eine Form, so dass sie als Daten verwendet werden können. +Video. +Threading. +Synchronisation. +Dynamische Erweiterung / Maskierung. +Dynamische Komposition. +&GUI; +&MIDI; + + +Dieses befindet sich in Arbeit. Es ist die Grundlage dafür, wie neue Technologien in &arts; integriert werden können. Man kann einen ungefähren Eindruck davon bekommen, wie solche Probleme gelöst werden. Sie können alles, was Sie hier sehen, korrigieren. + +Programme, die &arts;-Technologie verwenden (bitte: koordinieren Sie Ihre Anstrengungen): + + + +KPhone (Voice over IP) + + + +&noatun; (Video- / Audiospieler) + + + +&artscontrol; (Kontrollprogramm des Soundservers) + + + +Brahms (Musiksequencer) + + + +Kaiman (&kde;2-Medienspieler - kmedia2-kompatibel) + + + +mpglib/kmpg (mpg Audio- und Videowiedergabetechnologie) + + + +SDL (direkte Medienschicht für Spiele, noch nicht begonnen, aber wohl sinnvoll) + + + +electric ears (Der Autor hat mich kontaktiert - Status unbekannt) + + + + +Wie Schnittstellen (interfaces) funktionieren + + + +&MCOP;-Schnittstellen sind die Grundlage des Konzeptes von &arts;. Sie sind das netzwerktransparente Äquivalent zu C++-Klassen. Sie sollten Ihre Programmentwicklung mit Schnittstellen durchführen. Die Schnittstellen bestehen aus vier Teilen: + + +Synchrone Ströme +Asynchrone Ströme +Methods +Attributes + + +Diese können beliebig kombiniert werden. Neue Technologien sollten als Schnittstellen definiert werden. Lesen Sie die Abschnitte über asynchrone Ströme und synchrone Ströme, sowie den über die KMedia2-Schnittstelle. Es sind gute Beispiele für ihre Funktionsweise + +Schnittstellen werden als .idl-Code spezifiziert und mit dem mcopidl-Compiler übersetzt. Sie leiten die Interfacename_impl-Klasse ab, um es zu implementieren und verwenden REGISTER_IMPLEMENTATION(Interfacename_impl), um Ihre Objekt-Implementation in das &MCOP;-Objektsystem einzufügen. + + + + +Codecs - Datendekodierung + +Die kmedia2-Schnittstellen erlauben Ihnen zu ignorieren, dass wav-Dateien, mp3-Dateien und viele andere Formate aus Datenströmen bestehen. Stattdessen können Sie Methoden implementieren, um sie abzuspielen. + +Sie können eine Routine zum Laden von wav-Dateien schreiben, um wav-Dateien abzuspielen ( als PlayObject), aber niemand sonst kann Ihren Code verwenden. + +Asynchrone Ströme sind eine Alternative. Sie definieren eine Schnittstelle, die die Übergabe von Datenblöcken ermöglichen. So sieht das in &MCOP; aus: + +interface Codec { + in async byte stream indata; + out async byte stream outdata; +}; + + + +Natürlich können Codecs Attribute verwenden, um zusätzliche Daten, wie Formatinformationen bereitzustellen. + +interface ByteAudioCodec { + in async byte stream indata; + out async byte stream outdata; + readonly attribute samplingRate, bits, channels; +}; + + +Dieser ByteAudioCodec kann zum Beispiel mit einem ByteStreamToAudio-Objekt verbunden werden, um einen Audio-Strom zu formen. + +Andere Codec-Typen können stattdessen Video-Daten direkt ausgeben, wie + +interface VideoCodec { + in async byte stream indata; + out video stream outdata; /* note: video streams do not exist yet */ +}; + + +Meistens sollte ein Codec-Konzept verwendet werden anstatt einem Sie wissen, wie man es abspielt und ich nicht-Konzept, wie zum Beispiel WavPlayObject es praktiziert. Natürlich muss sich jemand hinsetzen und einige Versuche durchführen, bevor ein API festgeschrieben werden kann. + + + + +Video + +Mein Vorschlag ist, Video als asynchronen Strom eines &MCOP;-Datentypen, der Bilder enthält, zu implementieren. Dieser Datentyp muss noch kreiert werden. Auf diese Weise könnten Plugins, die Video-Bilder verarbeiten in der gleichen Art wie Audio-Plugins verbunden werden. + +Auf einige Dinge muss dabei geachtet werden: + + + +Es gibt die Farbmodelle RGB und YUV. + + +Das Format sollte dem Strom aufgeprägt werden. + + +Synchronisation ist wichtig. + + + +Es sollte möglich sein, die VideoFrame-Klasse so zu reimplementieren, das Daten im gemeinsam genutzten Speicher gespeichert werden können. Damit würde auch Video-Streaming zwischen verschiedenen Prozessen ohne große Probleme möglich. + +Bisher befindet sich für Videodaten von der Dekodierung bis zum Rendern alles im gleichen Prozess. + +Ich habe einen Prototyp für ein Videostreaming-Programm implementiert, man kann ihn von hier herunterladen. Er muss nach einigen Experimenten in &MCOP; integriert werden. + +Eine Render-Komponente, die XMITSHM (mit RGB und YUV) unterstützt, sollte programmiert werden. Martin Vogt arbeitet derzeit an so etwas. + + + + +Threading + +Bisher ist &MCOP; Singel-Threaded. Für Video werden wir allerdings wohl nicht um Threading herum kommen. Dabei ist auf einige Dinge zu achten. + + + +SmartWrappers - sie sind nicht threadsicher wegen nicht abgesicherter Referenzzählung und ähnlichen Dingen. + + +Dispatcher / I/O - nicht threadsicher. + + + +Ich könnte mir allerdings vorstellen, einzelne Modules sowohl für synchrones als auch asynchrone Streaming threadsicher zu machen. Auf diese Weise - mit einem threadtauglichen Flusssystem - könnte der Signalfluss auf zwei oder mehr Prozessoren verteilt werden. Damit wäre dem Audiosystem in Bezug auf Mehrprozessorsysteme erheblich geholfen. + +Wie es funktionieren könnte: + + + + +Das Flusssystem entscheidet, welche Module was berechnen sollen - das sind: + + Video-Frames (mit der process_indata-Methode) + Synchrone Audio-Ströme (calculateBlock) + oder asynchrone Ströme, hauptsächlich Byte-Ströme + + + +Module können diese Dinge in eigenen Threads berechnen. Für Audio ist es sinnvoll, Threads wiederholt zu benutzen (z.B. rendern in vier Threads auf vier Prozessoren, unabhängig davon, ob 100 Module ausgeführt werden). Für Video und Byte-Dekomprimierung könnte es sinnvoll sein, eine blockierende Implementierung in einem eigenen Thread zu haben, der mit dem Rest das &MCOP;-Systems durch das Flusssystem synchronisiert wird. + + + +Module dürfen die Funktionen von &MCOP; (wie entfernte Aufrufe) während Thread-Operationen nicht verwenden + + + + + + +Synchronisation + +Video und &MIDI; (und Audio) müssen möglicherweise synchronisiert werden. Das funktioniert über Zeitmarken. Zeitmarken könnten zu asynchronen Strömen hinzugefügt werden, indem jedes Paket mit einer Zeitmarke versehen wird. Zwei Video-Frames müssen also als zwei Pakete gesendet werden (sie sind sowieso recht groß), damit sie unterschiedliche Zeitmarken haben können. + +Audio sollte implizit Zeitmarken haben, da Audiodaten synchron wiedergegeben werden. + + + + +Dynamische Zusammenstellung (Composition) + +Es sollte folgendes möglich sein: Ein FX-Effekt ist zusammengesetzt aus mehreren einfachen Modulen. Ein FX-Effekt sollte aussehen wie ein normales &MCOP;-Modul (siehe auch Maskierung (masquerading)), obwohl er aus anderen Modulen besteht. + +Das ist für &arts-builder; erforderlich. + + + + +&GUI; + +Alle &GUI;-Komponenten werden &MCOP;-Module sein. Sie sollten Attribute wie Größe (size), Name (label), Farbe (color), ... haben. Ein RAD-Builder (&arts-builder;) sollte in der Lage sein, sie visuell zusammenzusetzen. + +Das &GUI; sollte durch Sicherung der Attribute speicherbar sein. + + + + +&MIDI; + +&MIDI; sollte als asynchroner Strom implementiert werden. Es sollte zwei Möglichkeiten geben, zum Einen die Verwendung von normalen &MCOP;-Strukturen für die Typen und zum Anderen die Einführung von weiteren angepassten Typen. + +Normale Strukturen sollten ausreichen, also etwas wie: + +struct MidiEvent { + byte b1,b2,b3; + sequence<byte> sysex; +} + + +Asynchrone Ströme sollten angepasste Typen unterstützen. + + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/glossary.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/glossary.docbook new file mode 100644 index 00000000000..3d5b1882607 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/glossary.docbook @@ -0,0 +1,173 @@ + + + + + +ALSA + +Advanced &Linux; Sound Architecture; ein &Linux;-Soundkartentreiben, der aktuell nicht Bestandteil des Standard-Kernel-Quelltextes ist. + + + + +&arts; + +Analog-Real-Time Synthesizer, der Name der Multimedia-Architektur/der Multimedia-Bibliothek/des Multimedia-Werkzeuges, das vom &kde;-Projekt verwendet wird (beachten Sie die Großschreibung) + + + + +BSD + +Berkeley Software Distribution; bezieht sich auf jedes von einigen freien&UNIX;-kompatiblen Betriebssystemen, die von BSD &UNIX; abstammen. + + + + +CORBA + +Common Object Request Broker Architecture;, ein Standard für objektorientierte entfernte Programmausführung. + + + + +CVS + +Concurrent Versions System;, ein Software-Managementsystem, das von vielen Softwareprojekten einschließlich &kde; und &arts; verwendet wird. + + + + +FFT + +Fast Fourier Transformation, ein Algorithmus, um Daten aus dem Zeitraum in den Frequenzraum zu transformieren; das wird für Signalverarbeitung häufig benötigt. + + + + +Voll-Duplex + +Die Fähigkeit einer Soundkarte gleichzeitig Daten abzuspielen und aufzunehmen. + + + + +GPL + +GNU General Public Lzenz, die von der Free Software Foundation festgelegt wurde für die Veröffentlichung von freier Software. + + + + +&GUI; + +Graphische Benutzeroberfläche + + + + +IDL + +Interface Definition Language, ein programmiersprachenunabhängiges Format zur Definition von Schnittstellen (Methoden und Daten). + + + + +&kde; + +K Desktop Environment, ein Projekt zur Entwicklung einer freien graphischen Benutzeroberfläche für &UNIX;-kompatible Systeme. + + + + +LGPL + +GNU Lesser General Public Lizenz, eine Programmlizenz, die von der Free Software Foundation aufgeschrieben wurde, um die Bedingungen für die Veröffentlichung von freier Software festzulegen. Sie ist weniger restriktiv als die GPL und wird häufig für Programmbibliotheken verwendet. + + + + +&MCOP; + +Multimedia COmmunication Protocol, das Protokoll, das für die Kommunikation der Teile von &arts; verwendet wird, ähnlich zu CORBA, aber einfacher und für Multimedia optimiert. + + + + +&MIDI; + +Musical Instrument Digital Interface, ein Standardprotokoll zur Kommunikation von elektronischen Musikinstrumenten, häufig auch das Dateifomat zur Speicherung von &MIDI;-Befehlen. + + + + +OSS + +Open Sound System, die Soundtreiber, die zum &Linux;-Kernel gehören (manchmal auch OSS/Free) oder eine kommerzielle Version, die von 4Front Technologies vertrieben werden. + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/gui.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/gui.docbook new file mode 100644 index 00000000000..b769c161b6b --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/gui.docbook @@ -0,0 +1,29 @@ + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/helping.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/helping.docbook new file mode 100644 index 00000000000..bc8f518eb16 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/helping.docbook @@ -0,0 +1,237 @@ + + + +&arts; unterstützen + + +Wie Sie helfen können + +Das &arts;-Projekt benötigt einerseite Hilfe von Entwicklern, um existierende Multimedia-Anwendungen für &arts; anzupassen, neue Anwendungen zu schreiben und die Möglichkeiten von &arts; zu erweitern. Andererseits gibt es auch viele Aufgaben, die von Anderen übernommen werden können. Es werden Tester benötigt, die Fehlermeldungen liefern, Übersetzer, die die Anwendungstexte und die Dokumentation in andere Sprachen übersetzen, Graphiker, die Bitmaps (besonders für die artsbuilder-Module) entwerfen, Musiker, die Beispiele für &arts; erzeugen, und Autoren, die die Dokumentation schreiben und korrigieren. + + + +Mailinglisten + +Viele Diskussionen zur Entwicklung von &arts; finden in einer von zwei Mailinglisten statt. Hier werden neue Fähigkeiten und Umsetzungsideen diskutiert, hierhin kann man sich bei Problemen wenden. + +Die &kde;-Multimedia-Mailingliste ist für allgemeine Multimediathemen sowohl &arts; als auch andere Multimediaprogramme wie &noatun; und &aktion; betreffend. Sie können sich auf der Internetseite http://www.kde.org/mailingslists.html oder durch eine E-Mail mit dem Betreff (subject) subscribe Ihre-E-Mail-Adresse an kde-multimedia-request@kde.org anmelden. Die Liste wird unter http://lists.kde.org archiviert. + +In der &arts;-Mailingliste geht es um &arts;-spezifische Themen einschließlich der Nutzung von &arts; außerhalb von &kde;. Zur Anmeldung senden Sie eine E-Mail mit dem Inhalt subscribe Ihre-E-Mail-Adresse an arts-request@space.twc.de. Die Liste wird unter http://space.twc.de/~stefan/arts-archive archiviert. + + + + +Programmierstandards (in Englisch) + +For getting a consistent reading through all the sources, it is important to keep the coding style the same, all over the &arts; source. Please, even if you just write a module, try to write/format your source accordingly, as it will make it easier for different people to maintain the source tree, and easier to copy pieces of from one source to another. + + + +Naming of member functions + +&Qt;/&Java; style, that means capitalization on word breaks, and first letter always without capitalization; no underscores. +This means for instance: + +createStructureDesc() + updateWidget(); + start(); + + + + + +Class members + +Class members are not capitalized, such as menubar or button. + +When there are accessing functions, the standard should be the &MCOP; way, that is, when having an long member foo, which shouldn't be visible directly, you create: + +foo(long new_value); + long foo(); + +functions to get and set the value. In that case, the real value of foo should be stored in _foo. + + + + +Class names + +All classes should be wordwise capitalized, that means ModuleView, SynthModule. All classes that belong to the libraries should use the &arts; namespace, like Arts::Soundserver. +The implementations of &MCOP; classes should get called Class_impl, such as SoundServer_impl. + + + + +Parameters + +Parameters are always uncapitalized. + + + + +Local variables + +Local variables are always uncapitalized, and may have names like i, p, x, &etc; where appropriate. + + + + +Tab width (Shift width) + +One tab is as long as 4 spaces. + + + + +Leerzeichen in Ausdrücken + +Normalerweise müssen in Ausdrücken keine Leerzeichen verwendet werden. Man kann sie allerdings zwischen Operatoren und ihren Operanden setzen. Falls man allerdings ein Leerzeichen direkt vor einen Operator (wie z.B. +) setzt, muss man auch nach dem Operator ein Leerzeichen setzen. Die einzige Ausnahme von dieser Regel bilden listenartige Ausdrücke (mit ,), bei denen man nur hinter dem "," ein Leerzeichen setzen darf. Man kann es aber auch weglassen. +Die folgenden Beispiele demonstrieren die sinnvolle Verwendung von Leerzeichen: +{ + 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); +} + +Die folgenden Beispiele demonstrieren, wie Leerzeichen nicht verwendet werden dürfen. Bei Funktionsaufrufen, nach "if", "for", "switch" und so weiter dürfen keine Leerzeichen stehen. +{ + // FALSCH: In einer Liste dürfen Leerzeichen nur nach dem "," stehen + int a , b , c , d , e , f; + + // FALSCH: unsymmetrische Leerzeichen beim =-Operator + a= 5; + + // FALSCH: "if" ist eine Funktion, daher dürfen keine Leerzeichen folgen + if (a == 5) { + } + + // FALSCH: nach "while" darf kein Leerzeichen folgen + while (a--) + b++; + + // FALSCH: Auf Funktionsnamen dürfen keine Leerzeichen folgen + arts_debug ("%d\n", c); + + // FALSCH: keines von beiden ist ein member-Name + Arts::Object o = Arts::Object::null (); +} + + + + + + +Naming of source files + +Source files should have no capitalization in the name. They should have the name of the class when they implement a single class. Their extension is .cc if they refer to &Qt;/&GUI; independent code, and .cpp if they refer to &Qt;/&GUI; dependant code. Implementation files for interfaces should be called foo_impl, if Foo was the name of the interface. + +&IDL; files should be called in a descriptive way for the collection of interfaces they contain, also all lower case. Especially it is not good to call an &IDL; file like the class itself, as the .mcopclass trader and type info entries will collide, then. + + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/index.cache.bz2 b/tde-i18n-de/docs/tdemultimedia/artsbuilder/index.cache.bz2 new file mode 100644 index 00000000000..fb40e844f40 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/artsbuilder/index.cache.bz2 differ diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/index.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/index.docbook new file mode 100644 index 00000000000..66193b3a38a --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/index.docbook @@ -0,0 +1,417 @@ + + + + + + + + + + + + + + + + + + + + MCOP"> + DCOP"> + MIDI"> + mcopidl"> + IDL"> + + +]> + + + +Das Handbuch zu &arts; + + +Stefan Westerfeld
stefan@space.twc.de
+
+
+ +Jeff Tranter
tranter@kde.org
+
+
+ +FrankSchütte
F.Schuette@t-online.de
Übersetzung
+
+ + +1999-2001 +Stefan Westerfeld & Jeff Tranter + +&FDLNotice; + +2001-06-10 +1.00.09 + +Dieses Handbuch beschreibt &arts;, den analogen Echtzeit-Synthesizer. + + + + +aRts +artsbuilder +Synthesizer +Multimedia +Struktur +Musik +Klänge +KDE + +
+ + +Einleitung + + +Was ist &arts;? + +Der analoge Echtzeit-Synthesizer (&arts;) ist ein modulares System zur Synthetisierung von Klängen und Musik auf einem Computer. Mit Hilfe von kleinen Bausteinen namens Modulen kann der Benutzer leicht komplexe Audio-Werkzeuge zusammenstellen. Module stellen typische Funktionen wie Hüllkurvengeneratoren, Filter, Audioeffekte, Mixer und Wiedergabe digitaler Klänge in verschiedenen Dateiformaten zur Verfügung. + +Der &artsd; Soundserver mixt Klänge aus unterschiedlichen Quellen in Echtzeit. Damit können sich verschiedene Anwendungen transparent die zur Verfügung stehende Hardware teilen. + +Durch Verwendung von &MCOP;, dem Multimedia-Kommunikationsprotokoll, können Multimediaprogramme netzwerktransparent (aus Sicherheitsgründen mit Authentifizierung) und plattformübergreifend durch die Verwendung von Schnittstellen programmiert werden, die sprachunabhängig mit Hilfe von &IDL; festgelegt werden können. Es gibt auch eine Unterstützung für sonstige und älter Anwendungen, die nicht &arts; verwenden. &arts; stellt einen Kernbestandteil der &kde; 2-Umgebung dar und ist die Basis der &kde;-Multimedia-Architektur. &arts; wird zukünftig noch weitere Medien unterstützen, unter anderem Video. Wie auch &kde;, kann &arts; auf einigen Betriebssystemen, einschließlich &Linux; und BSD-Varianten eingesetzt werden. &arts; kann auch unabhängig von &kde; verwendet werden. + + + + +Verwendung dieses Dokuments + +Dieses Dokument ist eine umfassende Dokumentation für Benutzer unterschiedlicher Vorkenntnisse für &arts;. Falls Sie ein gelegentlicher Nutzer von Multimediaprogrammen sind, sollten Sie einen anderen Weg durch dieses Dokument wählen als ein Entwickler von &arts;-Anwendungen. + +Sie sollten zuerst den Abschnitt Herunterladen und Kompilieren von &arts; lesen, falls Sie &arts; installieren möchten. Sollten Sie bereits ein funktionierendes System haben (häufig als Teil ihrer Distribution) können Sie diesen Abschnitt überspringen. + +Als nächstes sollten Sie die Abschnitte unter &arts;-Werkzeuge, besonders &artsd;, &artscontrol;, &artsshell; und &artsdsp; lesen. Diese Abschnitte helfen Ihnen bei der optimalen Nutzung von &arts;. + +Wenn Sie weitergehende Arbeiten mit &arts; planen, lesen Sie das Kapitel über &arts-builder; und überfliegen Sie die Schritt-für-Schritt-Einführung. Das sollte Ihnen einen Eindruck der großen Möglichkeiten von &arts; und den ohne Programmierung nutzbaren Modulen geben. + +Wenn Sie mehr über die internen Details von &arts; wissen möchten, weil Sie Multimedia-Anwendungen programmieren oder &arts; erweitern wollen, lesen Sie einiges oder alles aus dem Kapitel &arts; Details. Das sollte Ihnen ein Verständnis der Konzepte von &arts; ermöglichen, die für eine erfolgreiche Programmentwicklung notwendig sind. + +Wenn Sie besonders an den MIDI-Fähigkeiten von &arts; interessiert sind, sollten Sie das Kapitel &MIDI; lesen. + + + +Falls Sie planen &arts;-kompatible Multimedia-Anwendungen zu programmieren, lesen Sie das Kapitel &arts; Anwendungsprogramm-Schnittstellen, das die verschiedenen APIsdetailiert beschreibt. + +Wenn Sie &arts; durch neue Module erweitern wollen, lesen Sie das Kapitel &arts;-Module. + +Falls Sie eine Anwendung ändern wollen, sodass Sie mit &arts; zusammenarbeitet, lesen Sie das Kapiteln Anwendungen für &arts; portieren. + +Wie Sie Beiträge zu &arts; leisten können, erfahren Sie im Kapitel Zu &arts; beitragen. Die zukünftige Planung für &arts; erfahren Sie im Kapitel Zukünftige Arbeiten. Dort finden Sie auch Verknüpfungen zu weiteren Informationen. + +Wir haben das Hanbuch mit einigem Zusatzmaterial abgerundet: Das sind im Einzelnen Antworten auf häufig gestellte Fragen, eine Liste der Mitarbeiter, detailierte Informationen zu Copyright und Lizenz von &arts; und einige Hintergrundinformationen zu digitalem Audio und &MIDI;. Weiterhin ist ein Glossar der verwendeten Begriffe enthalten. + + +Dieses Handbuch ist noch keineswegs vollständig. Falls Sie Teile hinzufügen möchten, sind Sie sehr willkommen. Kontaktieren Sie in diesem Fall zuerstt Jeff Tranter tranter@kde.org oder Stefan Westerfeld stefan@space.twc.de, um Dopplungen zu vermeiden. + + + + + +Entwicklungsgeschichte + +Spät im Jahre 1997 begann Stefan Westerfeld mit der Arbeit an einem modularen Echtzeit-System zur Klang-Synthese. Das Programm war ursprünglich für einen Power-PC unter &AIX; bestimmt. Die erste Version war einfach, unterstützte aber ein vollständiges Flusssystem, das solche Aufgaben wie die Wiedergabe einer MP3-Datei oder das Durchleiten eines Audio-Datenstroms durch Effektmodule durchführen konnte. + + +Der nächste Schritt war die Implementation eines &GUI;, so dass die Modules grafisch bearbeitet werden konnten. Stefan hatte einige Erfahrung mit &kde; und diese Umgebung wurde daher als &GUI;-System (in dem Bewußtsein, das eine GNOME/Gtk+-Version ebenfalls erforderlich sein könnte) benutzt. Später führte das dazu, das &Linux; die Hauptentwicklungsplattform wurde. Vom ursprünglichen Namen ksynth wurde das Projekt in &arts; umbenannt und die Entwicklungsgeschwindigkeit nahm zu. Das Projekt war zu dieser Zeit mit einem CORBA-basierten Protokoll, dutzenden von Modulen, einem grafischen Moduleditor, C- und C++-API-Dokumentation, Hilfsprogrammen und einer Mailingsliste und Internetseite mit einer kleinen Entwicklergruppe bereits recht vollständig. Diese ganze Entwicklung fand in der sehr kurzen Zeit von nur einem Jahr statt. + +Bei der Planung von &kde; 2.0 wurde es dem &kde;-Team klar, das &kde; eine bessere Klanginfrastruktur und Unterstützung für Klänge und andere Stream-Medien benötigte. Man entschied sich, &arts; für diese Zwecke anzupassen, da bereits eine fundierte Architektur vorhanden war. Es wurde große Mühe in eine neue Version von &arts; investiert, die umfangreichtse Entwicklung war die Ersetzung des CORBA-Protokolls durch ein völlig neues Subsystem mit dem Namen &MCOP;, das für Multimedia optimiert ist. Die Version 0.4 von &arts; wurde Bestandteil der Version 2.0 von &kde;. + +Die Arbeit an &arts; geht weiter. Die Arbeitsgeschwindigkeit wird verbessert und neue Funktionen werden hinzugefügt. Obwohl &arts; ein Kernbestandteil von &kde; ist, kann es auch ohne &kde; verwendet werden. Es findet auch Verwendung in Anwendungen, die über das traditionelle Multimedia hinausgehen. Das Projekt hat auch beim GNOME-Team einiges Interesse hervorgerufen, so dass die Möglichkeit besteht, das es eines Tages die Standard-Multimedia-Architektur für &UNIX;-Arbeitsplatzrechner wird. + + + + + +&tools; +&artsbuilder-doc; +&detail; +&arts-midi; +&gui; +&mcop-ref; +&apis; +&modules; +&porting; +&helping; +&future; +&references; +&arts-faq; + + + +&arts; Copyright und Lizensierung + +&arts; Programm-Copyright 1998-2001 Stefan Westerfeld stefan@space.twc.de + + Dokumentation Copyright 1999-2001 Stefan Westerfeld stefan@space.twc.de und Jeff Tranter tranter@kde.org. +Übersetzung: Frank Schütte F.Schuette@t-online.de +&underFDL; Alle Bibliotheken in &arts; stehen unter der GNU Lesser General Public Lizenz. Die überwiegende Menge des &arts;-Programms befindet sich in den Bibliotheken, einschließlich des gesamten MCOP und ArtsFlow. Damit können die Bibliotheken auch für nicht-freie/nicht-offene Anwendungen verwendet werden, falls gewünscht. + +Es gibt einige Programme (wie artsd), die unter der GNU General Public Lizenz stehen. Da es unterschiedliche Einstellungen dazu gibt, ob es erlaubt ist, GPL-Anwendungen mit &Qt; zu linken, habe ich dieses explizit erlaubt, also zusätzlich zur GPL: Es ist auch erlaubt, dieses Programm mit der &Qt;-Bibliothek zu linken; dabei wird &Qt; wie eine Bibliothek benutzt, die normalerweise zu einem Betriebssystem dazugehört, ob das im Einzelfall so ist oder nicht (hier noch der Originaltext: "permission is also granted to link this program with the Qt library, treating Qt like a library that normally accompanies the operating system kernel, whether or not that is in fact the case.") + + + + +&arts; installieren + +Um &arts; benutzen zu können, müssen Sie es zuerst installieren und starten. Dazu gibt es zwei Möglichkeiten, die in den nächsten beiden Abschnitten beschrieben werden. + + +Ein vorkompiliertes Binärpaket installieren + +Der schnellste und einfachste Weg, um &arts; auf Ihrem System zu installieren ist ein vorkompiliertes Binärpaket. Aktuelle Versionen von &Linux;-Distributionen beinhalten &kde;, und wenn es sich um &kde; 2.0 oder später handelt, enthalten Sie &arts;. Wenn &kde; nicht in Ihrer Distribution enthalten ist, können Sie sie vielleicht von Ihrem Händler herunterladen. Alternativ sind manche Binärpakete auch von dritter Seite erhältlich. Achten Sie darauf, das die verwendeten Pakete kompatibel mit Ihrer Betriebssystemversion sind. + +Eine grundlegende Installation von &kde; enthält den Soundserver, damit die meisten Anwendungen Klänge abspielen können. Wenn Sie das gesamte Paket der Multimedia-Werkzeuge und -Anwendungen haben wollen, müssen Sie vermutlich noch einige optionale Pakete installieren. + +Der Nachteil an vorkompilierten Binärpaketen ist, das sie vermutlich nicht die aktuellste Version von &arts; enthalten. Das ist noch wahrscheinlicher, wenn Sie auf &CD-ROM; bereitstehen, da die Entwicklungsgeschwindigkeit von &arts; und &kde; so groß ist, das Medien wie die &CD-ROM; in der Regel nicht mithalten können. Sie werden auch feststellen, das, wenn Sie eine ungebräuchliche Distribution oder eine ungewöhnliche Konfiguration haben, Binärpakete nicht verfügbar sind. In solchen Fällen sind Sie auf die zweite Methode angewiesen. + + + + +Erstellen aus den Quelltexten + +Der zeitaufwendigste aber flexibelste Weg ist, &arts; aus den Quelltexten selbst zu kompilieren. Das sichert, dass die kompilierte Version optimal für Ihre Systemeinrichtung geeignet ist und erlaubt Ihnen, die jeweils aktuelle Version zu verwenden. + +Sie haben zwei Möglichkeiten -- entweder Sie installieren die letzte stabile Version, die zu &kde; gehört, oder Sie nehmen die aktuellste (aber vielleicht instabile) Version direkt aus dem CVS-Repository des &kde;-Projektes. Die meisten Benutzer, die nicht für &arts; entwickeln, sollten die stabile Version verwenden. Sie können sie von ftp://ftp.kde.org oder von einem der vielen Mirrors herunterladen. Wenn Sie für &arts; entwickeln, sollten Sie die CVS-Version verwenden. Wenn Sie aRts ohne KDE verwenden wollen, können Sie einen selbstständigen Entwicklugsschnappschuß (Snapshot) von http://space.twc.de/~stefan/kde/arts-snapshot-doc.html herunterladen. + +Weiterhin gilt, wenn Sie aus dem CVS kompilieren, es befinden sich einige Komponenten von &arts; (&dh; die grundlegenden Komponenten einschließlich des Soundservers) in dem CVS-Modul tdelibs, während weitere Komponenten (&zb; artsbuilder) sich im Modul tdemultimedia befinden. Das kann sich in Zukunft ändern. Im Modul kmusic finden Sie ebenfalls ein Version; es handelt sich dabei um die alte (vor-&kde; 2.0) Version, die jetzt überholt ist. + +Die Vorbedingungen für die Kompilierung von &arts; sind die gleichen wie für den Rest von &kde;. Die configure-Skripte sollten Ihr Sytem identifizieren und anzeigen, falls benötigte Komponenten fehlen. Vergewissern Sie sich, das Ihr Sound-Treiber funktioniert (entweder der OSS/Free Kerneltreiber, der OSS-Treiber von 4Front Technologies oder der ALSA-Treiber mit OSS-Emulation). + +Weitere Informationen zum Herunterladen und installieren von &kde; (einschließlich &arts;) finden Sie in der &kde; &FAQ;. + + + + + +&digitalaudio; +&midiintro; +&arts-glossary; + +
+ diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/mcop.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/mcop.docbook new file mode 100644 index 00000000000..84e77bce7f3 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/mcop.docbook @@ -0,0 +1,1899 @@ + + + +&MCOP;: Objekt Modell und Streaming + + + +Überblick + + &MCOP; ist der Standard, den &arts; für folgende Aufgaben verwendet: + + Kommunikation zwischen Objekten. Netzwerk-Transparenz. Beschreibung von Objekt-Schnittstellen. Programmiersprachenunabhängigkeit. + + Ein wichtiger Aspekt von &MCOP; ist die Interface Description Language , &IDL;, in der viele der Schnittstellen (Interfaces) und APIs von &arts; sprachunabhängig definiert worden sind. + + &IDL;-Schnittstellen werden durch den &IDL;-Übersetzer in C++-Quelltexte übersetzt. Wenn Sie eine Schnittstelle implementieren, verwenden Sie als Grundlage das Klassenskelett, das der &IDL;-Übersetzer erstellt hat. Wenn Sie eine Schnittstelle verwenden, benutzen Sie einen Wrapper. Auf diese Weise kann &MCOP; ein Protokoll verwenden, wenn das Objekt, das Sie verwenden nicht lokal ist - Sie haben also volle Netzwerk-Transparenz. + + Dieses Kapitel soll die grundlegenden Möglichkeiten des Objektmodells beschreiben, das durch die Verwendung von &MCOP;, das Protokoll selbst und seine Verwendung in C++ (Sprachbindung) entsteht. Dieses Kapitel wird nicht übersetzt, da zur Programmierung ohnehin englische Sprachkenntnisse unabdingbar sind. + + + + + +Interfaces and &IDL; + + Many of the services provided by &arts;, such as modules and the sound server, are defined in terms of interfaces. Interfaces are specified in a programming language independent format: &IDL;. + + This allows many of the implementation details such as the format of multimedia data streams, network transparency, and programming language dependencies, to be hidden from the specification for the interface. A tool, &mcopidl;, translates the interface definition into a specific programming language (currently only C++ is supported). + + The tool generates a skeleton class with all of the boilerplate code and base functionality. You derive from that class to implement the features you want. + + The &IDL; used by &arts; is similar to that used by CORBA and DCOM. + + &IDL; files can contain: + + C-style #include directives for other &IDL; files. Definitions of enumerated and struct types, as in C/C++. Definitions of interfaces. + + In &IDL;, interfaces are defined much like a C++ class or C struct, albeit with some restrictions. Like C++, interfaces can subclass other interfaces using inheritance. Interface definitions can include three things: streams, attributes, and methods. + + + +Streams + + Streams define multimedia data, one of the most important components of a module. Streams are defined in the following format: + + [ async ] in|out [ multi ] type stream name [ , name ] ; + + Streams have a defined direction in reference to the module, as indicated by the required qualifiers in or out. The type argument defines the type of data, which can be any of the types described later for attributes (not all are currently supported). Many modules use the stream type audio, which is an alias for float since that is the internal data format used for audio stream. Multiple streams of the same type can defined in the same definition uisng comma separated names. + + Streams are by default synchronous, which means they are continuous flows of data at a constant rate, such as PCM audio. The async qualifier specifies an asynchronous stream, which is used for non-continuous data flows. The most common example of an async stream is &MIDI; messages. + + The multi keyword, only valid for input streams, indicates that the interface supports a variable number of inputs. This is useful for implementing devices such as mixers that can accept any number of input streams. + + + + +Attributes + + Attributes are data associated with an instance of an interface. They are declared like member variables in C++, and can can use any of the primitive types boolean, byte, long, string, or float. You can also use user-defined struct or enum types as well as variable sized sequences using the syntax sequence<type>. Attributes can optionally be marked readonly. + + + + +Methods + + As in C++, methods can be defined in interfaces. The method parameters are restricted to the same types as attributes. The keyword oneway indicates a method which returns immediately and is executed asynchronously. + + + + + +Standard Interfaces + + Several standard module interfaces are already defined for you in &arts;, such as StereoEffect, and SimpleSoundServer. + + + + +Example + + A simple example of a module taken from &arts; is the constant delay module, found in the file tdemultimedia/arts/modules/artsmodules.idl. The interface definition is listed below. + + +interface Synth_CDELAY : SynthModule { + attribute float time; + in audio stream invalue; + out audio stream outvalue; +}; + + + This modules inherits from SynthModule. That interface, defined in artsflow.idl, defines the standard methods implemented in all music synthesizer modules. + + The CDELAY effect delays a stereo audio stream by the time value specified as a floating point parameter. The interface definition has an attribute of type float to store the delay value. It defines two input audio streams and two output audio streams (typical of stereo effects). No methods are required other than those it inherits. + + + + + + +More About Streams + + This section covers some additional topics related to streams. + + +Stream Types + + There are various requirements for how a module can do streaming. To illustrate this, consider these examples: + + Scaling a signal by a factor of two. Performing sample frequency conversion. Decompressing a run-length encoded signal. Reading &MIDI; events from /dev/midi00 and inserting them into a stream. + + The first case is the simplest: upon receiving 200 samples of input the module produces 200 samples of output. It only produces output when it gets input. + + The second case produces different numbers of output samples when given 200 input samples. It depends what conversion is performed, but the number is known in advance. + + The third case is even worse. From the outset you cannot even guess how much data 200 input bytes will generate (probably a lot more than 200 bytes, but...). + + The last case is a module which becomes active by itself, and sometimes produces data. + + In &arts;s-0.3.4, only streams of the first type were handled, and most things worked nicely. This is probably what you need most when writing modules that process audio. The problem with the other, more complex types of streaming, is that they are hard to program, and that you don't need the features most of the time. That is why we do this with two different stream types: synchronous and asynchronous. + + Synchronous streams have these characteristics: + + Modules must be able to calculate data of any length, given enough input. All streams have the same sampling rate. The calculateBlock() function will be called when enough data is available, and the module can rely on the pointers pointing to data. There is no allocation and deallocation to be done. + + Asynchronous streams, on the other hand, have this behaviour: + + Modules may produce data sometimes, or with varying sampling rate, or only if they have input from some filed escriptor. They are not bound by the rule must be able to satisfy requests of any size. Asynchronous streams of a module may have entirely different sampling rates. Outgoing streams: there are explicit functions to allocate packets, to send packets - and an optional polling mechanism that will tell you when you should create some more data. Incoming streams: you get a call when you receive a new packet - you have to say when you are through with processing all data of that packet, which must not happen at once (you can say that anytime later, and if everybody has processed a packet, it will be freed/reused) + + When you declare streams, you use the keyword async to indicate you want to make an asynchronous stream. So, for instance, assume you want to convert an asynchronous stream of bytes into a synchronous stream of samples. Your interface could look like this: + + +interface ByteStreamToAudio : SynthModule { + async in byte stream indata; // the asynchonous input sample stream + + out audio stream left,right; // the synchronous output sample streams +}; + + + + + +Using Asynchronous Streams + + Suppose you decided to write a module to produce sound asynchronously. Its interface could look like this: + + +interface SomeModule : SynthModule +{ + async out byte stream outdata; +}; + + + How do you send the data? The first method is called push delivery. With asynchronous streams you send the data as packets. That means you send individual packets with bytes as in the above example. The actual process is: allocate a packet, fill it, send it. + + Here it is in terms of code. First we allocate a packet: + + +DataPacket<mcopbyte> *packet = outdata.allocPacket(100); + + + The we fill it: + + +// cast so that fgets is happy that it has a (char *) pointer +char *data = (char *)packet->contents; + +// as you can see, you can shrink the packet size after allocation +// if you like +if(fgets(data,100,stdin)) + packet->size = strlen(data); +else + packet->size = 0; + + + Now we send it: + + +packet->send(); + + + This is quite simple, but if we want to send packets exactly as fast as the receiver can process them, we need another approach, the pull delivery method. You ask to send packets as fast as the receiver is ready to process them. You start with a certain amount of packets you send. As the receiver processes one packet after another, you start refilling them with fresh data, and send them again. + + You start that by calling setPull. For example: + + +outdata.setPull(8, 1024); + + + This means that you want to send packets over outdata. You want to start sending 8 packets at once, and as the receiver processes some of them, you want to refill them. + + Then, you need to implement a method which fills the packets, which could look like this: + + +void request_outdata(DataPacket<mcopbyte> *packet) +{ + packet->size = 1024; // shouldn't be more than 1024 + for(int i = 0;i < 1024; i++) + packet->contents[i] = (mcopbyte)'A'; + packet->send(); +} + + + Thats it. When you don't have any data any more, you can start sending packets with zero size, which will stop the pulling. + + Note that it is essential to give the method the exact name request_streamname. + + We just discussed sending data. Receiving data is much much simpler. Suppose you have a simple ToLower filter, which simply converts all letters in lowercase: + + +interface ToLower { + async in byte stream indata; + async out byte stream outdata; +}; + + + This is really simple to implement; here is the whole implementation: + + +class ToLower_impl : public ToLower_skel { +public: + void process_indata(DataPacket<mcopbyte> *inpacket) + { + DataPacket<mcopbyte> *outpacket = outdata.allocPacket(inpacket->size); + + // convert to lowercase letters + 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); + + + Again, it is essential to name the method process_streamname. + + As you see, for each arriving packet you get a call for a function (the process_indata call in our case). You need to call the processed() method of a packet to indicate you have processed it. + + Here is an implenetation tip: if processing takes longer (&dh; if you need to wait for soundcard output or something like that), don't call processed immediately, but store the whole data packet and call processed only as soon as you really processed that packet. That way, senders have a chance to know how long it really takes to do your work. + + As synchronization isn't so nice with asynchronous streams, you should use synchronous streams wherever possible, and asynchronous streams only when necessary. + + + + +Default Streams + + Suppose you have 2 objects, for example an AudioProducer and an AudioConsumer. The AudioProducer has an output stream and AudioConsumer has an input one. Each time you want to connect them, you will use those 2 streams. The first use of defaulting is to enable you to make the connection without specifying the ports in that case. + + Now suppose the teo objects above can handle stereo, and each have a left and right port. You'd still like to connect them as easily as before. But how can the connecting system know which output port to connect to which input port? It has no way to correctly map the streams. Defaulting is then used to specify several streams, with an order. Thus, when you connect an object with 2 default output streams to another one with 2 default input streams, you don't have to specify the ports, and the mapping will be done correctly. + + Of course, this is not limited to stereo. Any number of streams can be made default if needed, and the connect function will check that the number of defaults for 2 object match (in the required direction) if you don't specify the ports to use. + + The syntax is as follows: in the &IDL;, you can use the default keyword in the stream declaration, or on a single line. For example: + + +interface TwoToOneMixer { + default in audio stream input1, input2; + out audio stream output; +}; + + + In this example, the object will expect its two input ports to be connected by default. The order is the one specified on the default line, so an object like this one: + + +interface DualNoiseGenerator { + out audio stream bzzt, couic; + default couic, bzzt; +}; + + + Will make connections from couic to input1, and bzzt to input2 automatically. Note that since there is only one output for the mixer, it will be made default in this case (see below). The syntax used in the noise generator is useful to declare a different order than the declaration, or selecting only a few ports as default. The directions of the ports on this line will be looked up by &mcopidl;, so don't specify them. You can even mix input and output ports in such a line, only the order is important. + + There are some rules that are followed when using inheritance: + + If a default list is specified in the &IDL;, then use it. Parent ports can be put in this list as well, whether they were default in the parent or not. Otherwise, inherit parent's defaults. Ordering is parent1 default1, parent1 default2..., parent2 default1... If there is a common ancestor using 2 parent branches, a virtual public-like merging is done at that default's first occurrence in the list. If there is still no default and a single stream in a direction, use it as default for that direction. + + + + + +Attribute change notifications + + + + Attribute change notifications are a way to know when an attribute changed. They are a bit comparable with &Qt;'s or Gtk's signals and slots. For instance, if you have a &GUI; element, a slider, which configures a number between 0 and 100, you will usually have an object that does something with that number (for instance, it might be controlling the volume of some audio signal). So you would like that whenever the slider is moved, the object which scales the volume gets notified. A connection between a sender and a receiver. + + &MCOP; deals with that by being able to providing notifications when attributes change. Whatever is declared as attribute in the &IDL;, can emit such change notifications, and should do so, whenever it is modified. Whatever is declared as attribute can also receive such change notifications. So for instance if you had two &IDL; interfaces, like these: + + + interface Slider { + attribute long min,max; + attribute long position; + }; + interface VolumeControl : Arts::StereoEffect { + attribute long volume; // 0..100 + }; + + + You can connect them using change notifications. It works using the normal flowsystem connect operation. In this case, the C++ code to connect two objects would look like this: + + +#include <connect.h> +using namespace Arts; +[...] +connect(slider,"position_changed",volumeControl,"volume"); + + + As you see, each attribute offers two different streams, one for sending the change notifications, called attributename_changed, and one for receiving change notifications, called attributename. + + It is important to know that change notifications and asynchronous streams are compatible. They are also network transparent. So you can connect a change notification of a float attribute of a &GUI; widget has to an asynchronous stream of a synthesis module running on another computer. This of course also implies that change notifications are not synchronous, this means, that after you have sent the change notification, it may take some time until it really gets received. + + + +Sending change notifications + + When implementing objects that have attributes, you need to send change notifications whereever an attribute changes. The code for doing this looks like this: + + + void KPoti_impl::value(float newValue) + { + if(newValue != _value) + { + _value = newValue; + value_changed(newValue); // <- send change notification + } + } + + + It is strongly recommended to use code like this for all objects you implement, so that change notifications can be used by other people. You should however void sending notifications too often, so if you are doing signal processing, it is probably the best if you keep track when you sent your last notification, so that you don't send one with every sample you process. + + + + +Applications for change notifications + + It will be especially useful to use change notifications in conjunction with scopes (things that visualize audio data for instance), gui elements, control widgets, and monitoring. Code using this is in tdelibs/arts/tests, and in the experimental artsgui implementation, which you can find under tdemultimedia/arts/gui. + + + + + + + + + + +The <literal role="extension" +>.mcoprc</literal +> file + + The .mcoprc file (in each user's home directory) can be used to configure &MCOP; in some ways. Currently, the following is possible: + + GlobalComm The name of an interface to be used for global communication. Global communication is used to find other objects and obtain the secret cookie. Multiple &MCOP; clients/servers that should be able to talk to each other need to have a GlobalComm object which is able to share information between them. Currently, the possible values are Arts::TmpGlobalComm to communicate via /tmp/mcop-username directory (which will only work on the local computer) and Arts::X11GlobalComm to communicate via the root window properties on the X11 server. TraderPath Specifies where to look for trader information. You can list more than one directory here, and separate them with commas, like ExtensionPath Specifies from which directories extensions (in the form of shared libraries) are loaded. Multiple values can be specified comma seperated. + + An example which uses all of the above is: + + +# $HOME/.mcoprc file +GlobalComm=Arts::X11GlobalComm + +# if you are a developer, it might be handy to add a directory in your home +# to the trader/extension path to be able to add components without +# installing them +TraderPath="/opt/kde2/lib/mcop","/home/joe/mcopdevel/mcop" +ExtensionPath="/opt/kde2/lib","/home/joe/mcopdevel/lib" + + + + + +&MCOP; for <acronym +>CORBA</acronym +> Users + + If you have used CORBA before, you will see that &MCOP; is much the same thing. In fact, &arts; prior to version 0.4 used CORBA. + + The basic idea of CORBA is the same: you implement objects (components). By using the &MCOP; features, your objects are not only available as normal classes from the same process (via standard C++ techniques) - they also are available to remote servers transparently. For this to work, the first thing you need to do is to specify the interface of your objects in an &IDL; file - just like CORBA &IDL;. There are only a few differences. + + +<acronym +>CORBA</acronym +> Features That Are Missing In &MCOP; + + In &MCOP; there are no in and out parameters on method invocations. Parameters are always incoming, the return code is always outgoing, which means that the interface: + + +// CORBA idl +interface Account { + void deposit( in long amount ); + void withdraw( in long amount ); + long balance(); +}; + + + is written as + + +// MCOP idl +interface Account { + void deposit( long amount ); + void withdraw( long amount ); + long balance(); +}; + + + in &MCOP;. + + There is no exception support. &MCOP; doesn't have exceptions - it uses something else for error handling. + + There are no union types and no typedefs. I don't know if that is a real weakness, something one would desperately need to survive. + + There is no support for passing interfaces or object references + + + + +<acronym +>CORBA</acronym +> Features That Are Different In &MCOP; + + You declare sequences as sequencetype in &MCOP;. There is no need for a typedef. For example, instead of: + + +// CORBA idl +struct Line { + long x1,y1,x2,y2; +}; +typedef sequence<Line> LineSeq; +interface Plotter { + void draw(in LineSeq lines); +}; + + + you would write + + +// MCOP idl +struct Line { + long x1,y1,x2,y2; +}; +interface Plotter { + void draw(sequence<Line> lines); +}; + + + + + +&MCOP; Features That Are Not In <acronym +>CORBA</acronym +> + + You can declare streams, which will then be evaluated by the &arts; framework. Streams are declared in a similar manner to attributes. For example: + + +// MCOP idl +interface Synth_ADD : SynthModule { + in audio stream signal1,signal2; + out audio stream outvalue; +}; + + + This says that your object will accept two incoming synchronous audio streams called signal1 and signal2. Synchronous means that these are streams that deliver x samples per second (or other time), so that the scheduler will guarantee to always provide you a balanced amount of input data (&zb; 200 samples of signal1 are there and 200 samples signal2 are there). You guarantee that if your object is called with those 200 samples signal1 + signal2, it is able to produce exactly 200 samples to outvalue. + + + + +The &MCOP; C++ Language Binding + + This differs from CORBA mostly: + + Strings use the C++ STL string class. When stored in sequences, they are stored plain, that means they are considered to be a primitive type. Thus, they need copying. longs are plain long's (expected to be 32 bit). Sequences use the C++ STL vector class. Structures are all derived from the &MCOP; class Type, and generated by the &MCOP; &IDL; compiler. When stored in sequences, they are not stored plain , but as pointers, as otherwise, too much copying would occur. + + + +Implementing &MCOP; Objects + + After having them passed through the &IDL; compiler, you need to derive from the _skel class. For instance, consider you have defined your interface like this: + + +// MCOP idl: hello.idl +interface Hello { + void hello(string s); + string concat(string s1, string s2); + long sum2(long a, long b); +}; + + + You pass that through the &IDL; compiler by calling mcopidl hello.idl, which will in turn generate hello.cc and hello.h. To implement it, you need to define a C++-class that inherits the skeleton: + + +// C++ header file - include hello.h somewhere +class Hello_impl : virtual public Hello_skel { +public: + void hello(const string& s); + string concat(const string& s1, const string& s2); + long sum2(long a, long b); +}; + + + Finally, you need to implement the methods as normal C++ + + +// C++ implementation file + +// as you see string's are passed as const string references +void Hello_impl::hello(const string& s) +{ + printf("Hello '%s'!\n",s.c_str()); +} + +// when they are a returncode they are passed as "normal" strings +string Hello_impl::concat(const string& s1, const string& s2) +{ + return s1+s2; +} + +long Hello_impl::sum2(long a, long b) +{ + return a+b; +} + + + Once you do that, you have an object which can communicate using &MCOP;. Just create one (using the normal C++ facilities to create an object): + + + Hello_impl server; + + + And as soon as you give somebody the reference + + + string reference = server._toString(); + printf("%s\n",reference.c_str()); + + + and go to the &MCOP; idle loop + + +Dispatcher::the()->run(); + + + People can access the thing using + + +// this code can run anywhere - not necessarily in the same process +// (it may also run on a different computer/architecture) + + Hello *h = Hello::_fromString([the object reference printed above]); + + + and invoke methods: + + + if(h) + h->hello("test"); + else + printf("Access failed?\n"); + + + + + + +&MCOP; Security Considerations + + Since &MCOP; servers will listen on a TCP port, potentially everybody (if you are on the Internet) may try to connect &MCOP; services. Thus, it is important to authenticate clients. &MCOP; uses the md5-auth protocol. + + The md5-auth protocol does the following to ensure that only selected (trusted) clients may connect to a server: + + It assumes you can give every client a secret cookie. Every time a client connects, it verifies that this client knows that secret cookie, without actually transferring it (not even in a form that somebody listening to the network traffic could find it out). + + To give each client the secret cookie, &MCOP; will (normally) put it in the mcop directory (under /tmp/mcop-USER/secret-cookie). Of course, you can copy it to other computers. However, if you do so, use a secure transfer mechanism, such as scp (from ssh). + + The authentication of clients uses the following steps: + + [SERVER] generate a new (random) cookie R [SERVER] send it to the client [CLIENT] read the "secret cookie" S from a file [CLIENT] mangle the cookies R and S to a mangled cookie M using the MD5 algorithm [CLIENT] send M to the server [SERVER] verify that mangling R and S gives just the same thing as the cookie M received from the client. If yes, authentication is successful. + + This algorithm should be secure, given that + + The secret cookies and random cookies are random enough and The MD5 hashing algorithm doesn't allow to find out the original text, that is the secret cookie S and the random cookie R (which is known, anyway), from the mangled cookie M. + + The &MCOP; protocol will start every new connection with an authentication process. Basically, it looks like this: + + Server sends a ServerHello message, which describes the known authentication protocols. Client sends a ClientHello message, which includes authentication info. Server sends an AuthAccept message. + + To see that the security actually works, we should look at how messages are processed on unauthenticated connections: + + Before the authentication succeeds, the server will not receive other messages from the connection. Instead, if the server for instance expects a ClientHello message, and gets an mcopInvocation message, it will drop the connection. If the client doesn't send a valid &MCOP; message at all (no &MCOP; magic in the message header) in the authentication phase, but something else, the connection is dropped. If the client tries to send a very very large message (> 4096 bytes in the authentication phase, the message size is truncated to 0 bytes, which will cause that it isn't accepted for authentication) This is to prevent unauthenticated clients from sending &zb; 100 megabytes of message, which would be received and could cause the server to run out of memory. If the client sends a corrupt ClientHello message (one, for which demarshalling fails), the connection is dropped. If the client send nothing at all, then a timeout should occur (to be implemented). + + + + +&MCOP; Protocol Specification + + +Einleitung + + It has conceptual similarities to CORBA, but it is intended to extend it in all ways that are required for real time multimedia operations. + + It provides a multimedia object model, which can be used for both: communication between components in one adress space (one process), and between components that are in different threads, processes or on different hosts. + + All in all, it will be designed for extremely high performance (so everything shall be optimized to be blazingly fast), suitable for very communicative multimedia applications. For instance streaming videos around is one of the applications of &MCOP;, where most CORBA implementations would go down to their knees. + + The interface definitions can handle the following natively: + + Continous streams of data (such as audio data). Event streams of data (such as &MIDI; events). Real reference counting. + + and the most important CORBA gimmicks, like + + Synchronous method invocations. Asynchronous method invocations. Constructing user defined data types. Multiple inheritance. Passing object references. + + + + +The &MCOP; Message Marshalling + + Design goals/ideas: + + Marshalling should be easy to implement. Demarshalling requires the receiver to know what type he wants to demarshall. The receiver is expected to use every information - so skipping is only in the protocol to a degree that: If you know you are going to receive a block of bytes, you don't need to look at each byte for an end marker. If you know you are going to receive a string, you don't need to read it until the zero byte to find out it's length while demarshalling, however, If you know you are going to receive a sequence of strings, you need to look at the length of each of them to find the end of the sequence, as strings have variable length. But if you use the strings for something useful, you'll need to do that anyway, so this is no loss. As little overhead as possible. + + + + Marshalling of the different types is show in the table below: + + + + Type Marshalling Process Result + + void void types are marshalled by omitting them, so nothing is written to the stream for them. long is marshalled as four bytes, the most significant byte first, so the number 10001025 (which is 0x989a81) would be marshalled as: 0x00 0x98 0x9a 0x81 enums are marshalled like longs byte is marshalled as a single byte, so the byte 0x42 would be marshalled as: 0x42 string is marshalled as a long, containing the length of the following string, and then the sequence of characters strings must end with one zero byte (which is included in the length counting). include the trailing 0 byte in length counting! hello would be marshalled as: 0x00 0x00 0x00 0x06 0x68 0x65 0x6c 0x6c 0x6f 0x00 boolean is marshalled as a byte, containing 0 if false or 1 if true, so the boolean value true is marshalled as: 0x01 float is marshalled after the four byte IEEE754 representation - detailed docs how IEEE works are here: http://twister.ou.edu/workshop.docs/common-tools/numerical_comp_guide/ncg_math.doc.html and here: http://java.sun.com/docs/books/vmspec/2nd-edition/html/Overview.doc.html. So, the value 2.15 would be marshalled as: 0x9a 0x99 0x09 0x40 struct A structure is marshalled by marshalling it's contents. There are no additional prefixes or suffixes required, so the structure +struct test { + string name; // which is "hello" + long value; // which is 10001025 (0x989a81) +}; + would be marshalled as +0x00 0x00 0x00 0x06 0x68 0x65 0x6c 0x6c +0x6f 0x00 0x00 0x98 0x9a 0x81 + sequence a sequence is marshalled by listing the number of elements that follow, and then marshalling the elements one by one. So a sequence of 3 longs a, with a[0] = 0x12345678, a[1] = 0x01 and a[2] = 0x42 would be marshalled as: +0x00 0x00 0x00 0x03 0x12 0x34 0x56 0x78 +0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x42 + + + + + If you need to refer to a type, all primitive types are referred by the names given above. Structures and enums get own names (like Header). Sequences are referred as *normal type, so that a sequence of longs is *long and a sequence of Header struct's is *Header. + + + + +Messages + + The &MCOP; message header format is defined as defined by this structure: + + +struct Header { + long magic; // the value 0x4d434f50, which is marshalled as MCOP + long messageLength; + long messageType; +}; + + + The possible messageTypes are currently + + + mcopServerHello = 1 + mcopClientHello = 2 + mcopAuthAccept = 3 + mcopInvocation = 4 + mcopReturn = 5 + mcopOnewayInvocation = 6 + + + A few notes about the &MCOP; messaging: + + + Every message starts with a Header. Some messages types should be dropped by the server, as long as the authentication is not complete. After receiving the header, the protocol (connection) handling can receive the message completely, without looking at the contents. + + The messageLength in the header is of course in some cases redundant, which means that this approach is not minimal regarding the number of bytes. + + However, it leads to an easy (and fast) implementation of non-blocking messaging processing. With the help of the header, the messages can be received by protocol handling classes in the background (non-blocking), if there are many connections to the server, all of them can be served parallel. You don't need to look at the message content, to receive the message (and to determine when you are done), just at the header, so the code for that is pretty easy. + + Once a message is there, it can be demarshalled and processed in one single pass, without caring about cases where not all data may have been received (because the messageLength guarantees that everything is there). + + + + +Invocations + + To call a remote method, you need to send the following structure in the body of an &MCOP; message with the messageType = 1 (mcopInvocation): + + +struct Invocation { + long objectID; + long methodID; + long requestID; +}; + + + after that, you send the parameters as structure, &zb; if you invoke the method string concat(string s1, string s2), you send a structure like + + +struct InvocationBody { + string s1; + string s2; +}; + + + + if the method was declared to be oneway - that means asynchronous without return code - then that was it. Otherwise, you'll receive as answer the message with messageType = 2 (mcopReturn) + + +struct ReturnCode { + long requestID; + <resulttype> result; +}; + + + + where <resulttype> is the type of the result. As void types are omitted in marshalling, you can also only write the requestID if you return from a void method. + + So our string concat(string s1, string s2) would lead to a returncode like + + +struct ReturnCode { + long requestID; + string result; +}; + + + + + +Inspecting Interfaces + + To do invocations, you need to know the methods an object supports. To do so, the methodID 0, 1, 2 and 3 are hardwired to certain functionalities. That is + + +long _lookupMethod(MethodDef methodDef); // methodID always 0 +string _interfaceName(); // methodID always 1 +InterfaceDef _queryInterface(string name); // methodID always 2 +TypeDef _queryType(string name); // methodID always 3 + + + to read that, you of course need also + + +struct MethodDef { + string methodName; + string type; + long flags; // set to 0 for now (will be required for streaming) + sequence<ParamDef> signature; +}; + +struct ParamDef { + string name; + long typeCode; +}; + + + the parameters field contains type components which specify the types of the parameters. The type of the returncode is specified in the MethodDef's type field. + + Strictly speaking, only the methods _lookupMethod() and _interfaceName() differ from object to object, while the _queryInterface() and _queryType() are always the same. + + What are those methodIDs? If you do an &MCOP; invocation, you are expected to pass a number for the method you are calling. The reason for that is, that numbers can be processed much faster than strings when executing an &MCOP; request. + + So how do you get those numbers? If you know the signature of the method, that is a MethodDef that describes the method, (which contains name, type, parameter names, parameter types and such), you can pass that to _lookupMethod of the object where you wish to call a method. As _lookupMethod is hardwired to methodID 0, you should encounter no problems doing so. + + On the other hand, if you don't know the method signature, you can find which methods are supported by using _interfaceName, _queryInterface and _queryType. + + + +Type Definitions + + User defined datatypes are described using the TypeDef structure: + + +struct TypeComponent { + string type; + string name; +}; + +struct TypeDef { + string name; + + sequence<TypeComponent> contents; +}; + + + + + + +Why &arts; Doesn't Use &DCOP; + + Since &kde; dropped CORBA completely, and is using &DCOP; everywhere instead, naturally the question arises why &arts; isn't doing so. After all, &DCOP; support is in KApplication, is well-maintained, supposed to integrate greatly with libICE, and whatever else. + + Since there will be (potentially) a lot of people asking whether having &MCOP; besides &DCOP; is really necessary, here is the answer. Please don't get me wrong, I am not trying to say &DCOP; is bad. I am just trying to say &DCOP; isn't the right solution for &arts; (while it is a nice solution for other things). + + First, you need to understand what exactly &DCOP; was written for. Created in two days during the &kde;-TWO meeting, it was intended to be as simple as possible, a really lightweight communication protocol. Especially the implementation left away everything that could involve complexity, for instance a full blown concept how data types shall be marshalled. + + Even although &DCOP; doesn't care about certain things (like: how do I send a string in a network-transparent manner?) - this needs to be done. So, everything that &DCOP; doesn't do, is left to &Qt; in the &kde; apps that use &DCOP; today. This is mostly type management (using the &Qt; serialization operator). + + So &DCOP; is a minimal protocol which perfectly enables &kde; applications to send simple messages like open a window pointing to http://www.kde.org or your configuration data has changed. However, inside &arts; the focus lies on other things. + + The idea is, that little plugins in &arts; will talk involving such data structures as midi events and songposition pointers and flow graphs. + + These are complex data types, which must be sent between different objects, and be passed as streams, or parameters. &MCOP; supplies a type concept, to define complex data types out of simpler ones (similar to structs or arrays in C++). &DCOP; doesn't care about types at all, so this problem would be left to the programmer - like: writing C++ classes for the types, and make sure they can serialize properly (for instance: support the &Qt; streaming operator). + + But that way, they would be inaccessible to everything but direct C++ coding. Specifically, you could not design a scripting language, that would know all types plugins may ever expose, as they are not self describing. + + Much the same argument is valid for interfaces as well. &DCOP; objects don't expose their relationships, inheritance hierarchies, etc. - if you were to write an object browser which shows you what attributes has this object got, you'd fail. + + + While Matthias told me that you have a special function functions on each object that tells you about the methods that an object supports, this leaves out things like attributes (properties), streams and inheritance relations. + + This seriously breaks applications like &arts-builder;. But remember: &DCOP; was not so much intended to be an object model (as &Qt; already has one with moc and similar), nor to be something like CORBA, but to supply inter-application communication. + + Why &MCOP; even exists is: it should work fine with streams between objects. &arts; makes heavily use of small plugins, which interconnect themselves with streams. The CORBA version of &arts; had to introduce a very annoying split between the SynthModule objects, which were the internal work modules that did do the streaming, and the CORBA interface, which was something external. + + Much code cared about making interaction between the SynthModule objects and the CORBA interface look natural, but it didn't, because CORBA knew nothing at all about streams. &MCOP; does. Look at the code (something like simplesoundserver_impl.cc). Way better! Streams can be declared in the interface of modules, and implemented in a natural looking way. + + One can't deny it. One of the reasons why I wrote &MCOP; was speed. Here are some arguments why &MCOP; will definitely be faster than &DCOP; (even without giving figures). + + + An invocation in &MCOP; will have a six-long-header. That is: + + magic MCOP message type (invocation) size of the request in bytes request ID target object ID target method ID + + After that, the parameters follow. Note that the demarshalling of this is extremely fast. You can use table lookups to find the object and the method demarshalling function, which means that complexity is O(1) [ it will take the same amount of time, no matter how many objects are alive, or how many functions are there ]. + + Comparing this to &DCOP;, you'll see, that there are at least + + a string for the target object - something like myCalculator a string like addNumber(int,int) to specify the method several more protocol info added by libICE, and other DCOP specifics I don't know + + These are much more painful to demarshall, as you'll need to parse the string, search for the function, &etc;. + + In &DCOP;, all requests are running through a server (DCOPServer). That means, the process of a synchronous invocation looks like this: + + Client process sends invocation. DCOPserver (man-in-the-middle) receives invocation and looks where it needs to go, and sends it to the real server. Server process receives invocation, performs request and sends result. DCOPserver (man-in-the-middle) receives result and ... sends it to the client. Client decodes reply. + + In &MCOP;, the same invocation looks like this: + + Client process sends invocation. Server process receives invocation, performs request and sends result. Client decodes reply. + + Say both were implemented correctly, &MCOP;s peer-to-peer strategy should be faster by a factor of two, than &DCOP;s man-in-the-middle strategy. Note however that there were of course reasons to choose the &DCOP; strategy, which is namely: if you have 20 applications running, and each app is talking to each app, you need 20 connections in &DCOP;, and 200 with &MCOP;. However in the multimedia case, this is not supposed to be the usual setting. + + I tried to compare &MCOP; and &DCOP;, doing an invocation like adding two numbers. I modified testdcop to achieve this. However, the test may not have been precise on the &DCOP; side. I invoked the method in the same process that did the call for &DCOP;, and I didn't know how to get rid of one debugging message, so I used output redirection. + + The test only used one object and one function, expect &DCOP;s results to decrease with more objects and functions, while &MCOP;s results should stay the same. Also, the dcopserver process wasn't connected to other applications, it might be that if many applications are connected, the routing performance decreases. + + The result I got was that while &DCOP; got slightly more than 2000 invocations per second, &MCOP; got slightly more than 8000 invocations per second. That makes a factor of 4. I know that &MCOP; isn't tuned to the maximum possible, yet. (Comparision: CORBA, as implemented with mico, does something between 1000 and 1500 invocations per second). + + If you want harder data, consider writing some small benchmark app for &DCOP; and send it to me. + + CORBA had the nice feature that you could use objects you implemented once, as seperate server process, or as library. You could use the same code to do so, and CORBA would transparently descide what to do. With &DCOP;, that is not really intended, and as far as I know not really possible. + + &MCOP; on the other hand should support that from the beginning. So you can run an effect inside &artsd;. But if you are a wave editor, you can choose to run the same effect inside your process space as well. + + While &DCOP; is mostly a way to communicate between apps, &MCOP; is also a way to communicate inside apps. Especially for multimedia streaming, this is important (as you can run multiple &MCOP; objects parallely, to solve a multimedia task in your application). + + Although &MCOP; does not currently do so, the possibilities are open to implement quality of service features. Something like that &MIDI; event is really really important, compared to this invocation. Or something like needs to be there in time. + + On the other hand, stream transfer can be integrated in the &MCOP; protocol nicely, and combined with QoS stuff. Given that the protocol may be changed, &MCOP; stream transfer should not really get slower than conventional TCP streaming, but: it will be easier and more consistent to use. + + There is no need to base a middleware for multimedia on &Qt;. Deciding so, and using all that nice &Qt;-streaming and stuff, will easily lead to the middleware becoming a &Qt;-only (or rather &kde;-only) thing. I mean: as soon as I'll see the GNOMEs using &DCOP;, too, or something like that, I am certainly proven wrong. + + While I do know that &DCOP; basically doesn't know about the data types it sends, so that you could use &DCOP; without using &Qt;, look at how it is used in daily &kde; usage: people send types like QString, QRect, QPixmap, QCString, ..., around. These use &Qt;-serialization. So if somebody choose to support &DCOP; in a GNOME program, he would either have to claim to use QString,... types (although he doesn't do so), and emulate the way &Qt; does the streaming, or he would send other string, pixmap and rect types around, and thus not be interoperable. + + Well, whatever. &arts; was always intended to work with or without &kde;, with or without &Qt;, with or without X11, and maybe even with or without &Linux; (and I have even no problems with people who port it to a popular non-free operating systems). + + It is my position that non-&GUI;-components should be written non-&GUI;-dependant, to make sharing those among wider amounts of developers (and users) possible. + + I see that using two IPC protocols may cause inconveniences. Even more, if they are both non-standard. However, for the reasons given above, switching to &DCOP; is no option. If there is significant interest to find a way to unite the two, okay, we can try. We could even try to make &MCOP; speak IIOP, then we'd have a CORBA ORB ;). + + I talked with Matthias Ettrich a bit about the future of the two protocols, and we found lots of ways how things could go on. For instance, &MCOP; could handle the message communication in &DCOP;, thus bringing the protocols a bit closer together. + + So some possible solutions would be: + + Write an &MCOP; - &DCOP; gateway (which should be possible, and would make interoperation possible) - note: there is an experimental prototype, if you like to work on that. Integrate everything &DCOP; users expect into &MCOP;, and try to only do &MCOP; - one could add an man-in-the-middle-option to &MCOP;, too ;) Base &DCOP; on &MCOP; instead of libICE, and slowly start integrating things closer together. + + However, it may not be the worst possibility to use each protocol for everything it was intended for (there are some big differences in the design goals), and don't try to merge them into one. + + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/midi.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/midi.docbook new file mode 100644 index 00000000000..dd750a8a52c --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/midi.docbook @@ -0,0 +1,506 @@ + + + +&MIDI; + + +Überblick + + + +Die &MIDI;-Unterstützung in &arts; hat verschiedene Aufgaben. Erstens ermöglicht sie die Kommunikation von verschiedenen Programmteilen, die &MIDI;-Ereignisse erzeugen oder verarbeiten. Wenn Sie z.B. über einen Sequenzer und einen Sampler verfügen, die beide &arts; unterstützen, kann &arts; &MIDI;-Ereignisse vom Sequenzer zum Sampler senden. + +Auf der anderen Seite kann &arts; für ein Programm die Interaktion mit Geräten übernehmen. Wenn ein Programm (z.B. ein Sampler) &arts; unterstützt, kann es genau so gut &MIDI;-Ereignisse von einem externen &MIDI;-Keyboard empfangen. + +Schließlich ist &arts; ein hervorragender modularer Synthesizer. Er ist genau dafür entworfen worden. Sie können mit artsbuilder aus den kleinen Modulen Instrumente zusammenstellen und diese Instrumente dann für Kompositionen oder zum Abspielen von Musik verwenden. Synthese heißt nicht notwendigerweise reine Synthese, es gibt Module, die Sie zum Abspielen von Samples verwenden können. Also kann &arts; ein Sampler, ein Synthesizer und mehr sein; &arts; ist vollständig modular, also leicht zum Erweitern und Experimentieren geeignet, mächtig und flexibel. + + + +Der &MIDI;-Manager + + +Die zentrale Komponente für Midi-Ereignisse innerhalb von &arts; ist der Midi-Manager. Er kontrolliert, welche Anwendungen verbunden sind und wie Midi-Ereignisse zwischen ihnen übertragen und verarbeitet werden sollen. Der Midi-Manager wird durch artscontrol gesteuert. Wählen Sie dazu AnsichtMidi-Manager im Menü. + +Auf der linken Seite sehen Sieh Midi-Eingänge. Hier werden alle Geräte aufgelistet, die &MIDI;-Ereignisse produzieren. Das können externe &MIDI;-Kanäle sein, die mit einem externen Keyboard verbunden sind, ein Sequenzer, der ein Musikstück abspielt, oder eine andere &MIDI;-Quelle. Auf der rechten Seite sehen Sie &MIDI;-Ausgänge. Alle Geräte oder Programme, die &MIDI;-Ereignisse verarbeiten, sind hier aufgelistet. Das können simulierte Sampler (als Programme) oder externe &MIDI;-Kanäle, an denen ein Hardware-Sampler angeschlossen ist, sein. Neue Programme, wie z.B. Sequenzer, registrieren sich bei dem Midi-Manager, daher kann sich der Listeninhalt von Zeit zu Zeit ändern. + +Sie können Ein- und Ausgänge verbinden, indem Sie den gewünschten Eingang auf der linken und den Ausgang auf der rechten Seite markieren und auf Verbinden klicken. Eine Trennung erreichen Sie mit dem Knopf Trennen. Die bestehenden Verbindungen werden durch günne Linien zwischen den Listen angezeigt. Sie können einen Midi-Eingang mit mehreren Midi-Ausgängen verbinden und umgekehrt. + +Programme (wie der Sequenzer Brahms) fügen sich beim Start selbstständig zur entsprechenden Liste hinzu und entfernen sich beim Beenden selbstständig. Sie können aber auch von Hand Einträge hinzufügen, indem Sie im Menü Hinzufügen wählen. + + + +System-Midi-Kanal (OSS) + +Dadurch wird ein neues &arts;-Objekt erzeugt, das einen externen Midi-Kanal repräsentiert. + +Da externe Midi-Kanäle sowohl senden als auch empfangen können, wird zu beiden Listen ein Eintrag hinzugefügt. Unter &Linux; benötigen Sie entweder einen OSS- (OSS/Free liegt Ihrem &Linux;-Kernel bei) oder einen ALSA-Treiber für Ihre Soundkarte installiert haben. Sie werden nach dem Gerätenamen gefragt. Er lautet normalerweise /dev/midi oder /dev/midi00. + + Wenn Sie allerdings mehr als ein &MIDI;-Gerät oder einen &MIDI;-Loopback-Treiber installiert haben, ist die Auswahl größer. Informationen über die verfügbaren Midi-Kanäle finden Sie im &kcontrolcenter; unter Information Klänge. + + + + +aRts Synthese Midi-Ausgang + +Fügt einen neuen &MIDI;-Ausgang mit einem &arts;-Synthese-Instrument hinzu. Wenn Sie diesen Menüeintrag wählen, erscheint ein Dialog, der Ihnen die Wahl eines Instrumentes ermöglicht. Mit artsbuilder können Sie neue Instrumente erstellen. Alle .arts-Dateien, die mit instrument_ beginnen, werden hier aufgelistet. + + + + + + + +Verwendung von &arts; & Brahms + +Zuerst benötigen Sie eine &kde; 2.1-taugliche Version von &brahms;. Sie finden Sie im kmusic CVS-Modul. Weitere Informationen zu &brahms; finden Sie auf der aRts-Internetseite im Bereich Download. + +Wenn man die Anwendung startet, wird zunächst der &MIDI;-Manager angezeigt. Wenn man Klänge synthetisieren will, fügt man ein &MIDI;-Synthesizerinstrument über HinzufügenaRts Synthese Midi-Ausgang hinzu. + +Man wählt ein Instrument (zum Beispiel organ2). Man verbindet das Instrument über den Knopf Verbinden. Danach kann man mit &brahms; komponieren und die Ausgabe wird durch &arts; synthetisiert. + +Man sollte das &artscontrol;-Fenster geöffnet lassen und die Lautstärkeeinstellung kontrollieren (die Qualität wird schlecht, wenn die Lautstärkeanzeige an die obere Grenze stösst). Nun kann man einneues Demolied für &arts; erstellen und es, wenn es fertig ist, unter aRts-project.org veröffentlichen ;-). + + + + + + +midisend + +midisend ist ein kleines Programm, das &MIDI;-Ereignisse von der Kommandozeile senden kann. Es registriert sich als &MIDI;-Eingang wie alle anderen Anwendungen. Um es zu verwenden, geben Sie % midisend /dev/midi00 ein. Damit wird etwa das gleiche erreicht, wie durch das Hinzufügen eines System-Midikanals in artscontrol (nicht ganz, da midisend nur &MIDI;-Ereignisse senden aber nicht empfangen kann). Der Unterschied ist, das midisend auf unterschiedlichen Computern gestartet werden kann (und damit Netzwerktransparenz ermöglicht). + +Sie können midisend auch Daten von stdin senden lassen. Mit dem folgenden Befehl können sie Daten von Anwendungen, die &arts; nicht unterstützen, an &arts; weiterleiten: % applicationwhichproducesmidieventsonstdout | midisend + + + + + + +Instrumente erstellen + +&arts; synthetisiert Midi-Klänge auf folgende Weise. Es gibt eine Struktur, die einige Eingabekanäle, aus denen Frequenz und Lautstärke (velocity) und ein Parameter gelesen wird. Der Parameter zeigt an, ob die Taste noch heruntergedrückt ist. Die Struktur soll nun diese eine Note mit dieser Lautstärke und Frequenz erzeugen. Außerdem soll die Struktur auf den Wert des Parameters gedrückt reagieren (dabei bedeutet gedrückt=1 der Benutzer drückt die Taste immer noch herunter und gedrückt=0 die Taste wurde losgelassen). + +Eingehende &MIDI;-Ereignisse veranlassen &arts;, neue Strukturen für jede gedrückte Taste zu generieren, ihnen die entsprechenden Parameter mitzugeben und sie wieder zu entfernen, sobald sie nicht mehr benötigt werden. + +Eine Struktur wird auf folgende Art erzeugt und verwendet: + + + +Zum Beginn ist es am einfachsten, ein template_Instrument.arts in &arts-builder; zu öffnen. + +Wählen Sie dazu DateiBeispiel öffnen ... im Menü und im Dateidialog wählen Sie template_Instrument. Damit haben Sie eine leere Struktur mit den erforderlichen Parametern erzeugt, die Sie nur noch "ausfüllen" müssen. + + + +Für den Parameter pressed(gedrückt) benutzen Sie entweder Synth_ENVELOPE_ADSR oder, für eine Schlagzeug wav-Datei, spielen sie einfach ab und ignorieren den Parameter. + + + +Die Struktur sollte am Ausgang done anzeigen, das Sie nicht mehr benötigt wird. Wenn doneauf 1 gesetzt wird, nimmt &arts; an, das er die Struktur löschen kann. Angenehmerweise stellt das ADSR-Hüllkurven-Modul einen Parameter bereit, der anzeigt, wenn das Modul fertig ist. Sie müssen diesen Ausgang lediglich mit dem done-Ausgang Ihrer Struktur verbinden. + + + +Sie sollten die Struktur in die Form instrument_* wie z.B. instrument_piano.arts umbenennen - unter diesem Namen sollten Sie die Struktur unter $HOME/arts/structures speichern (dort speichert artsbuilder normalerweise Strukturen). + + + +Schließlich, nachdem die Struktur gespeichert ist, können Sie sie im &MIDI;-Manager von artscontrol verwenden. + + + +Und Sie müssen natürlich die Struktur so einrichten, das Sie ihre Audiodaten an den linken und rechten Ausgangskanal sendet, so dass sie schließlich durch den Audio-Manager (ein Teil von &artscontrol;) hörbar werden (oder sie mit Effekten weiterverarbeiten). + + + +Um zu lernen, wie Sie selbst ein Instrument erstellen, können Sie ein bereits vorhandenes Instrument analysieren (wählen Sie im Menü DateiBeispiel öffnen). + + + +gemappte Instrumente + +Gemappte Instrumente sind Instrumente, die sich abhängig von der Tonhöhe (pitch), dem Programm, dem Kanal und der Lautstärke (velocity) unterschiedlich verhalten. Sie könnten z.B. einen Klavierklang von 5 Oktaven bilden, indem Sie ein Sample für jede Oktave verwenden (entsprechende Höhenverschiebungen (pitchshifting) vorausgesetzt). Dieser Klang wird besser klingen als ein Sample für alle Oktaven. + +Sie können auch eine Schlagzeug-Map bilden, die jeder Taste ein bestimmtes Schlaginstrument zuordnet. + +Es ist sehr nützlich, wenn Sie einige unterschiedliche Klänge in ein gemapptes Instrument für verschiedene Programme zusammenfügen. Auf diese Weise können Sie Ihren Sequenzer, externes Keyboard oder andere &MIDI;-Quelle verwenden, um zwischen den Klängen umzuschalten, ohne das Sie &arts; umändern müssen. + +Ein gutes Beispiel dafür ist das Instrument arts_all. Es fügt alle Instrumente in einer Map zusammen. Auf diese Weise müssen Sie lediglich einmal in &artscontrol; dieses instrument registrieren und schon können Sie ein komplettes Musikstück in einem Sequenzer komponieren, ohne &arts; umzuschalten. Wenn Sie einen anderen Klang benötigen, wechseln Sie einfach im Sequenzer das Programm und &arts; erzeugt einen anderen Klang. + +Solche Maps können Sie auf einfache Weise erstellen. Sie müssen lediglich eine Textdatei anlegen, die einige Regeln enthält: + +ON [ Bedingungen ...] DO structure=irgendeine Struktur.arts + + +Die Bedingungen können eine oder mehrere der folgenden sein: + + + + + + + +Beim pitch handelt es sich um die gespielte Tonhöhe. Diese Bedingung verwenden Sie, wenn Sie den Instrumentenklang abhängig von der Tonhöhe aufteilen wollen. Von den Anfangsbeispielen würde ein Piano, das verschiedene Klänge für verschiedene Oktaven verwendet, mit einer solchen Bedingung erstellt. Sie können eine bestimmte Tonhöhe angeben, wie z.B. pitch=62 oder einen Bereich wie pitch=60-72. Die möglichen Tonhöhen liegen zwischen 0 und 127. + + + + + + +Das Programm, das auf dem Midi-Kanal aktiv ist, auf dem die Note gesendet wird. Üblicherweise kann man bei einem Sequenzer das Instrument über die Programmeinstellung auswählen. Einzelne Programme oder Bereiche sind erlaubt, also =3 oder =3-6 . Die möglichen Programmeinstellungen reichen von 0 bis 127. + + + + + + +Der Kanal, auf dem die Note gesendet wird. Einzelne Kanäle oder Kanalbereiche sind möglich, z.B. =0 oder =0-8 . Die möglichen Werte liegen zwischen 0 und 15. + + + + + + +Die Lautstärke, die die Note hat. Einzelne Lautstärken (wofür eigentlich) oder Bereiche sind möglich, also =127 oder =64-127 . Die möglichen Werte liegen zwischen 0 und 127. + + + + +Ein komplettes Beispiel für eine Map sieht folgendermaßen aus (das Beispiel stammt aus instrument_arts_all.arts-map): + +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 + + +Wie Sie sehen, wird die Struktur abhängig vom Programm ausgewählt, beispielsweise sehen Sie als Programm 11 eine Schlagzeug-Map (mit zwei Einträgen), die eine tiefe Trommel auf C-5 (pitch=60) und eine Snare-Trommel auf C#-5 (pitch=61) spielt. + +Um Map-Dateien in &artscontrol; als Instrumente zur Wahl erscheinen zu lassen, müssen Sie nach der Konvention instrument_irgendetwas.arts-map benannt werden und sich entweder unter Ihrem Persönlichen Verzeichnis in $HOME/arts/structures oder im &kde;-Verzeichnis unter $KDEDIR/share/apps/artsbuilder/examples befinden. Strukturen, die von dieser Map verwendet werden, können mit einem absoluten Pfad oder relativ zur Position der Map-Datei angegeben werden. + +Es ist eine gute Ide, die arts_all.map zu erweitern oder vielleicht sogar eine General-&MIDI;-Map für &arts; zu erstellen. Das würde die Verwendung von &arts; vereinfachen. Bitte denken Sie darüber nach, ob Sie nicht interessante Instrumente für zukünftige Versionen von &arts; zur Verfügung stellen können. + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/midiintro.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/midiintro.docbook new file mode 100644 index 00000000000..0b18627a426 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/midiintro.docbook @@ -0,0 +1,16 @@ + + + + +Einführung in <acronym +>MIDI</acronym +> + +Noch nicht geschrieben. + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/modules.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/modules.docbook new file mode 100644 index 00000000000..b6f6ccf91eb --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/modules.docbook @@ -0,0 +1,1331 @@ + + + +&arts;-Module + + +Einleitung + +Dieses Kapitel beschreibt die Standardmodule von &arts;. Eine der mächtigsten Möglichkeiten von &arts; ist die Kombinierbarkeit von Modulen zu Strukturen, um neue Funktionen wie Effekte und Instrumente zu implementieren. + +Die Module sind in Kategorien eingeteilt. Synthese-Module werden zur Implementation von Verbindungen benötigt, die Multimedia-Datenströme für neue Effekte, Instrumente, Mischer und Anwendungen zusammenfügen. Visuelle Module erlauben die Erzeugung einer graphischen Benutzeroberfläche zur Kontrolle der Klangstrukturen, die mit den Synthese-Modulen aufgebaut werden. + + + + +Synthese-Modul Referenz + + + +Arithmetisch + Mix + + + + +Synth_ADD + + + + + +Synth_ADD + + +Addiert zwei Signale + + + + +Synth_MUL + + + + + +Synth_MUL + + +Multiplizert ein Signal mit einem Faktor. Sie können dieses Modul verwenden, um ein Signal zu reduzieren (0 < Faktor < 1) oder zu verstärken (Faktor > 1), oder um ein Signal zu invertieren (Faktor < 0). Der Faktor kann ebenfalls ein Signal sein und muss keine Konstante sein (z.B. eine Hüllkurve oder ein reales Signal). + + + + +Synth_DIV + + + + + +Synth_DIV + + +Dieses Modul teilt ein Signal durch einen Faktor. Es kann verwendet werden, um ein Signal durch ein anderes zu dividieren. Es kann aber auch invalue1 auf 1 gesetzt werden, damit das reziproke von invalue2 als outvalue erscheint. Allerdings darf dann invalue2 nicht 0 werden, da es sonst eine Division durch Null Probleme bereitet. + + + + +Synth_MULTI_ADD + + + + + +Synth_MULTI_ADD + + +Addiert eine beliebige Anzahl von Signalen. Wenn Sie die Wellenformen von vier verschiedenen Oszillatoren addieren müssen, können Sie alle Ausgänge mit einem Synth_MULTI_ADD-Modul verbinden. Das ist effektiver als die Verwendung von drei Synth_ADD-Modulen. + + + + +Synth_XFADE + + + + + +Synth_XFADE + + +Hiermit werden zwei Signale über Kreuz gemischt (crossfading). Wenn der Prozentsatz -1 beträgt, dann ist nur das linke, bei 1 nur das rechte und bei 0 sind beide Signale gleichstark hörbar. + +Damit wird es möglich, ein Signal in einem definierten Bereich zu halten. Wenn Sie zwei Signale haben, die beide zwischen -1 und 1 vor dem Mischen waren, befindet sich das gemischte Signal ebenfalls zwischen -1 und 1. + + + +Synth_AUTOPANNER + + +Das Gegenteil eines crossfaders. Hier wird ein Monosignal aufgeteilt in ein Stereosignal: Das Modul kann das Signal automatisch zwischen dem rechten und linken Kanal aufteilen. Das macht lebendigere Mischungen möglich. Eine Standardanwendung wäre ein Gitarren- oder Gesangsklang. + +Verbinden Sie einen LFO, eine Sinus- oder Sägezahnschwingung mit inlfo und wählen Sie eine Frequenz zwischen 0.1 und 5Hz für einen traditionellen Effekt oder eine höhere Frequenz für einen Special FX. + + + + + + +Busse + + +Synth_BUS_UPLINK + + + + + +Synth_BUS_UPLINK + + +Ein Uplink zu einem Bus. Legen Sie ein Signal auf den linken und rechten Eingang und geben Sie dem Bus einen Namen, auf den die Daten gesendet werden sollen. Das kombinierte Signal von allen Uplinks mit dem gleichen Namen wird auf jedem Downlink mit diesem Namen anliegen. + + + +Synth_BUS_DOWNLINK + + + + + +Synth_BUS_DOWNLINK + + +Empfängt (Summe) alle Daten, die auf einen bestimmten Bus (der Name, den Sie beim Kanal bus festlegen) gesendet werden. + + + + + + + +Verzögerungen + + + + +Synth_DELAY + + + + + +Verzögert das Eingangssignal um eine bestimmte Zeit. Die Zeit muss zwischen 0 und maxdelay für eine Verzögerung zwischen 0 und maxdelay Sekunden liegen. + +Diese Art von Verzögerungen darf nicht in rückgekoppelten Strukturen verwendet werden, weil es sich um eine variable Verzögerungszeit handelt. Sie können die Zeit ändern, während das Modul läuft und sie auch auf Null setzen. Da aber in einer rückgekoppelten Struktur das eigene Ausgangssignal für die Berechnung des nächsten Eingangssignals notwendig ist, könnte eine Verzögerung, die auf Null abfällt, zu einem Einfrieren führen. + +In einem solchen Fall können Sie aber CDELAY verwenden. Nehmen Sie eine geringe konstante Verzögerung (z.B. 0.001 Sekunden) zusammen mit einer einstellbaren Verzögerung. + +Außerdem können Sie CDELAY und DELAY kombinieren, um eine variable Verzögerung mit einem positiven Minimalwert in einem rückgekoppelten System zu erhalten. Wichtig ist nur, das ein CDELAY-Modul vorhanden ist. + + + + +Synth_CDELAY + + + + +Synth_CDELAY + + +Verzögert das Eingangssignal um eine bestimmte Zeitspanne. Die Zeit muss größer als 0 für eine Verzögerung von mehr als 0 Sekunden sein. Die Verzögerung ist konstant während der Berechnung, kann also nicht verändert werden. + +Das spart Rechenzeit, da keine Interpolation notwendig ist, und ist nützlich für rekursive Strukturen.Siehe weiter oben (Synth_DELAY). + + + + + + +Hüllkurven + + + + +Synth_ENVELOPE_ADSR + + + + +Synth_ENVELOPE_ADSR + + +Dies ist eine klassische ADSR-Hüllkurve, das heißt Sie können folgendes festlegen: + + + +active + +Ob die Taste gerade vom Benutzer gedrückt wird. + + + + +invalue + +Das Eingangssignal. + + + + +attack + +Die Zeit zwischen dem Niederdrücken der Taste und dem Zeitpunkt zu dem das Signal seine maximale Amplitude erreicht (in Sekunden). + + + + +decay + +Die Zeit, bis das Signal nach dem Maximalwert einen konstanten Dauerwert annimmt (in Sekunden). + + + + +sustain + +Der konstante Dauerwert, bei dem das Signal gehalten wird, nachdem der Benutzer die Taste wieder losgelassen hat. + + + + +release + +Die Zeit vom Loslassen der Taste bis das Signal den Wert Null wiedererreicht hat (in Sekunden). + + + + +Das skalierte Signal liegt am Ausgang (outvalue) an. Wenn die ADSR-Hüllkurve beendet ist, wird der Ausgang done auf 1 gesetzt. Das können Sie verwenden, um für ein Instrument das Signal done zu generieren (das dazu führt, das die Struktur vom &MIDI;-Router nach dem Ende der Release-Phase gelöscht wird). + + + + +Synth_PSCALE + + + + +Synth_PSCALE + + +Das Synth_PSCALE-Modul skaliert einen Audiostrom von der Lautstärke 0 (Stille) bis 1 (Maximallautstärke) und zurück zu 0 (Stille). Gesteuert wird das durch den Eingang Position (pos) (dieser Eingang kann mit dem entsprechenden Ausgang von Synth_SEQUENCE belegt werden). Die Stelle, an der der Maximalwert erreicht werden soll, kann als Eingang pos angegeben werden. + +Beispiel: Setzen Sie top auf 0.1. Das bedeutet, nach 10% der Note erreicht die Lautstärke ihren Maximalwert und klingt danach aus. + + + + + +Effekte + + +Synth_FREEVERB + + + + +Synth_FREEVERB + + +Dies ist ein Nachhall-Effekt. In der augenblicklichen Implementation kann ein Stereosignal durch diesen Effekt geschickt werden. Dabei wird der Nachhall zum ursprünglichen Signal addiert. + + +Das bedeutet, Sie können das Modul ein innerhalb eines Stereo-Effektstapels verwenden. + + +Das Eingangssignal wird mit inleft und inright verbunden, das Ausgangssignal liegt bei outleft und outright an. + +Sie können folgende Parameter festlegen: + + + +roomsize + +Die Größe des Raumes, für den der Nachhall simuliert wird (Bereich: 0..1, wobei 1 demgrößtmöglichen Raum entspricht). + + + + +damp + +Dies steuert einen Filter, der die Raumsimulation hohe Frequenzen absorbieren lässt. Der Bereich liegt zwischen 0 (keine Absorption) und 1 (sehr viel Absorption der hohen Frequenzen). + + + + +wet + +der Anteil des Nachhall-Signals (das ist der Anteil des Signals, das durch die Filter verändert und zu einer nicht trockenen Akustik, also einem halligen Klang führt. + + + + +dry + +der Anteil des ursprünglichen Signals, der durchgelassen werden soll. Er führt eher zu einem Echo (oder kombinierter Verzögerung) anstatt einem Nachhall-Effekt (Bereich: 0..1) + + + + + +width + +Der Anteil an Stereo-Magie, den der Nachhall-Effekt hinzufügt und zu einem breiteren Klang im Stereo-Panorama führt (Bereich: 0..1). + + + + +mode + +[ TODO: Ich glaube, wenn mode 1 ist, wird das ursprüngliche Klangbild beibehalten, während mode 0 der normale Arbeitsmodus ist ] + + + + + + + +Synth_TREMOLO + + + +Synth_TREMOLO + + +Das Tremolo-Modul verändert die Amplitude entsprechend einer LFO-Welle. Üblicherweise verwendet man dazu eine Sinusschwingung, aber das ist nicht zwingend notwendig. Man erhält einen intensiven Effekt, der in vielen Arrangements wegen seiner großen Dynamik sehr durchdringend ist. Der Tremolo-Effekt ist einer der liebsten Effekte für Gittaristen, wenn er auch nicht mehr so populär wie in den 1960ern ist. + +[TODO: augenblicklich ist dieser Effekt als invalue + abs(inlfo) implementiert - vielleicht wäre es sinnvoller, diesen als invalue * (1+inlfo*depth) zu implementieren, wobei depth den Bereich 0..1 hat - das wird nach KDE2.1 entschieden. Falls Sie Anmerkungen haben, schicken Sie eine Mail an die &arts;-Liste ;). ] + + + +Synth_FX_CFLANGER + + + +Synth_FX_CFLANGER + + +Ein Flanger ist ein zeitveränderlicher Verzögerungseffekt. Um die Entwicklung von umfangreichen Flanger-Effekten einfacher zu gestalten, wurde dieses Modul hinzugefügt, das den Kern eines Ein-Kanal-Flangers darstellt. + +Folgende Kanäle sind vorhanden: + + + +invalue + +Das Signal, das verarbeitet werden soll. + + + + +lfo + +Möglichst eine Sinusschwingung, die die Verzögerungszeit (delay) innerhalb des Flangers moduliert (-1 .. 1). + + + + +mintime + +Der minimale Wert für die Verzögerung (delay) innerhalb des Flangers in Millisekunden. Empfohlene Werte: versuchen sie etwa 1 ms. Bitte verwenden Sie Werte < 1000 ms. + + + + +maxtime + +Der minimale Wert für die Verzögerung (delay) innerhalb des Flangers in Millisekunden. Empfohlene Werte: versuchen sie etwa 5 ms. Bitte verwenden Sie Werte < 1000 ms. + + + + +outvalue + +Das Ausgangssignal. Für den Effekt ist es wichtig, dass dieses Signal mit dem ursprünglichen (nicht veränderten) Signal gemischt wird. + + + + + +Sie können dieses als die Basis für einen Choreffekt verwenden. + + + + + + + +Filter + + +Synth_PITCH_SHIFT + + + +Synth_PITCH_SHIFT + + +Dieser Höhenverschiebungseffekt verändert die Frequenz des Eingangssignals ohne die Geschwindigkeit des Signals zu verändern. Eine Anwendung für diesen Effekt ist die Veränderung Ihrer Stimme, während Sie sie aufnehmen (und abspielen) in Echtzeit + +Der Parameter speed gibt die relative Geschwindigkeit wieder, mit der das Signal wiedergegeben wird. Eine Geschwindigkeit von 2 würde den Klang auf die doppelte Frequenz anheben (z.B. würde eine Eingangsfrequenz von 440Hz zu einer Ausgangsfrequenz von 880Hz führen). + +Der Parameter frequency(Frequenz) wird intern verwendet, um zwischen unterschiedlichen Signalgüten umzuschalten. Abhängig von Ihrer Wahl wird der erzeugte Klang mehr oder weniger realistisch sein. Ein guter Startwert liegt zwischen 5 und 10. + + + + +Synth_SHELVE_CUTOFF + + + +Synth_SHELVE_CUTOFF + + +Filtert alle Frequenzen oberhalb einer Grenzfrequenz heraus. + + + + +Synth_BRICKWALL_LIMITER + + + +Synth_BRICKWALL_LIMITER + + +Dieses Modul beschneidet ein Signal, um es in den Bereich von [-1;1] einzupassen. Es werden keine Maßnahmen gegen die Störungen getroffen, die beim Abschneiden lauter Signale entstehen. Sie können das als Effekt verwenden (z.B. um eine leicht abgeschnittene Sinusschwingung zu erzeugen). Es ist wahrscheinlich meistens eine gute Idee, das Resultat durch einen Tiefpassfilter zu schicken, damit es nicht so aggressiv klingt. + + + +Synth_STD_EQUALIZER + + + +Synth_STD_EQUALIZER + + +Ein hübsches Modul eines parametrischen Equalizers. Folgende Parameter sind vorhanden: + + + +invalue, outvalue + +Das Signal, das durch den Equalizer gefiltert wird. + + + + +low + +Wie tiefe Frequenzen verändert werden sollen. Der Wert ist in dB, wobei 0 keine Änderung der tiefen Frequenzen bedeutet, -6 bedeutet Absenkung um 6dB und +6 bedeutet Anhebung um 6dB. + + + + +mid + +Wie mittlere Frequenzen durch den Equalizer verändert werden sollen in dB (siehe auch low). + + + + +high + +Wie hohe Frequenzen durch den Equalizer verändert werden sollen in dB (siehe auch low). + + + + +frequency + +Dies ist die zentral Frequenz des Equalizers in Hz, die mittleren Frequenzen befinden sich in diesem Bereich, die hohen und tiefen Frequenz oberhalb und unterhalb. Anmerkung: die Frequenz kann nicht höher als die halbe Samplingrate sein, also normalerweise 22050Hz, und nicht tiefer als 1 Hz. + + + + +q + +Beeinflusst die Breite des Frequenzspektrums. Es sind nur positive Zahlen > 0 erlaubt. Der Wert Eins ist sinnvoll, höhere Werte von q bedeuten ein schmaleres Frequenzband der mittleren Frequenzen, geringere Werte ein breiteres Band. + + + + + + + +Synth_RC + + + +Synth_RC + + +Ein gedämpfter Schwingkreis, der alle Frequenzen um seine Resonanzfrequenz filtert. Es gibt keine leichte Möglichkeit, die Resonanzfrequenz festzulegen (die nicht herausgefiltert wird), da es nur zwei ungewöhnliche Konstanten f und b gibt. Der Programmteil stammt noch aus den ersten Tagen von Synthesizern und wird vermutlich durch einen neuen Filter ersetzt werden, bei dem man die Frequenz und den Resonanzwert als Parameter hat. + +Versuchen Sie etwa b=5, f=5 oder b=10, f=10 oder b=15, f=15. + + + + +Synth_MOOG_VCF + + + +Synth_MOOG_VCF + + +Filtert alle Frequenzen oberhalb einer Grenzfrequenz heraus (es handelt sich um einen 24db 4pole-Filter, der -24db pro Oktave oberhalb der Grenzfrequenz absenkt), es gibt einen zusätzlichen Parameter, um die Resonanz einzustellen, 0 bedeutet keine Resonanz und 4 bedeutet selbstoszillierend. + + + + + + +Midi + Sequenzer + + +Synth_MIDI_TEST + + + +Synth_MIDI_TEST + + +Dieses Modul lädt eine Instrumentenstruktur aus einer Datei und registriert sich als &MIDI;-Ausgangskanal beim &arts;-&MIDI;-Manager. Noten, die an diesen Ausgang gesendet werden, erzeugen Töne dieses Instrumentes. + + +Sie können so etwas mit &artscontrol; leichter einrichten als manuell in &arts-builder;. + + + + + +Synth_SEQUENCE + + + + +Spielt eine Sequenz von Noten immer wieder. Die Noten werden in Tracker Notation angegeben und durch Semikolons voneinander getrennt. Ein Beispiel ist A-3;C-4;E-4;C-4;. Die Geschwindigkeit wird in Sekunden pro Note angegeben, wenn Sie also 120 BPM anvisieren, legen Sie die Geschwindigkeit auf 0.5 Sekunden fest, da 60 Sekunden / 0.5 Sekunden pro Note auf 120 BPM führt. + +Sie können für jede Note eine individuelle Länge relativ zur Grundlänge festlegen durch einen Doppelpunkt gefolgt von der Länge hinter der Notenbezeichnung. Ein Beispiel dafür ist A-3:2;C-4:0.5;D-4:0.5;E-4;. Midi-Kompositionsprogramme ist ein wenig komfortabler ;) + +Das Synth_SEQUENCE-Modul gibt zusätzliche Informationen über die Position innerhalb der gerade wiedergegebenen Note aus, wobei 0 gerade begonnen und 1 gerade beendet bedeutet. Diese Informationen können im Synth_PSCALE-Modul verwendet werden (siehe unten). + + + +Synth_SEQUENCE_FREQ + + + + +Dieses Modul arbeitet gleich dem Synth_SEQUENCE, einziger Unterschied ist, das es keine Notennamen, sondern Frequenzen annimmt. + + + + + + +Samples + + +Synth_PLAY_WAV + + + + +Synth_PLAY_WAV + + +Dieser Menüpunkt spielt eine wav-Datei ab. Er ist nur dann verfügbar, wenn Sie libaudiofile auf Ihrem Computer installiert haben. Die wave-Datei startet, sobald das Modul erstellt wird. + +Sie stoppt, sobald das Ende der wav-Datei erreicht ist. Zusätzlich wird der Parameter finished (beendet) auf 1 gesetzt. Der Geschwindigkeitsparameter (speed) kann verwendet werden, um die Datei schneller oder langsamer wiederzugeben, wobei 1.0 der normalen (aufgenommenen) Geschwindigkeit entspricht. + + + + + + +Klang-IO + + +Synth_PLAY + + + + +Synth_PLAY + + + +Sie werden dieses Modul normalerweise nicht benötigen, wenn Sie nicht selbstständige Anwendungen erstellen. Innerhalb von &artsd; existiert bereits ein Modul Synth_PLAY und ein zweites wird nicht funktionieren. + + +Das Synth_PLAY-Modul gibt ein Audio-Signal auf die Soundkarte aus. Die linken und rechten Kanäle sollten die normalisierten Eingangssignale für die Kanäle enthalten. Wenn sich das Eingangssignal nicht zwischen -1 und 1 befindet, werden zu hohe Amplituden abgeschnitten (clipping). + +Wie bereits gesagt, darf es nur ein Synth_PLAY-Modul geben, da es direkt auf die Soundkarte zugreift. Verwenden Sie Busse, wenn Sie mehr als einen Audiostrom mischen wollen. Verwenden Sie das Modul Synth_AMAN_PLAY, um eine Ausgabe innerhalb von &artsd; zu erzeugen. + +Anmerkung: Das Synth_PLAY-Modul übernimmt das gesamte Timing für die Struktur. Das bedeutet: Wenn Sie kein Synth_PLAY-Modul haben, haben Sie kein Timing und damit auch keine Klangausgabe. Sie benötigen also (genau) ein Synth_PLAY-Objekt. + + + + +Synth_RECORD + + + +Synth_RECORD + + + +Sie werden dieses Modul vermutlich niemals benötigen, es sei denn, Sie schreiben selbstständige Anwendungen. Innerhalb von artsd befindet sich bereits ein Synth_RECORD-Modul und ein zweites funktioniert nicht. + + +Das Synth_RECORD-Modul nimmt ein Signal von Ihrer Soundkarte auf. Die Eingangskanäle left (links) und right (rechts) enthalten die Eingangssignale von der Soundkarte (zwischen -1 und 1). + +Wie bereits gesagt kann nur ein Synth_RECORD-Modul verwendet werden, da es direkt auf die Soundkarte zugreift. Verwenden Sie Busse, wenn Sie einen Audiodatenstrom an mehr als einer Stelle verwenden möchten. Verwenden Sie das Modul Synth_AMAN_RECORD, um einen Eingang innerhalb von artsd zu erzeugen. Damit das funktioniert, muss &artsd; mit Full-Duplex aktiviert gestartet werden. + + + +Synth_AMAN_PLAY + + + +Synth_AMAN_PLAY + + +Das Modul Synth_AMAN_PLAY gibt ein Ausgangssignal aus. Es sollte (nicht notwendigerweise) normalisiert (zwischen -1 und 1) sein. + +Dieses Modul verwendet den Audiomanager, um festzulegen, wo das Signal wiedergegeben wird. Der Audiomanager kann mit Hilfe von &artscontrol; gesteuert werden. Um die Verwendung intuitiver zu gestalten, sollten Sie dem Signal einen Namen geben. Das können Sie, indem Sie den Parameter title (Titel) verwenden. Eine weitere Besonderheit des Audiomanagers ist die Fähigkeit, den letzten Wiedergabekanal eines Signals zu speichern. Dazu muss er die Signale unterscheiden können. Aus diesem Grund sollten Sie autoRestoreID einen eindeutigen Wert geben. + + + +Synth_AMAN_RECORD + + + +Synth_AMAN_RECORD + + +Das Modul Synth_AMAN_RECORD kann Daten einer externen Quelle (z.B. Line In / Mikrofon) innerhalb von artsd aufnehmen. Die Ausgabe ist ein normalisiertes Signal (zwischen -1 und 1). + +Über den Audiomanager kann festgelegt werden, von wo das Signal aufgenommen wird. Der Audiomanager kann mit Hilfe von artscontrol gesteuert werden. Um die Verwendung intuitiver zu gestalten, sollten Sie dem Signal einen Namen geben. Das können Sie, indem Sie den Parameter title (Titel) verwenden. Eine weitere Besonderheit des Audiomanagers ist die Fähigkeit, den letzten Wiedergabekanal eines Signals zu speichern. Dazu muss er die Signale unterscheiden können. Aus diesem Grund sollten Sie autoRestoreID einen eindeutigen Wert geben. + + + +Synth_CAPTURE + + + +Synth_CAPTURE + + +Das Synth_CAPTURE-Modul kann ein Audiosignal in eine wav-Datei auf Ihrer Festplatte schreiben. Die Datei hat immer den Namen /tmp/mcop-usename/capture.wav + + + + + +Tests + + +Synth_NIL + + + +Synth_NIL + + +Macht gar nichts. Das Modul ist sinnvoll zum Testen. + + + + +Synth_DEBUG + + + +Synth_DEBUG + + +Kann zum debuggen verwendet werden. Es gibt den Wert des Signals invalue in gleichbleibenden Abständen (etwa 1 Sekunde) zusammen mit einem von Ihnen festgelegten Kommentar aus. Auf diese Weise können Sie herausfinden, ob gewisse Signale in gewissen Bereichen bleiben oder ob sie überhaupt vorhanden sind. + + + +Synth_MIDI_DEBUG + + + +Synth_MIDI_DEBUG + + +Hiermit können Sie überprüfen, ob Ihre &MIDI;-Ereignisse &arts; überhaupt erreichen. + +Wenn ein MIDI_DEBUG aktiv ist, druckt &artsserver; etwa die folgenden Angaben: + +201 100753.837585 on 0 42 127 + +202 101323.128355 off 0 42 + +Die erste Zeile teilt mit, das 100753ms (das sind 100 Sekunden) nach dem Start von MIDI_DEBUG das &MIDI;-Ereignis "Note an" auf Kanal 0 eingetroffen ist.Dieses Ereignis hatte die Lautstärke (velocity) 127, also den lautest möglichen Wert. Die nächste Zeile zeigt das zugehörige "Note aus"-Ereignis.[ TODO: Das funktioniert momentan noch nicht. Reparieren und durch den &MIDI;-Manager leiten]. + + + +Synth_DATA + + + +Synth_DATA + + +Erzeugt ein Signal mit einer konstanten Nummer. + + + + + +Oszillation & Modulation + + +Synth_FREQUENCY + + + +Synth_FREQUENCY + + +Keiner der Oszillatoren in &arts; benötigt eine Frequenz als Eingabe, sondern nur eine Position innerhalb der Welle. Die Position muss zwischen 0 und 1 liegen. Das wird für ein Standard-Synth_WAVE_SIN-Modul auf den Bereich 0 bis 2*Pi umgerechnet. Um eine bestimmte Frequenz zu erzeugen, benötigen Sie ein Synth_FREQUENCY-Modul. + + + +Synth_FM_SOURCE + + + +Synth_FM_SOURCE + + +Dieses Modul wird für Frequenzmodulation benötigt. Legen Sie die Grundfrequenz an den Frequenzeingang und ein anderes Signal an den Modulationseingang. Setzen Sie den Modulationswert (modlevel) etwa auf 0.3. Die Frequenz wird mit dem Modulationssignal moduliert. Ein interessantes Signal entsteht, wenn man ein rückgekoppeltes Signal verwendet, d.h. eine Kombination des verzögerten Ausgangssignals von Synth_FM_SOURCE (sie müssen es mit einem Oszillator verbinden, da es nur die Rolle von Synth_FREQUENCY übernimmt), und irgendein anderes Signal. + +Arbeitet gut mit Synth_WAVE_SIN-Oszillatoren zusammen. + + + + + +Wellenformen + + +Synth_WAVE_SIN + + + +Synth_WAVE_SIN + + +Sinusgenerator. Legen Sie ein Signal (pos) von Synth_FREQUENCY oder Synth_FM_SOURCE an den Eingang und am Ausgang liegt eine Sinusschwingung an. Das pos-Signal legt die Position in der Schwingung (Phasenverschiebung) im Bereich von 0..1 fest, was intern 0..2*Pi entspricht. + + + + +Synth_WAVE_TRI + + + +Synth_WAVE_TRI + + +Dreieckgenerator. Legen Sie ein Signal (pos) von Synth_FREQUENCY oder Synth_FM_SOURCE an den Eingang und am Ausgang liegt eine Dreieckschwingung an. Das pos-Signal legt die Position in der Schwingung (Phasenverschiebung) im Bereich von 0..1 fest, was intern 0..2*Pi entspricht. Vorsicht: Das Eingangssignal muss im Bereich von 0..1 sein, damit ein gutes Ausgangssignal entsteht. + + + +Synth_NOISE + + + +Synth_NOISE + + +Lärmgenerator. Dieser Generator erzeugt ein zufälliges Signal zwischen -1 und 1. + + + + +Synth_WAVE_SQUARE + + + +Synth_WAVE_SQUARE + + +Rechteckgenerator. Legen Sie ein Signal (pos) von Synth_FREQUENCY oder Synth_FM_SOURCE an den Eingang und am Ausgang liegt eine Rechteckschwingung an. Das pos-Signal legt die Position in der Schwingung (Phasenverschiebung) im Bereich von 0..1 fest, was intern 0..2*Pi entspricht. Vorsicht: Das Eingangssignal muss im Bereich von 0..1 sein, damit ein gutes Ausgangssignal entsteht. + + + +Synth_WAVE_SOFTSAW + + + +Synth_WAVE_SOFTSAW + + +Abgeschwächte Sägezahnoszillation. Dieses Signal ist ähnlich zum Signal des Dreieckgenerators. Legen Sie ein Signal (pos) von Synth_FREQUENCY oder Synth_FM_SOURCE an den Eingang und am Ausgang liegt eine weiche Sägezahnschwingung an. Das pos-Signal legt die Position in der Schwingung (Phasenverschiebung) im Bereich von 0..1 fest, was intern 0..2*Pi entspricht. Vorsicht: Das Eingangssignal muss im Bereich von 0..1 sein, damit ein gutes Ausgangssignal entsteht. + + + +Synth_WAVE_PULSE + + + +Synth_WAVE_PULSE + + +Impulsgenerator - dieses Modul ist grundsätzlich ähnlich zum Rechteckgenerator (Synth_WAVE_RECT), bietet aber zusätzlich eine Möglichkeit, das Verhältnis von Maximumzeit zu Minimumzeit mit dem Eingang dutycycle einzustellen. Legen Sie ein Signal (pos) von Synth_FREQUENCY oder Synth_FM_SOURCE an den Eingang und am Ausgang liegt eine Impulsschwingung an. Das pos-Signal legt die Position in der Schwingung (Phasenverschiebung) im Bereich von 0..1 fest, was intern 0..2*Pi entspricht. Vorsicht: Das Eingangssignal muss im Bereich von 0..1 sein, damit ein gutes Ausgangssignal entsteht. + + + +Verschiedenes + + +Synth_COMPRESSOR + + + + + +Dieses Modul reduziert den Dynamikbereich des Signals. Ein Kompressor ist nützlich, um die großen Lautstärkeschwankungen einer über ein Mikrophon redenden Person zu verringern. + +Sobald das Eingangssignal einen bestimmten Pegel (den Grenzpegel) überschreitet, wird der Pegel reduziert. Jeder Pegelwert oberhalb des Grenzpegels wird mit einem Faktor, eine Zahl zwischen 0 und 1, multipliziert. Zum Abschluß wird das gesamte Signal mit dem Ausgangsfaktor multipliziert. + +Die Argumente attack und release verzögern den Start und das Ende der Kompression. Das kann verwendet werden, um z.B. den lauten Beginn einer Basedrum zu hören. Das Argument wird in Millisekunden angegeben und ein Wert von 0 ms ist möglich, kann aber zu einem leichten Nebengeräusch führen. + + + + + + +Visuelle Modul-Referenz + +TODO wenn visuelle Module stabiler sind. + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/porting.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/porting.docbook new file mode 100644 index 00000000000..d6579f178bf --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/porting.docbook @@ -0,0 +1,50 @@ + + + +Anwendungen auf &arts; portieren + + +&artsdsp; verwenden + +Die Anwendung &artsdsp;, die weiter oben beschrieben wird, erlaubt den meisten Standardanwendungen, die direkt auf die Audio-Geräte zugreifen, unter &arts; problemlos zu funktionieren. Die meisten Anwendungen, die den Enlightenment Sound Daemon (esd) verwenden, funktionieren ebenfalls, indem esd unter &artsdsp; gestartet wird. + +Damit existiert eine gute Übergangslösung, um Anwendungen auf &kde; zu portieren. Es erlaubt natürlich keiner Anwendung, direkt von &arts; zu profitieren und alle Fähigkeiten von &arts;, wie z.B. die Verwendung von Modulen und Multimediaströmen, zu verwenden. Wenn die Anwendung mehr können soll, als nur einfache Audiodateien abzuspielen, sollte man Unterstützung für &arts; hinzufügen. + +Die Anwendung kann dann viele Aufgaben an &arts; übertragen -- sie kann die in &arts; enthaltenen Funktionen verwenden, um Dinge wie unterschiedliche Codecs, Medienformate oder die Kontrolle der Audiogeräte. + + + + +&arts;-Unterstützung hinzufügen + +Wenn Sie &arts; verwenden, können Sie zwischen verschiedenen APIs auswählen. Die Entscheidung wird unter anderem davon abhängen, welche Art von Medienstrom (Klang, &MIDI;, &CD;-Audio &etc;) Sie verwenden wollen, welche API-Fähigkeiten Sie benötigen und ob Sie in C++ programmieren. In den meisten Fällen sollte die Entscheidung abhängig von den benötigten Fähigkeiten klar sein + +Anwendungen, die auf anderen Architekturen als &kde; funktionieren sollen, können nicht davon ausgehen, das &arts; immer vorhanden ist. Durch eine Plugin-Architektur können Sie geschickt verschiedene Multimediaumgebungen unterstützen. Wenn Sie das Plugin-API außerdem veröffentlichen und gut dokumentieren (besonders für nicht als Quelltext verfügbare Anwendungen), ermöglichen Sie auch anderen Entwicklern, ein &arts;-Plugin für Ihre Anwendung zu schreiben. + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/references.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/references.docbook new file mode 100644 index 00000000000..41a070d556a --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/references.docbook @@ -0,0 +1,61 @@ + + + +Referenz + + + + +http://multimedia.kde.org + +Das ist die Hauptseite für Informationen zum Thema &kde;-Multimedia. + + + + +http://www.arts-project.org + +Das ist die Internetseite des &arts;-Projektes. + + + + +&kde; 2.0 Development (&kde; 2.0 Entwicklung) + +Kapitel 14 dieses veröffentlichten Buches beschäftigt sich mit Multimedia allgemein und mit &arts;. Es ist gedruckt oder im Internet mit Kommentaren verfügbar unter http://www.andamooka.org. + + + + + +http://sound.condorow.net + +Diese Internetseite hat eine umfangreiche List zu Klängen und &MIDI;-Anwendungen unter &Linux;. + + + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/artsbuilder/tools.docbook b/tde-i18n-de/docs/tdemultimedia/artsbuilder/tools.docbook new file mode 100644 index 00000000000..06b47a413dd --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/artsbuilder/tools.docbook @@ -0,0 +1,1007 @@ + + + +&artscontrol; + +Mit &arts; werden einige Hilfs- und Steuerprogramme ausgeliefert. Sie müssen sich mit diesen Programmen vertraut machen, wenn Sie &arts; effektiv nutzen wollen. Dieser Abschnitt beschreibt jedes dieser Programme und ihre Aufrufparameter. + + +&kcontrol; + +Wenn Sie &arts; unter &kde; einsetzen, stellt &kcc; einige Einstellmöglichkeiten in dem Abschnitt Klänge bereit. Einige dieser Einstellungen werden von &arts; verwendet. Weiterhin können Sie Klänge mit verschiedenen Systemnachrichten des Fenstermanagers oder von &kde; im Abschnitt ErscheinungsbildSystemnachrichten verknüpfen. Das Handbuch zu &kcontrol; gibt genauere Informationen über diese Einstellungen. + + + + +&artsd; + +Der Zugriff auf die Klangressourcen wird durch &artsd;, den &arts;-Dämon kontrolliert. Das ermöglicht es verschiedenen Anwendungen, gleichzeitig Anfragen an den Soundserver zu senden, der sie dann mixt und zusammen wiedergibt. Ohne einen zentralen Soundserver kann immer nur eine Anwendung zur Zeit die Klangressourcen verwenden. + +Zur Verwendung von &arts; darf nur eine Instanz von &artsd; aktiv sein. Sie wird normalerweise beim Start von &kde; gestartet, wenn der zugehörige Eintrag in &kcontrol; im Abschnitt Soundserver aktiviert ist. + +Das Programm akzeptiert die folgenden Aufrufparameter: + + + +artsd + + + + +Setzt die zu verwendende Sampling-Rate. + + + + + + +Verwendungshinweise anzeigen. + + + + + + +Netzwerk-Transparenz aktivieren. + + + + + + + +Legt den zu verwendenden TCP-Port fest (setzt voraus). + + + + + + +Öffentlich, keine Authentifizierung (unsicher). + + + + + + +Volle Duplex-Fähigkeit aktivieren. + + + + + +Audiogerät festlegen (normalerweise /dev/dsp). + + + + + + +Anzahl der Fragmente festlegen. + + + + + + +Legt die Fragmentgröße in Byte fest. + + + + + + +Legt die Zeit bis zum automatischen Aussetzen in Sekunden fest. Der Wert Null deaktiviert das automatische Aussetzen. + + + + + + +Gibt den Namen der Anwendung an, die für die Ausgabe von Fehler- , Warn- und Informationsmeldungen verwendet wird. Wenn Sie KDE verwenden, können Sie das Hilfsprogramm artsmessage verwenden. + + + + + + +Erhöht die Größe der Netzwerkpuffer auf einen Wert, der für ein 10 mbps LAN erforderlich ist. Diese Einstellung ist äquivalent zur Option -w 5 (weiter unten). + + + + + +Wenn Sie &artsd; über eine Netzwerkverbindung zu einem anderen Rechner betreiben, sollten Sie die Puffer vergrößern, um Aussetzer zu vermeiden. &arts; stellt Anwendungen eine Standardpuffergröße bereit. Ohne diese Option basiert die Größe auf Abschnittgröße * Abschnittanzahl. Durch diese Option können Sie diese Größe vom Standardwert um einen Faktor von n erhöhen. + + + + + + +Legt die Informationsebene fest - 3 (keine), 2 (Warnungen), 2 (Informationen), 0 (Debug). + + + + + + +Versionsnummer anzeigen. + + + + + +In den meisten Fällen reicht das Kommando &artsd; zum Start. + + + +&artswrapper; + +Für ein gutes Echtzeit-Antwortverhalten, sollte &artsd; normalerweise als Echtzeit-Prozess (auf Systemen, die solche Prozesse unterstützen) gestartet werden. Das erfordert root-Rechte, daher kann &artsd; aus Sicherheitsgründen durch ein kleines Startprogramm namens artswrapper gestartet werden, das Echtzeitpriorität setzt (es arbeitet als root) und dann artsd als Nicht-root startet. + +Falls man artswrapper als SUID root ausführt, wird die Qualität der Wiedergabe aufgrund weniger Unterbrechungen der Musik erhöht. Allerdings erhöht sich dadurch auch das Risiko einer Beschädigung des Rechners durch einen Fehler oder einen böswilligen Benutzer. Außerdem kann die Wiedergabe einer hochwertigen Musikaufnahme in einem Mehr-Benutzersystem negative Auswirkungen auf die Geschwindigkeit anderer Prozesse und Benutzer haben, die produktiv arbeiten wollen. + + + + +&artsshell; + +Der Befehl &artsshell; ist ein Hilfsprogramm, das verschiedene Funktionen im Zusammenhang mit dem Soundserver ausführt. Das Programm wird in der Zukunft vermutlich mit weiteren Funktionen ausgestattet (einen Überblick geben die Kommentare im Quelltext). + +Die Befehlszeile zum Start hat das folgende Format: + + + +artsshell suspendstatus terminate autosuspend secs networkbuffers n volume [volume] stereoeffect options + +artsshell [options] Befehl [Befehlsoptionen] + +Folgende Optionen werden unterstützt: + + + + + + +Ausgabe unterdrücken. + + + + + + +Verwendungshinweise anzeigen. + + + + + +Folgende Befehle werden unterstützt: + + + + + + +Der Soundserver schaltet sich aus. + + + + + + +Statusinformationen des Soundservers anzeigen. + + + + + + +Den Soundserver beenden. Das kann Programme, die den Soundserver verwenden, zum Absturz bringen. + + + + + Sekunden + +Setzt die Zeit bis zum Aussetzen auf die angegebene Anzahl von Sekunden. Der Soundserver setzt automatisch aus, wenn er die angegebene Zeit unbeschäftigt ist. Der Wert Null deaktiviert das automatische Aussetzen. + + + + + n + +Setzt die Größe der Netzwerkpuffer auf das n-fache der Standardgröße. + + + + + [Lautstärke] + +Legt die Lautstärkeskalierung für die Soundserver Audioausgabe fest. Das Argument Lautstärke ist eine Kommazahl. Bei Aufruf ohne Argument wird der aktuelle Wert angezeigt. + + + + + + +Liste aller verfügbaren Stereoeffektmodule + + + + + Name + +Fügt einen Stereoeffekt in einen Stereoeffektstapel ein. Gibt einen Namen zurück, der für ein späteres Löschen erforderlich ist. Der Effekt kann oben oder unten (Standardeinstellung) hinzugefügt werden. + + + + + Id + +Löscht den Stereoeffekt mit dem Namen Id vom Effektstapel. + + + + + + + + +<application +>artsplay</application +> + +Der Befehl artsplay ist ein einfaches Hilfsprogramm zum Abspielen einer Klangdatei. Der Befehl hat ein einziges Argument, nämlich den Namen der an den Soundserver zu schickenden Datei. Die Klangdatei kann zu jedem der üblichen Typen gehören, also wav oder au. Mit diesem Befehl kann man testen, ob der Soundserver funktioniert. Indem man zwei Befehl parallel oder in schneller Folge gibt, kann man demonstrieren, wie der Soundserver mehrere Ausgaben mixen kann. + + + + +<application +>artsdsp</application +> + +Der Soundserver unterstützt nur Anwendungen, die &arts;-aktiviert sind. Viele herkömmliche Anwendungen wollen auf die Klanggeräte direkt zugreifen. Das Programm &artsdsp; ist eine Übergangslösung, die es vielen dieser Anwendungen erlaubt, ohne Änderung zu funktionieren. + +Wenn ein Programm unter &artsdsp; ausgeführt wird, werden alle Zugriffe auf das Audiogerät /dev/dsp abgefangen und in &arts; API-Aufrufe umgewandelt. Diese Emulation ist nicht perfekt, aber die meisten Anwendungen funktionieren auf diese Weise mit einer kleinen Einbuße an Geschwindigkeit und Antwortverhalten. + +Der Befehl &artsdsp; hat das folgende Format: + + +artsdsp [Optionen] Anwendung Parameter + +Folgende Optionen werden erkannt: + + + + +, + +Zeigt eine kurze Hilfe. + + + + = Name + +Verwendet Name um den Spieler gegenüber artsd.zu identifizieren. + + + + + + + +Speicher-Mapping emulieren (&zb; für Quake). + + + + + + +Zeigt Parameter an. + + + + + +Ein typischer Aufruf ist: + + +artsdsp realplay Lied.mp3 + + +Einige Anwendungen funktionieren mit der Einstellung besser. Es werden nicht alle Funktionen des Klanggerätes voll emuliert, aber die meisten Anwendungen sollten funktionieren. Falls eine nicht funktionieren sollte, senden Sie eine detailierte Benachrichtigung ein. So können die Entwickler möglicherweise eine Lösung finden. Bedenken Sie, dass es sich um eine Übergangslösung handelt. Die beste Lösung ist sicherlich, Unterstützung für &arts; zu der Anwendung hinzuzufügen. Wenn Ihre Lieblingsanwendung &arts; nicht unterstützt, bitten Sie die Entwickler diese Unterstützung nachzurüsten. + + + + +<application +>artscat</application +> + +Dieses kleine Hilfsprogramm kann Audion-Rohdaten zum Soundserver schicken. Sie müssen das Datenformat (Samplingrate, Samplegröße und Anzahl der Kanäle) angeben. Es ist ein Programm, das Sie vermutlich nicht oft benötigen, das aber für Testzwecke recht praktisch ist. Die Aufrufsyntax ist: + + + +artscat [ Optionen ] [ Dateiname ] + +Wenn Sie keinen Dateinamen angeben, wird von der Standardeingabe gelesen. Folgende Optionen werden unterstützt: + + + + --verbose + +Setzt die zu verwendende Sampling-Rate. + + + + + Bits + +Setzt die Sample-Größe fest (8 oder 16). + + + + + Kanäle + +Setzt die Anzahl der Kanäle fest (1 oder 2). + + + + + + +Nur Verwendungshinweise anzeigen. + + + + + + + +&artscontrol; + +Dies ist ein graphisches Programm für die Durchführung einer Anzahl Aufgaben im Zusammenhang mit dem Soundserver. Das Hauptfenster hat zwei Lautstärkeanzeigen und einen Schieberegler für die Gesamtausgabelautstärke. Aus dem Menü Ansicht können Sie weitere Funktionen auswählen: + + + + +FFT-Anzeige + +Öffnet ein Fenster mit einer Echtzeit-Spektrumanalysator-Anzeige. + + + + +Audio-Manager + +Zeigt die aktiven Klangquellen an und erlaubt die Zuordnung zu einem der verfügbaren Busse. + + + + +aRts-Statusanzeige + +Zeigt an, ob der Soundserver läuft und Echtzeitpriorität besitzt. Außerdem wird angezeigt, wann der Soundserver automatisch aussetzt. Durch einen Knopf kann er auch sofort ausgeschaltet werden. + + + + +Midi-Manager + +Zeigt aktive &MIDI;-Ein- und Ausgabegeräte an und erlaubt die Herstellung von Verknüpfungen [TODO: Funktioniert vermutlich noch nicht! Mehr Details benötigt]. + + + + +FreeVerb + +Verbindet einen FreeVerb-Echoeffekt mit dem Stapel von &arts; Ausgabeeffekten und erlaubt eine graphische Kontrolle der Effektparameter. + + + + +Lautstärkeanzeige im LED-Stil + +Ändert die Lautstärkeanzeige des Hauptfensters auf eine farbige LED-Anzeige anstatt Fortschrittsbalken. + + + + + + + + +<application +>artsc-config</application +> + +Dieses Hilfsprogramm unterstützt Entwickler bei der Verwendung des &arts; C-API. Es gibt die geeignete Compiler- und Linker-Optionen aus, die zur Kompilierung und zum Linken von Programmen mit &arts; benötigt werden. Es ist gedacht zur Verwendung innerhalb von make-Dateien zur Unterstützung von Portabilität. Das Programm kennt drei Optionen: + + + + + +Zeigt die Kompiler-Flags an, die zur Kompilierung mit dem &arts; C-API benötigt werden. + + + + + + +Zeigt die Linker-Flags an, die zum Linken mit dem &arts; C-API benötigt werden. + + + +--version + +Zeigt die Versionsnummer des artsc-config Befehles an. + + + + +Eine typische Ausgabe dieses Befehls sieht folgendermaßen aus: + +% artsc-config +-I/usr/local/kde2/include/artsc +% artsc-config +-L/usr/local/kde2/lib -ldl -lartsc -DPIC -fPIC -lpthread +% artsc-config +0.9.5 + + +Sie können dieses Programm in einer Make-Datei z.B. in einer solchen Regel verwenden: + +artsc: artsc.c + gcc `artsc-config --cflags` -o artsc artsc.c `artsc-config --libs` + + + + + +&mcopidl; + +Der Befehl &mcopidl; ist der IDL-Datei Kompiler für &MCOP;, das Multimedia Communication Protokol, das von &arts; verwendet wird. Interfaces sind in &arts; in &IDL;, einer sprachunabhängigen Interface Definition Language, geschrieben. Das Programm &mcopidl; akzeptiert ein &IDL;-Datei als Eingabe und generiert C++-Header und Quelldateien für eine Klasse, die das Interface implementiert. Der Befehl hat die folgende Syntax: + + + +mcopidl [ Optionen ] Dateiname + +Folgende Optionen sind möglich: + + + Verzeichnis + +Suche in Verzeichnis nach Include-Dateien. + + + + + Name + +Schließe die Struktur, das Interface oder den Aufzählungstyp Name von der Erzeugung aus. + + + + + + +Erzeuge zusätzlich die Dateien .mcoptype/ .mcopclass, die Informationen für die &IDL;-Datei enthalten. + + + + +Weitere Informationen über &MCOP; und &IDL; finden Sie im Abschnitt Interfaces und &IDL;. + + + + diff --git a/tde-i18n-de/docs/tdemultimedia/juk/Makefile.am b/tde-i18n-de/docs/tdemultimedia/juk/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/juk/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/juk/Makefile.in b/tde-i18n-de/docs/tdemultimedia/juk/Makefile.in new file mode 100644 index 00000000000..a059387f118 --- /dev/null +++ b/tde-i18n-de/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 = de +#>- 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=juk-adv-search.png search-playlist.png index.docbook juk-main.png juk-file-renamer.png juk-tag-guesser.png index.cache.bz2 history-playlist.png normal-playlist.png Makefile.in toolbar.png Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) toolbar.png juk-file-renamer.png normal-playlist.png juk-main.png juk-tag-guesser.png index.docbook history-playlist.png juk-adv-search.png search-playlist.png + @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 toolbar.png juk-file-renamer.png normal-playlist.png juk-main.png juk-tag-guesser.png index.docbook history-playlist.png juk-adv-search.png search-playlist.png ; 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 toolbar.png juk-file-renamer.png normal-playlist.png juk-main.png juk-tag-guesser.png index.docbook history-playlist.png juk-adv-search.png search-playlist.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in toolbar.png juk-file-renamer.png normal-playlist.png juk-main.png juk-tag-guesser.png index.docbook history-playlist.png juk-adv-search.png search-playlist.png ; 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-de/docs/tdemultimedia/juk/history-playlist.png b/tde-i18n-de/docs/tdemultimedia/juk/history-playlist.png new file mode 100644 index 00000000000..9d72414a765 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/history-playlist.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/index.cache.bz2 b/tde-i18n-de/docs/tdemultimedia/juk/index.cache.bz2 new file mode 100644 index 00000000000..f26f1cf5263 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/index.cache.bz2 differ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/index.docbook b/tde-i18n-de/docs/tdemultimedia/juk/index.docbook new file mode 100644 index 00000000000..3e99b0aa415 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/juk/index.docbook @@ -0,0 +1,2425 @@ + + + + JuK"> + + +]> + + + + +Das Handbuch zu &juk; + + +&Lauri.Watts; &Lauri.Watts.mail; +Michael Pyne
michael.pyne@kdemail.net
+
+
+ +Scott Wheeler
&Scott.Wheeler.mail;
+
+
+ +PatrickTrettenbrein
patrick.trettenbrein@kdemail.net
Übersetzer
ArnoldKrille
arnold@arnoldarts.de
Korrekturleser
+ +
+ + +2001 +2002 +2004 +&Scott.Wheeler; + +&FDLNotice; + +2004-05-06 +2.1 + + +&juk; ist Jukebox, "Metadaten-Editor" und Manager der Musiksammlung zugleich. + + + +KDE +tdemultimedia +audio +Metadaten-Editor +player +jukebox +JuK + + +
+ + +Einführung + +&juk; ist eine Jukebox. Und wie mit vielen anderen Jukebox-Anwendungen auch, können Sie mit &juk; die Metadaten Ihrer Musikdatei bearbeiten und Ihre Sammlung und Wiedergabelisten verwalten. + + + +&juk; verwenden + + + +Ein Bildschirmphoto von &juk; + + + + + + Ein Bildschirmphoto von &juk; in Aktion. + + + + + +&juk; enthält eine Liste aller Dateien von denen es weiß, dass sie sich auf dem Rechner befinden. Diese wird Kollektionsliste genannt. Die Kollektionsliste ist speziell für &juk; und wird nicht von anderen Programmen verwendet. + +Unabhängig von der Kollektionsliste sind Wiedergabelisten. Es können so viele Wiedergabelisten verwaltet werden, wie erwünscht. Erstellte Wiedergabelisten können auch mit anderen Abspielprogrammen (wie zum Beispiel &noatun; oder XMMS) abgespielt werden, und dort erstellte Wiedergabelisten können in &juk; verwendet werden. + +Einzelne Dateien können zur Kollektionsliste über den Menüpunkt DateiÖffnen ... und der Auswahl der Dateien mittels des Standard-&kde;-Dateidialogs hinzugefügt werden. Ganze Ordner können über den Menüpunkt DateiOrdner öffnen ... hinzugefügt werden. Ordner, die Sie auf diese Weise hinzugefügt haben, werden bei jedem Start von &juk; neu eingelesen. Sie können alle Ordner, die Sie bereits für ihre Kollektionsliste eingelesen haben, mit einem Rechtsklick auf das Symbol der Kollektionsliste und Auswahl von Erneut laden nochmals einlesen, also aktualisieren. + +Das Hinzufügen eines Stücks zu einer Wiedergabeliste wird die Datei des Stücks automatisch zur Kollektionsliste hinzufügen, aber das Hinzufügen einer Datei zur Kollektionsliste wird das Stück nicht automatisch zu einer Wiedergabeliste hinzufügen. + +Sie können ganz einfach eine Wiedergabeliste aus ihrer vollständigen Kollektionsliste erstellen, indem sie einen Rechtsklick auf das Symbol Kollektionsliste machen und dort den Menüpunkt Duplizieren auswählen. Die erstellte Wiedergabeliste ist eine normale Wiedergabeliste, daher wird das Verändern dieser Wiedergabeliste nicht die Kollektionsliste verändern. + +Sie können einzelne Wiedergabelisten, die Sie nicht mit &juk; erstellt haben, mittels DateiÖffnen ... hinzufügen. Alle Wiedergabelisten in einem Ordner, den Sie mittels dem Menüpunkt DateiOrdner öffnen ... zur Kollektionsliste hinzugefügt haben, wird automatisch hinzugefügt. + +Sie können eine neue Wiedergabeliste über den Menüpunkt DateiNeu oder mit einem Klick auf das Symbol Neu in der Werkzeugsleiste hinzufügen. Sie werden nach einem Namen für die neue Wiedergabeliste gefragt. Nach der Eingabe erscheint ein Symbol für die neue Wiedergabeliste in der Kontrollleiste. Jetzt können Sie Dateien mittels "drag and drop" von der Kollektionsliste zur Wiedergabeliste, oder von einer bestehenden oder zu Ihrer soeben erstellten Wiedergabeliste hinzufügen. Um die Änderungen in der Wiedergabeliste zu speichern klicken Sie auf das Symbol Speichern oder verwenden Sie den Menüpunkt DateiSpeichern. + + +Die Stückliste + +Wenn Sie sich die Kollektionsliste ansehen, enthält das Hauptfenster alleDateien, die &juk; eingelesen hat. Wenn Sie sich eine Wiedergabeliste ansehen, werden nur die Songs angezeigt, die sich in dieser befinden. In beiden Fällen ist das Aussehen und das Verhalten der Liste identisch. + +Jedes Stück nimmt eine Zeile im Anzeigefenster ein. Für jedes Metadaten-Feld, das &juk; verarbeitet, wird eine Spalte angezeigt. Diese Felder stimmen mit den Feldern überein, die man im Metadaten-Editor editieren kann. + +Sie können die Liste jederzeit mit einem Linksklick auf den Spaltentitel ordnen. Dies wird die Einträge in aufsteigender Reihenfolge, basierend auf dem Inhalt der Spalten sortieren. Wenn Sie erneut einen Linksklick auf den selben Spaltentitel machen, werden die Dateien in absteigender Reihenfolge geordnet. + +Die Spalten sind anfänglich groß genug um den längsten Eintrag in der jeweiligen Spalte anzuzeigen. Sie können die Größe der Spalten ändern indem Sie ihren Mauszeiger auf den Teiler zwischen zwei Spalten bewegen. Dann können Sie nach einem Linksklick auf den Teiler bei gedrückter linker Maustaste die Größe der Spalte ändern. + +Sie können die Spaltentitel ordnen indem Sie einen Linksklick auf den gewünschten Titel machen und ihn entweder nach rechts oder links in die gewünschte Position ziehen. Sie können ihn jedoch nicht über den Rand des Fensters hinaus bewegen, sodass Sie etwas nach rechts oder links scrollen und den Titel erneut bewegen müssen, bis er sich in der gewünschten Position befindet. + +Sie können Spalten verstecken oder versteckte Spalten anzeigen lassen, indem Sie einen Rechtsklick auf einen Spaltentitel machen und dort die anzuzeigende oder zu versteckende Spalte an oder abwählen. + +Ein Doppelklick mit der linken Maustaste auf ein Stück wird dieses mit dem integrierten Abspielprogramm wiedergeben. Wenn bereits ein anders Stück gespielt wird, wird dessen Wiedergabe gestoppt und die Wiedergabe des neu ausgewählten Stückes beginnt. + +Ein Rechtsklick auf ein Stück bringt ein Menü zum Vorschein: + + + +Als Nächstes abspielen + +Dies wird das Stück abspielen nachdem das zurzeit spielende Stück vorüber ist. Wenn gerade kein Stück spielt wird die Datei abgespielt wenn Sie das nächste mal den Wiedergabe Knopf drücken. Falls Sie die Funktion "Als Nächstes abspielen" bereits für ein anderes Stück festgelegt hatten, wird anstatt des bereits festgelegten Stücks das neu ausgewählte abgespielt. + + + + +Ausschneiden +Kopieren +Einfügen + +... + + + + +Löschen + +Wenn Sie ein Stück in der Kollektionsliste markiert haben und die Funktion Löschen auswählen, wird das Stück aus der Kollektionsliste und allen in &juk; geladenen Wiedergabelisten gelöscht. Sie sollten beachten, dass, wenn sich die Datei, die Sie gelöscht haben, in einem Ordner befindet, den &juk; beim Starten einliest, das Stück automatisch wieder zur Kollektionsliste hinzugefügt wird, wenn Sie &juk; das nächste Mal starten. Allerdings wird es nicht automatisch wieder zu einer Wiedergabeliste hinzugefügt. +Wenn Sie eine Wiedergabeliste anzeigen lassen und dort ein Stück markiert haben, wird die Option Löschen das Stück nur aus der Wiedergabeliste entfernen. + + + + + +Bearbeiten + +Erlaubt Ihnen das aktuell ausgewählte Stück in der Spalte, in der Sie es angeklickt haben, zu bearbeiten. Zum Beispiel: Wenn Sie den Metadaten-Editor gerade nicht angezeigt haben und Sie schnell eine Wiedergabeliste erstellen wollen, Sie aber einen Rechtschreibfehler in einem Künstlernamen bemerkt haben, können Sie diesen direkt über diesen Menüpunkt bearbeiten. +Änderungen die auf diese Weise durchgeführt wurden werden immer gespeichert, sobald Sie irgendwo anders hinklicken und damit das Bearbeiten beenden. +Dieser Menüpunkt wird allerdings nicht verfügbar sein wenn &juk; bemerkt, dass Sie für das ausgewählte Stück nur Leserechte besitzen. + + + + +Aktualisieren + +Diese Option wird die Metadaten des ausgewählten Stücks erneut laden, vorausgesetzt, die Metadaten wurden geändert, während &juk; gestartet war. + + + + +Von der Festplatte löschen + +Dies wird das Stück aus der Kollektionsliste und allen Wiedergabelisten löschen, weiter wird die zum Stück gehörige Datei von der Festplatte gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden, deshalb müssen Sie ihn bestätigen bevor er ausgeführt wird. Benutzen Sie dies mit Vorsicht. + + + + +Metadaten raten + +Dies wird &juk; dazu veranlassen zu versuchen die Metadaten wie Künstler und Titel eines Stücks zu erraten. &juk; verwendet verschiedene Methoden: + + Vom Dateinamen + &juk; wird versuchen die Metadaten des Stücks basierend auf dem Dateinamen des Stücks zu ergänzen. Zum Beispiel werden einem Stück mit dem Dateinamen Roxette - You've Got the Look.mp3 der Eintrag "Roxette" als Künstler und "You've Got the Look" als Titel in die Metadaten eingetragen. Sie können die Vorgehensweise, wie &juk; die Metadaten errät, über den Menüpunkt EinstellungenMetadaten raten ... anpassen. &juk; ersetzt aus Dateinamen nur Metadaten die es selbst hinzugefügt hat. Wenn Sie Informationen zum Beispiel per Hand eingegeben haben werden diese von &juk; nicht verändert. + + + + Aus dem Internet + &juk; wird versuchen die Metadaten des Stückes zu erraten indem es das MusicBrainz-Programm verwendet. Um diese Option zu verwenden müssen Sie MusicBrainz auf Ihrem System installiert haben. + + + + + + + + + +Datei umbenennen + +Dies wird die ausgewählten Stücke gemäß dem angegebenen Muster umbenennen. Um diese Option benutzen zu können, müssen Sie zuerst im Menüpunkt EinstellungenDateien umbenennen ... einstellen, nach welchem Muster die Dateien umbenannt werden sollen. Der endgültige Name einer Datei basiert auf ihren Metadaten. Zum Beispiel kann das Ogg-Vorbis-Stück The Theme (Metroid) von Stemage in /usr/share/music/Stemage/The Theme (Metroid).ogg umbenannt werden. + + + + +Wiedergabeliste aus den ausgewählten Stücken erstellen + +Dies erlaubt Ihnen schnell und einfach eine Wiedergabeliste aus den Stücken Ihrer Kollektionsliste zu erstellen. Diese Funktion wird Sie zuerst nach einem Namen für die neue Wiedergabeliste fragen, danach werden alle aktuell ausgewählten Stücke zur neu erstellten Wiedergabeliste hinzugefügt. + + + + +Ausgewählte Stücke zu K3b hinzufügen + +Dies erlaubt Ihnen schnell ein K3b-CD-Projekt aus Ihren aktuell ausgewählten Stücken zu erstellen. &juk; wird Sie fragen, ob Sie eine Audio-&CD; oder eine Daten-&CD; erstellen wollen, wenn nicht bereits ein K3b-Projekt geöffnet ist. + +Wenn K3b nicht bereits gestartet ist, wird &juk; es automatisch für Sie starten. Danach wird &juk; automatisch alle ausgewählten Stücke zum aktuellen K3b-Projekt hinzufügen. Sie können nun Ihr K3b-Projekt entweder speichern um es später zu brennen oder sofort eine CD aus dem Projekt erstellen. + + + + + + + + + +&juk;-Wiedergabelisten +Eine Wiedergabeliste ist einfach eine Sammlung von Stücken zu einem Thema. Zum Beispiel könnten Sie eine Wiedergabeliste haben von Stücken die Sie hören wenn Sie programmieren, wenn Sie versuchen zu schlafen oder wenn Sie lachen wollen. &juk; unterstützt verschiedene Formen von Wiedergabelisten. + + + + +Normale Wiedergabelisten + Die häufigste Wiedergabeliste. Sie ist aus Dateien zusammengestellt, wie die Kollektionsliste. + + + +Verlauf + Wenn Sie diese Wiedergabeliste aktivieren (Menüpunkt AnsichtVerlauf anzeigen), wird diese Wiedergabeliste jedes Stück, das &juk; abspielt, aufzeichnen. Die Wiedergabeliste verfügt über eine zusätzliche Spalte Zeit, welche exakt aufzeichnet, zu welcher Zeit und zu welchem Datum das Stück abgespielt wurde. Die Wiedergabeliste verfolgt den Verlauf aber erst nach Aktivierung. + + + +Wiedergabeliste durchsuchen + Diese Funktion basiert auf einer Suche. Eine Wiedergabeliste dieser Form können Sie über den Menüpunkt DateiNeuWiedergabeliste durchsuchen oder durch einen Klick auf den Knopf Erweiterte Suche neben der Suchleiste erstellen. +Nach dem Erstellen einer solchen Wiedergabeliste werden automatisch alle Stücke aus Ihrer Kollektionsliste zu denen von Ihnen angegebenen Kriterien passend zur Wiedergabeliste hinzugefügt. Die Wiedergabeliste wird sich automatisch aktualisieren wenn sich Stücke Ihrer Kollektionsliste ändern. + + + + +Wiedergabelisten werden im Wiedergabelisten Bereich, dem senkrechten Bereich links im &juk; Programmfenster, aufgelistet. In diesem Fenster erscheint ein Symbol für jede Wiedergabeliste die Sie zu &juk; hinzugefügt haben. Für dieses Fenster gibt es verschiedene Ansichtsmöglichkeiten, welche Sie über den Menüpunkt AnsichtAnzeigemodi auswählen können. + + +Standardanzeigemodus + +Dies ist der Standardansichtsmodus. In dieser Ansicht werden alle Wiedergabelisten als große Symbole untereinander dargestellt. + + + + +Kompakter Anzeigemodus + +Diese Anzeigemodus ist ähnlich dem normalen Anzeigemodus, mit dem Unterschied, dass die Wiedergabelisten durch horizontale Streifen mit kleinen Symbolen dargestellt werden. + + + + +Baum-Anzeigemodus + +Dieser Anzeigemodus ist der komplexeste von allen. Er ist ähnlich dem kompakten Anzeigemodus, außer das die Kollektionsliste jetzt die "Wurzel" des Baumes darstellt. Die Kollektionsliste hat in dieser Ansicht drei "Äste", sprich Unterpunkte: Künstler, Album und Genre. Jeder dieser Unterpunkte steht für die Einträge in der dazugehörigen Kategorie. Falls Sie zum Beispiel vier verschiedene Künstler in Ihrer Kollektionsliste haben, haben Sie im Unterpunkt Künstler noch einmal vier Unterpunkte mit den jeweiligen Künstlernamen. +Eines der raffinierten Extras des Baum-Ansichtsmodus ist "drag and drop retagging". Wählen Sie einige Dateien aus der Stückliste aus und ziehen Sie diese auf einen der Künstlernamen, Album oder Genre und die Metadaten der Stücke wird automatisch geändert. Das heißt wenn Sie einige Stücke auf ein Genre "Rock" ziehen, wird bei jedem der Stücke das Genre auf "Rock" geändert. + + + + + + + + + + +Der Metadaten-Editor von &juk; + +Für viele Dateitypen ist es vorteilhaft, den Dateinamen einer Datei zu verwenden um deren Inhalt anzugeben: Report für die Anschlagtafel - Juni 2004.sxw. Dieser Dateiname enthält alle Informationen, die Sie wahrscheinlich benötigen um die Datei wieder zu finden. Wenn Sie aber versuchen, alle nützlichen Informationen über ein Stück in seinem Dateinamen anzugeben, führt dies zu Dateinamen wie: Type O Negative - The Glorious Liberation Of The Peoples Technocratic Republic Of Vinnland By The Combined Forces Of The United Territories Of Europa.ogg oder Various Artists_15_The Smithsonian Collection of Classic Jazz Volume II_Jimmie Lunceford & His Orchestra - Organ Grinder's Swing.mp3. Solche Dateinamen sind nicht wirklich schön anzuschauen und auch nicht wirklich praktisch. Wenn Sie jetzt zu solch einer Datei auch noch Informationen wie Album und Stücknummer hinzufügen, wird der Dateiname immer länger und länger. Und trotzdem enthält der Dateiname noch nicht alle Informationen wie zum Beispiel den Musikstil oder das Jahr in dem das Stück veröffentlicht wurde. + +Die Lösung dieses Problems ist es, einfach alle wichtigen Informationen innerhalb der Datei zu speichern. Mp3- und Ogg-Dateien können sogar kurze Texte enthalten in denen Sie den Inhalt der Datei kurz beschreiben können. Es gibt verschiedene Formate um solche Informationen innerhalb von Dateien abzuspeichern, aber &juk; verbirgt die Unterschiede zwischen ihnen und ermöglicht es, auf einem einzigen Weg alle Metadaten, die &juk; auslesen kann, zu bearbeiten. + +&juk; ist ein vollwertiger Metadaten-Editor, der es Ihnen ermöglicht, die Metadaten von Mp3- und Ogg-Dateien zu bearbeiten. Sie können einzelne Dateien oder mehrere gleichzeitig bearbeiten. Wenn Sie mehrere Dateien gleichzeitig bearbeiten, spielt es keine Rolle, ob einige vom Typ Mp3 und einige vom Typ Ogg sind. Die einzige Voraussetzung um die Metadaten zu bearbeiten ist, dass Sie Schreibrechte für die Datei besitzen. Das heißt, Sie können keine Metadaten von Stücken bearbeiten, die sich zum Beispiel auf einer eingebundenen &CD-ROM; befinden. + + +Metadaten einer einzelnen Datei ändern + +Um die Metadaten einer einzelnen Datei zu ändern, muss die zu ändernde Datei entweder in der Kollektionsliste oder ein Eintrag der Datei aus einer Wiedergabeliste ausgewählt werden. Falls der Metadaten-Editor nicht sichtbar ist, können Sie ihn über den Menüpunkt AnsichtMeta Info Editor anzeigen anzeigen lassen. Er erscheint dann im unteren Bereich des Listenansichtbereiches. + +Um die Metadaten zu ändern, müssen Sie nur die gewünschte Information in das dafür vorgesehene Feld eingeben. Wenn Sie Ihre Eingabe beendet haben, klicken Sie mit der linken Maustaste auf die Listenansicht, und Sie werden aufgefordert, das Speichern Ihrer Änderungen zu bestätigen. + +Sie haben vielleicht schon bemerkt, dass es sein kann, dass der Metadaten-Editor ausgegraut angezeigt wird, sodass Sie nichts ändern können, wenn Sie auf eine Datei klicken. Dies ist immer dann der Fall, wenn &juk; bemerkt hat, das Sie für das Stück nur Leserechte haben. + + +Felder des Metadaten-Editors + +Künstler: + +Der Name des Künstlers / der Künstler, der/die den Song veröffentlichte/n. + + + + +Titel: + +Der Name des Stückes. + + + + +Album: + +Der Name des Albums auf dem das Stück veröffentlicht wurde. + + + + +Genre: + +Der Stil der Musik (zum Beispiel: Rock). &juk; enthält bereits eine Liste von Genres konform zum ID3-Standard, aber Sie können auch Ihre eigenen Einträge zur Liste hinzufügen. + + + + +Dateiname: + +Der Name der Datei auf dem Datenträger. Der Eintrag kann direkt bearbeitet werden. Die Datei wird dann beim Speichern umbenannt. + + + + +StückNr: + +Die Position des Stückes auf der Originalaufnahme. + + + + +Jahr: + +Das Jahr in dem das Stück veröffentlicht wurde. + + + + +Länge: + +Ist nicht veränderbar, wird nur zu Informationszwecken angezeigt. + + + + +Bitrate: + +Ist nicht veränderbar, wird nur zu Informationszwecken angezeigt. + + + + +Kommentar: + +Hier können Sie Ihren eigenen Kommentar zum Stück einfügen. + + + + +Sie können Ihre Änderungen jederzeit speichern, indem Sie entweder den Menüpunkt MetadatenSpeichern auswählen oder den Kurzbefehl &Strg;T drücken. + + + + +Bearbeiten der Metadaten von mehreren Dateien + +Sie können mehrere Dateien im Listenansicht-Fenster auswählen und ein oder mehrere Felder der Metadaten für alle Dateien bearbeiten. + +Verwenden Sie Shift und den Linksklick, um benachbarte Dateien auszuwählen, und &Strg; und den Linksklick um nicht benachbarte Dateien auszuwählen. + +Falls der Metadaten-Editor nicht sichtbar ist, können Sie ihn über den Menüpunkt AnsichtMetadaten-Editor anzeigen jederzeit einblenden. Der Metadaten-Editor erscheint dann am unteren Rand der Listenansicht. + +Der Metadaten-Editor verhält sich geringfügig anders, wenn Sie mehrere Dateien ausgewählt haben. + +Jedes Feld des Metadaten-Editors wird jetzt ein kleines Feld neben sich haben mit dem Sie es aktivieren können. Jedes Feld, dessen Inhalt bei allen ausgewählten Dateien gleich ist, wird diesen Inhalt anzeigen. Um ein Feld zu editieren, müssen Sie das kleine Feld neben dem Eingabefeld aktivieren. + + + +Jedes Feld, das keinen übereinstimmenden Inhalt bei allen ausgewählten Dateien hat ist anfänglich nicht bearbeitbar, und zeigt keinen Inhalt an. + +Um den Inhalt eines Feldes zu ändern, müssen Sie dieses aktivieren, indem Sie das Ankreuzfeld Aktivieren neben dem Eingabefeld markieren, falls es nicht schon markiert ist. Dann können Sie den Inhalt des Feldes wie gewohnt editieren. + +Wenn Sie mit dem Bearbeiten aller Felder fertig sind, genügt ein Klick mit der &LMBn; in die Listenansicht, und Sie müssen das Speichern Ihrer Änderungen bestätigen. Der Speicherndialog zeigt Ihnen eine Liste der betroffenen Dateien an, damit Sie sichergehen können, dass Sie nur Dateien ändern, die Sie auch wirklich ändern wollen. + +Sie können Ihre Änderungen jederzeit speichern, indem Sie entweder den Menüpunkt MetadatenSpeichern auswählen oder den Kurzbefehl &Strg;T drücken. + + + + + + +Umbenennen + + +Der Umbenennendialog + + + + + + Ein Bildschirmphoto des Umbenennendialogs + + + + + +Der Konfigurationsdialog dieser Funktion wird benutzt, um einzustellen, wie ein Stück basierend auf seinen Metadaten umbenannt wird. Zuerst werden die Informationen nach einem einstellbaren Muster geändert, danach werden diese genutzt, um den Dateinamen basierend auf dem Dateinameschema zu erstellen. + +Der wichtigste Teil dieser Funktion ist das Dateinamenschema. Hier können Sie einstellen, nach welchem Schema &juk; die Dateien umbenennen wird. Der Grund warum es funktioniert ist, das einige Zeichen eine spezielle Bedeutung haben. + + + +%t +Wird durch den Titel ersetzt. + + + + +%a +Wird durch den Namen des/der Künstler/s ersetzt. + + + + +%A +Wird durch den Namen des Albums ersetzt. + + + + +%T +Wird durch die StückNr. ersetzt. + + + + +%c +Wird durch den angegebene Kommentar zum Stück ersetzt. + + + + + + +Jedes Schema kann %s enthalten, was durch die aktuellen Metadaten ersetzt wird und jeden Text den Sie möchten, inklusive Schrägstriche (/). Wenn in einem Schema ein Schrägstrich vorkommt wird dieser wie ein Trennzeichen zwischen zwei Ordnern gehandhabt. So ist es möglich Trennzeichen in das Feld Dateinamen Schema einzufügen. + +Das Benutzen dieser Zeichen ermöglicht es, leere Metadaten-Angaben zu ignorieren. Wenn Sie die Option Wert erforderlich ankreuzen, wird beim Umbenennen der Eintrag ignoriert, wenn er leer ist. Zum Beispiel können Sie so Dateien, die Kommentare enthalten, von solchen trennen, die keine haben, indem Sie hat-einen-kommentar/%s in das Kommentar-Markenfeld eintragen. + +Sie können Ihr Dateinamenschema testen, indem Sie im Feld Aktueller Dateiname eine Datei auswählen. Dann wird &juk; unterhalb im Bereich Neuer Dateiname den neuen Dateinamen anzeigen. + + + +Einrichtung des Metadaten-Raters + + +Einrichtung des Metadaten-Raters + + + + + + Bildschirmphoto der Einrichtung des Metadaten-Raters + + + + + +Der Dialog "Einrichtung des Metadaten-Raters" wird benutzt, um einzustellen, nach welchen Schemata &juk; die Informationen raten soll. + +Im Dialogfenster sehen Sie links eine Liste mit den verschiedenen Dateinamenmustern. &juk; enthält eine umfangreiche Sammlung von Mustern um die am häufigsten verwendeten Schemata bei der Benennung von Dateien abzudecken. Wenn Sie ein neues Schema hinzufügen wollen, klicken Sie auf den Knopf Hinzufügen, geben Ihr neues Schema ein und klicken auf OK. Verwenden Sie die gleichen Ersetzungszeichen wie im DialogDateien Umbenennen .... + +&juk; versucht, die vorhandenen Schemata der Reihe nach durchzugehen, beginnend am Anfang der Liste. Das erste Schema, das auf den Dateinamen zutrifft, wird verwendet um die Metadaten des Stücks zu ergänzen. Auf einige Dateien wird eventuell mehr als ein Schema zutreffen. Um sicherzustellen, dass das richtige Schema verwendet wird, müssen Sie dieses in der Liste markieren und mit den Pfeilknöpfen an die Spitze der Liste bewegen. + +Sie können vorhandene Schemata auch bearbeiten oder aus der Liste löschen. Um ein Schema zu bearbeiten oder zu löschen müssen Sie es markieren und dann entweder auf Ändern oder auf Entfernen klicken. + + + +Erweiterte Suche + + +Erweiterte Suche + + + + + + Bildschirmphoto des erweiterten Suchdialogs + + + + + +Der erweiterte Suchdialog kann verwendet werden um Wiedergabelisten zu durchsuchen. Er erlaubt Ihnen eine genaue Suche in den verschiedenen Metadaten Ihrer Stücke. + +Am oberen Rand des Fensters können Sie den Namen der Wiedergabeliste eingeben. Dann können Sie die Kriterien im Bereich Suchkriterien festlegen. + +Am Beginn der Gruppe Suchkriterium befinden sich zwei Auswahlknöpfe, Übereinstimmung mit einem der Kriterien und Übereinstimmung mit allen Kriterien. Wenn Sie Übereinstimmung mit einem der Kriterien auswählen, wird eine Übereinstimmung mit einem der angegebenen Kriterien das Stück zur Wiedergabeliste hinzufügen. Anderenfalls muss das Stück alle angegebenen Kriterien erfüllen um zur Wiedergabeliste hinzugefügt zu werden. + +Unter den Auswahlknöpfen befinden sich die Eingabezeilen, mit denen Sie Kriterien festlegen können. Als Standard werden zwei Eingabezeilen angezeigt, falls Sie mehr als zwei Kriterien festlegen möchten, können Sie sich mit dem Knopf Mehr eine weitere Eingabezeile anzeigen lassen. Um die jeweils unterste Eingabezeile der Liste zu entfernen, müssen Sie auf den KnopfWeniger klicken. Falls Sie eine Eingabezeile leer lassen, wird diese von &juk; ignoriert, sodass Sie den KnopfWeniger nicht verwenden müssen, wenn Sie eine Eingabezeile leer lassen. + +Jede Eingabezeile besteht aus drei Teilen. Ganz links befindet sich die Auswahlliste mit der Sie auswählen können welche Art von Metadaten übereinstimmen soll. Die Auswahlliste der Art der Übereinstimmung befindet sich ganz rechts, und in der Mitte finden Sie das Eingabefeld für den zu suchenden Text. Wenn Sie in der Auswahlliste der Metadaten, die übereinstimmen sollen, den Eintrag "<Alle Sichtbaren>" auswählen, werden alle Metadaten, die in Ihrer Kollektionsliste angezeigt werden, durchsucht. + +Die Auswahlliste der Art der Übereinstimmung können Sie verwenden um &juk; mitzuteilen, welche Suchmethode verwendet werden soll. Folgende Suchmethoden können ausgewählt werden: + +Normale Übereinstimmung +Dies ist die Standardeinstellung. &juk; sucht nach dem zu suchenden Text überall in den ausgewählten Metadaten. Dabei ignoriert es Groß- und Kleinschreibung. Zum Beispiel würde eine Suche nach "mode" im Künstlernamen auch zu "Depeche Mode" als Ergebnis führen. + + + +Groß-/Kleinschreibung beachten +Diese Suchmethode ähnelt der Standard-Methode, allerdings wird die Groß- und Kleinschreibung beachtet. Folglich müssten Sie, wenn Sie nach "Depeche Mode" suchen wollen, als Suchbegriff "Mode" eingeben. + + + +Übereinstimmende Muster +Dies ist die vielseitigste Suchmethode. Der eingegebene Suchtext wird einen regulären Ausdruck definieren, der benutzt wird um innerhalb der Metadaten zu suchen. Reguläre Ausdrücke sind außerhalb des Rahmens dieser Dokumentation, aber das Programm &kregexpeditor; kann Ihnen helfen einen regulären Ausdruck zu formen. &juk; verwendet reguläre Ausdrücke im Stil von Qt. + + + + + + +Erstellen Sie die Suchkriterien, die Sie für Ihre Suche verwenden wollen, und klicken Sie auf Ok, um Ihre Wiedergabeliste aus einer Suche zu erstellen. + + + + +Der &juk;-Titelbildmanager + +Seit Version 2.3 (in &kde; 3.5 enthalten) besitzt &juk; eine verbesserte Titelbildverwaltung, die ein paar neue Möglichkeiten für den Benutzer bietet, die es in &juk; 2.2 (in &kde; 3.4) nicht gab. Die Arbeitsweise kann zudem so angepasst werden, dass Titelbilder wie in &juk; 2.2 gehandhabt werden. Lassen Sie uns also zuerst schauen, wie es bisher funktionierte. + + +Wie Titelbilder in &juk; 2.2 funktionierten + +In &juk; 2.2 waren Titelbilder eines Stücks an dessen Informationen über Interpret und Album gebunden. Obwohl sich dies als brauchbar erwies und ein paar Vorteile hatte, war es nicht der beste Weg, Titelbilder zu organisieren. Wenn Sie ein Titelbild für ein anderes Stück verwenden wollten, mussten Sie entweder die Metadaten des Stücks ändern, oder das Titelbild doppelt vorhalten, was Speicherplatz verschwendet. Und wenn Ihr Stück weder Informationen über den Interpreten, noch über das Album enthielt, konnte &juk; das Titelbild nicht zuweisen, da es sich an keine Informationen halten konnte. Es funktionierte, aber es konnte besser sein. + + + + + +Wie Titelbilder in &juk; 2.3 funktionieren + +Für &juk; 2.3 wurde dieser Teil des Programms neu entworfen, um eine Komponente zu integrieren, die für die Handhabung der Titelbilder verantwortlich ist. Anstatt auf der Festplatte nach einem Bild mit festgelegtem Namen zu suchen, wie es &juk; 2.2 tat, verbindet der Titelbild-Manager von &juk; 2.3 jedes Titelbild mit einem Identifikations-Tag und verwendet dieses Tag mit Ihrer Musiksammlung. Es ist noch nicht perfekt, aber es funktioniert und kann Ihnen etwas Zeit sparen, während Sie damit mehr tun können als bisher. + + + +Beispielhaftes Hinzufügen von Titelbildern + +Ein Beispiel: Sie haben gerade Stücke von einer &CD; erstellt und möchten für diese nun ein Titelbild setzen. Hier: Alabama - Greatest Hits III. In &juk; 2.2 könnten Sie eines der Stücke auswählen und ein Titelbild aus dem Internet herunterladen, indem Sie mit der &RMBn; darauf klicken oder MetadatenTitelbildmanagerTitelbild aus dem Internet aus dem Menü wählen. Bedingt durch die Arbeitsweise von &juk; würde dieses Titelbild nun allen Stücken von Alabama - Greatest Hits III zugewiesen, ob Sie das wollten oder nicht. + +In &juk; 2,3 ist das Verfahren, mit einer Ausnahme, sehr ähnlich. Sie sollten zuerst alle Stücke auswählen, denen Sie das Titelbild zuweisen möchten. Sie wählen also zuerst alle Stücke von Alabama - Greatest Hits III aus und benutzen dann den Befehl Titelbild aus dem Internet .... Wenn Sie nur der Hälfte der Stücke ein Titelbild zuweisen möchten, markieren Sie diese Hälfte der Stücke bevor Sie Titelbild aus dem Internet ... ausführen. Über doppelte Titelbilder brauchen Sie sich keine Sorgen machen. &juk; ist intelligent genug, das gleiche Bild mehrfach zu verwenden, so dass nicht doppelte .png-Bilder ihre Festplatte füllen. + + + + +Alte Titelbilder wiederverwenden + +Aber was passiert, wenn Sie vergessen haben, alle Stücke zu markieren? Sie könnten sie auswählen und den Vorgang wiederholen. Das würde jedoch ein doppeltes Titelbild auf Ihrer Festplatte erzeugen, da &juk; nicht beurteilen kann, ob das Titelbild, das Sie gefunden haben, mit dem schon vorhandenen Titelbild identisch ist. Sie können &juk; aber sagen, dass Sie das Titelbild eines anderen Stückes verwenden möchten. + +Es gibt zwei Wege, dies zu tun: + +1. Öffnen Sie den Dialog Titelbildmanager über das Menü Metadaten (MetadatenTitelbildmanagerTitelbildmanager anzeigen). Der Titelbildmanager zeigt rechts eine Liste der &juk; bekannten Titelbilder an. Sobald diese fertig geladen ist, können Sie mit der Schnellsuchleiste oben oder der Interpretenauswahl links die Menge der angezeigten Titelbilder einschränken. Sobald Sie das gesuchte Titelbild sehen, können Sie es auf das gewünschte Stück ziehen und ablegen. Dies sollte ohne Verzögerung angewandt werden, da &juk; dasselbe Titelbild wiederverwendet (und das Titelbild wird auch beim Ziehen angezeigt). Leider kann es eine Weile dauern, bis der Titelbildmanager alle Titelbilder geladen hat. + +3. Doppelklicken Sie auf das Stück, welches das Titelbild zugewiesen hat, um dessenWiedergabe zu starten. Das Titelbild wird nun in der Wird gespielt-Leiste angezeigt, und Sie können es auf alle Stücke ziehen, denen Sie es zuweisen möchten, so wie Sie es im Titelbildmanager auch getan haben. + + + + + +Titelbilder auf mehr als ein Stück auf einmal ziehen + +Sie können ein Titelbild auch auf mehr als ein Stück ziehen. Wählen Sie dazu die Stücke, denen Sie das Titelbild zuweisen möchten, und ziehen Sie das Titelbild auf eines der ausgewählten Stücke. + + + + +Was passiert mit meinen alten Titelbildern? + +Sie fragen sich vielleicht, was &juk; mit Titelbildern macht, die Sich noch von &juk; 2.2 haben. &juk; konvertiert alte Titelbilder automatisch und fügt sie der Titelbildverwaltung hinzu. + +Da dies lange dauern kann, wird nicht alles auf einmal abgearbeitet. Alte Titelbilder werden daher nur konvertiert, wenn sie angezeigt werden. Während der Konvertierung stellt &juk; fest, welche Stücke dieses Titelbild verwenden würden und weist es ihnen automatisch zu. Im Endeffekt sollte es keine sichtbaren Änderungen geben: &juk; behält die gleichen Titelbilder für jedes Ihrer Stücke bei. Aber Sie profitieren ab jetet von den Vorzügen des neuen Titelbildmanagers. + + + + +Titelbilder entfernen + +Sie können jetzt auch ein Titelbild für ein Stück entfernen, ohne es gleichzeitig für alle Stücke mit gleichem Interpret und Album zu entfernen. + +In &juk; 2.3 entfernt der Befehl "Titelbild entfernen" das Titelbild nur aus dem ausgewählten Stück. + + + + +Anwendungsbeispiele: + +1. Sie können jetzt das gleiche Titelbild Alben zuweisen, die aus CD 1, CD 2 &etc; bestehen, was in &juk; 2.2 nicht ohne doppelte Titelbilder möglich war. + +2. Um Stücken, die nicht auf einem Album veröffentlicht wurden, ein generisches Titelbild zu geben, können Sie ein Titelbild entwerfen, und es diesen Stücken zuweisen. + + + + + + + + +Die &juk;-Werkzeugleiste + + +Die Hauptwerkzeugleiste + + +Die &juk;-Werkzeugleiste + + + + + +Die &juk;-Werkzeugleiste + +Die &juk;-Werkzeugleiste + + + +Von links nach rechts im Bildschirmphoto oben, sind folgende Symbole zu sehen: + + + +Neu +Erstellen einer neuen Wiedergabeliste. Wenn Sie die linke Maustaste beim klicken auf das Symbol gedrückt halten, erscheint ein Menü, in dem Sie zwischen den verschiedenen Arten von Wiedergabelisten wählen können. + + Leere Wiedergabeliste ... + Wenn Sie diese Option auswählen, wird eine vollkommen leere Wiedergabeliste zum Wiedergabelistenbereich hinzugefügt, nachdem Sie einen Namen für die neue Wiedergabeliste vergeben haben. + + + Wiedergabeliste aus Ordner ... + Wählen Sie zuerst einen Ordner aus, aus dem dann eine Wiedergabeliste erstellt wird, die alle Dateien des angegebenen Ordners und allen seinen Unterordnern enthält. Der Name der erstellten Wiedergabeliste stimmt mit dem Namen des ausgewählten Ordners überein. + + + Wiedergabeliste durchsuchen ... + Diese Option ruft den erweiterten Suchdialog auf, der es Ihnen erlaubt, eine virtuelle Wiedergabeliste zu erstellen. Alle Stücke die zu den angegebenen Suchkriterien passen, die Sie im erweiterteren Suchdialog angegeben haben, werden zur neuen Wiedergabeliste hinzugefügt. Wenn Sie später Stücke zu Ihrer Kollektionsliste hinzufügen, die zu den angegebenen Suchkriterien passen, werden diese automatisch zur virtuellen Wiedergabeliste hinzugefügt. Wenn Sie zum Beispiel eine Wiedergabeliste für alle Ihre "Depeche Mode"-Stücke erstellen, und Sie ein weiteres "Depeche Mode"-Stück zu Ihrer Kollektionsliste hinzufügen, wird dieses auch automatisch dieser Wiedergabeliste hinzugefügt. + + + + + + + +Öffnen +Fügen Sie eine Datei zur Kollektionsliste oder zur gerade aktiven (im Fenster angezeigten) Wiedergabeliste hinzu. Das Hinzufügen einer Datei zu einer Wiedergabeliste wird diese auch automatisch zur Kollektionsliste hinzufügen; umgekehrt gilt das allerdings nicht. + + + +Speichern +Speichern der gerade aktiven Wiedergabeliste. Um geänderte Metadaten zu speichern, klicken Sie irgendwo in das &juk;-Programmfenster oder drücken Sie den Kurzbefehl &Strg;T. + + + +Ausschneiden +Wenn ein Stück in einer Wiedergabeliste ausgewählt ist, wird es dadurch aus der Wiedergabeliste entfernt. Wenn der Metadaten-Editor aktiv ist, funktioniert der Knopf wie in jedem anderem Editor auch, das heißt, er entfernt den ausgewählten Text und speichert ihn in der Zwischenablage. + + + +Kopieren +Wenn der Metadaten-Editor aktiv ist, funktioniert der Knopf wie in jedem anderem Editor auch, er kopiert den ausgewählten Text in die Zwischenablage. +Wenn Sie die Funktion verwenden, während ein Stück in der Kollektionsliste ausgewählt ist, wird dessen URL in der Zwischenablage gespeichert, so dass Sie sie anderswo einfügen können. Zum Beispiel in einen Texteditor, &konqueror;, oder eine andere Wiedergabeliste. + + + +Einfügen +Wenn Sie bereits vorher eine URL in die Zwischenablage kopiert haben, können Sie diese mit dieser Funktion wieder in eine Wiedergabeliste einfügen. Natürlich können Sie auch eine URL einfügen, die Sie aus &konqueror; oder einem anderem Programm kopiert oder ausgeschnitten haben. Wenn der Metadaten-Editor aktiv ist wird diese Funktion den derzeitigen Inhalt der Zwischenablage in das ausgewählte Feld einfügen. + + + +Suchleiste anzeigen +Anzeigen oder Ausblenden der Suchleiste. + + + +Metadaten-Editor anzeigen +Anzeigen oder Ausblenden des Metadaten-Editors. + + + +Wiedergabe + +Dies funktioniert wie in jedem anderen Audio-Wiedergabeprogramm auch. Die Funktionen, die zur Verfügung stehen, sind Wiedergabe, Pause, Stopp, Vorheriger Titel und Nächster Titel. +In die Programmoberfläche ist auch eine Fortschrittsanzeige in Form eines Schiebereglers integriert, die anzeigt, wie weit (relativ) Sie ein Stück schon gehört haben. Sie können den Schieberegler mit der Maus bewegen, um innerhalb des Stücks vorwärts oder rückwärts zu springen. +Zu guter Letzt befindet sich in der Programmoberfläche auch ein Lautstärkeregler. Wie Sie bereits ahnen, können Sie damit die Lautstärke verändern, also lauter und leiser stellen. Laut befindet sich ganz rechts und Leise ganz links. + + + + + + +Die Suchleiste + +Mit der Suchleiste können Sie schnell und einfach nach einem Stück in der Kollektionsliste oder der gerade aktiven Wiedergabeliste suchen. + +Die Eingabe eines Suchbegriffs in die Suchleiste wird die Liste der angezeigten Stücke auf jene reduzieren die den eingegebenen Suchbegriff in einer sichtbaren Spalte enthalten. Das Drücken der Eingabetaste wird das oberste Stück der reduzierten Liste abspielen. + +Die Suche beginnt augenblicklich wenn Sie beginnen den Suchbegriff in das Suchfeld einzugeben. Die Suche ist inkrementell, das heißt mit jedem Zeichen das Sie eingeben, wird das Suchergebnis eingeengt. Dies ist praktisch wenn Sie sich zum Beispiel nur an den Teil eines Stücknamens erinnern. + +Wenn Sie eine präzisere Suchanfrage stellen wollen, können Sie auf den Knopf des erweiterten Suchdialogs rechts neben der Suchleiste klicken, welcher es Ihnen ermöglicht eine virtuelle Wiedergabeliste zu erstellen. Wenn Sie die Suchanfrage abbrechen wollen, klicken Sie auf den Löschen-Knopf links neben der Suchleiste. + + + + + + +Menü- und Befehlsreferenz + + +Menüs + + +Das Menü <guimenu +>Datei</guimenu +> + + + +&Strg;NDateiNeuLeere Wiedergabeliste ... + +Erstellt eine neue Wiedergabeliste. + + + + +&Strg;DDateiNeuWiedergabeliste aus Ordner ... + +Erstellt eine neue Wiedergabeliste, die alle Musikdateien eines Ordners und seiner Unterordner enthält. Jedes Stück innerhalb einer Wiedergabeliste die &juk; im Ordner oder einem Unterordner findet, wird ebenfalls zur Kollektionsliste hinzugefügt. + + + + +&Strg;FDateiNeu Wiedergabeliste aus Suche erstellen ... + +Erstellt eine neue Wiedergabeliste aus einer Suchanfrage. + + + + + &Strg;O Datei Öffnen ... + +Wählen Sie eine oder mehrere Datei/en aus und fügen Sie sie zur Kollektionsliste hinzu. Wenn Sie eine Wiedergabeliste auswählen werden alle enthaltenen Stücke zur Kollektionsliste hinzugefügt. + + + + +DateiOrdner öffnen ... + +Wählen Sie einen oder mehrere Ordner aus. Der oder die Ordner werden zur Kollektionsliste hinzugefügt und bei jedem Start von &juk; neu eingelesen und eventuelle Änderungen übernommen. Alternativ können Sie die Ordner auch während &juk; gestartet ist über den Menüpunkt DateiErneut laden neu einlesen. + + + + +DateiUmbenennen ... + +Umbenennen einer Wiedergabeliste. + + + + +DateiDuplizieren ... + +Erzeugt ein Duplikat der ausgewählten Wiedergabeliste, und fragt nach einem neuen Namen für die neue Liste. + + + + +DateiErneut laden + +Lädt alle Metadaten der in der ausgewählten Wiedergabeliste enthaltenen Stücke neu. + + + + +DateiEntfernen +Entfernt die ausgewählte Wiedergabeliste. + + + +&Strg;S DateiSpeichern + +Speichert die ausgewählte Wiedergabeliste. + + + + +DateiSpeichern unter ... + +Speichert die ausgewählte Wiedergabeliste unter einem anderen Namen. + + + + + + + +Das Menü <guimenu +>Bearbeiten</guimenu +> + + + + +BearbeitenLöschen + +Entfernt die ausgewählten Stücke aus der Wiedergabeliste. + + + + + + + +Das Menü <guimenu +>Ansicht</guimenu +> + + + +AnsichtSuchleiste anzeigen + +Mit dieser Funktion können Sie die Suchleiste ein- bzw. ausblenden. + + + + +AnsichtMetadaten-Editor anzeigen + +Mit dieser Funktion können Sie den Metadaten-Editor ein- bzw ausblenden. + + + + +AnsichtVerlauf anzeigen + +Mit dieser Funktion können Sie dieVerlauf-Wiedergabeliste ein- bzw. ausblenden. + + + + +AnsichtAnzeigemodiStandard + +Wechselt zur Standardansicht. + + + + +AnsichtAnzeigemodiKompakt + +Wechselt zur Kompaktansicht. + + + + +AnsichtAnzeigemodiBaum + +Wechselt zur Baumansicht. + + + + + + + +Das Menü <guimenu +>Wiedergabe</guimenu +> + + + +WiedergabeZufallswiedergabe + +Mit dieser Funktion können Sie &juk; dazu bringen, nach dem Ende der Wiedergabe des aktuellen Stücks, zufällig ein Stück aus der ausgewählten Wiedergabeliste auszuwählen und dieses abzuspielen. + + + + +WiedergabeWiedergabeliste wiederholen + +Wenn Sie diese Funktion aktivieren, wird &juk;, nachdem es das Ende einer Wiedergabeliste erreicht hat, diese wieder vom Beginn an abspielen. + + + + +WiedergabeWiedergabe + +Dieses Kommando spielt entweder das gerade ausgewählte Stück ab oder setzt die Wiedergabe eines Stücks fort, wenn diese pausiert wurde. + + + + +WiedergabePause + +Mit diesem Kommando können Sie die Wiedergabe eines Stücks pausieren. Mit dem Wiedergabekommando können Sie selbige dann wieder fortsetzen. + + + + +WiedergabeStopp + +Dieses Kommando stoppt die Wiedergabe des aktuellen Stücks. Sie können die Wiedergabe des Stücks nicht wieder an derselben Stelle fortsetzen. + + + + +WiedergabeVorheriger Titel + +Dieses Kommando spielt das Stück ab das vor dem aktuellen Stück abgespielt wurde. + + + + +WiedergabeNächster Titel + +Dieses Kommando springt zum nächsten Stück in der Wiedergabeliste. + + + + + + + +Das Menü <guimenu +>Metadaten</guimenu +> + + + + +StrgT MetadatenSpeichern + +Dieses Kommando speichert alle Änderungen der Metadaten der Datei die Sie gerade bearbeiten. Normalerweise werden Änderungen nicht gespeichert bis Sie mit der Maus in einen anderen Teil des &juk;-Programmfensters klicken. + + + + +MetadatenLöschen + +Dieses Kommando löscht das gerade ausgewählte Stück aus der Kollektionsliste und allen Wiedergabelisten in denen es enthalten ist. Danach wird die zum Stück gehörige Datei von der Festplatte gelöscht. + + + + +StrgF MetadatenMetadaten ratenVom Dateinamen + +Diese Funktion versucht, die Metadaten eines Stücks anhand des Dateinamens zu erraten. Sie können die zu verwendenden Schemen über den Menüpunkt Einstellungen Metadaten raten ... bearbeiten, welcher den Dialog Einrichtung des Metadaten-Raters öffnet. + + + + +StrgI MetadatenMetadaten ratenAus dem Internet + +Diese Funktion versucht die Metadaten einer Datei zu erraten, indem sie trm von MusicBrainz verwendet. + + + + + + + + +Das Menü <guimenu +>Einstellungen</guimenu +> + + + + +EinstellungenWerkzeugleisten Haupt-Werkzeugleiste (JuK) + +Dieses Kommando blendet die Haupt-Werkzeugleiste ein bzw. aus. + + + + +EinstellungenWerkzeugleisten Wiedergabe-Werkzeugleiste (JuK) + +Dieses Kommando blendet die Wiedergabe-Werkzeugleisteein bzw. aus. + + + + +Einstellungen Begrüßungsbildschirm beim Starten anzeigen + +Wenn Sie diese Funktion aktivieren, wird &juk; bei jedem Programmstart, während es Ihre Musiksammlung lädt, einen Begrüßungsbildschirm anzeigen, auf dem Informationen über die Sammlung angezeigt werden. + + + + +Einstellungen Im Systembereich der Kontrollleiste andocken + +Diese Option wird, wenn sie aktiviert wurde, ein &juk;-Symbol im Systemabschnitt der Kontrollleiste anzeigen. Über dieses Symbol zeigt &juk; an, ob es gerade ein Stück wiedergibt. Außerdem können Sie durch das Symbol bequem auf die Wiedergabefunktion von &juk; zugreifen. + + + + +Einstellungen Nach dem Schließen in der Kontrollleiste bleiben + +Wenn Sie diese Option aktiviert haben, wird &juk; nicht beendet wenn Sie das Programmfenster schließen, sondern bleibt im Systemabschnitt der Kontrollleiste als &juk;-Symbol weiterhin aktiv. Um diese Funktion nutzen zu können, muss die Option "An der Kontrollleiste andocken" ebenfalls aktiviert sein. Um &juk; zu beenden, müssen Sie dann entweder das Kommando Datei Beenden im Programmfenster auswählen, oder Sie erledigen dies bequem über das Symbol im Systemabschnitt der Kontrollleiste. Dazu klicken Sie mit der rechten Maustaste auf das Symbol und wählen dann die Option Beenden aus. + + + + +Einstellungen Titelankündigung anzeigen + +Wenn diese Option aktiviert ist, wird &juk; ein kleines Fenster einblenden, das Informationen über den Künstler und das Stück enthält dessen Wiedergabe gerade begonnen hat und Knöpfe für das schnelle wechseln zu einem anderem Stück enthält. Die Option "An der Kontrollleiste andocken" muss ebenfalls aktiviert sein. + + + + +Einstellungen Metadaten raten ... + +Dieser Menüpunkt öffnet den Dialog Einrichtung des Metadaten-Raters. Dort können Sie alle Schemata bearbeiten, nach denen &juk; versucht die Metadaten aus Dateinamen zu erraten. + + + + +Einstellungen Dateien umbenennen ... + +Dieser Menüpunkt öffnet den Konfigurationsdialog Dateien umbenennen, in dem Sie einstellen können, nach welchen Schemata &juk; die Dateien umbenennen soll. + + + + +Einstellungen Kurzbefehle festlegen ... + +Öffnet den &kde;-Standarddialog zum Einrichten von Kurzbefehlen für &juk;. Einige vernünftige Kurzbefehle sind bereits voreingestellt, wie zum Beispiel Multimedia-Tasten für Besitzer einer Multimedia-Tastatur. + + + + + + + + + + +Tastenbelegung + + + + + + +Tastenkombinationen (Kurzbefehle) +Aktion + + + + +&Strg;A +Alles auswählen + + +&Strg;C +Kopieren + + +&Strg;R +Datei umbenennen + + +&Strg;I +Metadaten aus dem Internet raten. + + +&Strg;G +Metadaten aus dem Dateinamen raten. + + +&Strg;F +Neue Wiedergabeliste aus Suche erstellen. + + +&Strg;G +Metadaten aus dem Dateinamen erraten + + +&Strg;N +Neue leere Wiedergabeliste + + +&Strg;D +Neue Wiedergabeliste aus Ordner erstellen. + + +&Strg;T +Geänderte Metadaten speichern. + + + + + + + + + +Mitwirkende und Lizenz + +&juk; Copyright ©.2002, 2003, 2004 &Scott.Wheeler; + +&juk; wird von &Scott.Wheeler; &Scott.Wheeler.mail; entwickelt und gepflegt. + +Vielen Dank an die nachfolgenden Leute, die zu &juk; beigetragen haben: + + +&Daniel.Molkentin;&Daniel.Molkentin.mail; für das Systemabschnittsymbol, den eingebetteten Metadaten-Editor, Fehlerkorrekturen, Evangelismus und moralische Unterstützung. + +Tim Jansen tim@tjansen.de für denGStreamer-Anschluss von &juk;. + + +Stefan Asserhäll stefan.asserhall@telia.com für die Unterstützung globaler Tastenkürzel. + + +Stephen Douglas stephen_douglas@yahoo.com für das Titelankündigungsfenster. + + +&Frerich.Raabe;&Frerich.Raabe.mail; für automatisches raten der Stückdaten und Fehlerkorrekturen. + + +Zack Rusin zack@kde.org für mehrere automatische Dinge, auch MusicBrainz-Support. + + +Adam Treat manyoso@yahoo.com für die Mitarbeit am MusicBrainz-Support. + + +Matthias Kretz kretz@kde.org, den freundlichen &arts;-Guru in der Nachbarschaft. + + +Maks Orlovich maksim@kde.org für Ideen, die Leuten mit Terabytes von Musik das Leben mit &juk; leichter machen. + + +Antonio Larrosa Jimenez larrosa@kde.org für die &DCOP;-Schnittstelle. + + + + +Copyright der Dokumentation © 2003, &Lauri.Watts;, und © 2004 Michael Pyne. + +Patrick Trettenbreinpatrick.trettenbrein@kdemail.net +&underFDL; &underGPL; + +&documentation.index; + +
+ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/juk-adv-search.png b/tde-i18n-de/docs/tdemultimedia/juk/juk-adv-search.png new file mode 100644 index 00000000000..6abfb399d67 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/juk-adv-search.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/juk-file-renamer.png b/tde-i18n-de/docs/tdemultimedia/juk/juk-file-renamer.png new file mode 100644 index 00000000000..c07c0f075f6 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/juk-file-renamer.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/juk-main.png b/tde-i18n-de/docs/tdemultimedia/juk/juk-main.png new file mode 100644 index 00000000000..cebec5360c8 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/juk-main.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/juk-tag-guesser.png b/tde-i18n-de/docs/tdemultimedia/juk/juk-tag-guesser.png new file mode 100644 index 00000000000..2036049a3a6 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/juk-tag-guesser.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/normal-playlist.png b/tde-i18n-de/docs/tdemultimedia/juk/normal-playlist.png new file mode 100644 index 00000000000..17d37250072 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/normal-playlist.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/search-playlist.png b/tde-i18n-de/docs/tdemultimedia/juk/search-playlist.png new file mode 100644 index 00000000000..05e10e53298 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/search-playlist.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/juk/toolbar.png b/tde-i18n-de/docs/tdemultimedia/juk/toolbar.png new file mode 100644 index 00000000000..94d6c912907 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/juk/toolbar.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kaboodle/Makefile.am b/tde-i18n-de/docs/tdemultimedia/kaboodle/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kaboodle/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/kaboodle/Makefile.in b/tde-i18n-de/docs/tdemultimedia/kaboodle/Makefile.in new file mode 100644 index 00000000000..8e06bad5010 --- /dev/null +++ b/tde-i18n-de/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 = de +#>- 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-de/docs/tdemultimedia/kaboodle/index.cache.bz2 b/tde-i18n-de/docs/tdemultimedia/kaboodle/index.cache.bz2 new file mode 100644 index 00000000000..9172a492671 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kaboodle/index.cache.bz2 differ diff --git a/tde-i18n-de/docs/tdemultimedia/kaboodle/index.docbook b/tde-i18n-de/docs/tdemultimedia/kaboodle/index.docbook new file mode 100644 index 00000000000..677a07c4b34 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kaboodle/index.docbook @@ -0,0 +1,110 @@ + +kaboodle"> + + + +]> + + + + +Das Handbuch zu &kappname; + + +
+
+
+MarcoWegner
mail@marcowegner.de
Deutsche Übersetzung
+
+ +&FDLNotice; + + + +2000-09-02 +0.00.00 + + + + +&kaboodle; ist ein einfacher Medienabspieler für &kde;. + + + + +KDE +Kapp + + +
+ + Einleitung Leider war das Handbuch für &kappname; noch nicht fertiggestellt, als &kde; auf diesem Rechner installiert wurde. Für Hilfe besuchen Sie doch die KDE Website. Möglicherweise gibt es dort auch bereits eine aktualisierte Hilfe. Sie können auch eine Frage an die Mailing-Liste für &kde;-Benutzer stellen. Das &kde;-Team &underFDL; + +&documentation.index; +
+ + diff --git a/tde-i18n-de/docs/tdemultimedia/kioslave/Makefile.am b/tde-i18n-de/docs/tdemultimedia/kioslave/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kioslave/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/kioslave/Makefile.in b/tde-i18n-de/docs/tdemultimedia/kioslave/Makefile.in new file mode 100644 index 00000000000..5e509e81889 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kioslave/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/kioslave +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 = de +#>- 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/kioslave/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kioslave/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/kioslave/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kioslave/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kioslave/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)/kioslave + @for base in audiocd.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kioslave/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kioslave/$$base ;\ + done + +uninstall-nls: + for base in audiocd.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kioslave/$$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/kioslave/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kioslave/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kioslave/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-de/docs/tdemultimedia/kioslave/audiocd.docbook b/tde-i18n-de/docs/tdemultimedia/kioslave/audiocd.docbook new file mode 100644 index 00000000000..e70b2b47c10 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kioslave/audiocd.docbook @@ -0,0 +1,329 @@ +
+audiocd + + +&Rik.Hemsley; &Rik.Hemsley.mail; +BenjaminMeyer +MarcoWegner
mail@marcowegner.de
Übersetzer
+
+ +2004-09-16 +2.30.00 + +
+ +Erlaubt das Verwenden von Audio-CDs wie ein richtiges Dateisystem, wobei die Stücke als Dateien dargestellt und beim Kopieren aus dem Verzeichnis digital von der CD ausgelesen werden. Dies garantiert eine perfekte Kopie der Audiodaten. + +Um zu sehen, wie dieses Modul arbeitet, legen Sie eine Audio-CD in Ihr &CD-ROM;-Laufwerk ein und geben audiocd:/ im &konqueror; ein. Innerhalb weniger Sekunden sollten Sie eine Liste von Stücken und einige Ordner sehen. + +Auf Audio-CDs gibt es eigentlich keine Ordner, aber das audiocd-Modul stellt diese nützliche Erweiterung bereit. Wenn Sie in diese Ordner schauen, werden Sie feststellen, dass sie alle die gleiche Anzahl Titel enthalten. Falls Sie mit dem Internet verbunden sind, werden in einigen Verzeichnissen sogar die Stück-Titel als Dateinamen angezeigt. + +Diese separaten Ordner existieren, damit Sie auswählen können, in welchem Format Sie die Stücke auf der CD anhören (oder kopieren) wollen. + +Wenn Sie einen Titel aus dem Ordner Ogg Vorbis ziehen und ihn über einem anderen offenen &konqueror;-Fenster ablegen, sollten Sie ein Fenster sehen, das Ihnen anzeigt, dass der Titel von der CD ausgelesen und in einer Datei gespeichert wird. Beachten Sie, dass Ogg Vorbis ein komprimiertes Format ist, so dass die gespeicherte Datei erheblich kleiner sein wird als eine von den Rohdaten kopierte. + +Der Mechanismus dahinter ist recht einfach. Wenn das audiocd-Modul aufgefordert wird, einen Titel aus dem Ordner Ogg Vorbis zu erzeugen, liest es die digitalen Audiodaten von der CD. Während das Modul die Daten zur Speicherung in eine Datei ablegt, werden diese in das Format Ogg Vorbis umgewandelt (CD-Audio ist kein spezielles Format, es sind einfach binäre Daten). + +Sie könnten auch versuchen, eine auf .wav endende Datei auf die &kde;-Medienwiedergabe (&noatun;) zu ziehen. In diesem Fall ist der Vorgang, der dahinter steckt, ganz ähnlich, nur dass an Stelle einer Umwandlung der Audiodaten in das Format Ogg Vorbis hier eine sehr einfache Umwandlung stattfindet: von binären Rohdaten (repräsentiert von den .cda-Dateien im Wurzelordner) ins Format RIFF WAV, ein unkomprimiertes Format, das von den meisten Medien-Abspielern verstanden wird. + +&noatun; sollte problemlos die .wav-Datei abspielen, aber wenn es Schwierigkeiten gibt, können sie versuchen, die Option zu verwenden, die später noch erklärt wird. + + +Optionen + + + + +Setzt den Pfad zum Audio-CD-Gerät, &zb; audiocd:/=/dev/sdc. Normalerweise wird das Modul versuchen, ein CD-Laufwerk mit einer eingelegten Audio-CD zu finden, aber wenn das nicht funktioniert oder Sie mehr als ein CD-Laufwerk besitzen, können Sie es mit dieser Option versuchen. Beachten Sie, dass der Einrichtungsdialog es Ihnen erlaubt, eine Voreinstellung für diese Option zu setzen. + + + + + + +Setzt das Schema für Dateinamen, zum Beispiel audiocd:/=Track %{number}. Der Standardwert für diese Option kann im Konfigurationsdialog gesetzt werden. Warnung: Wenn Sie eine leere Zeichenkette angeben, werden keine Dateien erscheinen. + + + + + + +Setzt das Schema für Alben, zum Beispiel audiocd:/=%{albumartist} %{albumtitle}.Der Standardwert für diese Option kann im Konfigurationsdialog gesetzt werden. + + + + + + +Setzt die Nice-Ebene für die Kodierer, zum Beispiel audiocd:/=niceLevel=10. Im Konfigurationsdialog kann für diesen Parameter ein Standardwert eingegeben werden. + + + + + + +Setzt den Wert für Fehlererkennung und -korrektur beim Auslesen von Audiodaten. + + + +Stufe 0 + +Keine Erkennung oder Korrektur. Das ist nur sinnvoll, falls Sie ein perfektes CD-Laufwerk haben (also eher unwahrscheinlich). + + + + +Stufe 1 + +Ermöglicht grundlegende Fehlerkontrolle und -korrektur. + + + + +Stufe 2 + +Voreinstellung. Legt fest, dass nur ein fehlerfreies Auslesen akzeptiert wird. + + + + +Beachten Sie, dass es einen Nachteil der Stufe 2 gibt: Das Auslesen kann sehr langsam sein, so dass das digitale Abspielen in Echtzeit möglicherweise nicht korrekt arbeitet. Falls Sie ein qualitativ hochwertiges CD-Laufwerk besitzen (dabei gilt, dass teurer nicht notwendigerweise auch bessere Qualität bedeutet), werden Sie ein langsames Auslesen wahrscheinlich nicht erleben, aber ein schlechtes Laufwerk kann Tage brauchen (!), um die Audiodaten einer einzigen CD auszulesen. + + + + + + + +Legt fest, dass die Namen der Titel der eingelegten CD in einer Internet-CD-Datenbank nachgeschlagen werden. Auf Audio-CDs sind die Titel der Stücke nicht gespeichert, aber die Internet-CD-Datenbank ist ein raffiniertes System, das ein spezielles einzigartiges Identifizierungsmerkmal verwendet, das aus der Anzahl und Länge der Titel auf jeder CD erstellt wird, um auf eine dazugehörende Titel-Liste zu verweisen. Diese Titel-Listen werden von der Internetgemeinschaft bereitgestellt und für alle verfügbar gemacht. Ab und an können mehrere Einträge gefunden werden, aus denen dann ausgewählt werden muss. + +Sie können Ihre eigenen Titel-Listen mittels &kscd; hinzufügen, dem CD-Spieler der &kde;. + +Standardmäßig wählt audiocd den am besten passenden. + + + + + +Beispiele + +audiocd:/?device=/dev/scd0&paranoia_level=0&cddbChoice=0 + +Gibt eine Liste der Stücke auf der Audio-CD aus, die in /dev/scd0 eingelegt wurde. (Das steht unter &Linux; für das erste SCSI-&CD-ROM;-Gerät.) Falls Sie Titel von der CD kopieren, wird das digitale Auslesen ohne Fehlerkorrektur oder -erkennung ausgeführt. Die Internet-CD-Datenbank Eintrag 0 wird verwendet. + + + + + +Eine oft gestellte Frage + + +Ich bekomme die Fehlermeldung Die Datei oder der Ordner / existiert nicht. Was muss ich tun? Ich habe eine Audio-CD in meinem Laufwerk. + + + +Versuchen Sie es mit dem Befehl cdparanoia (nicht als root). Sehen Sie eine Titel-Liste? Falls nicht, stellen Sie sicher, dass Sie die Berechtigung haben, auf das CD-Laufwerk zuzugreifen. Sollten Sie die SCSI-Emulation verwenden (z.B. wenn Sie einen IDE-CD-Brenner haben), prüfen Sie die Zugriffsrechte der SCSI-Geräte, also /dev/sg0, /dev/sg1, &etc;. Falls es immer noch nicht funktioniert, versuchen Sie es mit der Eingabe von audiocd:/?device=/dev/sg0 (oder ähnlich), um dem audiocd-Modul mitzuteilen, welches Gerät Ihr &CD-ROM; ist. + + + + + +
diff --git a/tde-i18n-de/docs/tdemultimedia/kmid/Makefile.am b/tde-i18n-de/docs/tdemultimedia/kmid/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kmid/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/kmid/Makefile.in b/tde-i18n-de/docs/tdemultimedia/kmid/Makefile.in new file mode 100644 index 00000000000..1b7fbf3f1d8 --- /dev/null +++ b/tde-i18n-de/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 = de +#>- 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-de/docs/tdemultimedia/kmid/index.cache.bz2 b/tde-i18n-de/docs/tdemultimedia/kmid/index.cache.bz2 new file mode 100644 index 00000000000..753c73e0c08 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kmid/index.cache.bz2 differ diff --git a/tde-i18n-de/docs/tdemultimedia/kmid/index.docbook b/tde-i18n-de/docs/tdemultimedia/kmid/index.docbook new file mode 100644 index 00000000000..a118e72d91b --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kmid/index.docbook @@ -0,0 +1,1420 @@ + + + + + +]> + + + + +Das Handbuch zu &kmid; + +Antonio Larrosa Jiménez
larrosa@kde.org
+
+
+GregorZumstein
zumstein@ssd.ethz.ch
Übersetzung
FrankSchütte
F.Schuette@t-online.de
ܜbersetzung
+
+ + +19992001 +Antonio Larrosa Jiménez + + +2002-02-05 +2.00.00 + + +&kmid; ist ein MIDI-/Karaoke-Multimediaspieler + + + +KMid +MIDI +Karaoke +Multimedia +mid +kar +Spieler +Musik +Klang +fm +awe +gus + +
+ + +Einleitung + +&kmid; ist der MIDI- und Karaokespieler von &kde;. Neben anderen hat er mit Echtzeitgraphik und Karaoke-Echtzeithervorhebung von Texten auch einige Eigenschaften, die andere &UNIX;-MIDI-Spieler nicht haben. + +&kmid; läuft unter &Linux; und FreeBSD. Es baut auf dem OSS-System auf, sollte also auf allen Systemen mit OSS- und &kde;-Unterstützung funktionieren. &kmid; unterstützt ebenfalls den &Linux; Ultrasound-Projekttreiber, der für GUS-Karten benötigt wird. ALSA wird einbezogen, sobald es einen Sequenzer unterstützt. + +&kmid; zeigt den Liedtext auf dem Bildschirm mit wechselnder Farbe an, so dass es einfach ist, dem Stück zu folgen. + +Ich hoffe, dass Sie bei der Benutzung von &kmid; genau so viel Spaß haben, wie ich beim Entwickeln. + +Antonio Larrosa Jiménez larrosa@kde.org + + +Fähigkeiten von &kmid; + +Einige der wichtigsten Fähigkeiten von &kmid;: + + + +Eine sehr benutzerfreundliche Oberfläche für die Darstellung von Karaoke-Text mit Echtzeithervorhebung des Stücktextes. + + +Graphische Darstellung der Aktivität jedes MIDI-Kanals durch Hervorhebung der gedrückten Tasten auf der (virtuellen) Tastatur. + + +Der mächtigste MIDI-Mapper, den Sie je auf einem Betriebssystem sehen werden. + + +Drag & Drop so dass Sie in &kde; jede MIDI-Datei von einem &konqueror;-Fenster auf KMid ziehen können. + + +Sie können das Tempo von Liedern ändern, um diese schneller oder langsamer abzuspielen. + + +Blinkende Lichter helfen Ihnen beim Verfolgen des Rhythmus. + + +Einstellbare Schriftarten für die Darstellung des Karaoke-Textes + + +Unterstützt die beiden vorhandenen Standards, um Text in MIDI-Dateien zu speichern (Liedereignisse oder Textereignisse). KMid ermittelt automatisch das jeweils verwendete Verfahren. + + +Sitzungsunterstützung. Wenn Sie &kde; während des Abspielens eines Liedes beenden, startet KMid beim nächsten Mal wieder mit dem gleichen Lied. + + +In Echtzeit einstellbare Lautstärke. + + +Spielt selbst defekte Dateien, die andere MIDI-Spieler zum Absturz bringen! + + +Kann mit gzip komprimierte MIDI/Karaoke-Dateien öffnen wie unkomprimierte Dateien. + + +Braucht nur etwa 0.1% meiner CPU-Zeit (hängt von der Komplexität des Stückes ab). + + +Unterstützt externe MIDI-Synthesizer, AWE, FM und GUS-Karten (für letztere brauchen Sie den LUP-Treiber und gusd). + + +Läuft unter &Linux; und FreeBSD (und vielleicht auch anderen UNIX-Ablegern). + + + + + + + +Benutzung + + +Öffnen von Liedern + +Sie können ein Stück auf verschiedene Arten öffnen. + +Erstens können Sie Öffnen ... aus dem Menü Datei auswählen. Es erscheint der übliche Datei-Dialog, mit dessen Hilfe Sie das gewünschte Lied auswählen können. + +Sie können auch eine Datei von einem &konqueror;-Fenster in das &kmid;-Fenster fallen lassen. Dies funktioniert auch mit mehreren Liedern gleichzeitig. + +Wenn Sie beim Starten von &kmid; ein Stück übergeben, wird dieses geöffnet. + +Und letztlich können Sie auch ein Lied aus der Liste der aktuellen Sammlung auswählen. + + + + +Lieder abspielen + +Um ein Musikstück abzuspielen, öffnen Sie es und betätigen Sie den Knopf Abspielen in der Werkzeugleiste, wählen Sie den Eintrag Abspielen aus dem Menü Stück aus oder betätigen Sie die Leertaste. + +Bitte beachten Sie, dass &kmid; ein Stück automatisch startet, sobald Sie es auf das &kmid;-Fenster ziehen. (Bei mehreren Stücken werden sie zu einer Sammlung hinzugefügt und dann nacheinander abgespielt.) + +Sobald &kmid; ein Stück abspielt, können Sie an eine beliebige Stelle springen, indem Sie die mittlere Maustaste benutzen und mit dem Regler hin und her fahren. + +Wenn Sie finden, dass ein Lied zu schnell oder zu langsam abgespielt wird, können Sie auf die Pfeile links und rechts der Tempoanzeige klicken und so die Abspielgeschwindigkeit ändern. Um wieder das ursprüngliche Tempo zu erhalten, doppelklicken Sie auf die Tempo-LCD. + +Die Leertaste hat zwei Aufgaben: Wenn ein Stück abgespielt wird, wirkt ein Druck auf die Leertaste wie ein Druck auf den Knopf Pause oder das Auswählen des Menüeintrags Pause im Menü Stück, unterbricht also die Wiedergabe. Betätigen Sie die Leertaste während kein Stück abgespielt wird, startet &kmid; die Wiedergabe. + + + + +Liedtext anzeigen + +Liedtexte können auf zwei Arten in einem Musikstück gespeichert werden. Einige Stücke verwenden Textereignis, andere verwenden Liedtextereignis und wieder andere beides. Einige Stücke haben gar keinen Text :-) + +In &kmid; können Sie einstellen, welche Ereignisse dargestellt werden sollen und sogar noch besser: Der Ereignistyp wird automatisch ermittelt, den ein Lied benutzt, sodass Sie nichts manuell einstellen müssen. Wenn Sie also im Menü Einstellungen den Eintrag automatische Textauswahl aktivieren, wird automatisch der Karaoke-Text ausgewählt. Sie haben aber immer noch die Möglichkeit, dies zu ändern, wenn Sie die andere Art sehen wollen. + +Falls Sie einen Ereignistyp fest einstellen wollen, wählen Sie aus dem Menü Einstellungen die Einträge Textereignisse bzw. Liedereignisse. Die gleiche Funktion haben auch die Tasten 1 und 2. + + + + + + +Sammlungen + +Eine Sammlung ist eine Liste von MIDI-Dateien, welche Sie zusammenfassen. Diese werden der Reihe nach abgespielt. In diesem Abschnitt steht, wie Sie Sammlungen effizient nutzen können. + + +Anlegen einer Sammlung + +Um eine Sammlung anzulegen, öffnen Sie zuerst den Sammlungsmanager. Diesen finden Sie im Menü Sammlung unter dem Punkt Organisieren .... Klicken Sie dort auf Neu und geben den Namen für die Sammlung an. + +Sie können auch eine bestehende Sammlung kopieren, indem Sie auf Kopieren klicken und anschließend den Namen für die neue Sammlung angeben. Diese Sammlung wird am Anfang die gleichen Lieder enthalten wie die ursprüngliche. + +Wenn Sie mehr als eine Sammlung haben, können Sie die jeweils Gewünschte im Sammlungsmanager einstellen. + + + +Die temporäre Sammlung (Temporary Collection) + +In die temporäre Sammlung gelangen alle Lieder, die Sie zu keiner anderen Sammlung hinzufügen wollen. + +Beim Verlassen der Anwendung wird diese Sammlung nicht gespeichert. Bedenken Sie das, wenn Sie viele Stücke hinzufügen. + +Lesen Sie auch noch den Rest dieses Abschnitts zum besseren Verständnis der temporären Sammlung. + + + + +Hinzufügen von Liedern zu einer Sammlung +Wie Sie Automatisches Hinzufügen zur Sammlung benutzen + +Es gibt verschiedene Methoden, ein Lied zu einer Sammlung hinzuzufügen. + +Um Lieder zu einer Sammlung hinzuzufügen, muss sie im Sammlungsmanager ausgewählt sein. Dort können Sie mit dem Knopf Hinzufügen ein Lied hinzufügen. Es erscheint wiederum der Datei-Dialog, mit dessen Hilfe Sie das gewünschte Lied auswählen können. + +Eine zweite Methode, um ein Lied hinzuzufügen, hängt von der Einstellung Automatisches Hinzufügen zur Sammlung ab. + +Wenn Automatisches Hinzufügen zur Sammlung aktiviert ist, wird ein Stück beim Öffnen (unter Verwendung von DateiÖffnen oder Drag & Drop) automatisch zur aktiven Sammlung hinzugefügt. + +Wenn Automatisch hinzufügen zur Sammlung nicht aktiviert ist, wird beim Öffnen eines Stückes die temporäre Sammlung aktiviert und geleert. Dieser Sammlung werden dann die weiterhin geöffneten Stücke hinzugefügt. + + + + +Entfernen von Liedern aus einer Sammlung + +Um ein Lied aus einer Sammlung zu entfernen, müssen Sie den Sammlungsmanager öffnen, die Sammlung und das gewünschte Lied auswählen und dann auf Entfernen klicken. + + + + +Abspielreihenfolge + +Sie können die Reihenfolge auswählen, in der die Lieder abgespielt werden. Wenn Sie Der Reihe nach aus dem Untermenü Abspielreihenfolge des Menüs Sammlung auswählen, werden die Lieder in der Reihenfolge abgespielt, wie sie zur Sammlung hinzugefügt wurden. + +Wenn Sie aber zufällige Reihenfolge wählen, erzeugt &kmid; eine Zufallsvariable und die Lieder werden auch in wirklich zufälliger Reihenfolge abgespielt. Kein Lied wird zweimal abgespielt, und wenn Sie auf den Knopf für Vorheriges Lied klicken, kommt wirklich das zuletzt abgespielte. + +Wenn Sie Lieder hinzufügen oder entfernen oder zufällige Reihenfolge im Menü anwählen, wird die Reihenfolge neu festgelegt. + + + + +Ein Lied aus einer Sammlung auswählen + +Um ein Lied abzuspielen, wählen Sie es im Sammlungsmanager aus, oder benutzen die Auswahlliste über dem Karaoke-Text. + +Um ein Lied weiter zu springen, wählen Sie den Knopf Nächstes Lied, den Eintrag nächstes Lied aus dem Menü Stück oder drücken die Taste Pfeil rechts. + +Um umgekehrt ein Lied zurück zu springen, wählen Sie den Knopf Vorheriges Stück, den Eintrag Vorheriges Stück aus dem Menü Stück oder drücken die Taste Pfeil links. + + + + +Löschen einer Sammlung + +Um eine Sammlung zu löschen, öffnen Sie den Sammlungsmanager, wählen dort die zu löschende Sammlung und klicken auf den Knopf Löschen. + +Die temporäre Sammlung kann nicht gelöscht werden. Das spielt allerdings keine Rolle, da sie beim Verlassen von &kmid; nicht gespeichert wird. + + + + + + +MIDI-Maps + + +Was ist eine MIDI-Map? + +Eine MIDI-Map wandelt MIDI-Ereignisse in andere MIDI-Ereignisse um. + +Dies ist unbedingt nötig für Synthesizer, die nicht General-MIDI-fähig sind. In diesem Fall übersetzt die MIDI-Map General-MIDI-Ereignisse in Ereignisse, die der Synthesizer versteht. + +Zum Beispiel können Sie eine MIDI-Map erstellen, die alle Ereignisse des Typs Change patch to Bright Piano in Ereignisse des Typs Change patch to Trumpet umwandelt und somit immer eine Trompete erklingen lässt , wenn ursprünglich ein Klavier spielen sollte. + +Dies mag merkwürdig klingen (wieso eine Trompete anstelle eines Klaviers nehmen?), aber es ist äußerst nützlich. Der GM-Standard definiert zum Beispiel, dass ein MIDI-Keyboard Patch 0 als akustischer Flügel interpretiert wird, aber ein älterer Synthesizer interpretiert Patch 0 z.B. als Elektrische Gitarre und hat den akustischen Flügel z.B. auf Patch 3. Hierin liegt nun die Aufgabe der MIDI-Map. Sie muss alle Ereignisse des Typs Change patch to 0 in Ereignisse des Typs change patch to 3 umwandeln und so auch wirklich das richtige Instrument spielen lassen. + + + + +Brauche ich eine MIDI-Map? + +Kurz gesagt, wenn Sie keinen externen Synthesizer haben: Nein. + +Wenn Sie nur eine Soundkarte haben, brauchen Sie keine MIDI-Map, weil alle Soundkarten GM-kompatibel sind (inkl. AWE- und GUS-Karten, FM-Geräten und so weiter). + +Wenn Sie Musik von einem externen Synthesizer abspielen lassen, welcher nicht GM-kompatibel ist, müssen Sie eine MIDI-Map erstellen. Obwohl Sie vielleicht einen ganzen Nachmittag damit verbringen, Ihre MIDI-Map zu erstellen und verschiedene Werte auszuprobieren für die verschiedenen Einstellungen, werden Sie schließlich dafür entschädigt, weil Sie viele verborgene Fähigkeiten Ihres Keyboards entdecken. Ich habe zum Beispiel ein billiges Yamaha PSS-790, welches nicht GM-kompatibel ist und auch nicht soviele Instrumente hat wie ein GM-Gerät. Mit der MIDI-Map von &kmid; tönt es aber dank der Klangqualität eines externen Synthesizers besser als die meisten Soundkarten (inkl. AWE). + + + + +Erstellen einer MIDI-Map + +Es gibt leider keine Programme, um MIDI-Maps zu erstellen. Sie müssen also die entsprechende Datei von Hand (mit Ihrem Lieblingseditor) bearbeiten. + +Eine MIDI-Map ist eine Textdatei, die alle benötigten Umsetzungen für das Abspielen eines Stückes speichert. + +Die Datei besteht aus vier Abschnitten: PATCHMAP, KEYMAP, CHANNELMAP und OPTIONS. + +Jeder Abschnitt darf nur einmal erscheinen, außer dem KEYMAP-Abschnitt, der so oft erscheinen darf wie gewünscht. Voraussetzung dafür ist aber, dass jedes Auftreten eine unterschiedliche TextID besitzt (siehe unten). + +Der allgemeine Aufbau einer MIDI-Map ist wie folgt: + +DEFINE PATCHMAP +... +END + +DEFINE KEYMAP "Name der Keymap" +... +END + +DEFINE KEYMAP "Eine weitere Keymap" +... +END + +DEFINE CHANNELMAP +... +END + +OPTIONS +... +END + + +Sie sehen, dass DEFINE gebraucht wird, um anzuzeigen, dass ein Abschnitt beginnt (außer für OPTIONS) und END, dass das Ende eines Abschnittes erreicht ist. + +Sie können Kommentare einfügen, indem Sie am Anfang der Zeile ein #-Zeichen setzen. + +Bitte schicken Sie mir Ihre Map-Datei als E-Mail, damit ich in zukünftigen Versionen von &kmid; Unterstützung bieten kann für Geräte, die nicht General-MIDI-kompatibel sind. + + +Der <literal +>PATCHMAP</literal +> Abschnitt + +In diesem Abschnitt wird angegeben, wie die Patches von General MIDI auf Ihr spezifisches Keyboard abgebildet werden. Der allgemeine Gebrauch sieht wie folgt aus: + +(Name des GM Patch)=(N) [AllKeysTo M] + + +Wobei N die Nummer ist, die Ihr Keyboard braucht, um Patches empfangen zu können. + +Bitte beachten Sie, dass die linke Seite des Gleichheitszeichens ignoriert wird. Es wird angenommen, dass die GM-Patches in der richtigen Reihenfolge vorliegen (von 0 bis 127), Sie dürfen die Reihenfolge also nicht ändern und auch keine Zeile für eines der 128 Instrumente weglassen. + +Das optionale AllKeysTo M wird gebraucht, um alle Töne, die dieses Instrument brauchen, auf den Ton mit der Nummer M zu legen. Wenn Ihr Keyboard zum Beispiel keinen Gewehrschuss unterstützt (GM-Patch 127), können Sie eine Trommel (z.B. mit Ton 60) nehmen, die ähnlich wie ein Gewehrschuss tönt. Dazu tragen Sie folgendes in den PATCHMAP-Abschnitt ein: + +Gewehrschuß =100 AllKeysTo 60 + + +Wenn jetzt also eine MIDI-Datei eine Note mit Patch 127 (Gewehrschuss) spielen soll, nimmt es Patch 100 (die Trommel auf Ihrem Keyboard) und spielt den Ton 60, unabhängig davon, welcher Ton in der MIDI-Datei steht. + +Bitte beachten Sie, dass hier mit dem Begriff Trommel-Patch der Patch gemeint ist, bei dem jeder Ton ein anderes Perkussionsinstrument (Trommel, Becken, Maracas &etc;) darstellt und nicht derjenige, bei dem der Ton die Tonhöhe der immer gleichen Trommel bedeutet (wie ihn manche Keyboards besitzen). + + + + +Der <literal +>KEYMAP</literal +> Abschnitt + +Der KEYMAP Abschnitt wird gebraucht, um anzugeben, wie Töne auf einem bestimmten Kanal oder Instrument abgebildet werden. Der Gebrauch ist: + +DEFINE KEYMAP "Name der Keymap" +C 0 =0 +C#0 =1 +D 0 =2 +... +END + + +Wie beim PATCHMAP-Abschnitt ist die Reihenfolge der Zeilen sehr wichtig, ebenso deren Vorhandensein. Sie müssen also 128 Einträge erstellen. + +Sie können für jeden Kanal und jedes Instrument mehrere Keymaps definieren. Sie müssen nur in der ersten Zeile verschiedene Namen verwenden. + +Keymaps werden vor allem gebraucht, um Töne auf den Perkussions-Kanal abzubilden. Schauen Sie sich als Beispiel die mitgelieferten Keymaps an. + + + + +Der <literal +>CHANNELMAP</literal +>-Abschnitt + +Dieser Abschnitt kann gebraucht werden, um einige Kanäle auf andere abzubilden. Wenn Sie zum Beispiel den ersten und den zweiten Kanal vertauschen wollen, machen Sie das ganz einfach im CHANNELMAP-Abschnitt. + +Allerdings sind diese Einstellungen nützlicher für Keyboards, welche die Perkussion auf einem bestimmten Kanal haben (General MIDI auf Kanal 10, andere brauchen die Kanäle 16 oder 9). + +MIDI-Geräte brauchen 16 Kanäle, der CHANNELMAP Abschnitt hat also 16 Zeilen, nummeriert von 0 bis 15, aufgebaut nach folgendem Muster: + +(N) = (M) [Keymap "Name"] [ForcePatch x] + + +N ist dabei der Kanal, welcher auf den Kanal N abgebildet wird. Wenn Sie die Keymap Option benutzen, wird die Keymap mit dem Namen Name für diesen Kanal gebraucht. Die entsprechende Keymap muss natürlich weiter vorne in der Datei definiert sein! Wenn Sie die ForcePatch Option benutzen, werden alle Ereignisse ignoriert, die den Patch auf diesem Kanal zu ändern versuchen. In diesem Fall wird dann immer Patch x benutzt. + +Die Option ForcePatch kann zum Beispiel nützlich sein, um immer den Perkussions-Patch auf dem Perkussions-Kanal zu benutzen. + + + + +Der Abschnitt <literal +>OPTIONS</literal +> + +Im Abschnitt OPTIONS können Sie einige ganz nützliche Einstellungen vornehmen: + +OPTIONS +PitchBenderRatio = r +MapExpressionToVolumeEvents +END + + +Sie können eine, keine oder beide Einstellungen angeben. + +Der Wert für PitchBenderRatio gibt an, in welchem Verhältnis Pitch-Bender-Ereignisse multipliziert werden. Wenn also eine MIDI-Datei ein Pitch-Bender-Ereignis sendet mit dem Wert n, wird dieses mit der Formel n*(r/4096) umgerechnet und dann erst weitergeleitet. Der Wert 4096 wird benutzt, damit in der Map-Datei keine Dezimalkommas stehen). + +Diese Einstellung wird gebraucht, weil GM vorgibt, dass ein Keyboard, das ein Pitch-Bender-Ereignis erhält mit dem Wert 4096, einen Ton höher spielen soll. Leider versuchen aber einige Keyboards um zwei Töne bis zu einer Oktave höher zu spielen. Um den richtigen Wert auf Ihrem Keyboard zu finden, müssen Sie ein bisschen mit &kmid; herumprobieren. + +Wenn die Einstellung MapExpressionToVolumeEvents gebraucht wird und eine MIDI-Datei ein Ausdruckereignis schickt, wird dieses in ein Lautstärkeereignis umgewandelt. Dieses hat den gleichen Effekt, wird aber von mehr Keyboards verstanden. Viele MIDI-Dateien brauchen Ausdrucksereignisse, um am Schluß eines Liedes auszublenden. Wenn Sie also wollen, dass die Musik immer leiser und leiser wird, können Sie diese Einstellung ausprobieren. Vielleicht funktioniert es auch mit Ihrem Synthesizer. + + + + + + +Der Gebrauch von MIDI-Maps + +Um eine MIDI-Map zu benutzen, öffnen Sie einfach den Dialog MIDI-Einstellungen. Diesen finden Sie im Menü unter Einstellungen, Punkt MIDI-Einstellungen + +Dort klicken Sie auf Durchsuchen ..., wählen die Map-Datei und freuen sich an der Musik! + + + + +Weitergehende Möglichkeiten + + +Die Kanalansicht + +Die Kanalansicht ist ein Fenster mit einer ganzen Reihe Klaviaturen (eine für jeden MIDI-Kanal). Auf diesen Klaviaturen sehen Sie, welche Töne gerade gespielt werden. + + +Instrumente ändern + +Sie können die Kanalansicht auch benutzen, um das Instrument auf einem bestimmten Kanal zu ändern. Für jeden Kanal gibt es eine Auswahlliste, wo Sie ein Instrument auswählen können. Wenn Sie ein Instrument geändert haben, leuchtet der Knopf nicht mehr grün sondern rot, um anzuzeigen, dass nicht mehr das ursprüngliche Instrument benutzt wird. + +Um wieder zum ursprünglichen Instrument zurückzugehen, klicken Sie auf den roten Knopf. + + + + +Das Aussehen ändern + +Die Kanalansicht hat (bis jetzt) zwei verschiedene Ansichten, um die gespielten Töne anzuzeigen. Die Ansicht wählen Sie im Menü Einstellungen unter dem Punkt Kanalansicht: Einstellungen + +Im Modus 3D-Ansicht werden die Tasten niedergedrückt, wie bei einem normalen Klavier. Beim Modus 3D-gefüllt werden die gedrückten Tasten auch noch rot eingefärbt, so dass sie leicht gesehen werden. Wenn Sie Klavier oder ein anderes Musikinstrument spielen, können Sie diese Ansicht benutzen, um selbst ein Lied spielen zu lernen. Ich habe diese Technik benutzt (zusammen mit einer Geschwindigkeitsreduktion), und sie ist großartig, um neue Stücke zu lernen. + + + + + + +Die Tempo-<acronym +>LCD</acronym +> + +Die Tempo-LCD zeigt die Geschwindigkeit an, mit der ein Lied abgespielt wird. Je höher die Zahl, desto größer die Geschwindigkeit. + +Sie können das Tempo eines Liedes verändern. Wenn Sie also z.B. finden, ein Lied sei zu schnell, um dem Text zu folgen, können Sie es verlangsamen. Um das Tempo zu ändern, benutzen Sie die Pfeile links und rechts von der LCD. + +Mit einem Doppelklick auf die LCD stellen Sie wieder das ursprüngliche Tempo ein. + + + + + + +Tastenbelegung + + + + + +Taste +Aktion + + + + +Leertaste +Das geladene Lied abspielen bzw. anhalten, wenn es bereits läuft. + + +Rücktaste +Wiedergabe anhalten + + +Pfeil rechts +Nächstes Stück in der aktuellen Sammlung + + +Pfeil links +Vorheriges Stück in der aktuellen Sammlung + + +Pfeil hoch +Liedtext eine Zeile nach oben rollen + + +Pfeil runter +Liedtext eine Zeile nach unten rollen + + +Bild auf +Liedtext eine Seite nach oben rollen + + +Bild ab +Liedtext eine Seite nach unten rollen + + +1 +Textereignisse anzeigen + + +2 +Liedtextereignisse anzeigen + + +&Strg;O +Öffnen eines Stückes + + +&Strg;Q +&kmid; beenden + + +F1 +Dieses Dokument öffnen + + + + + + + + +Bei Problemen wenden Sie sich an eine der KDE-Mailinglisten, eine Newsgruppe oder direkt an mich. Beachten Sie auch die FAQ auf der nächsten Seite, und durchsuchen Sie die Newsgruppen oder Archive der Mailinglisten, bevor Sie weitere Fragen stellen. + + + + +Was ist eine MIDI-Datei? + + + +Eine MIDI-Datei ist eine Datei, die Informationen darüber enthält, wie ein Musikstück gespielt werden muss. Es enthält die Noten, den Rhythmus, die Geschwindigkeit, &etc;. Damit kann dieselbe MIDI-Datei auf zwei verschiedenen Geräten zu sehr unterschiedlichen Ergebnissen führen, genauso wie zwei verschiedene Musiker die selben Noten auf sehr unterschiedliche Weise spielen können. + + + + + +Ich erhalte bessere Resultate mit einem mp3/wav-Spieler, warum sollte ich also &kmid; verwenden? + + +Gut, ich kann niemanden zwingen, &kmid; zu benutzen. Aber eine typische MIDI-Datei braucht etwa 50 KB, während eine mp3-Datei 4 MB braucht (ein Kompressionsverhältnis von 1:80) und mit einem guten Synthesizer erhalten Sie eine ähnliche Klangqualität. Bei einer MIDI-Datei können Sie darüber hinaus auch die einzelnen Instrumente ändern, die Geschwindigkeit &etc; Sie haben die Kontrolle über alles. + + + + + +Meine AWE-Karte funktioniert nicht mit KMid. Was kann ich tun? + + +Das kann passieren, wenn Sie eine Binärdistribution (rpm,deb) von &kmid; haben. Das passiert, weil &kmid; ohne AWE-Unterstützung kompiliert wurde. Um das Problem zu beseitigen müssen Sie eine Quelldistribution herunterladen und installieren (zum Beispiel von &kmid;'s Startseite) + + + + + +Ich möchte ein ganzen Ordner zu einer Sammlung hinzufügen, aber ich habe keine Lust, alle Dateien einzeln hinzuzufügen. + + + +Einverstanden, darum unterstützt &kmid; Drag & Drop. Öffnen Sie einfach den Ordner, das Sie hinzufügen wollen in &konqueror;, wählen alle Dateien aus, und ziehen Sie sie auf das &kmid;-Fenster. +Aktivieren Sie vorher unbedingt die Einstellung Automatisches Hinzufügen zur Sammlung. Sonst werden die Dateien zur temporären Sammlung hinzugefügt. + + + + + +Ich kann dem Liedtext nicht folgen, er wird zu schnell wiedergegeben! + + +Sie können die Pfeiltaste links von der Tempo-LCD betätigen, um die Wiedergabe zu verlangsamen. Um das Standardtempo wiederherzustellen können Sie auf die LCD doppelklicken. + + + + + + + +Schlussbemerkungen + + +Einige Tipps und Tricks + +Hier noch ein paar Tipps, um alle Vorteile von &kmid; zu benutzen: + + + +Öffnen von Liedern + +Ich habe auf einer &kde;-Arbeitsfläche ein &konqueror;-Fenster mit meinem MIDI-Ordner und &kmid; auf dieser Arbeitsfläche (wenn ich eine MIDI-Datei abspiele) oder angeheftet (wenn ich eine Karaoke-Datei abspiele ) offen. Auf diese Weise muss ich, wenn die Sammlung zu Ende abgespielt ist oder ich eine Datei abspielen möchte, lediglich in das &konqueror;-Fenster wechseln und die gewünschte Datei in das Fenster von &kmid; ziehen. + +Wenn Sie nur mal schnell eine Datei anhören wollen, ohne sie gleich zu einer Sammlung hinzuzufügen, schalten Sie die Einstellung Automatisches Hinzufügen zur Sammlung ab, und die neue; Datei wird zur temporären Sammlung hinzugefügt.Öffnen von Dateien + + + + +Eine weitere Methode, um eine neue Sammlung anzulegen + +Nehmen wir an, Sie haben die MIDI-Dateien A.mid, B.mid und C.mid. Zuerst wollen Sie nur mal die erste Datei abspielen. Also stellen Sie die Einstellung Automatisches Hinzufügen zur Sammlung ab und öffnen A.mid. Ihre temporäre Sammlung enthält dann genau diese eine MIDI-Datei. +Dann entschließen Sie sich, auch B.mid und C.mid abzuspielen und eine Sammlung mit allen drei Dateien zu erstellen. Wie machen Sie das? +Ganz einfach: Stellen Sie die Einstellung Automatisches Hinzufügen zur Sammlung an und öffnen Sie B.mid und C.mid. Sie haben dann in der temporären Sammlung A.mid, B.mid und C.mid. Hier öffnen Sie nun den Dialog Sammlungsmanager und wählen die temporäre Sammlung aus. Dann klicken Sie auf Kopieren, geben den Namen der neuen Sammlung an und sind fertig. Sie haben jetzt eine Sammlung mit den MIDI-Dateien A, B.und C, die beim Beenden von &kmid; nicht gelöscht wird. + + + + + + + +Freunde von &kmid; + +Diese Leute haben mir MIDI-Dateien oder Postkarten gesendet. Allen herzlichen Dank! Wenn ich diese Lieder höre oder die Postkarte sehe, animiert mich das, weiter an &kmid; zu programmieren. + + + +Ola Sigurdson - Taking Care of Business (Bachman Turner Overdrive) + + +EG Lim - Eine wirklich sehr schöne Postkarte von Penang. + + +Günther Starnberger - Amadeus (Falco) und Schrei Nach Liebe (Die Ärzte) + + +Leandro Terrés - All That She Wants und The Sign (Ace of Base) + + +Nick Stoic - Zwei MIDI-Dateien + + + + + + +Über den Autor + +&kmid; wurde von Antonio Larrosa Jiménez aus Málaga (Spanien) geschrieben. Ich studiere Mathematik an der Universität von Málaga. Im Moment bin ich im dritten Jahr, so dass ich nicht viel Freizeit habe für meine Hobbies, aber ich versuche doch, mir ein bisschen Zeit zu nehmen. Als Hobbies habe ich Programmieren, MIDI-Dateien sammeln, Musik machen und Sätze beweisen. + +Wenn Sie wissen möchten, wo sie MIDI/Karaoke-Dateien herunterladen können, wenn Sie eine Frage, einen Fehler oder eine Idee für eine Erweiterung von &kmid; haben, oder auch, wenn Sie mich einfach glücklich machen wollen, schreiben Sie mir eine E-Mail: larrosa@kde.org oder antlarr@arrakis.es + +Sie können mir auch mit Schneckenpost schreiben: + +Antonio Larrosa Jimenez +Rio Arnoya 10 5B +Malaga (Spanien) + + +Sie machen mir wirklich eine Riesenfreude, wenn Sie mir eine Postkarte von Ihrem Wohnort oder eine MIDI-/Karaoke-Datei von einer lokalen Gruppe schicken. Alle die mir eine Postkarte oder eine MIDI-Datei schicken, werde ich unter Freunde von &kmid; aufzählen (wenn Sie das wollen). Bevor Sie eine MIDI-Datei schicken, sollten Sie aber mit mir Kontakt aufnehmen, da ich die Datei vielleicht schon habe. + +Ich habe &kmid; vollständig in meiner Freizeit geschrieben und von niemandem dafür Geld gekriegt. Ich möchte daher betonen, dass ich nur darum weiter programmiere, weil/wenn ich Rückmeldungen von Benutzern bekomme (Postkarten oder E-Mails). + +Folgenden Personen möchte ich danken, dass Sie mitgeholfen haben, &kmid; zu entwickeln: + + + +Paul J. Leonard P.J.Leonard@bath.ac.uk - Unterstützung für AWE Karten + + +Sebestyen Zoltan szoli@digo.inf.elte.hu - FreeBSD-Portierung und AWE-Test + + +Christian Esken esken@kde.org - Für die Organisation von Multimedia in KDE + + +Stephan Kulow coolo@kde.org - Configure-Skripte und Hilfe mit automake und CVS + + +Jaroslav Kysela - Hilfe beim Erstellen der &Linux; Ultrasound Project Treiber-Unterstützung + + +Takashi Iwai und Joseph H. Bühler - Behebung des Fehlers, dass die Tonhöhe bei AWE-Karten zu hoch war. + + +Adrian Knoth - Für viele Neuigkeiten und gute Tips. + + +Kevin Street - Patch zur Unterstützung von FreeBSD 3.0 + + +Mein Dank gilt auch Jose Lus Sanchez für das Testen der GUS-Unterstützung, Ignacio Garcia für das Testen der AWE-Unterstützung, Has Petter Bieker, Ola Sigurdson, Marc Diefenbruch, Peter Gritsch, Magnus Pfeffer, Urko Lusa, Peter-Paul Witta, Thorsten Westheider, Ulrich Cordes und jedem, der mir einen Patch, eine Fehlerbenachrichtigung oder auch nur eine unterstützende E-Mail geschickt hat. + + +Und natürlich gilt mein Dank auch all diesen hervorragenden Musikern im Netz, die uns diese wundervollen MIDI- und Karaoke-Dateien schenken. + + + +Übersetzung: Gregor Zumstein zumstein@ssd.ethz.chÜberarbeitung der Übersetzung: Frank Schütte F.Schuette@t-online.de + + + + +Copyright und Lizenz + +&kmid; steht unter dem Copyright von Antonio Larrosa Jiménez, 1999-2001 + +Die Dokumentation steht unter dem Copyright von Antonio Larrosa Jiménez 1999, 2001 +&underFDL; &underGPL; + + + + +Installation + + +Wo bekomme ich &kmid;? +&install.intro.documentation; Zusätzlich hierzu kann &kmid; auch auf seiner Homepage gefunden werden, welche sich unter http://www.arrakis.es/~rlarrosa/kmid.html befindet. Auf der Homepage können Sie die Entwicklung mitverfolgen, Informationen suchen und Bilder betrachten. Sie finden dort auch Links zu Seiten mit weiteren Karaoke-Liedern, &etc; + + + + +Voraussetzungen + +Um &kmid; benutzen zu können, brauchen Sie: + + + +&kde; (das ja wahrscheinlich bereits installiert ist) + + +Eine Soundkarte. Ich empfehle Ihnen eine gute Soundkarte oder einen externen Synthesizer, da die Klangqualität wesentlich von Ihrer Soundkarte abhängt. Es ist nicht das gleiche, ob Sie ein FM-Gerät oder eine AWE-Karte benutzen. + +Wenn Sie keine Soundkarte haben, müssen Sie &kmid; mit dem Parameter MODE_DEMO_ONLYVISUAL kompilieren. Es läuft dann, als ob Sie eine Soundkarte hätten, außer dass Sie natürlich keine Musik hören können. + + + + + + +Kompilierung und Installation +&install.compile.documentation; Einige Beispieldateien finden sich nach der Installation unter $KDEDIR/share/apps/kmid + +Falls Probleme auftreten, kontaktieren Sie eine der &kde;-Mailinglisten oder senden Sie eine Fehlerbenachrichtigung direkt an mich. + + + + + +
+ diff --git a/tde-i18n-de/docs/tdemultimedia/kmix/Makefile.am b/tde-i18n-de/docs/tdemultimedia/kmix/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kmix/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/kmix/Makefile.in b/tde-i18n-de/docs/tdemultimedia/kmix/Makefile.in new file mode 100644 index 00000000000..218c5127b33 --- /dev/null +++ b/tde-i18n-de/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 = de +#>- 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 kmix-window.png index.cache.bz2 kmix-channel-record.png Makefile.in kmix-channel-playback.png Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) kmix-channel-record.png kmix-window.png index.docbook kmix-channel-playback.png + @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 kmix-channel-record.png kmix-window.png index.docbook kmix-channel-playback.png ; 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 kmix-channel-record.png kmix-window.png index.docbook kmix-channel-playback.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in kmix-channel-record.png kmix-window.png index.docbook kmix-channel-playback.png ; 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-de/docs/tdemultimedia/kmix/index.cache.bz2 b/tde-i18n-de/docs/tdemultimedia/kmix/index.cache.bz2 new file mode 100644 index 00000000000..c098d16fd15 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kmix/index.cache.bz2 differ diff --git a/tde-i18n-de/docs/tdemultimedia/kmix/index.docbook b/tde-i18n-de/docs/tdemultimedia/kmix/index.docbook new file mode 100644 index 00000000000..8ae0bd68dfd --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kmix/index.docbook @@ -0,0 +1,984 @@ + + + + + +]> + + + + +Das Handbuch zu &kmix; + + +MattJohnston
&Matt.Johnston.mail;
+
+
+ +ChristianEsken
esken@kde.org
+Entwickler +
+ +Helio Chissini de Castro
helio@kde.org
+Entwickler +
+ + +Stefan Schimanski
1Stein@gmx.de
+Entwickler +
+ +Lauri Watts
&Lauri.Watts.mail;
+Korrektur +
+GregorZumstein
zumstein@ssd.ethz.ch
Übersetzung
FrankSchütte
F.Schuette@t-online.de
Überarbeitung der Übersetzung
ArnoldKrille
arnold@arnoldarts.de
Überarbeitung der Übersetzung
+
+ + +19962005 +Christian Esken & &Matt.Johnston; + + +&FDLNotice; + +2007-01-05 +2.6.1 + +&kmix; ist eine Anwendung, die es Ihnen erlaubt, die Lautstärkeeinstellungen Ihrer Soundkarte zu verändern. + + +KDE +KMix +tdemultimedia +Sound +Mixer +Lautstärkeregelung + + +
+ + +Einleitung + +&kmix; ist das Mixer-Programm von &kde;. Obwohl es klein ist, besitzt es alle nötigen Fähigkeiten. Für jedes Gerät gibt es einen separaten Regler. + +&kmix; unterstützt verschiedene Betriebssysteme und Sound-Treiber. + + +Der ALSA-Soundkartentreiber. +Alle Open-Sound-System-Plattformen. Explizit getestet sind &Linux;, FreeBSD, NetBSD und BSDI. +Rechner mit &Solaris;. +Rechner mit &IRIX;. +Rechner mit &HP-UX;. + + +Wenn sowohl ALSA als auch das Open Sound System installiert sind, benutzt &kmix; standardmäßig ALSA. + + + + +Arbeiten mit &kmix; + + +Grundlagen + +Die Benutzung von &kmix; ist einfach. Jedes Mixer-Gerät Ihrer Soundkarte wird durch einen Lautstärkeregler dargestellt. Mono-Geräte haben nur einen Regler, Stereo-Geräte je nach Wahl einen oder zwei. Zusätzlich gibt es einen Schieberegler am unteren Rand des &kmix;-Fensters für die Lautstärkeverteilung auf linken und rechten Audioausgang. Wenn mehrere Soundkarten vorhanden sind, wird oben eine Liste zur Auswahl der Soundkarte angezeigt. +Das &kmix;-Hauptfenster + + + +Das &kmix;-Hauptfenster + + + + + + +Das Fenster kann bis zu drei Abschnitte für die verschiedenen Soundkartenregler anzeigen: Ausgänge, Eingänge und Schalter. Diese Abschnitte enthalten Lautstärkeregler, Schalter zum Ein- bzw. Ausschalten von Aufnahme und Abspielen, und Auswahlfelder mit mehreren Möglichkeiten. +Ausgänge: Enthält die Regler, die sehr wahrscheinlich die Wiedergabe beeinflussen, wie zum Beispiel den Master-Regler. +Eingänge: Enthält Regler, die sehr wahrscheinlich mit Aufnahmen zu tun haben, zum Beispiel Capture. +Schalter: Enthält alle Kontrollelemente, wo etwas ein- oder ausgeschaltet wird (zum Beispiel "Mic Boost (+20dB)"), oder aus einer Liste auszuwählen ist ( zum Beispiel Mic Select: Mic1 oder Mic2). + + + +Neben den Reglern enthält &kmix; auch LEDs. Die Farben bedeuten: + +Grün: Eine LED für Wiedergabeoptionen. +Rot: Eine LED für Aufnahmeoptionen. +Gelb: Eine LED für spezielle Soundkarteneinstellungen. + +Diese drei Farben gibt es in zwei Stärken: eine beleuchtete LED bedeutet "AN", eine nicht beleuchtete LED bedeutet "AUS". + + + +Lautstärkeregler + +Die Lautstärkeregler in den Bereichen Ausgänge und Eingänge bestehen aus den folgenden Elementen (von oben nach unten): +Lautstärkeregler (Eingänge) + + + +Lautstärkeregler (Eingänge) + + + + +Ein Symbol, das die Funktion des Elements repräsentieren soll. +Eine Anzeige für die Lautstärke (optional). +Eine grüne LED für Stummschaltung (LED aus/dunkel bedeutet Stumm, LED an/hell bedeutet, der Kanal ist eingeschaltet). +Ein Regler, um die Lautstärke einzustellen. Tipp: Die Bezeichnung an der Seite kann ausgeblendet werden, falls sie zu viel Platz wegnimmt. +Wenn ein Element Aufnahmen unterstützt, besitzt es eine rote LED, wenn diese hell leuchtet, ist der Kanal für Aufnahmen ausgewählt. Wenn die LED dunkel ist, ist der Kanal nicht für Aufnahmen ausgewählt. + + + +Lautstärkeregler mit Aufnahmeschalter (Ausgang) + + + +Lautstärkeregler mit Aufnahmeschalter (Ausgang) + + + + + + +Die meisten der Regler haben ein Kontextmenü, das Sie durch Klicken mit der &RMBn; auf den Regler oder das oberhalb stehende Gerätesymbol aktivieren können. Das Menü hat verschiedene Einträge, wobei jeweils nur die für das Gerät passenden angezeigt werden. + + + +Kanäle trennen +Einen oder zwei Lautstärkeregler für das Gerät anzeigen. Das gilt nur für Stereogeräte. Der rechte Regler kontrolliert die Lautstärke rechts und der linke Regler die Lautstärke links. + + + +Stumm +Das Gerät stummschalten. + + + +Ausblenden +Kanäle, die nicht geändert werden sollen, können mit dieser Option ausgeblendet werden. Wenn diese wieder gezeigt werden sollen, geht dies nur über die Option Kanäle (siehe weiter unten). + + + +Kurzbefehle festlegen ... +Sie können Regler auch mit der Tastatur steuern. Mit diesem Menüeintrag können Sie den Dialog Kurzbefehle festlegen aufrufen. Hier können Sie Tasten festlegen, mit denen Lautstärken erhöht oder erniedrigt, oder Kanäle stummgeschaltet werden. Diese Tastenkombinationen sind global und funktionieren auch, wenn &kmix; minimiert oder angedockt ist. + + + +Kanäle +Zeigt einen Dialog, in dem für jeden der Bereiche (Ausgang, Eingang und Schalter) festgelegt werden kann, welche Kanäle angezeigt werden sollen. + + + +Menüleiste anzeigen/ausblenden +Diese Option ist nicht abhängig von den Geräten, sondern betrifft das Fenster von &kmix;. Hiermit kann die Menüleiste angezeigt bzw. ausgeblendet werden. Dies geht auch mit dem üblichen Kurzbefehl (normalerweise &Ctrl;M). + + + + + + +Schalter und Mehrfachauswahlen + +Die Regler im Abschnitt Schalter bestehen aus einer LED und einer kurzen Beschreibung der Funktion. Der Abschnitt Schalter kann zudem Mehrfachauswahlen enthalten. Beachten Sie, dass diese Einstellungen oft sehr speziell sind und eigentlich keiner Anpassung durch den durchschnittlichen Benutzer bedürfen. Das Kontextmenü enthält die Einträge Kanäle und Menüleiste anzeigen/ausblenden, die bereits beschrieben wurden. Schalter und Mehrfachauswahlen (Abschnitt Schalter)Schalter und Mehrfachauswahlen (Abschnitt Schalter) Rote LEDs sind mit Aufnahmen verbunden; gelbe LEDs steuern besondere Fähigkeiten der Soundkarte. Das obige Bildschirmphoto zeigt von links nach rechts eine unbeleuchtete LDE für IEC958 Output (gelb = besonderer Regler), eine beleuchtete LED für Mix (rot = Aufnahme), eine unbeleuchtete Aufnahme-LED, eine beleuchtete besondere LED und ein Auswahlfeld (PCM Out Path & Mute). Wenn Sie sich über die Bedeutung eines Reglers nicht sicher sind, fragen Sie den Hersteller Ihres Soundkartentreibers (unter &Linux; ist dies meistens ALSA). + + + + +Verteilung der Lautstärke auf links und rechts + +Mit diesem Regler können Sie die Verteilung der Lautstärke zwischen linkem und rechtem Lautsprecher einstellen. Dieser Regler betrifft alle Geräte gleichermaßen. Standard ist die Mittelstellung. Wenn Sie den Regler nach links ziehen, vermindert dies die Lautstärke des rechten Lautsprechers und umgekehrt. Natürlich kann diese Zuordnung vertauscht sein, falls Ihre Lautsprecher falsch herum angeschlossen sind. +Für Surroundsysteme sei folgende Tatsache erwähnt: Meist regelt der Master-Regler nur die vorderen Lautsprecher. Das ist eine Beschränkung Ihres Soundkartentreiber. +Wenn Ihre Soundkarte keinen Master-Regler besitzt, wählt &kmix; ein anderes Gerät. Meistens ist dies Wave oder PCM. + + + + +Einstellungen + +Über das Menü Einstellungen&kmix; einrichten ... können diverse Einstellungen vorgenommen werden: + + + +An Kontrollleiste andocken +Wenn diese Option angewählt ist, zeigt &kmix; ein kleines Symbol in der Kontrollleiste an, wenn das Fenster von &kmix; geschlossen wird. Ansonsten wird &kmix; beim Schließen des Fensters beendet. Achtung: Nach dem Beenden von &kmix; funktionieren auch die Tastaturkurzbefehle nicht mehr. + + +Lautstärkeregler der Kontrollleiste aktivieren +Ist diese Einstellung aktiviert, kann durch normales Klicken auf das &kmix;-Symbol der primäre Lautstärkeregler bedient werden. Dieser Regler wird derzeit von &kmix; automatisch festgelegt. Ansonsten öffnet ein Klick das Fenster von &kmix;. + + +Skalenstriche anzeigen +Kurze Striche anzeigen, um die Position der Regler zu markieren. + + +Bezeichnungen anzeigen +Zeigt die Bezeichnungen der Lautstärkeregler an. Auch wenn Sie dieses Ankreuzfeld nicht markiert haben, wird die Bezeichnung angezeigt, wenn Sie mit dem Mauszeiger über dem Symbol verweilen. + + +Lautstärkeeinstellungen beim Anmelden laden +Ist diese Einstellung aktiviert, stellt &kde; die Lautstärkeeinstellungen wieder her, die beim letzten Beenden von &kde; gespeichert wurden. Wenn Ihr System dies bereits tut, werden Sie diese Option wahrscheinlich nicht benötigen. Bei einem Rechner mit mehreren Benutzern werden Sie diese Option aber verwenden. + + +Lautstärkewerte: +Wählen Sie, ob und wie die Lautstärke angezeigt wird: Keine, Absolut oder Relativ. + + +Regler-Ausrichtung: +Mit dieser Einstellung können Sie den Inhalt des &kmix;-Hauptfensters um 90 Grad drehen/ Schieberegler, Texte und vieles mehr wird gedreht. Davon ausgeschlossen sind ⪚ die Menüleiste, die Mixerauswahl (wenn vorhanden), der Rechts-Links-Abgleich und die Mehrfachauswahlen. + + + + + + + + + + +Das &kmix;-Miniprogramm + +Das Miniprogramm von &kmix; ist eine alternative Schnittstelle zu &kmix;. Es kann der &kde;-Kontrollleiste durch Auswahl von Zur Kontrollleiste hinzufügen ... im Kontrollleistenmenü oder über das Kontextmenü hinzugefügt werden. Wählen Sie Sound-Mixer und klicken Sie auf Hinzufügen, oder doppelklicken Sie Sound-Mixer. + +Sie können mit dem Miniprogramm genauso wie mit dem Hauptfenster inklusive des Kontextmenüs arbeiten. Allerdings ergeben sich aufgrund des beschränkten Platzes ein paar Änderungen: +Es ist kein Hauptmenü verfügbar. +Wenn Sie mehrere Soundkarten eingebaut haben, können Sie lediglich beim ersten Starten die zu steuernde Karte auswählen. +Es gibt kein Symbol im Systemabschnitt der Kontrollleiste. Wenn Sie dieses Symbol brauchen, müssen Sie zusätzlich &kmix; über K-MenüMultimedia&kmix; starten. +Die Symbole sind nur verfügbar, wenn die Kontrollleiste groß genug ist. +Es sind keine Bezeichnungen für die Regler verfügbar. +Die Einstellungen werden über das Kontrollleistenmenü vorgenommen. Es können sowohl die Farben, als auch die Richtung der Regler eingestellt werden. +Es gibt kein automatisches Speichern der Lautstärken. Wenn Sie dies wünschen müssen Sie &kmix; aus dem K-Menü starten. + + + + + + + +Forgeschrittene Eigenschaften von &kmix; + +Dieses Kapitel beschreibt Möglichkeiten in &kmix;, die eher fortgeschrittene Benutzer interessieren. Die meisten werden diese Funktionen nicht benötigen und können dies Kapitel überspringen. + + +Die &DCOP;-Schnittstelle + +Manchmal werden spezielle Funktionen gebraucht. Dinge wie zum Beispiel, den Lautstärkeregler von einem anderen Programm aus zu steuern oder den "Master"-Regler jeden Tag um 22 Uhr stumm schalten. Für diese Funktionen hat &kmix; eine &DCOP;-Schnittstelle. In einer Konsole können Sie mit dem Kommando dcop kmix beginnen, die &DCOP;-Schnittstelle von &kmix; zu erforschen. Die speziellen Schnittstellen in &kmix; sind: + + + +Mixer0 +Dies erlaubt Änderungen des ersten Lautstärkereglers. Es können die Lautstärken geändert, Kanäle stummgeschaltet, die Balance geändert, der Name der Regler abgefragt werden und vieles mehr. Mit dcop kmix Mixer0 können all diese Möglichkeiten erforscht werden. Es gibt weitere Einträge wie Mixer1, sofern weitere Soundkarten installiert sind. + + + +kmix-mainwindow#1 +Das Hauptfenster von &kmix; kann hiermit kontrolliert werden. Sie können es ausblenden und anzeigen, die Größe ändern, und vieles mehr. Geben Sie dcop kmix kmix-mainwindow#1 ein, um die Möglichkeiten zu erforschen. + + + + + + + +&DCOP;-Beispiele + + + +dcop kmix kmix-mainwindow#1 hide +Blendet das Fenster von &kmix; aus. dcop kmix kmix-mainwindow#1 show zeigt es wieder an. + + + +dcop kmix kmix-mainwindow#1 resize 1 1 +Ändert die Größe des Fensters auf die kleinste mögliche Größe, so das alle Elemente gerade so in das Fenster passen. + + + +dcop kmix Mixer0 mixerName +Zeigt den Namen des ersten Gerätes, zum Beispiel Sound Fusion CS46xx. + + + +dcop kmix Mixer1 setVolume 0 10 +Setzt die Lautstärke der zweiten Soundkarte, Gerät 0 auf 10%. Gerät 0 ist oft der Hauptregler, allerdings nicht immer. Wenn der erste Hauptregler der zweiten Soundkarte heruntergeregelt werden soll, verwenden Sie dcop kmix Mixer1 setMasterVolume 0. + + + +Sie können diese Kommandos direkt in einer Konsole innerhalb von &kde; ausführen. Wenn Sie &DCOP;-Kommandos irgendwo anders, zum Beispiel in einem Cron-Skript ausführen wollen, müssen Sie die Umgebungsvariable DCOPSERVER setzen (genauso, wie in der ersten Zeile der Datei ~/.DCOPServer_hostname_:0). Zum Beispiel mit: + +#!/bin/sh +DCOPSERVER=`cat /home/yourhome/.DCOPserver_yourhostname_:0 | grep local` +export DCOPSERVER +dcop kmix Mixer0 setMasterVolume 0 + + + + +Tipps und Tricks + +ALSA und OSS gleichzeitig verwenden +&kmix; kann unter &Linux; nur entweder ALSA oder OSS verwenden. Wenn Sie wirklich beide Treiber gleichzeitig benutzen müssen (was sehr selten vorkommt), können Sie folgendes machen: Beenden Sie &kmix; und fügen Sie die folgende Zeile in Ihre kmixrc-Datei in der Sektion der globalen Konfiguration ein. +MultiDriver=true +Starten Sie &kmix; erneut. Wenn Sie HilfeHardware Informationen anwählen, sollten Sie "Benutzte Soundtreiber: ALSA0.9 + OSS" und "Experimenteller Multitreibermodus aktiviert" sehen. + +Warnung: Wahrscheinlich werden Sie nun alle Lautstärkeregler doppelt angezeigt bekommen. +Es gibt für diese Art der Konfiguration keinerlei Unterstützung. + + + + + + + +Mitwirkende und Lizenz + +Hauptentwickler + + +Copyright 1996-2000 Christian Esken +Copyright 2000-2003 Christian Esken & Stefan Schimanski +Copyright 2003-2005 Christian Esken & Helio Chissini de Castro + + +Mitwirkende: + + +Christian Esken esken@kde.org +Stefan Schimanski 1Stein@gmx.de +Paul Kendall paul@orion.co.nz - &SGI;-Portierung +Sebestyen Zoltan szoli@digo.inf.elte.hu - FreeBSD-Anpassungen +Faraut Jean-Louis jlf@essi.fr - &Solaris;-Anpassungen +Nick Lopez kimo_sabe@usa.net - ALSA-Portierung +Helge Deller deller@gmx.de - &HP;-UX-Portierung +Lennart Augustsson augustss@cs.chalmers.se - *BSD-Anpassungen + + +Dokumentation Copyright 2000 &Matt.Johnston;&Matt.Johnston.mail; + +2003 von Christian Esken esken@kde.org aktualisiert, um zu &kmix; V1.91 zu passen. + +2005 von Christian Esken esken@kde.org aktualisiert, um zu &kmix; V2.2 zu passen. + +7/2005 von Christian Esken esken@kde.org aktualisiert, um zu &kmix; V2.2 zu passen. + +Basierend auf der Dokumentation von Christian Esken esken@kde.org +Übersetzung Gregor Zumstein zumstein@ssd.ethz.ch Überarbeitung der Übersetzung Frank Schütte F.Schuette@t-online.deArnold Krillearnold@arnoldarts.de +&underFDL; &underGPL; + + +Installation + + +Wie erhalte ich &kmix;? +&install.intro.documentation; + + +Voraussetzungen + +&kmix; ist nur dann sinnvoll zu benutzen, wenn Sie eine Soundkarte in Ihrem System installiert haben. &kmix; unterstützt verschiedene Soundkarten und Sound-Treiber: + + +Alle Open-Sound-System-Plattformen. Explizit getestet sind &Linux;, FreeBSD, NetBSD und BSDI. +Rechner mit &Solaris;. +Rechner mit &IRIX;. +Der ALSA-Soundkartentreiber. +Rechner mit &HP-UX;. + + + + + +Kompilierung und Installation +&install.compile.documentation; + + + +
+ + diff --git a/tde-i18n-de/docs/tdemultimedia/kmix/kmix-channel-playback.png b/tde-i18n-de/docs/tdemultimedia/kmix/kmix-channel-playback.png new file mode 100644 index 00000000000..8ab547bdd7e Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kmix/kmix-channel-playback.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kmix/kmix-channel-record.png b/tde-i18n-de/docs/tdemultimedia/kmix/kmix-channel-record.png new file mode 100644 index 00000000000..16a456ca90c Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kmix/kmix-channel-record.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kmix/kmix-window.png b/tde-i18n-de/docs/tdemultimedia/kmix/kmix-window.png new file mode 100644 index 00000000000..1c10d490b20 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kmix/kmix-window.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/krec/Makefile.am b/tde-i18n-de/docs/tdemultimedia/krec/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/krec/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/krec/Makefile.in b/tde-i18n-de/docs/tdemultimedia/krec/Makefile.in new file mode 100644 index 00000000000..2605d46c8b7 --- /dev/null +++ b/tde-i18n-de/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 = de +#>- 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=krec-keramik.png index.docbook krec-configuration.png krec-hicolor.png index.cache.bz2 Makefile.in krec-new_file_properties.png Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) krec-hicolor.png krec-configuration.png index.docbook krec-keramik.png krec-new_file_properties.png + @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 krec-hicolor.png krec-configuration.png index.docbook krec-keramik.png krec-new_file_properties.png ; 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 krec-hicolor.png krec-configuration.png index.docbook krec-keramik.png krec-new_file_properties.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in krec-hicolor.png krec-configuration.png index.docbook krec-keramik.png krec-new_file_properties.png ; 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-de/docs/tdemultimedia/krec/index.cache.bz2 b/tde-i18n-de/docs/tdemultimedia/krec/index.cache.bz2 new file mode 100644 index 00000000000..10d07fb9576 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/krec/index.cache.bz2 differ diff --git a/tde-i18n-de/docs/tdemultimedia/krec/index.docbook b/tde-i18n-de/docs/tdemultimedia/krec/index.docbook new file mode 100644 index 00000000000..ef540c81b12 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/krec/index.docbook @@ -0,0 +1,669 @@ + + + + + +]> + + + +Das Handbuch zu &krec; + + +Arnold Krille
arnold@arnoldarts.de
+
+
+
+ + FrankSchütte
F.Schuette@t-online.de
Deutsche Übersetzung
ArnoldKrille
arnold@roederberg.dyndns.org
Deutsche Übersetzung 0.5.1
+ + +2002 +2003 +2004 +Arnold Krille + +&FDLNotice; + +2004-03-01 +0.5.1 + + + +&krec; ist ein Aufnahmeprogramm für &arts;. Es kann verwendet werden, um jeden möglichen Klang, der aus dem Computer heraus oder herein kommt, aufzunehmen. Es verfügt über einige dynamische Effekte sowie eine Möglichkeit der Wiedergabe von aufgenommenen Stücken. + + + +KDE +tdemultimedia +KRec +aRts +Aufnahme +Oberfläche + + +
+ + + + +Einführung + + +Warum &krec; programmiert wurde + +Nach einiger Zeit der Arbeit mit &arts; stellte ich fest, das es außer dem Befehlszeilenprogramm artsrec keine Oberfläche zur Aufnahme gibt. Ich sollte jedoch für ein paar Freunde ein Hörspiel aufnehmen, mischen und mastern und ich wollte dafür &Linux; verwenden. Darum fing ich an &krec; zu schreiben. + + + +Was &krec; kann + +&krec; ist ein einfaches Programm. Es stellt eine Verbindung zum &arts;-Server her und leitet die empfangenen Daten in Dateien um. Diese Dateien sind in einem speziellen &krec;-Format, aber die Möglichkeit des wav-, ogg- oder mp3-Exports ist eingebaut. +Aber &krec; hat noch viel mehr Möglichkeiten. Zum Beispiel können mehrfache Aufnahmen in der selben Datei gemacht werden und sogar übereinander gelegt werden. + + + +Mehr Informationen bekommen +&reporting.bugs; &updating.documentation; + + + + +Ein erster Blick auf &krec; + + + + +Bildschirmfoto von &krec; + + + + + +Bildschirmfoto von &krec; direkt nach dem Start. + + + + + +Das Hauptfenster von &krec; im Detail + + +Oben befinden sich eine Menüleiste und zwei Werkzeugleisten. Die erste der Leisten enthält einige nützliche Einträge aus dem Dateimenü, die zweite enthält die wichtigsten Funktionen des Abspielenmenüs. +Die Mitte enthält die wichtigen Teile. An der linken Seite befindet sich ein VU-Meter, das die Lautstärke des derzeit aufzunehmenden oder abzuspielenden Audiosignals anzeigt. Kombiniert ist dies mit einem Lautstärkeregler, um direkt den Pegel zu beeinflussen. +Der Hauptteil zeigt die aktuelle Datei und besteht aus vier Teilen. Oben wird der Name der Datei angezeigt, darunter die Aufnahmesegmente in chronologischer Reihe und entsprechend skalierter Länge. Darunter befindet sich die Zeitleiste, wo die aktuelle Position angezeigt wird und durch klicken auch geändert werden kann. Als viertes sind unten zwei Elemente, die die aktuelle Position und die Länge der gesamten Datei in einem einstellbaren Format anzeigen. +Unten über das gesamte Fenster verteilt befindet sich noch eine Werkzeugleiste, die den Kompressor enthält, um die Dynamik der Aufnahme zu bearbeiten, und eine Statuszeile, die alle möglichen Nachrichten anzeigt. + + +Siehe für weitere Informationen. + + + + + +Wie nehme ich auf? + +Dieses Kapitel enthält einige Schritt-für-Schritt Anleitungen, die Ihnen den Weg zu guten Aufnahmen mit &krec; ebnen sollen. + + +Interne Musik aufnehmen + + +Der erste Schritt ist eine Aufnahme aus Ihrem beliebtesten &kde;-Medienspieler. Also starten Sie bitte &noatun;, JuK oder &kaboodle;. Es könnten auch andere Abspieler sein, allerdings müssen diese &arts; für die Ausgabe unterstützen, sonst wird das Aufnehmen etwas schwieriger. Also springen Sie bitte über Ihren Schatten und wählen Sie einen Titel, der in einem dieser drei Abspieler laufen soll. Alle drei werden übrigens bei tdemultimedia mitgeliefert, wo auch &krec; enthalten ist. +In &krec; wählen Sie nun den Audio-Manager aus dem Menü Extras. Dort sehen Sie nun mindestens eine Zeile mit &krec;::In und eine Zeile mit &krec;::Out. Die zweite Spalte zeigt, was der Eintrag für ein Typ ist, entweder Wiedergabe oder Aufnahme. Die letzte Spalte gibt an, wo der Sound für diesen Eintrag hin geht oder herkommt. Derzeit ist (sollte?) der &krec;::In mit in_soundcard verbunden, was den Eingang Ihrer Soundkarte darstellt. Da die Aufnahme aber von einem Wiedergabeprogramm erfolgen soll und dieses nach out_soundcard ausgibt, klicken wir auf &krec;::In, um es auf eine andere Quelle um zu schalten. Wählen Sie out_soundcard in dem nun erscheinenden Fenster und klicken Sie Ok. Um mehr über den Audio-Manager zu erfahren sehen sie bitte in nach. +Nun sollte das VU-Meter in &krec; im Takt der Musik, die Sie hören, auf und ab wackeln. Wenn Sie nichts hören, sollte das VU-Meter nicht ausschlagen. +Öffnen Sie nun eine neue Datei entweder indem Sie das erste Symbol der Werkzeugleiste klicken oder indem Sie Neu aus dem Menü Datei wählen. Bestätigen Sie die Qualitätseinstellungen für diesen ersten Versuch oder lesen Sie um mehr darüber zu erfahren. +Wählen Sie Aufnahme aus dem Abspielen Abspielen oder drücken Sie die R-Taste. Wenn die Aufnahme fertig ist, wählen Sie Stopp aus dem selben Menü oder nutzen Sie die S-Taste. +Das Speichern funktioniert auf die gewohnte Weise, siehe , wenn Sie sich für die Exportfunktionen interessieren. + + +Das war es schon! Nun können Sie die Aufnahme nocheinmal anhören oder Exportieren, vergessen Sie aber nicht, zum Anfang der Aufnahme zurück zu gehen. + + + + +Aufnahmen vom Line-In oder dem Mikrofoneingang + +Das Aufnehmen von Quellen außerhalb des PC's ist ein bisschen komplizierter und betrifft mehr Programme und Geräte. Für das weitere Vorgehen wird angenommen, dass die Hardware korrekt installiert ist, die Treiber so arbeiten, wie sie sollen und dass Sie mit Hilfe von &kmix; in der Lage sind, die Gerätelautstärken zu kontrollieren. In &kmix; können auch Kanäle zum Aufnehmen ausgewählt werden, was bedeutet, dass deren Signal an den Analog-Digital-Konverter (kurz DAC) gesendet wird und dann vom Treiber ausgelesen werden kann. Das funktioniert leider bei allen Soundkarten ein wenig anders, so dass Sie wohl nicht am Probieren und Experimentieren vorbei kommen ... +Die zweite wichtige Grundlage ist, dass &arts; im Fullduplexmodus laufen muss. Das bedeutet, dass &arts; gleichzeitig von der Soundkarte liest und auf sie schreibt. Starten Sie also &kcontrol; und ändern Sie gegebenenfalls die Einstellungen des Soundsystems (oder Sie drücken Alt+F2 und geben kcmshell arts ein). Stellen Sie auf der zweiten Registerkarte sicher, dass das Häkchen bei Fullduplex aktiviert ist. Drücken des Ok-Buttons startet &arts; mit den neuen Einstellungen neu, Sie müssen nun auch &krec; neu starten. +Nach diesen Vorbereitungen sollte das VU-Meter (siehe ) entsprechend des Signals, das Sie Aufnehmen wollen und in &kmix; ausgewählt haben, flackern. Nun den Pegel anzupassen ist entscheidend für die Qualität der Aufnahmen. Wenn die Verstärkung innerhalb der Soundkarte zu groß ist, entstehen digitale Verzerrungen, da der ADAC nur Werte zwischen einem Minimum und einem Maximum verarbeiten kann und ein Signal, das zu laut ist, wird digital abgeschnitten, was die Aufnahme ruiniert. Auf der anderen Seite aber kommt zu viel Rauschen mit in die Aufnahme, wenn die Lautstärke zu niedrig ist. Sie müssen so also einen Mittelweg wählen, so dass das Signal nicht zu laut ist und verzerrt wird, aber auch nicht zu leise ist, dass es im Rauschen der Geräte verloren geht. Meistens ist es von Vorteil, etwas Luft nach oben zu lassen. +Nun kann der Pegel in &krec; ein weiteres Mal angepasst werden, was dann eine Softwareverstärkung ist. Hier ist es angebracht, den Kompressor zum Ausgleichen der Unterschiede zwischen ruhigen und lauteren Passagen zu verringern. Mehr Informationen können in gefunden werden. +Die verbleibenden Schritte sind die selben, wie in von Schritt vier an. Wenn Sie mit dem betreffenden Kapitel begonnen haben, sollten Sie den Rest also schon können. + + + + + +&krec; erklärt + +Dieses Kapitel beschreibt einige Teile und Funktionen von &krec; im Detail und gibt einige Tipps zur Benutzung. Die Einträge sind im englischen Original alphabetisch (also in der Übersetzung zufällig) sortiert, nicht nach Wichtigkeit. + + +Der Audio-Manager +Der Audio-Manager wird benötigt um die Ausgänge verschiedener Programme mit existierenden oder neuen Bussen zu verbinden. Ein Bus ist eine Art virtueller Signalverteiler. Jeder Wiedergabe- und Aufnahmeeintrag kann mit genau einem Bus verbunden werden, jedoch können auf einem Bus mehrere Programme liegen. Ein Beispiel: Die Ausgabe von &noatun; kann auf den Hauptausgangsbus oder jeden anderen Bus gelegt sein. Aber mehrere &noatun;s können alle auf den Hauptausgang gelegt sein. + + +Das Hauptfenster des Audio-Managers +Es enthält drei Spalten: + +Der Name des Eintrags, der da Klänge von sich gibt oder aufnimmt. +Der Typ des Eintrags, entweder Wiedergabe oder Aufnahme. +Der Bus, an den der Eintrag angeschlossen ist. + +Klicken auf einen Eintrag öffnet den Busdialog für diesen Eintrag. + + +Der Busdialog +Der Hauptteil zeigt alle derzeit existierenden Busse. Wählen Sie einen davon um Audiodaten auf ihn zu schicken oder von ihm zu bekommen. Unten können Sie neue Busse erstellen um diese dann für Verbindungen zu nutzen. +Um von einem &arts;-fähigen Wiedergabeprogramm aufzunehmen und gleichzeitig zu hören, was aufgenommen wird, erstellen Sie einen neuen Bus (zum Beispiel Test), verbinden das Wiedergabeprogramm mit diesem Bus (nun werden Sie vermutlich nichts mehr hören), verbinden des &krec;::In mit dem neuen Bus und schalten Durchspielen ein. + + + + + +Der Kompressor +Wenn Sie mit einem Mikrofon aufnehmen, werden Sie wahrscheinlich bemerkt haben, dass die Lautstärke starken Schwankungen von sehr leise bis fast verzerrt unterworfen ist, speziell Gesang oder Sprache. Um dies auszugleichen werden Kompressoren eingesetzt. Einfach gesagt, macht der Kompressor alles, was lauter als ein eingestellter Schwellenwert (threshold) ist, um einen gegebenen Faktor Verhältnis (ratio) leiser. Beachten Sie, dass der Schwellenwert logarithmisch geregelt wird, eine mittlere Einstellung des Reglers entspricht einer ziemlich niedrigen Schwelle, aber das ist in der Anwendung ziemlich nützlich. Bemerkt sei außerdem, dass der Verhältnisregler seinen größten Wert ganz nach links gedreht hat, die ganz rechte Stellung des Potis bedeutet keine Kompression. Da dieser Vorgang die Lautstärke des Signals herabsenkt, gibt es einen Ausgabe-Regler, um das Signal wieder lauter zu machen. Anstieg und Abfall regeln die Zeit, nach der der Kompressor reagiert (die Zeit, nachdem das Signal den Schwellenwert überschreitet) und die Zeit, die der Kompressor noch arbeitet nachdem das Signal wieder unter dem Schwellenwert ist. +Man kann einen Test durchführen, indem man mit Durchspielen in das Mikrofon spricht. Die Unterschiede sind klar zu hören. + +Tipps zum Umgang mit dem Kompressor +Dies sind wirklich nur Tipps. Am Ende zählt nur, wie es klingt. Wenn es also so klingt, wie Sie sich das vorstellen, ist es wohl die richtige Einstellung. Und zögern Sie nicht, ein wenig zu experimentieren. + +Normale SpracheEine Stimme in Radio oder Fernsehen ist meist sehr heftig komprimiert, denn das Problem bei Sprache ist, dass zwar vielleicht der Pegel am Anfang des Satzes gut ist, aber dann nicht am Ende. Zusätzlich sind die Wortenden meist leiser als die Anfänge der Wörter. Das macht es für die meisten Anwendungen unmöglich eine unkomprimierte Stimme zu verwenden. Beispieleinstellungen: Kurzer Anstieg, mittlere Abfallzeit, niedriger Schwellenwert, sehr großes Verhältnis. +Mastering 1: Den Pegel begrenzen (Limiter)Um lediglich Spitzen zu vermeiden ohne die gesamte Dynamik zu komprimieren, nutzen Sie einen hohen Schwellenwert, ein hohes Verhältnis, eine kurze Anstiegszeit und eine kurze bis mittleres Abfallzeit. Das schützt die Aufnahmen von einigen internen digitalen Verzerrungen und, wenn der Schwellenwert ein wenig weiter unten ist, beseitigt es seltene (und wahrscheinlich unerwünschte) Spitzen und gibt mehr Raum für das Aufnahmesignal. +Mastering 2: Wirkliche EndbearbeitungEchte Endbearbeitung von Musik ist sehr kompliziert und hängt total von Ihren Hörgewohnheiten und der zu bearbeitenden Musik ab. Meistens wird eine schnelle Anstiegszeit genutzt, damit der Pegel mit dem Bassdrumschlag reduziert wird. Auf der anderen Seite ist ein ständiges Auf- und Abpumpen des Pegel bei jedem Bassdrumschlag unerwünscht, also sollte eine längere Abfallzeit gewählt werden. Das Kompressionsverhältnis sollte nicht zu groß sein. Idealerweise würde man hinter den Kompressor noch einen Limiter einschleifen, um Verzerrungen und Übersteuern zu vermeiden. +Einzelne InstrumenteDie nötigen Einstellungen variieren je nach Instrument. Während der Aufnahmen ist es ratsam, eine Limiter-Einstellung zu wählen. +Endgültiger TippBenutzen Sie Ihre Ohren und üben und probieren Sie. Alles ist erlaubt, wenn es gut klingt. + + + + + + +Konfiguration +Zwei Seiten werden in der Konfiguration angezeigt. Die erste enthält allgemeine Einstellungen und wird hier erklärt. Die Zweite ist für die Standardqualitätseinstellungen und ist gleich der in beschriebenen. + +Generelle Einstellungen + + + + + +Bearbeitet generelle &krec;-Einstellungen. + + + +Der erste Teil sind Einstellungen für die Anzeige von Zeiten und Positionen. Der Stil "Reine Samples" zeigt einfach die Nummer der Samples, der nächste zeigt (optional) Stunden, Minuten, Sekunden und Samples. Der dritte Stil ist gleich dem zweiten, allerdings zeigt er Frames statt der Samples. Der vierte Stil zeigt die Größe in Megabyte und Kilobyte und ist nützlich, um den verbrauchten Plattenplatz zu kontrollieren. Rechts der Anzeigestile können die Anzahl der Frames, die in einer Sekunde enthalten sind, eingestellt werden. +Das Ankreuzfeld darunter lässt alle Zeitanzeigen etwas gesprächiger werden und die Einheiten mit anzeigen. +Das nächste Ankreuzfeld bringt den Tipp des Tages beim Programmstart wieder. Der Knopf darunter zeigt alle Nachrichten wieder an, bei denen "Diese Meldung nicht mehr anzeigen" aktiviert war, die meisten dieser Nachrichten stammen von den Exportfunktionen. + + + +Export +
+Ein Anonymer &krec;-Fan +Dein Programm ist echt gut, ich benutze es den ganzen Tag, aber es fehlt wirklich eine Exportfunktion zu wav/mp3/ogg! +
+Hier ist sie: Die definitive Exportfunktion für &krec;. Die verfügbaren Exportformate variieren nach den zur Kompilierzeit gefundenen Bibliotheken. Alle derzeit verfügbaren sind im Folgenden beschrieben. +Das gewünschte Exportmodul wird per Dateiname ausgewählt. Benutzen Sie Datei exportieren ... aus dem Menü Datei, wählen Sie einen Dateinamen samt Endung für die zu exportierende Datei und das Modul wird automatisch anhand der Endung bestimmt. Die Liste der Endungen in diesem Dialog zeigt gleichzeitig, welche Module zur Verfügung stehen. +Um die generelle Bedienung des Exports zu verstehen: Technisch gesehen arbeitet das Exportieren wie das Wiedergeben. Das heißt, dass erst die Position, ab der Exportiert werden soll, angewählt werden muss. Auch bedeutet das, dass Sie den Fortschritt des Exportierens daran sehen können, das sich der Positionsmarker vorwärts bewegt. Und das bedeutet, dass es in der Zukunft möglich sein wird, nur eine Auswahl zu Exportieren, genauso, wie nur eine Auswahl gespielt wird. + +Exportieren in Wavedateien (*.wav) +Das einfachste Exportmodul. Es exportiert Ihre &krec;-Datei in eine .wav-Datei mit den Qualitätseinstellungen, die für die gesamte Datei gemacht worden sind. + + +Exportieren in MP3-Dateien (*.mp3) +Wahrscheinlich die meistgewünschte Exportfunktion. Dieses Modul exportiert Ihre &krec;-Datei in eine .mp3-Datei. +Die Qualitätseinstellungen, die in &kcontrol; im Abschnitt Sound & Multimedia / Audio-CDs gemacht sind, werden auch hier in &krec; genutzt, da die gleichen Bibliotheken genutzt werden, wie die audiocd:/-Funktion. + + +Exportieren in OGG-Dateien (*.ogg) +Dieses Modul exportiert Ihre &krec;-Datei in eine .ogg-Datei. +Die Qualitätseinstellungen, die in &kcontrol; im Abschnitt Sound & Multimedia / Audio-CDs gemacht sind, werden auch hier in &krec; genutzt, da die gleichen Bibliotheken genutzt werden, wie die audiocd:/-Funktion. + +
+ + +Durchspielen +Für alle, die gerne hören, was sie aufnehmen, gibt es im Menü Wiedergabe die sehr nützliche Durchspielen-Option. Diese Option sollten Sie so oft wie möglich verwenden, speziell wenn ein Kompressor oder andere Effekte verwendet werden und Sie kontrollieren wollen, was genau aufgenommen wird. +Stellen Sie jedoch sicher, dass Sie keine Rückkopplung erzeugen, indem Sie von out_soundcard aufnehmen und Durchspielen aktivieren. Eine solche Schleife ist zu viel für &arts; und verlangsamt Ihren Computer sehr stark! Es kann passieren, dass Sie &arts; abrupt beenden müssen ... Der Grund ist, dass &arts; für jedes Sample (eigentlich für Sampleblöcke) ein komplettes Audionetz durchrechnet, und wenn ein Sample über eine Schleife aus sich selber berechnet werden soll, müsste &arts; mehr als möglich ist berechnen. + + + +Qualitätseinstellungen + +Die Einstellungen für neue Dateien + + + + + +Dies ist der Dialog um die Einstellungen für neue Dateien vorzunehmen. + + + +Dieser Dialog wird angezeigt, wenn Sie eine neue &krec;-Datei erstellen. Hier können Sie ein paar Qualitätseinstellungen für die Aufnahmen vornehmen. Alle diese Einstellungen beeinflussen die letztendliche Größe der Datei. +Die Samplingrate sagt dem Audiosystem, wie viele Samples während einer Sekunde aufgenommen werden sollen und wird in Hertz (Hz) beziehungsweise in Kilohertz (kHz) gemessen. Je höher die Rate ist, desto höhere Frequenzen können aufgezeichnet werden. Da mindestens zwei Samples benötigt werden, um eine Sinus-Welle nach zu bauen, ist die maximale Frequenz der Aufnahme halb so groß, wie die Samplingrate. Das menschliche Ohr kann Frequenzen bis zwischen 10kHz und 20kHz hören, abhängig vom Alter. Kleine Kinder kommen wahrscheinlich nahe an 20kHz, während normale Erwachsene bis etwa 15kHz hören und ältere Menschen nur etwa bis 10kHz. Aber selbst höhere Frequenzen, die eigentlich nicht mehr gehört werden können, haben Einfluss auf das, was gehört und gefühlt wird (Stichwort: Psychoakustik). +Die Anzahl der Kanäle kann, in Abhängigkeit von der Aufnahmeaufgabe, frei gewählt werden. Wenn ein Monomikrofon ohne Stereoeffekte verwendet wird, reicht die Verwendung von Mono, ohne dass es zu Datenverlusten kommt. +Im letzten Teil wird festgelegt, wie viele Bits pro Sample verwendet werden, mögliche Werte sind 8 oder 16 Bit. Je mehr Bit verwendet werden, um so mehr Stufen stehen zwischen dem minimalen und dem maximalen Signal zur Verfügung. 8 Bit sind ein Byte, so dass man auch von ein und zwei Byte Samples reden kann. +Der Platz, den eine Aufnahme belegen wird, kann recht einfach errechnet werden: Es ist die Samplingrate multipliziert mit der Anzahl der Kanäle multipliziert mit der Anzahl der Bytes pro Sample multipliziert mit der Anzahl der Sekunden der Aufnahme. +Die Größe einer Aufnahme in CD-Qualität berechnenFür eine Minute (60 Sekunden) Audioaufnahme in CD-Qualität (44100Hz, 16 Bit, Stereo) werden 44100 * 2 * 2 * 60 = 10.584.000 Bytes = 10335,938 Kilobytes benötigt. Das sind etwa 10 MB Daten pro Minute. +Nutzen Sie immer die beste benötigte Qualität für Aufnahmen! Das Reduzieren der Qualität im Nachhinein ist problemlos jederzeit möglich, aber das Erhöhen der Qualität wird nicht die gewünschten Erfolge bringen, da dafür mehr Daten benötigt werden, als aufgenommen wurden. +Durch Selektieren des letzten Eintrags über dem Knopf werden die eingestellten Werte als Standardeinstellung für alle weiteren neuen Dateien verwendet, ohne das dieser Dialog angezeigt wird. +Da der gleiche Dialog auch in der Konfiguration verfügbar ist, kann der Eintrag "Beim Erstellen ..." auch dort geändert werden um diesen Dialog für alle neuen Dateien wieder anzuzeigen. + + + +VU-Meter +Während der Kompressor vielleicht nicht für jede Aufgabe nötig ist, ist das VU-Meter mit seiner eingebauten Lautstärkesteuerung das wichtigste Teil für Aufnahmen mit &krec;. Es zeigt den aktuellen Pegel der Aufnahme nach den genutzten Effekten und nach der Lautstärkeänderung dieses Kontrollelements. Wenn die Anzeige die meiste Zeit tief Rot ist, ist die Aufnahme wahrscheinlich gestört und klingt nicht gut. Wenn die Anzeige nur im Bereich der unteren 2% wackelt, wird in der Aufnahme vermutlich nicht viel zu hören sein. +Für gute Aufnahmen sollte der Pegel die meiste Zeit zwischen -12dB und 0dB schwanken. +Benutzen Sie den Kompressor um die Dynamik Ihrer Aufnahmen zu bearbeiten. Sehen Sie dafür in nach. + + +
+ + + + +Mitwirkende und Lizenz +&krec; +Copyright für das Programm 2002-2003 Arnold Krillearnold@arnoldarts.de +Copyright für die Dokumentation 2002-2004 Arnold Krille arnold@arnoldarts.de +Frank Schütte F.Schuette@t-online.deArnold Krillearnold@roederberg.dyndns.org +&underFDL; &underGPL; + + +Installation + + +Wie man &krec; bekommt +&install.intro.documentation; + + +Voraussetzungen +Zur erfolgreichen Verwendung von &krec; 0.5.1 benötigt man &kde; 3.3. +&krec; sollte sich im Paket tdemultimedia befinden. Da dieses Paket sowohl ein lauffähiges &kde; als auch &arts; voraussetzt, sollte alles in Ordnung sein. + + + +Kompilierung und Installation +&install.compile.documentation; + + + +&documentation.index; +
+ + diff --git a/tde-i18n-de/docs/tdemultimedia/krec/krec-configuration.png b/tde-i18n-de/docs/tdemultimedia/krec/krec-configuration.png new file mode 100644 index 00000000000..353bb5f682f Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/krec/krec-configuration.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/krec/krec-hicolor.png b/tde-i18n-de/docs/tdemultimedia/krec/krec-hicolor.png new file mode 100644 index 00000000000..dabc7f52ddd Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/krec/krec-hicolor.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/krec/krec-keramik.png b/tde-i18n-de/docs/tdemultimedia/krec/krec-keramik.png new file mode 100644 index 00000000000..bf764e1353f Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/krec/krec-keramik.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/krec/krec-new_file_properties.png b/tde-i18n-de/docs/tdemultimedia/krec/krec-new_file_properties.png new file mode 100644 index 00000000000..d45eec83b18 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/krec/krec-new_file_properties.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/Makefile.am b/tde-i18n-de/docs/tdemultimedia/kscd/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kscd/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/Makefile.in b/tde-i18n-de/docs/tdemultimedia/kscd/Makefile.in new file mode 100644 index 00000000000..482d152bc27 --- /dev/null +++ b/tde-i18n-de/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 = de +#>- 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 kscd13.png kscd14.png index.cache.bz2 kscd12.png kscd16.png kscd11.png kscd3.png kscd.png Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) kscd13.png kscd.png kscd3.png index.docbook kscd14.png kscd11.png kscd16.png kscd12.png + @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 kscd13.png kscd.png kscd3.png index.docbook kscd14.png kscd11.png kscd16.png kscd12.png ; 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 kscd13.png kscd.png kscd3.png index.docbook kscd14.png kscd11.png kscd16.png kscd12.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in kscd13.png kscd.png kscd3.png index.docbook kscd14.png kscd11.png kscd16.png kscd12.png ; 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-de/docs/tdemultimedia/kscd/index.cache.bz2 b/tde-i18n-de/docs/tdemultimedia/kscd/index.cache.bz2 new file mode 100644 index 00000000000..b3e433ee684 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kscd/index.cache.bz2 differ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/index.docbook b/tde-i18n-de/docs/tdemultimedia/kscd/index.docbook new file mode 100644 index 00000000000..2b0a8e4e13f --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/kscd/index.docbook @@ -0,0 +1,1212 @@ + + + + + +]> + + + + +Das &kscd;-Handbuch + + + +Jonathan Singer
jsinger@leeta.net
+
+ +David White
a9403784@unet.univie.ac.at
+
+
+ +Bernd Johannes Wuebben
wuebben@kde.org
+Entwickler +
+ +Dirk Forsterling
milliByte@gmx.net
+Entwickler +
+ +Dirk Foersterling
milliByte@gmx.net
+Entwickler +
+ +Lauri Watts
lauri@kde.org
+Gegengelesen von +
+GregorZumstein
zumstein@ssd.ethz.ch
Übersetzung
FrankSchütte
f.schuette@t-online.de
Überarbeitung der Übersetzung
+
+ + +20002004 +J Singer + + +&FDLNotice; + + +2002-10-07 +1.4 + + +&kscd; ist ein kleiner, schneller Audio-CD-Spieler für &UNIX;-Systeme. Er unterstützt CDDB. + + + +KDE +tdemultimedia +kscd +Musik +CD +Audio + + +
+ + +Einführung + +&kscd; ist ein schneller &CD;-Spieler mit CDDB-Unterstützung für Unix. &kscd; steht für The KDE Project's small/simple CD player (auf Deutsch also: kleiner/einfacher &CD;-Spieler des KDE Projekts). + +Neu: Das workman2cddb.pl-Perlskript erlaubt es Benutzern von Workman, bequem auf &kscd; umzusteigen, ohne Daten neu eingeben zu müssen. + +Ich hoffe dass Ihnen das &CD;-Wiedergabeprogramm gefällt, + +Bernd Johannes Wuebben + +wuebben@kde.org + + +Unterstützte Plattformen + +&kscd; unterstützt die folgenden Systeme: + + +Linux +FreeBSD +NetBSD +BSD386 +SUN +Solaris (mit cdda-Unterstützung) +HP-UX +SGI Irix (mit cdda-Unterstützung) +Sony NEWS +OSF/1 +Ultrix + + +und sollte sich auch auf anderen Systemen mit wenigen Änderungen kompilieren lassen. + + + + + + +Hauptfenster + + +Grundfunktionen + + +Das &kscd;-Hauptfenster + + + +Das &kscd;-Hauptfenster + + + +Wenn Sie &kscd; starten, sollten Sie so etwas sehen. Die Kontrollelemente dieses Fensters werden unten beschrieben. + + +Hauptkontrollleiste + + +Das Kontrollfeld + + +Hauptkontrollleiste + + + +Die Funktion dieser Knöpfe sollte jedem bekannt sein, der je einen CD-Spieler bedient hat. + +Der oberste Knopf in der obenstehenden Abbildung startet das Abspielen bzw. hält es an. Der linke Knopf in der zweiten Reihe stoppt das Abspielen der &CD;, während der rechts davon die &CD; auswirft. Die Knöpfe in der in der dritten Reihe springen zum Anfang des vorherigen und des nächsten Stückes. Der unterste linke Knopf schaltet die Zufallswiedergabe um, während der rechte die Dauerwiederholung schaltet, so das die &CD; nach dem letzten Titel wieder von vorne startet. + + + + +Statusanzeige + + +Die Statusanzeige + + +Statusanzeige + + + +Von links nach rechts betrachtet finden sich folgende Angaben: Die Hauptzeitanzeige (siehe weiter unten für eine Beschreibung der verschiedenen Zeitanzeigemodi), der Status des &CD-ROM;-Laufwerks, die Gesamtspielzeit der Audio-&CD;, die aktuelle Lautstärkeeinstellung und die Nummer des gegenwärtigen Stücks bzw. die Gesamtzahl der Stücke (Nr./Ges.). Die untersten beiden Zeilen geben den Künstler und den &CD;-Titel an, darunter den Titel des Stücks, vorausgesetzt, ein passender Eintrag existiert in der lokalen &CD;-Datenbank oder in der des Netzwerks (CDDB). + +Dieser Knopf schaltet zwischen den möglichen Zeitanzeigemodi um. Standardmäßig zeigt &kscd; die verstrichene Zeit des aktuellen Stücks an, falls gerade die Wiedergabe einer &CD; eingeschaltet ist und entweder --:-- oder 00:00, falls keine &CD; abgespielt wird. Wiederholtes Drücken des Knopfes schaltet zwischen den möglichen Anzeigemodi verbleibende Zeit, gesamte bisher verstrichene Zeit und gesamte verbleibende Zeit um. + + + +Der Knopf <guibutton +>Einrichtung</guibutton +> + + +Der "Informationen"-Knopf + + +Der "Informationen"-Knopf + + + +Dieser Knopf öffnet das Hauptmenü von &kscd;. In diesem können Sie &kscd; für Ihr System konfigurieren. Genauere Informationen zur Konfiguration von &kscd; finden Sie unter &kscd; konfigurieren. +Mit diesem Knopf können Sie Informationen über den Künstler im Internet finden. Sie können Aufführungstermine, Verkaufsinformationen oder andere Informationen abrufen, indem Sie den Knopf betätigen und den entsprechenden Eintrag im erscheinenden Menü auswählen. +In diesem Menü können Sie diese Hilfe öffnen, Probleme und Wünsche berichten, mehr über &kscd; und &kde; lernen und &kscd; beenden. + + + +Der Knopf <guibutton +>CDDB</guibutton +> + + +Der Knopf CDDB + + +Der Knopf CDDB + + + +Dieser Knopf öffnet die Eingabeeditorleiste von CDDB (Compact Disc Data Base). + +Die CDDB kann ihre &CD; identifizieren und gegebenenfalls die Stückliste dieser &CD; herunterladen oder aus dem lokalen Dateisystem einlesen. Genaueres zur Benutzung dieses Werkzeugs erfahren Sie im Abschnitt &CD;-Datenbankeditor. + + + + + + +Der Lautstärkeknopf + + +Der Lautstärkeknopf + + +Der Lautstärkeregler + + + +Dieser Regler steuert die Wiedergabelautstärke der &CD;. Rechts bedeutet lauter und links leiser. Wenn Sie Ihre &CD; mit Hilfe ihrer Soundkarte wiedergeben, beeinflusst die Einstellung des Soundkarten-Mixers die Lautstärke ebenfalls. + + + + +Die Stückauswahl + + +Die Stückauswahl + + +Die Stückauswahl + + + +In diesem Listenfeld kann man ein Stück direkt zur Wiedergabe auswählen. + + + + + + +Einrichtung von &kscd; + +Das Einrichtungshauptfenster + +Das Einrichtungshauptfenster von &kscd; ist ein Karteikartendialog mit drei Abschnitten. + + +CD-Spieler +FreeDb-Abfrage +FreeDb-Übertragung + + + + + +Die Karteikarte <guilabel +>CD-Spieler</guilabel +> + + +Die Karteikarte CD-Spieler + + +Die Karteikarte &kscd;-Einstellungen + + + +Die Felder LED-Farbe und Hintergrundfarbe zeigen die aktuellen Farben der Statusanzeige an. Klicken Sie auf die Farbbalken zur Änderung der Farben. + + + + +An Kontrollleiste andocken veranlasst &kscd; in der &kicker;-Leiste zu erscheinen. + +Stellen Sie im Feld Intervall überspringen das gewünschte Zeitintervall in Sekunden ein, das beim Klicken auf den Knopf <Zeit> Sekunden vorwärts bzw. <Zeit> Sekunden rückwärts übersprungen werden soll. + +Abspielen beim Schließen der Schublade veranlasst den automatischen Start der Wiedergabe beim Einlegen einer &CD;, ohne das der Knopf Wiedergabe gedrückt wird. + +CD beim Beenden auswerfen veranlasst den automatischen Auswurf der &CD; am Ende der Wiedergabe. + +Abspielen beim Verlassen beenden veranlasst &kscd; die Wiedergabe einer &CD; beim Programmende automatisch anzuhalten. + + + +Das Feld CD-ROM-Gerät enthält den Namen des &CD-ROM;-Laufwerkes, das für die Wiedergabe von &CD;s verwendet wird. Die Standardeinstellung ist /dev/cdrom. Die Rechte dieses Gerätes müssen so eingestellt sein, das es jeder zum Lesen öffnen kann. Eine Änderung dieser Rechte erfordert in den meisten Fällen Superuser-Rechte. Die Änderung kann von der Kommandozeile oder in &konqueror; im Superuser-Modus vorgenommen werden. + +Der Knopf Hilfe öffnet das Inhaltsverzeichnis der &kscd;-Hilfeseiten. OK speichert die aktuellen Einstellungen und beendet den Einrichtungsdialog; Abbrechen beendet den Dialog ohne speichern. + + + +Die Karteikarte <guilabel +>freedb-Abfrage</guilabel +> + +Die Karteikarte freedb-Abfrage des Einrichtungsdialoges + + +Die Karteikarte freedb-Abfrage des Einrichtungsdialoges + + + +Die Karteikarte freedb-Abfrage ermöglicht die Einstellung der CDDB-Funktionen von &kscd;. + +Die Modus-Option konfiguriert, wie CDDB-Abfragen ausgeführt werden.Die Einstellung Nur lokal bedeutet, das nur die lokalen Informationen auf Ihrem Computer genutzt werden. Lokal und Fremdrechner sucht alle Informationen, die nicht lokal vorhanden sind, im Internet. Nur Fremdrechner sucht alle Informationen direkt aus dem Internet. Die Zeit, bis die Suchanfrage aufgegeben wird, kann eingestellt werden. + + +Der Rahmen CDDB-Server erlaubt verschiedenen Einstellungen des freedb-Servers. Geben Sie die Adresse des Servers und den Port an. Sie können auch einen Eintrag aus der Liste auswählen, der dann im Feld darüber erscheint. Die Art der Verbindung (CDDB oder HTTP) kann auch gewählt werden, wobei Sie dies sehr wahrscheinlich nicht ändern sollten. Zwischenspeicher-Ordner enthält eine Liste mit Ordnern, in denen die CDDB-Einträge gespeichert werden. + + + + + +Die Karteikarte <guilabel +>Übertragen</guilabel +> + + +Die Karteikarte Übertragen + + + + + +Die Karteikarte Übertragen erlaubt Einstellungen, um eigene, neue Einträge an CDDB-Server zu übertragen. Das ist nützlich, falls Sie Ihr System nicht als Server konfiguriert haben. Aktivieren Sie Übertragung via SMTP aktivieren, um dies zu nutzen. + +Man kann durch Markierung von E-Mail-Adresse aus dem Kontrollzentrum benutzen diese Adresse verwenden. Falls man &kcontrol; öffnen möchte, um diese Adresse zu ändern, kann man auf E-Mail-Adresse einrichten klicken. Das ändert die E-Mail-Adresse für alle &kde;-Anwendungen, die diese Einstellung verwenden, nicht nur die von &kscd;. + +Die Karteikarte SMTP ermöglicht die Einstellung einer Verbindung zu einem Mail-Server für die Versendung neuer CDDB-Einträge. Diese Einstellungen sind nützlich, wenn Ihr eigenes System nicht als Mail-Server konfiguriert ist. Markieren Sie zur Aktivierung dieser Fähigkeit Übertragung via SMTP ermöglichen. Tragen Sie die Adresse des SMTP-Servers in das obere linke und die Portnummer (typischerweise 25) in das Feld Port: ein. + + +Der Knopf Hilfe öffnet das Inhaltsverzeichnis der &kscd;-Hilfeseiten. OK speichert die aktuellen Einstellungen und beendet den Einrichtungsdialog; Abbrechen beendet den Dialog ohne speichern. + + + + + + +Der <guilabel +>CD-Datenbank Editor</guilabel +> + + +Der CD-Datenbank Editor + + +Der CD-Datenbank Editor + + + +Der &CD;-Datenbank Editor erlaubt die Veränderung, das Herunterladen, die Kommentierung und das Heraufladen von CDDB (Compact Disc Data Base)-Einträgen. + +Falls die die &CD; in Ihrem &CD-ROM;-Laufwerk entweder in Ihrem lokalen CDDB-Verzeichnisbaum (siehe auch CDDB im Abschnitt Einrichtung) oder in der freedb-Datenbank gefunden wurde, werden der Künstlername und der &CD;-Titel in den Feldern Künstler und Titel und eine Stückliste im Feld Stücke angezeigt. Andernfalls sehen Sie eine Liste der Stücknummern und Stücklängen ohne Titel. + +Sie können einen Kommentar für die gesamte CD mit Zusatz unterhalb von Titel oder für ein bestimmtes Stück rechts von Stücke ebenfalls unter Zusatz hinzufügen. Falls man ein Stück im Auswahlfeld Stücke markiert, erscheint, falls vorhanden, der zugehörige Titel im Feld Titel. Nun kann man einen Titel für das Stück eintragen oder den vorhandenen nach eigenen Wünschen ändern. Durch Drücke auf Enter auf der Tastatur werden die Änderungen in das Auswahlfeld übernommen. + +Nachdem Sie alle Stücke mit den richtigen Stücktiteln versehen und die Felder Künstler und Titel ausgefüllt haben, können sie durch Klicken auf Übertragen Ihre Einträge per E-Mail an freedb abschicken. + +Sie werden nach einer Kategorie für den Eintrag gefragt. Das Feld CD-Kennung zeigt die 32-Bit-ID an, der von der freedb zur Identifikation der CD verwendet wird. Oberhalb der ID befindet sich der Eintrag für die freedb-Kategorien. Die Kategorien entsprechen den Unterverzeichnissen des Verzeichnisses, das Sie als freedb-Basisverzeichnis auf der Karteikarte freedb des &kscd;-Einrichtungsfensters eingetragen haben. + +Das Feld Gesamtzeit: zeigt die gesamte Spielzeit der &CD; an. + +Durch Klicken auf Informationen holen können Sie einen CDDB-Eintrag aus dem Internet laden. Der Knopf Abbrechen schließt den &CD;-Datenbank Editor ohne zu speichern. + + + + +Verwendung von &kscd; in der &kde;-Kontrollleiste + + +Verwendung von &kscd; in der &kde;-Kontrollleiste + + +Verwendung von &kscd; in der &kde;-Kontrollleiste + + + +Wenn das Ankreuzfeld An Kontrollleiste andocken markiert ist, wird eine &kscd; Miniprogramm in der Kontrollleiste angezeigt. Dieses Miniprogramm ist auf jeder Arbeitsfläche verfügbar. Durch Klicken auf die rechte Maustaste erscheint ein Menü mit Funktionen zur Kontrolle der &CD;-Wiedergabe durch &kscd;. Ein Klick mit der linken Maustaste auf das Miniprogramm versteckt das Hauptfenster von &kscd;. Wenn das Hauptfenster versteckt ist, stellt ein zweiter Klick mit der linken Maustaste das Fenster wieder her. + +Um genau zu sein, wird das Miniprogramm in der Programm-Andockleiste angezeigt. Wenn kein Miniprogramm erscheint, wenn &kscd; minimiert ist, dann haben Sie die Leiste entfernt. Um sie hinzuzufügen, klicken Sie mit der rechten Maustaste auf einen freien Bereich der Kontrollleiste und wählen Sie Hinzufügen Erweiterung Programm-Andockleiste + + + + +<acronym +>CDDB</acronym +>-Unterstützung + +Die freedb-Datenbank ist eine verteilte Netzwerkdatenbank, die über das Internet erreichbar ist. Sie enthält Informationen über die meisten Audio-&CD;s, die verfügbar sind. Wenn Sie einen Internetzugang haben, werden Sie vermutlich niemals selbst Stückinformationen für Ihre &CD;s eintragen müssen. Genaueres zur Konfiguration von CDDB finden Sie im Abschnitt über die Karteikarte freedb im Kapitel zur Einrichtung von &kscd;. Informationen zum ändern von CDDB-Einträgen finden Sie unter Der CD-Datenbank Editor. + +Die Verwendung der CDDB ist kostenlos. Beiträge sind willkommen. + +Wenn Sie Beiträge für die CDDB vorbereiten, bedenken Sie bitte folgende Punkte: + + +Verwenden Sie einen Standard-Latinzeichensatz in den Einträgen. Einige Sonderzeichen werden unterstützt, aber das kyrillische oder griechische Alphabet für kann für Beiträge nicht akzeptiert werden. +Verwenden Sie nur ein /-Zeichen im Feld Künstler / Titel im &CD;-Datenbank Editor. + +Bei klassischen &CD;s ist es üblich, den Namen des Komponisten vor dem Schrägstrich und den Namen des Ausführenden hinter dem Schrägstrich einzutragen. +Wenn Sie einen Eintrag einsenden, der bereits existiert, werden alle zusätzlichen Informationen dem existierenden Eintrag hinzugefügt. + + + +Standardmäßig installiert &kscd; die üblichen CDDB Kategorien in $KDEDIR/share/apps/kscd/cddb. Sie können so viele Kategorien erstellen, wie Sie möchten. Wenn Sie allerdings einen Eintrag einsenden möchten, werden nur die Standardeinträge der CDDB angezeigt. Die Standardadresse ist freedb-submit@freedb.org. Weitere Informationen über freedb finden Sie auf der freedb-Internetseite. + +Der lokale CDDB-Eintrag für eine bestimmte &CD; wird gespeichert unter Kategorie/CD-Kennung unter dem CDDB-Basisverzeichnis. Diese Dateien können Sie im Bedarfsfall auch mit einem Texteditor bearbeiten. + + + + +Fragen und Antworten + + + +Ich sehe ein Dialogfenster beim Start von &kscd;. Was mache ich falsch? + +Fehlerdialog + + +Fehlerdialog + + + +Diese Meldung bedeutet, &kscd; konnte nicht auf Ihr &CD-ROM;-Laufwerk zugreifen. Der Gerätename im Feld CDROM-Gerät unter Einrichtung von &kscd; muss wirklich das Gerät enthalten, das mit Ihrem &CD-ROM;-Laufwerk verbunden ist. Es wird sich bei diesem Gerät häufig um eine Verknüpfung zu einem IDE- (/dev/hdx) oder SCSI-Gerät (/dev/sdx) handeln. + +Die Gerätedatei gehört normalerweise dem Benutzer root und der Gruppe root. Normale Benutzer dürfen dieses Gerät meistens nicht zum lesen, schreiben oder ausführen direkt öffnen. Das hat nichts mit dem SUID-Programm (Programme, die die Funktion setuid() der Un*x-Bibliothek verwenden, um die Identität eines anderen Benutzers anzunehmen) mount zu tun, das keine Probleme mit Berechtigungen hat; &kscd; muss in der Lage sein, einen Nur-Lese-Deskriptor für das &CD;-Gerät zu erhalten, um das &CD-ROM;-Laufwerk zu kontrollieren und Rohdaten vom Laufwerk einzulesen. + +Wenn Sie das root-Kennwort kennen, können Sie die Einstellung leicht korrigieren. Wechseln Sie zu root und tippen Sie chmod /dev/cdrom um jedem Benutzer Leserecht auf /dev/cdrom zu erteilen. Wenn Ihr &CD-ROM;-Laufwerk einen anderen Namen hat, ändern Sie die Berechtigungen für diese Gerätedatei. Wenn Sie nicht über das root-Kennwort verfügen, bitten Sie Ihren Administrator höflich, Ihnen Leserechte für Ihr &CD-ROM;-Laufwerk einzurichten. + +Genaueres finden Sie im Kapitel &kscd; einrichten + + + +Die CDDB funktioniert nicht. Woher bekomme ich detaillierte Informationen zum genauen Problem? +Wenn Sie Probleme mit CDDB haben, starten Sie &kscd; von der Kommandozeile mit der Option und werten Sie die Ausgaben aus. + + + + + +Mitwirkende und Lizenz + +&kscd; Copyright 1997,1998 Bernd Johannes Wuebben wuebben@kde.orgwuebben +> + +&kscd; enthält Code von: + +workman 1.4 beta 3 Copyright (c) Steven Grimm koreth@hyperion.com + + +Besonderer Dank gilt Ti Kan und Steve Scherf, den Erfindern des CDDB-Datenbankkonzeptes. Besuchen Sie http://www.cddb.com für weitere Informationen über CDDB. + +Mein besonderer Dank gilt auch David White, der die ursprüngliche Dokumentation zu &kscd; geschrieben hat. Vielen Dank David! + +Die Dokumentation wurde für KDE 2.0 überarbeitet und steht unter dem Copyright von Jonathan Singer jsinger@leeta.net. +Deutsche Übersetzung der Dokumentation Gregor Zumstein zumstein@ssd.ethz.chAktualisierung der Übersetzung für KDE 2.0 Frank Schütte F.Schuette@t-online.de +&underFDL; &underGPL; + + +Installation + + +Woher man &kscd; bekommt +&install.intro.documentation; + + +Anforderungen + +Für die erfolgreiche Kompilierung und Installation von &kscd; benötigen Sie die aktuellen Versionen der &kde;-Bibliotheken und die &Qt; C++ Bibliothek. Alle erforderlichen Bibliotheken wie auch &kscd; selbst können Sie auf der &kde; &FTP;-Seite unter ftp://ftp.kde.org/pub/kde/ finden. + + + + +Kompilierung und Installation &install.compile.documentation; Bitte setzen Sie den jetzigen Programmbetreuer, Dirk Foersterling, unter milliByte@gmx.net von allen Änderungen in Kenntnis, die nötig waren, um &kscd; auf Ihrem System zu kompilieren. + + + + + +&documentation.index; +
+ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/kscd.png b/tde-i18n-de/docs/tdemultimedia/kscd/kscd.png new file mode 100644 index 00000000000..9d09c0a4a48 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kscd/kscd.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/kscd11.png b/tde-i18n-de/docs/tdemultimedia/kscd/kscd11.png new file mode 100644 index 00000000000..40596c066ff Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kscd/kscd11.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/kscd12.png b/tde-i18n-de/docs/tdemultimedia/kscd/kscd12.png new file mode 100644 index 00000000000..d1589acb06b Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kscd/kscd12.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/kscd13.png b/tde-i18n-de/docs/tdemultimedia/kscd/kscd13.png new file mode 100644 index 00000000000..9c63d46a474 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kscd/kscd13.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/kscd14.png b/tde-i18n-de/docs/tdemultimedia/kscd/kscd14.png new file mode 100644 index 00000000000..2de2e69f391 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kscd/kscd14.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/kscd16.png b/tde-i18n-de/docs/tdemultimedia/kscd/kscd16.png new file mode 100644 index 00000000000..d8a3fbf8e73 Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kscd/kscd16.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/kscd/kscd3.png b/tde-i18n-de/docs/tdemultimedia/kscd/kscd3.png new file mode 100644 index 00000000000..3efdd889a8a Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/kscd/kscd3.png differ diff --git a/tde-i18n-de/docs/tdemultimedia/noatun/Makefile.am b/tde-i18n-de/docs/tdemultimedia/noatun/Makefile.am new file mode 100644 index 00000000000..df6332b8050 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/noatun/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = de +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-de/docs/tdemultimedia/noatun/Makefile.in b/tde-i18n-de/docs/tdemultimedia/noatun/Makefile.in new file mode 100644 index 00000000000..92addf06899 --- /dev/null +++ b/tde-i18n-de/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 = de +#>- 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-de/docs/tdemultimedia/noatun/index.cache.bz2 b/tde-i18n-de/docs/tdemultimedia/noatun/index.cache.bz2 new file mode 100644 index 00000000000..180203febfc Binary files /dev/null and b/tde-i18n-de/docs/tdemultimedia/noatun/index.cache.bz2 differ diff --git a/tde-i18n-de/docs/tdemultimedia/noatun/index.docbook b/tde-i18n-de/docs/tdemultimedia/noatun/index.docbook new file mode 100644 index 00000000000..3e0167513a8 --- /dev/null +++ b/tde-i18n-de/docs/tdemultimedia/noatun/index.docbook @@ -0,0 +1,644 @@ + + + + + +]> + + + +Das Handbuch zu &noatun; + + +Charles Samuels
charles@kde.org
+
+
+FrankSchütte
F.Schuette@t-online.de
Deutsche Übersetzung
+
+ + +20012002 +Charles Samuels + + +&FDLNotice; + +2002-03-01 +2.00.00 + + +&noatun; ist ein vielseitiger und erweiterbarer Medienspieler für &kde;. + + + +KDE +Noatun +tdemultimedia +mp3 +Musik +Medien + +
+ + +Einleitung + +&noatun; ist ein vielseitiger und erweiterbarer Medienspieler für &kde;. + + +Fähigkeiten + +Bei &noatun; handelt es sich um eine umfangreiche Oberfläche zu &arts; — dem Analogen Real-Time-Syntesizer. Um ein zusätzliches Abspielobjekt hinzuzufügen, kann man unter http://notaun.kde.org/plugins.phtml oder http://mpeglib.sf.net nachschauen. Standardmäßig unterstützt &arts; MP3 und MPEG-1. Vorbis wird unterstützt, falls die Vorbis-Bibliotheken bei der Kompilierung von &kde; verfügbar waren. + + + + + +Benutzung von &noatun; + +&noatun; startet standardmäßig mit dem Hervorragend-Plugin als Benutzeroberfläche. Diese Oberfläche hat von allen die größte Ähnlichkeit zu anderen &kde;-Anwendungen. + +&noatun; ist insofern einzigartig als keine zwei Installationen identisch sind. Außerdem gibt es keine Hauptoberfläche, auch wenn es eine Standardeinstellung gibt. Man kann beliebige Plugins miteinander kombinieren und so &noatun; an die eigenen Wünsche perfekt anpassen. + + +Titelformat +Der Einrichtungsdialog zu &noatun; hat ein Textfeld zur Einstellung des Titelformates. Man kann mit einer Formatierungszeichenkette festlegen, wie Titel erscheinen sollen. + + +Jeder Text erscheint normal, wenn er nicht innerhalb eines $( ) eingeschlossen ist. +Der Text innerhalb von $( ) wird durch &noatun; durch den Inhalt der angegebenen Einstellung ersetzt. +Falls sich innerhalb des $( ) Anführungszeichen befinden, wird der Text innerhalb der Anführungszeichen normal dargestellt, falls eine Eigenschaft dieses Namens existiert. +Anführungszeichen können entweder am Beginn, am Ende oder am Beginn und Ende von $( ) eingefügt werden. + + +Zum Beispiel wird $(bitrate) durch die Bitrate der Datei ersetzt, so wie sie vom Metatag-Plugin gelesen worden ist. Falls man innerhalb des Feldes Anführungszeichen setzt, so wird der Text darin dargestellt: $(bitrate"kbps") zeigt z.B. die Bitrate der Datei gefolgt von den Buchstaben "kbps" an. Falls die Eigenschaft bitrate nicht existiert, wird gar nichts angezeigt. + + + + + +Benutzung von &noatun;-Plugins + +Um ein anderes Plugin auszuwählen, rufen Sie im Menü Einstellungen &noatun; einrichten ... aus. Auf der Karteikarte Plugins können Sie den gewünschten Listeneintrag auswählen. Man aktiviert ein Plugin, indem man das Ankreuzfeld neben dem Namen markiert. Für &noatun; ist mindestens ein User-Interface-Plugin und genau ein Stücklisten-Plugin erforderlich. + + +Vollmilchschokolade (Milk Chocolate) + +Milk Chocolate ist eine kleine, einfache Benutzeroberfläche. Die Knöpfe verhalten sich ähnlich wie bei einem CD-Spieler; der Knopf zum Auswerfen öffnet die Stückliste. Der Knopf mit dem Kreuz daraus entfernt den aktuellen Stücklisteneintrag, nicht jedoch die Datei. Der Knopf mit dem Pfeil schaltet die Endloswiederholung ein. Sie erhalten ein Menü durch klicken auf die rechte Maustaste im Fenster. + + + + + +Young Hickory + +Young Hickory ist ein Plugin für den Systembereich in der &kde;-Kontrollleiste. Dieser befindet sich standardmäßig links neben der Uhr. + +Klicken Sie mit der rechten Maustaste auf das Symbol, um ein kleines Menü aufzurufen. Klicken auf die linke Maustaste schaltet die Sichtbarkeit der &noatun;-Bedienoberfläche ein und aus. Anzumerken ist, dass unter anderem Stücklisten nicht als zur Bedienoberfläche zugehörig betrachtet werden. + + + + +<acronym +>HTML</acronym +>-Stücklistenexport + +Diese Plugin überträgt Ihre Stückliste in eine HTML-Tabelle. Die Einrichtungsseite erlaubt die Einstellung von Farben, Hintergrundbild und die Aktivierung des Überstreich-Modus (Veränderung der Farbe einer Verknüpfung beim Überstreichen mit dem Mauszeiger). + +Wenn Sie die Einstellungen vorgenommen haben, können Sie im Menü Aktionen mit dem Eintrag Stücklistenexport einen Dateidialog öffnen, der die Auswahl der Zieldatei ermöglicht. + + + + +<application +>K-Jöfol</application +>-Oberflächen + +Der &noatun; K-Jöfol Oberflächenlader ist eine teilweise Reimplementation des gleichnamigen &Windows;-Programms. + +&noatun;s Implementation hat leider einige Begrenzungen. Die Oberflächen müssen zum Beispiel unkomprimiert sein. + +Um eine Oberfläche (im &Windows;-ZIP-Format) zu installieren, können Sie den Oberflächenlader, den im Fenster &noatun; Einstellungen finden, nutzen. + +Weil einige Oberflächen nicht richtig zusammengestellt werden und der Oberflächenlader nicht Eventualitäten berücksichtigen kann können Sie noch diesen Anweisungen folgen, sollte die Installation einer Oberfläche nicht klappen: + +% cd $KDEHOME/share/apps/noatun +% mkdir (wenn benötigt) +% cd +% mkdir ; cd neue_Oberfläche +% unzip /Pfad/zu/neue_Oberfläche.zip + +Sie können mit Hilfe des Tutorials auf http://www.angelfire.com/mo/nequiem/tutorial.html Oberflächen selbst erstellen. + + + + +Aufgeteilte Abspielliste + +Die aufgeteilte Abspielliste hat ein einfaches Design. Ein Doppelklick auf einen Eintrag startet dessen Wiedergabe (eine andere Möglichkeit ist dessen Auswahl und die Enter-Taste). Außerdem kann man Dateien oder &URL;s auf die Abspielliste ziehen. + +Seit &kde; 3.0 speichert die aufgeteilte Abspielliste (SPL) ihre Daten im &XML;-Format, importiert aber automatisch die m3u-Liste, falls eine &XML;-Datei nicht existiert. Das heißt, man kann zur automatischen Erzeugung von Stücklisten einfach in die m3u-Datei schreiben und die &XML;-Datei löschen. + +Der Name aufgeteilte Abspielliste ist ein bisschen irreführend, da die Liste nicht wirklich geteilt ist. Der Name stammt vom ursprünglichen geteilten Design (aus der Anfangszeit von &noatun;). + + + +Winamp-Oberflächen +Falls man die Winamp-Oberfläche verwendet, erscheint sie vermutlich vertraut. Klicken auf den Timer schaltet zwischen heraufzählen und herunterzählen um. Wählt man den Scope-Bereich aus, so wird zwischen aktiviertem und deaktiviertem Scope umgeschaltet. Durch Doppelklicken auf die Titelleiste kann man den Schattenmodus umschalten. Klicken mit der rechten Maustaste auf das Symbol oben links zeigt die Standard-Werkzeugleiste von &noatun;. +Man kann eine neue Oberfläche installieren, indem man unter $KDEHOME/share/apps/noatun/skins/winamp ein neues Verzeichnis anlegt und die Oberfläche dort auspackt. Winamp-Dateien mit der Endung .wsz werden wie normale ZIP-Dateien behandelt. Man sollte sie vor dem Auspacken allerdings umbenennen. + + + +Metatag +Metatag ist ein Plugin, das mit Hilfe von KFile Informationen über eine Datei einliest. Dieser Mechanismus wird auch für die Kurzhilfen von &konqueror; verwendet. Neben der Anzeige von Informationen können diese auch über das Menü Aktionen Notizeditor ... geändert werden. Sowohl ID3- als auch OggVorbis-Tags können bearbeitet werden. Außerdem wird die Bitrate eingelesen. + + + +Keyz +Carsten Pfeiffer hat sich gegen die lange Tradition in &noatun; entschieden, Plugins in einer möglichst unorthodoxen Weise zu benennen. Der Grund für die Konvertierung eines S zu einem Z ist nicht bekannt. Es klingt etwa so, wie Sprecher des "american-english" es sowieso aussprechen würden! +Dieses Plugin ermöglicht die Verknüpfung von &noatun;-Aktionen mit Tastenkombinationen. Diese Tastenkombinationen funktionieren von überall her, nicht bloß innerhalb von &noatun;. Damit kann man Multimedia-Tastaturen zum Leben erwecken. + + + +Infrarot-Bedienung +Falls man über eine Fernbedienung für den Rechner verfügt (TV-Karten mit Brooktree-Tuner verfügen über eine solche) und diese Fernbedienung von LIRC unterstützt wird, kann man dieses Plugin verwenden. Wie bei Keyz erlaubt das Plugin die Verbindung von Aktionen und Knopfdrücken. +Um eine Aktion mit einem Tastendruck zu verbinden, lädt man das Plugin und geht auf die Seite Infrarot-Fernbedienung im Einrichtungsdialog von &noatun;. Dort wählt man den Tastendruck in der Liste und wählt die durchzuführende Aktion im Auswahlfeld darunter. Falls, wie z.B. bei der Lautstärkeregelung, eine Aktion dauernd wiederholt werden soll, markiert man das entsprechende Ankreuzfeld und wählt das Wiederholungsintervall aus. +Falls man über eine TV-Karte verfügt, ist ein nützlicher Trick, den Knopf Stumm mit der Pause-Taste zu verbinden. Dadurch wird gleichzeitig das TV-Programm stumm geschaltet und &noatun; nimmt seine Wiedergabe wieder auf, und umgekehrt. Das ist sehr nützlich für Werbeunterbrechungen. + + + + + +Fragen, Antworten und Tipps + + +Häufig gestellte Fragen + + +Die Musik setzt bei der Bewegung von Fenstern häufig aus. + + +Man kann die Puffer von &arts; auf folgende Art vergrößern: + + +&kcontrol; starten +die Gruppe Klänge auswählen +den Abschnitt Sound-Server auswählen +die Antwortzeit vergrößern — 384ms ist auf den meisten Rechnern ausreichend. + + +Alternativ kann man auch den Sound-Server mit Echtzeit-Priorität starten. Das kann allerdings zum Systemabsturz führen. + + + + + +Ich kann eine Stückliste oder eine Benutzeroberfläche nicht entfernen. + + +Da &noatun; mindestens eine Benutzeroberfläche und eine Stückliste zur Funktion benötigt, müssen Sie zunächst eine neue Benutzeroberfläche oder eine neue Stückliste laden, bevor Sie die alte löschen können. Eine neue Stückliste ersetzt dabei automatisch die alte. + + + + +Woher bekomme ich weitere Plugins? + + +Entwickler können ihre eigenen Plugins an die &noatun;-Webseite senden. Diese können dann dort von Benutzern wie Ihnen heruntergeladen werden. + + + + +Wie schreibe ich ein Plugin für &noatun;? + + +Dokumentation, eine API-Referenz und Beispielquelltexte sind auf der &noatun;-Webseite zu finden. Außerdem sind dort (entsprechend dem Geist von "Open Source"-Programmen) die Quelltexte für &noatun; und die Standard-Plugins zu finden. + + + + + + +Mitwirkende und Lizenz + +Copyright für das Programm 2000-2002 Charles Samuels charles@kde.org + +Copyright für die Dokumentation 2002 Charles Samuels charles@kde.org + +&noatun; wurde von den folgenden Personen programmiert: + + + +Charles Samuels charles@kde.org + + +Neil Stevens multivac@fcmail.com + + +Stefan Westerfeld stefan@space.twc.de + + +Martin Vogt mvogt@rhrk.uni-kl.de + + +Malte Starostik malte.starostik@t-online.de + + +Nikolas Zimmermann wildfox@kde.org + + +Stefan Schimanski 1Stein@gmx.de + + +Deutsche Übersetzung: Frank Schütte F.Schuette@t-online.de +&underFDL; &underBSDLicense; + + +Installation + + +Wie Sie &noatun; erhalten +&install.intro.documentation; + + +Voraussetzungen + +Für &noatun; benötigen Sie mindestens einen Rechner mit einem Pentium Prozessor mit 200 MHz mit &Linux;, einen PowerPC mit &Linux; 2.4.1 oder neuer, oder eines von verschiedenen anderen Systemen. Zusätzliche Systeme werden in späteren Versionen unterstützt. + +&arts; kann leicht auf alle Plattformen portiert werden, die pthread-Unterstützung und das OSS Klangausgabesystem verwenden; unter &Linux; wird auch das ALSA-System unterstützt. + + + + +Kompilierung und Installation +&install.compile.documentation; Falls Probleme auftreten, wenden Sie sich bitte an den Autor charles@kde.org. + +Wenn Sie diese Dokumentation lesen, haben Sie &noatun; vermutlich bereits kompiliert. + + + + + + +Glossar + + +Vollmilchschokolade +Vollmilchschokolade ist eine einfache, minimalistische Benutzeroberfläche + + +&arts; +&arts; ist der analoge Echtzeit-Synthesizer. Es handelt sich um ein mächtiges Medienprogramm, das von &noatun; verwendet wird. + +K-Jöfol +Dieses Plugin kann Oberflächen laden, die ursprünglich für den &Windows;-Medienspieler gleichen namens entwickelt wurden. + + +Keyz +Mit Keyz kann man innerhalb von &noatun; Tastaturkurzbefehlen Aktionen zuordnen. + +Young Hickory +Young Hickory ist ein Plugin für das Systemtablett. + +Noatun +Kaiman ist ein Plugin, das Oberflächen des Medienspielers GQMPEG laden kann. Kaiman ist auch der Vorgänger von &noatun; und wurde in der &kde;-Version 2.0 zusammen mit &kde; ausgeliefert. Seit &noatun; in &kde; 2.1 eingeführt wurde, wurde der Oberflächenlader von Kaiman ein &noatun;-Plugin. + + + +&documentation.index; +
+ -- cgit v1.2.3