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-da/docs/tdemultimedia/Makefile.am | 4 + tde-i18n-da/docs/tdemultimedia/Makefile.in | 587 +++++ .../docs/tdemultimedia/artsbuilder/Makefile.am | 4 + .../docs/tdemultimedia/artsbuilder/Makefile.in | 635 ++++++ .../docs/tdemultimedia/artsbuilder/apis.docbook | 424 ++++ .../tdemultimedia/artsbuilder/artsbuilder.docbook | 917 ++++++++ .../docs/tdemultimedia/artsbuilder/detail.docbook | 1383 +++++++++++ .../tdemultimedia/artsbuilder/digitalaudio.docbook | 16 + .../docs/tdemultimedia/artsbuilder/faq.docbook | 1307 +++++++++++ .../docs/tdemultimedia/artsbuilder/future.docbook | 399 ++++ .../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 -> 78294 bytes .../docs/tdemultimedia/artsbuilder/index.docbook | 397 ++++ .../docs/tdemultimedia/artsbuilder/mcop.docbook | 1972 ++++++++++++++++ .../docs/tdemultimedia/artsbuilder/midi.docbook | 524 +++++ .../tdemultimedia/artsbuilder/midiintro.docbook | 16 + .../docs/tdemultimedia/artsbuilder/modules.docbook | 1333 +++++++++++ .../docs/tdemultimedia/artsbuilder/porting.docbook | 50 + .../tdemultimedia/artsbuilder/references.docbook | 61 + .../docs/tdemultimedia/artsbuilder/tools.docbook | 1003 ++++++++ tde-i18n-da/docs/tdemultimedia/juk/Makefile.am | 4 + tde-i18n-da/docs/tdemultimedia/juk/Makefile.in | 635 ++++++ tde-i18n-da/docs/tdemultimedia/juk/index.cache.bz2 | Bin 0 -> 16541 bytes tde-i18n-da/docs/tdemultimedia/juk/index.docbook | 2395 ++++++++++++++++++++ .../docs/tdemultimedia/kaboodle/Makefile.am | 4 + .../docs/tdemultimedia/kaboodle/Makefile.in | 635 ++++++ .../docs/tdemultimedia/kaboodle/index.cache.bz2 | Bin 0 -> 2414 bytes .../docs/tdemultimedia/kaboodle/index.docbook | 96 + .../docs/tdemultimedia/kaudiocreator/Makefile.am | 4 + .../docs/tdemultimedia/kaudiocreator/Makefile.in | 635 ++++++ .../tdemultimedia/kaudiocreator/index.cache.bz2 | Bin 0 -> 19096 bytes .../docs/tdemultimedia/kaudiocreator/index.docbook | 1674 ++++++++++++++ .../docs/tdemultimedia/kio_audiocd/Makefile.am | 4 + .../docs/tdemultimedia/kio_audiocd/Makefile.in | 587 +++++ .../docs/tdemultimedia/kioslave/Makefile.am | 4 + .../docs/tdemultimedia/kioslave/Makefile.in | 613 +++++ .../docs/tdemultimedia/kioslave/audiocd.docbook | 313 +++ tde-i18n-da/docs/tdemultimedia/kmid/Makefile.am | 4 + tde-i18n-da/docs/tdemultimedia/kmid/Makefile.in | 635 ++++++ .../docs/tdemultimedia/kmid/index.cache.bz2 | Bin 0 -> 15501 bytes tde-i18n-da/docs/tdemultimedia/kmid/index.docbook | 1384 +++++++++++ tde-i18n-da/docs/tdemultimedia/kmix/Makefile.am | 4 + tde-i18n-da/docs/tdemultimedia/kmix/Makefile.in | 635 ++++++ .../docs/tdemultimedia/kmix/index.cache.bz2 | Bin 0 -> 10103 bytes tde-i18n-da/docs/tdemultimedia/kmix/index.docbook | 924 ++++++++ tde-i18n-da/docs/tdemultimedia/krec/Makefile.am | 4 + tde-i18n-da/docs/tdemultimedia/krec/Makefile.in | 635 ++++++ .../docs/tdemultimedia/krec/index.cache.bz2 | Bin 0 -> 12207 bytes tde-i18n-da/docs/tdemultimedia/krec/index.docbook | 633 ++++++ tde-i18n-da/docs/tdemultimedia/kscd/Makefile.am | 4 + tde-i18n-da/docs/tdemultimedia/kscd/Makefile.in | 635 ++++++ .../docs/tdemultimedia/kscd/index.cache.bz2 | Bin 0 -> 15694 bytes tde-i18n-da/docs/tdemultimedia/kscd/index.docbook | 1612 +++++++++++++ tde-i18n-da/docs/tdemultimedia/noatun/Makefile.am | 4 + tde-i18n-da/docs/tdemultimedia/noatun/Makefile.in | 635 ++++++ .../docs/tdemultimedia/noatun/index.cache.bz2 | Bin 0 -> 9732 bytes .../docs/tdemultimedia/noatun/index.docbook | 624 +++++ 59 files changed, 27446 insertions(+) create mode 100644 tde-i18n-da/docs/tdemultimedia/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/apis.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/artsbuilder.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/detail.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/digitalaudio.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/faq.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/future.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/glossary.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/gui.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/helping.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/index.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/mcop.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/midi.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/midiintro.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/modules.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/porting.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/references.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/artsbuilder/tools.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/juk/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/juk/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/juk/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/juk/index.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/kaboodle/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/kaboodle/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/kaboodle/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/kaboodle/index.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/kaudiocreator/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/kaudiocreator/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/kaudiocreator/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/kaudiocreator/index.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/kio_audiocd/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/kio_audiocd/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/kioslave/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/kioslave/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/kioslave/audiocd.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/kmid/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/kmid/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/kmid/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/kmid/index.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/kmix/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/kmix/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/kmix/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/kmix/index.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/krec/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/krec/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/krec/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/krec/index.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/kscd/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/kscd/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/kscd/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/kscd/index.docbook create mode 100644 tde-i18n-da/docs/tdemultimedia/noatun/Makefile.am create mode 100644 tde-i18n-da/docs/tdemultimedia/noatun/Makefile.in create mode 100644 tde-i18n-da/docs/tdemultimedia/noatun/index.cache.bz2 create mode 100644 tde-i18n-da/docs/tdemultimedia/noatun/index.docbook (limited to 'tde-i18n-da/docs/tdemultimedia') diff --git a/tde-i18n-da/docs/tdemultimedia/Makefile.am b/tde-i18n-da/docs/tdemultimedia/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/Makefile.in b/tde-i18n-da/docs/tdemultimedia/Makefile.in new file mode 100644 index 00000000000..2b457b85560 --- /dev/null +++ b/tde-i18n-da/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 = da +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. kio_audiocd juk kioslave artsbuilder noatun kaboodle kmid krec kmix kaudiocreator 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-da/docs/tdemultimedia/artsbuilder/Makefile.am b/tde-i18n-da/docs/tdemultimedia/artsbuilder/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/Makefile.in b/tde-i18n-da/docs/tdemultimedia/artsbuilder/Makefile.in new file mode 100644 index 00000000000..1bb68808ae4 --- /dev/null +++ b/tde-i18n-da/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 = da +#>- 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-da/docs/tdemultimedia/artsbuilder/apis.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/apis.docbook new file mode 100644 index 00000000000..0ad1a4d2332 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/apis.docbook @@ -0,0 +1,424 @@ + + + +&arts; programmeringsgrænseflade + + +Oversigt +aRts er ikke kun et program, den sørger for også et antal forskellige programmeringsgrænseflader (API) til forskellige formål. I dette afsnit, forsøger jeg at beskrive "helhedsbilledet", et hurtigt overblik over hvad disse grænseflader er tænkte at bruges til, og hvordan de hænger sammen. + +Der er en vigtig distinktion som skal gøres: De fleste grænseflader er sprog- og pladsuafhængige eftersom de er specificerede som mcopidl. Dette betyder at man egentlig kan bruge den tjeneste de sørger for fra et hvilket som helst sprog, implementere dem i et hvilket som helst sprog, og man behøver ikke tage sig af om man taler med lokal- eller fjernobjekter. Her er først en liste af dem: + + + + +core.idl + Grundlæggende definitioner som danner kernen i MCOP-funktionen, såsom selve protokollen, definitioner af objekter, handleren, flowsystemet og så videre. + + + + +artsflow.idl + + Disse indeholder flowsystemet som man bruger til at forbinde lydstrømmene, definitionen af Arts::SynthModule som er grundlaget for alle grænseflade som har strømme, og til slut nogle nyttige lydobjekter. + + + + +kmedia2.idl + + + Her defineres Arts::PlayObject, et objekt som kan spille en mediatype. Mediaspillere såsom KDE's mediespiller noatun vil kunne afspille hvilket som helst medie som har et PlayObject. Derfor giver det mening at implementere PlayObject for forskellige formater (såsom mp3, mpg video, midi, wav, ...) med dette som grundlag, og der findes allerede mange. + + + + +soundserver.idl + + Her defineres en grænseflade for systemets lydserver artsd. Grænsefladen benævnes Arts::SoundServer, og implementerer funktioner såsom at tage imod strømme fra netværket, spille samplinger, oprette andre egne aRts-objekter og så videre. Netværkstransparens er underforstået eftersom MCOP bruges (som for alt øvrigt her). + + + + +artsbuilder.idl + Dette modul definerer grundlæggende flowfunktioner, dvs. kombinerer enklere objekter til mere komplekse ved at definere en graf som binder dem sammen. Den definerer den grundlæggende grænseflade Arts::StructureDesc, Arts::ModuleDesc og Arts::PortDesc som indeholder en beskrivelse af en struktur, modul og port. Der er også en måde at oprette et "levende netværk af objekter" fra disse forbindelser og værdibeskrivelserne ved brug af en fabrik. + + + + +artsmidi.idl + + Dette modulet definerer grundlæggende midi-funktioner, såsom objekter som laver midi-begivenheder, hvad en midi-begivenhed er, og Arts::MidiManager til at forbinde producenter og konsumenter af midi-begivenheder, og så videre. Som altid er netværkstransparens underforstået. + + + + +artsmodules.idl + Her er der diverse yderligere filtre, oscillatorer, lydeffekter, forsinkelser og så videre, alt som behøves for rigtig nyttig signalbehandling, og for at opbygge komplekse instrumenter og effekter fra disse grundlæggende byggeblokke. + + + + +artsgui.idl + + Denne tager sig af synlige objekter. Den definerer den grundlæggende type Arts::Widget som alle moduler med en grafisk grænseflade udgår fra. Dette giver uafhængighed af værktøjskasse, og ... visuel redigering af den grafiske grænseflade, og mulighed for at serialisere den grafiske grænseflade. Desuden, eftersom de grafiske komponenter har normale egenskaber, kan deres værdier på en ligetil måde forbindes til visse signalbehandlingsmoduler. (dvs. værdien af en skyder til klipning for et filter). Som altid, netværkstransparent. + + + + +Hvor det er muligt implementeres aRts selv med IDL. På den anden side er der nogle sprogspecifikke programmeringsgrænseflader, som enten bruger enkel C++ eller C. Det er ofte fornuftigt at bruge IDL-grænseflade hvis muligt, og de øvrige grænseflader når det er nødvendigt. Her er en liste over sprogspecifikke programmeringsgrænseflade: + + + + +KNotify, KAudioPlayer (indgår i libtdecore) + + Disse er KDE's programmeringsgrænseflader for bekvemmelighed med de enkle og vældigt almindelige tilfælde, hvor man kun vil afspille en sampling. Grænsefladen er enkel C++, Qt/KDE-optimerede, og så enkle som de kan være. + + + + +libartsc + Enkel C-grænseflade for lydserveren. Meget nyttig for at tilrette gamle programmer. + + + + +libmcop + + Her sker al magi som har med MCOP at gøre. Biblioteket indeholder de grundlæggende ting som behøves for at skrive et enkelt MCOP-program, afsenderen, tidtagning, I/O-håndtering, men også de interne funktioner som behøves for at selve MCOP-protokollen skal fungere. + + + + +libartsflow + Foruden implementeringen af artsflow.idl, nogle nyttige værktøjer for konvertering af samplingsrater. + + + + +libqiomanager + + Integration af MCOP i Qt's begivenhedsløkke, når man skriver Qt-programmer som bruger MCOP. + + + + + + + + + +knotify +Endnu ikke skrevet + + + +kaudioplayer +Endnu ikke skrevet + + + +libkmid +Endnu ikke skrevet + + + +kmedia2 +Endnu ikke skrevet + + + +lydserver +Endnu ikke skrevet + + + +artsflow +Endnu ikke skrevet + + + +C <acronym +>API</acronym +> + + +Indledning + +C-grænsefladen for &arts; oprettedes for at gøre det let at skrive og overføre enkle C-programmer til &arts; lydserver. Den sørger for strømningsfunktioner (at sende samplingsstrømme til artsd), enten med eller uden blokering. For de fleste programmer tager man helt enkelt de få systemkald væk som håndterer lydenheden og skifter dem ud mod passende kald til &arts;. + +Jeg lavede to overførsler for at verificere idéen: mpg123 og quake. Du kan skaffe programrettelserne herfra. Bidrag gerne med dine egne programrettelser til vedligeholderen af &arts; eller til programmelpakken for multimedia så de kan integrere understøttelsen for &arts; i deres kode. + + + + +Hurtig gennemgang + +At sende lyd til lydserveren med grænsefladen er meget enkelt: + +indsæt deklarationsfilen med #include <artsc.h> +initiér grænsefladen med arts_init() +opret en strøm med arts_play_stream() +indstil særlige parametre med arts_stream_set() +skriv samplingsdata til strømmen med arts_write() +luk strømmen med arts_close_stream() +frigør grænsefladen med arts_free() + + +Her er et eksempel på et lille program som viser dette: + +#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 fejl: %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 fejl: %s\n", arts_error_text(errorcode)); + return 1; + } + } + + arts_close_stream(stream); + arts_free(); + + return 0; +} + + + + +Kompilere og linke: <application +>artsc-config</application +> + +For let at kunne kompilere og linke programmer med &arts; C-grænseflade, findes værktøjet artsc-config som kender til hvilke biblioteker som man skal linke med og hvor deklarationsfilerne findes. Det kaldes med + +artsc-config + + +for at finde ud af bibliotekerne og + +artsc-config + + +for at finde ud af yderligere C-oversætterflag. Eksemplet ovenfor ville være kunnet kompileres med kommandolinjen: + +cc + +cc + + + + + +Biblioteksreference + +[HUSK: opret dokumentation for artsc.h med kdoc] + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/artsbuilder.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/artsbuilder.docbook new file mode 100644 index 00000000000..2e831719cd1 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/artsbuilder.docbook @@ -0,0 +1,917 @@ + +&arts-builder; + + +Oversigt + +Først af alt, når du forsøger at køre &arts-builder;, skal du også køre lydserveren (&artsd;). Sædvanligvis, hvis du bruger &kde; 2.1, vil dette allerede være tilfældet. Hvis ikke, så kan du indstille automatisk start af lydserveren i &kcontrol;, med LydLydserver. + +Når du kører &arts;, kører den altid små moduler. &arts-builder; er et værktøj til at oprette nye strukturer af små sammenkoblede moduler. Du klikker helt enkelt indeni gitteret for at tilføje et modul. For at gøre dette, vælges de fra menuen Moduler, og der klikkes et sted i den grøngrå plan. + +Moduler har ofte porte (hvor lydsignaler almindeligtvis ledes ind eller ud). For at koble to porte sammen, klikkes på den første, som gør at den bliver orange, og derefter klikkes på den anden. Du kan kun forbinde en ind-port (på oversiden af et modul) med en ud-port (på undersiden af et modul). Hvis du vil angive en konstant værdi for en port (eller afbryde forbindelsen til den), gøres det ved at dobbeltklikke på porten. + + + + +Gennemgang + + +Trin 1 + +Start &arts-builder;. + +Du behøver et Synth_AMAN_PLAY-modul for at høre uddata som du laver. Så opret et Synth_AMAN_PLAY-modul ved at vælge Moduler Syntese Lyd-IO Synth_AMAN_PLAY og klikke på den tomme modulplads. Placér den cirka nedenfor den femte linje, eftersom vi vil tilføje en del ting ovenfor. + +Modulet vil have en parameter title (porten længst til venstre), og autoRestoreID (ved siden af porten længst til venstre) for at den skal kunne findes. For at udfylde disse her, dobbeltklikkes på portene, der vælges en konstant værdi og skrives gennemgang i redigeringsfeltet. Klik på O.k. for at anvende. + +Vælg FilKør struktur . Du hører absolut ingenting. Afspilningsmodulet har også brug for noget inddata... ;) Hvis du har lyttet til tavsheden et stykke tyd, klik så på Afslut og gå til trin 2. + + + +Trin 2 + +Opret en Synth_WAVE_SIN-modul (fra Moduler Syntese Bølgeformer) og placér den over Synth_AMAN_PLAY-modulet (lad en linjes mellemrum være mellem dem). + +Som du ser, så producerer den noget uddata, men kræver pos som inddata. Lad os først sende uddata til højtalerne. Klik på porten out på Synth_WAVE_SIN og derefter på porten left på Synth_AMAN_PLAY. Voila, du har sammenkoblet to moduler. + +Oscillatorer i &arts; kræver ikke en frekvens som inddata, men i stedet en position på bølgeform. Positionen skal være mellem 0 og 1, som i et standardobjekt Synth_WAVE_SIN oversættes til området 0 .. 2*Pi. For at oprette oscillerende værdier fra en frekvens, bruges et Synth_FREQUENCY modul. + +Opret en Synth_FREQUENCY-modul (fra Moduler Syntese Oscillation & modulation) og forbind dets pos udgang til pos indgangen på Synth_WAVE_SIN. Sæt frekvensporten for frekvensgeneratoren til den konstante værdi 440. + + +Vælg FilKør struktur . Du vil høre en sinusbølge på 440 Hz i en af dine højtalere. Hvis du har lyttet til den et stykke tid, så klik på O.k. og gå til trin 3. + + + + +Trin 3 + +O.k., det ville være bedre hvis du kunne høre sinusbølgen i begge højtalerne. Forbind også den højre port på Synth_PLAY til udgangen fra Synth_WAVE_SIN. + +Opret et Synth_SEQUENCE-objekt (fra Moduler SynteseMidi & sekvensering). Det skal placeres øverst på skærmen. Hvis du behøver mere plads kan du flytte de andre moduler ved at markere dem (for at markere flere moduler holdes shift-tasten nede), og trække dem rundt. + +Forbind nu frekvensudgangen på Synth_SEQUENCE til frekvensindgangen på Synth_FREQUENCY-modulet. Angiv derefter sekvensens hastighed som konstant værdi 0.13 (hastigheden er porten længst til venstre). + +Gå nu til porten længst til højre (seq) på Synth_SEQUENCE og skriv A-3;C-4;E-4;C-4; som konstant værdi. Dette angiver en sekvens. Mere om dette i modulreferencen. + + +Synth_SEQUENCE behøver virkelig en sekvens og hastigheden. Uden disse får du måske hukommelsesdump. + + +Vælg FilKør struktur . Du vil høre en behagelig sekvens spille. Når du har nydt følelsen, så klik på O.k. og gå til trin 4. + + + +Trin 4 + +Opret et Synth_PSCALE-modul (fra Moduler Syntese Envelopper ). Afbryd forbindelsen fra udgangen for sinusbølgen ved at dobbeltklikke på den og vælg ikke forbundet. Forbind + + +Udgangen SIN til indgangen på PSCALE + + +PSCALE udgangen til AMAN_PLAY i venstre side + + +PSCALE udgangen til AMAN_PLAY i højre side + + +SEQUENCE pos til PSCALE pos + + + +Til slut, sættes PSCALE top til en værdi, for eksempel 0.1. + +Hvordan virker dette nu: Synth_SEQUENCE giver yderligere information om positionen for tonen den spiller lige nu, hvor 0 betyder netop påbegyndt og 1 betyder afsluttet. Modulet Synth_PSCALE skalerer lydstrømmen som sendes gennem den fra lydstyrke 0 (tavs) til 1 (oprindelig lydstyrke) tilbage til 0 (tavs) ifølge positionen. Positionen hvor toppen skal ske kan angives som top. 0.1 betyder at efter 10 % af tonen er spillet har lydstyrken nået sin maksimale værdi, og begynder derefter at aftage. + + +Vælg FilKør struktur . Du vil høre en behagelig sekvens spille. Når du har nydt følelsen, klik på O.k. og gå til trin 5. + + + + +Trin 5: Begynder at sende data rundt ;) + +Start endnu en &arts-builder;. + +Placér en Synth_AMAN_PLAY i den, og indstil den til et rimeligt navn. Placér en Synth_BUS_DOWNLINK i den og: + + + +Sæt Synth_BUS_DOWNLINK bus til lyd (det er kun et navn, kald den Peter hvis du har lyst) + + +Forbind Synth_BUS_DOWNLINK left (venstre) til Synth_AMAN_PLAY left. + + +Forbind Synth_BUS_DOWNLINK right (højre) til Synth_AMAN_PLAY right. + + + +Begynd at køre strukturen. Som ventet hører du ingenting, ... ikke endnu. + +Gå tilbage til strukturen med Synth_WAVE_SIN tingene og udbyt Synth_AMAN_PLAY-modulet mod en Synth_BUS_UPLINK, og indstil navnet til lyd (eller Peter hvis du vil). At fjerne moduler gøres ved at markere dem og vælge Redigér slet fra menuen (eller trykke på tasten Del). + +Vælg FilKør struktur . Du vil høre sekvensen med skalerede toner, transporteret over bussen. + +Hvis du vil finde ud af hvorfor noget sådant her kan være nyttigt, så klik på O.k. (i &arts-builder; som kører Synth_SEQUENCE tingene, du kan lade den anden fortsætte med at køre) og gå til trin 6. + + + +Trin 6: Send data for avancerede brugere + +Vælg FilOmdøb struktur fra menuen i den aRts-bygger som indeholder Synth_SEQUENCE tingene, og kald den gennemgang. Tryk på O.k.. + +Vælg Fil Gem . + +Start yderligere en &arts-builder; og vælg FilÅbn , og indlæs gennemgangen igen. + +Nu kan du vælge FilKør struktur i begge &arts-builder;'er som har strukturen. Nu hører du det samme to gange. Afhængig af hvornår du starter dem kommer det til at lyde mere eller mindre godt. + +En anden ting som det kan være godt at gøre på dette tidspunkt er at starte &noatun;, og spille en mp3-fil. Start derefter &artscontrol;. Gå til VisVis lydhåndtering. Det du ser er &noatun; og din struktur gennemgang afspille noget. Det gode som du kan gøre er: dobbeltklik på &noatun;. Du får nu en liste over tilgængelige busser. Og se? Du kan lade &noatun; sende sin udskrift via lydbussen til afspilningsstrukturen som din gennemgang sørger for. + + + +Trin 7: Midisyntese + +Endelig, nu skal du kunne lave din sinusbølge om til et rigtigt instrument. Dette er kun meningsfuldt hvis du har noget passende som kan sende &MIDI;-begivenheder til &arts;. Her beskriver jeg hvordan du kan bruge et eksternt keyboard, men en sequencer, såsom &brahms;, som kender til midibussen virker også. + +Først af alt, så ryd op på din desktop indtil du kun har én &arts-builder; med sinusbølgestrukturen i gang (men lad den ikke køre). Gå derefter tre gange til Porte Opret IN-lydsignal, og tre gange til Porte Opret UT-lydsignal. Placér portene et sted. + +Gå til Porte Ændr positioner og navne og døb portene frequency, velocity, pressed, left, right, done. + +Endelig kan du slette modulet Synth_SEQUENCE, og i stedet forbinde inddataporten frequency for strukturen til frekvensporten på Synth_FREQUENCY. Hmm. Men hvad skal man gøre med pos? Denne er ikke tilgængelig, eftersom der ikke er nogen algoritme i værdier som kan forudse hvornår brugeren vil slippe tasten han netop trykkede ned på sit midi-keyboard. Vi har i stedet parameteren pressed, som kun angiver om brugeren stadigvæk holder tasten nede. (pressed = 1: tasten stadigvæk nedtrykt, pressed = 0: tasten sluppet) + +Dette betyder også at Synth_PSCALE-objektet skal udskiftes nu. Kobl en Synth_ENVELOPE_ADSR ind i stedet (fra Moduler Syntese Envelopper ). Forbind: + + + +Strukturen pressed indgang til ADSR active + + +SIN udgangen til ADSR indgangen + + +ADSR udgangen til den venstre strukturudgang + +ADSR udgangen til den højre strukturudgang + + + +Sæt parametrene attack til 0.1, decay til 0.2, sustain til 0.7, release til 0.1. + +En ting til som vi skal tænke på er at instrumentstrukturen skal på en eller anden måde vide når den har spillet færdig og så kan ryddes væk, eftersom den ellers aldrig ville stoppe også selvom tasten er sluppet. Heldigvis ved ADSR enveloppen når der ikke er mere at høre, eftersom den alligevel skalerer signalet ned til nul på et tidspunkt efter tasten er sluppet. + +Dette angives ved at sætte udgangen done til 1. Så forbind denne til strukturens udgang. Strukturen fjernes så snart done bliver 1. + +Omdøb din struktur til instrument_gennemgang (fra Fil Omdøb struktur. Gem den derefter med Gem som (det standardnavn som nu angives skal være instrument_gennemgang).Start artscontrol, og gå til VisVis midihåndtering, og vælg TilføjaRts syntese midi uddata. Tilsidst skal du kunne vælge dit instrument (gennemgang) her. + +Åbn en terminal og skriv midisend. Du vil se at midisend og instrumentet nu er på listen i &arts; &MIDI;-håndtering. Efter at have valgt begge to og trykket på forbind, er vi til sidst klare. Tag dit keyboard og begynd at spille (det skal naturligvis være forbundet til din maskine). + + + +Forslag + +Du bør nu kunne arbejde med &arts;. Her er nogle vink om hvad du nu vil kunne gøre for at forbedre dine strukturer: + + + +Forsøg at bruge noget andet end en sinusbølge. Hvis du kobler en trekantbølge ind, TRI, synes du formodentlig ikke at lyden er særligt behagelig, Men forsøg at tilføje et SHELVE_CUTOFF-filter direkte efter trekantbølgen for at klippe frekvenserne ovenfor ved en vis frekvens (forsøg med noget i retning af 1000 Hz, eller endnu bedre to gange inddatafrekvensen eller inddatafrekvensen + 2000 Hz eller noget sådant). + + +Forsøg at bruge mere end en oscillator. Synth_XFADE kan bruges til at overtone (blande) to signaler, Synth_ADD til at addere dem. + + +Forsøg at sætte frekvenserne for oscillatorerne til nogle forskellige værdier, det giver behagelige oscillationer. + + +Eksperimentér med mere end en envelope. + + +Forsøg at syntetisere instrumenter med forskellig lyd til venstre og højre. + + +Forsøg at efterbehandle signalet når det kommer ud fra bussens nedlink. Du kunne for eksempel blande en forsinket version af signalet med originalen for at få en ekkoeffekt. + + +Forsøg at bruge anslagsstyrken, velocity (dette er styrken som tasten er trykket ned med, man kan også kalde det lydstyrken). Specialeffekter opstår altid hvis dette ikke kun ændrer lydstyrken på signalerne som laves, men også instrumentets lyd (for eksempel klipningsfrekvensen). + + +... + + + +Hvis du har lavet noget storartet, så overvej gerne at give det til &arts;' netside, eller til at indgå i næste udgave. + + + + + +Eksempel + +&arts-builder; levereres med flere eksempler, som kan åbnes med FilÅbn eksempel... . Nogle af dem er i mappen, mens nogen (som af en eller anden grund ikke virker med den nuværende udgave) er efterladt i todo-mappen. +Eksemplerne kan inddeles i flere kategorier: + + + +Selvstændige eksempler som illustrerer hvordan hvert af de indbyggede aRts-moduler bruges (som hedder example_*.arts). Disse sender typisk noget uddata til et lydkort. + + + +Instrumenter som bygges fra aRts-moduler på lavere niveau (som hedder instrument_*.arts). Disse følger en standardkonvention for ind- og udporte så de kan bruges af &MIDI;-håndteringen i &artscontrol;. + + + +Skabeloner til at oprette nye moduler (som hedder template_*.arts). + + + +Effekter som kan bruges som genbrugelige byggeblokke (som hedder effect_*.arts) [ alle i todo ] + + + +Mikserelementer som bruges til at oprette miksere, inklusive grafiske styremoduler (som hedder mixer_element_*.arts). [ alle i todo ] + + + +Diverse moduler som ikke passer ind i nogen af de ovenstående kategorier. + + + + +Detaljeret beskrivelse af hvert modul: + +example_stereo_beep.arts + +Laver en 440 Hz sinusbølge i venstre kanal og en 880 Hz sinusbølge i højre kanal, og sender dem til lydkortet. Denne henvises til i &arts; dokumentation. + + + + +example_sine.arts + +Laver en 440 Hz sinusbølge. + + + + +example_pulse.arts + +Laver en 440 Hz pulsbølge med 20% aktivitet. + + + + +example_softsaw.arts + +Laver en 440 Hz savtandsbølge. + + + + +example_square.arts + +Laver en 440 Hz firkantbølge. + + + + +example_tri.arts + +Laver en 440 Hz trekantbølge. + + + + +example_noise.arts + +Laver hvid støj. + + + + +example_dtmf1.arts + +Laver en dualtone ved at producere sinusbølger med 697 og 1209 Hz, skalere dem til 0,5 og addere dem. Dette er DTMF-tonen for cifferet "1" på en trykknaptelefon. + + + + +example_atan_saturate.arts + +Kører en trekantbølge gennem et atan-mætningsfilter. + + + + +example_autopanner.arts + +Bruger autopanorering til at panorere en 400 Hz sinusbølge mellem venstre og højre højtaler med en hastighed på 2 Hz. + + + + +example_brickwall.arts + +Skalerer en sinusbølge med en faktor 5 og kører den derefter gennem ved en murstensvægsbegrænser. + + + + +example_bus.arts + +Linker ned fra en bus som hedder Bus og linker op til bussen out_soundcard med venstre og højre kanal byttet om. + + + + +example_cdelay.arts + +Linker ned fra en bus som hedder Delay og linker højre kanal op gennem en 0,5 sekunders forsinkelse, og venstre kanal uforandret. Du kan bruge &artscontrol; til at forbinde effekten til lydafspilning og observere resultatet. + + + + +example_delay.arts + +Dette er det samme som example_cdelay.arts men bruger forsinkelseseffekten. + + + + +example_capture_wav.arts + +Dette bruger Synth_CAPTURE_WAV til at gemme en 400 Hz sinusbølge som en wav-fil. Kør modulet i nogle sekunder, og kig derefter på filen som blev lavet i /tmp. Du kan afspille filen med en mediaspiller såsom kaiman. + + + + +example_data.arts + +Dette bruger Data-modulet til at oprette en konstant strøm af værdien 3 og sender den til et Debug-modul for at vise det periodisk. Det indeholder også et Nil-modul, og viser hvordan den kan bruges til ikke at gøre noget overhovedet. + + + + +example_adsr.arts + +Viser hvordan en enkelt instrumentlyd kan laves med envelope ADSR-modulet, som udløses repetitivt af en firkantbølge. + + + + +example_fm.arts + +Dette bruger FM Source-modulet til at lave en 440 Hz sinusbølge som frekvensmoduleres med en 5 Hz hastighed. + + + + +example_freeverb.arts + +Dette forbinder Freeverb-effekten fra et busnedlink til et busoplink. Du kan bruge artscontrol til at forbinde effekten til lydafspilning og observere resultatet. + + + + +example_flanger.arts + +Dette implementerer en enkel flangereffekt (det synes dog ikke at virke endnu). + + + + +example_moog.arts + +Denne struktur kombinerer de to kanaler fra en bus ind i en, sender den gennem et Moog VCF filter, og sender den derefter til bussen out_soundcard. + + + + +example_pitch_shift.arts + +Denne struktur sender venstrekanalens lyddata gennem en tonehøjdeændringseffekt. Justér hastighedsparameteren for at variere effekten. + + + + +example_rc.arts + +Denne struktur sender hvid støj gennem et RC-filer og ud til lydkortet. Ved at kigge på FFT måleren i artscontrol kan du se hvordan dette adskiller sig fra en ufiltreret støjbølgeform. + + + + +example_sequence.arts + +Dette demonstrerer Sequence-modulet ved at spille en sekvens af toner. + + + + +example_shelve_cutoff.arts + +Denne struktur sender hvid støj gennem et klippefilter og ud til lydkortet. Ved at kigge på FFT måleren i artscontrol kan du se hvordan dette adskiller sig fra en ufiltreret støjbølgeform. + + + + +example_equalizer.arts + +Dette demonstrerer modulet Std_Equalizer. Det forstærker de lave og høje frekvenser med 6 dB. + + + + +example_tremolo.arts + +Dette demonstrerer tremoloeffekten. Det modulerer venstre og højre kanal med en 10 Hz tremolo. + + + + +example_xfade.arts + +Dette eksempel blander 440 og 880 Hz sinusbølger med en overtoning. Justér værdien på overtoningens procentindgang fra -1 til 1 for at kontrollere blandningen af de to signaler. + + + + +example_pscale.arts + +Dette illustrerer Pscale-modulet (jeg er ikke sikker på at det er et meningsfuldt eksempel). + + + + +example_play_wav.arts + +Dette illustrerer modulet Play Wave. Du skal angive hele søgestien til en .wav-fil som filnavneparameter. + + + + +example_multi_add.arts + +Dette viser modulet Multi Add, som accepterer et hvilket som helst antal indgange. Det opsummerer tre Data-moduler som producerer inddata 1, 2 og 3, og viser resultatet 6. + + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/detail.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/detail.docbook new file mode 100644 index 00000000000..7faa7718db4 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/detail.docbook @@ -0,0 +1,1383 @@ + + + +&arts; i detalje + + +Arkitektur + + + + + +&arts;-strukturer. + + + + +Moduler & porte + +Idéen med &arts; er at syntese kan gøres med små moduler, som kun gør en eneste ting, og derefter kombinere dem i komplekse strukturer. De små moduler har normalt indgange, hvor de kan modtage nogle signaler eller parametre, og udgange hvor de producerer nogle signaler. + +Et modul (Synth_ADD) tager for eksempel kun de to signaler på sine indgange og lægger dem sammen. Resultatet er tilgængeligt som et uddatasignal. De steder hvor moduler sørger for deres ind- eller udsignaler kaldes porte. + + + + +Strukturer + +En struktur er en kombination af sammenkoblede moduler, hvor nogen kan have parametre som er kodet direkte på deres inddataporte, andre kan være sammenkoblede, og en del kan være slet ikke forbundet. + +Det du kan gøre med &arts-builder; er at beskrive strukturer. Du beskriver hvilke moduler du vil skal kobles sammen med hvilke andre moduler. Når du er klar, kan du gemme strukturbeskrivelsen i en fil, eller bede &arts; om at oprette (køre) den struktur som du har beskrevet. + +Derefter hører du formodlig noget lyd, hvis du har gjort alt på den rigtige måde. + + + + + +Latens + + +Hvad er latens? + +Antag at du har et program som hedder musepling (som skal afgive en pling-lyd hvis du klikker på en museknap). Latensen er tiden mellem din finger trykker på museknappen til du hører plinget. Latensen for dette scenario består af flere forskellige latenstider, som har forskellige årsager. + + + + +Latens i enkle programmer + +I dette enkle program opstår latensen på følgende steder: + + + + +Tiden til kernen har meddelt X11-serveren at museknappen er trykket ned. + + + +Tiden til X11-serveren har meddelt dit program at museknappen er trykket ned. + + + +Tiden til musepling-programmet har bestemt at denne knap var værd at få et pling afspillet. + + + +Tiden det tager for musepling-programmet at fortælle lydserveren at den skal afspille et pling. + + + +Tiden det tager for plinget (som lydserveren begynder at mikse med øvrig uddata med det samme) at gå gennem bufferet data, til det virkelig når stedet hvor lydkortet spiller. + + + +Tiden det tager for pling-lyden at gå fra højtalerne til dine ører. + + + +De første tre punkter er latensen udenfor &arts;. De er interessante, men udenfor dette dokuments rækkevidde. Ikke desto mindre skal du vide at de findes, så selvom du har optimeret alt andet til virkelig små værdier, så får du måske ikke nødvendigvis nøjagtigt det resultat du forventer dig. + +At bede serveren om at spille noget indebærer oftest kun et enkelt &MCOP;-kald. Der er målinger som bekræfter at det kan lade sig gøre at bede serveren at spille noget 9000 gange pr sekund med den nuværende implementering, på samme værtsmaskine med Unix domæne-sokler. Jeg antager at det meste af dette er kernens omkostning, for at skifte fra en proces til en anden. Naturligvis ændres denne værdi med den nøjagtige type af parametrene. Hvis man overfører et helt billede med et kald, bliver det langsommere end hvis man kun overfører en "long" værdi. Det samme er sandt for returværdien. For almindelige strenge (som filnavnet på wav-filen som skal afspilles) skulle dette ikke være et problem. + +Dette betyder at vi kan tilnærme denne tid med 1/9000 sekund, det vil sige under 0,15 ms. Vi vil se at dette ikke er relevant. + +Derefter kommer tiden efter serveren begynder at spille og lydkortet tager imod noget. Serveren skal buffre data, så ingen pauser høres når andre programmer, såsom din X11-server eller musepling-programmet, kører. Den måde dette håndteres på &Linux; er at der er et antal fragmenter af en vis størrelse. Serveren genopfylder fragmenter, og lydkortet afspiller fragmenter. + +Så antag at der er tre fragmenter. Serveren genopfylder det første og lydkortet begynder at afspille det. Serveren genopfylder det andet. Serveren genopfylder det tredje. Serveren er klar og andre programmer kan nu gøre noget. + +Når lydkortet har afspillet det første fragment, begynder det at afspille det andet og serveren begynder at genopfylde det første, og så videre. + +Den maksimale latenstiden du får med alt dette er (antal fragmenter) * (størrelse på hvert fragment) / (samplingsfrekvens * (størrelse på hver sampling)). Hvis vi antager 44 kHz stereo, og syv fragmenter på 1024 byte (de nuværende standardindstillinger i aRts), så får vi 40 ms. + +Disse værdier kan indstilles efter dine behov. CPU-brugen øges dog med mindre latenstider, eftersom lydserveren skal genopfylde bufferne oftere, og med mindre dele. Det er også oftest umuligt at nå bedre værdier uden at give lydserveren realtidsprioritet, eftersom man ellers ofte får pauser. + +Det er imidlertid realistisk at lave noget i stil med 3 fragmenter med 256 byte hver, som ville ændre denne værdi til 4,4 ms. Med 4,4 ms forsinkelse ville &arts; CPU-forbrug være cirka 7,5 %. Med en 40 ms forsinkelse, ville den være cirka 3 % (for en PII-350, og værdien kan afhænge af dit lydkort, version af kernen og andet). + +Så er der tiden som det tager for pling-lyden at gå fra højtalerne til dine ører. Antag at din afstand fra højtalerne er 2 meter. Lyden bevæger sig med hastigheden 330 meter pr sekund. Så vi kan ansætte denne tid til 6 ms. + + + + +Latenstid i programmer med lydstrømme + +Programmer med lydstrømme er dem som laver deres lyd selv. Tænk dig til et spil som sender en konstant strøm med samplinger, og nu skal tilpasses til at afspille lyd via &arts;. Som et eksempel: når jeg trykker på en tast så hopper figuren som jeg bruger, og en bang-lyd afspilles. + +Først så skal du vide hvordan &arts; håndterer strømme. Det er meget lignende I/O med lydkortet. Spillet sender nogle pakker med samplinger til lydserveren, lad os antage tre styk. Så snart lydserveren er klar med den første pakke, sender den en bekræftelse tilbage til spillet om at denne pakke er færdig. + +Spillet laver yderligere en lydpakke og sender den til serveren. I mellemtiden begynder serveren at konsumere den anden lydpakke, og så videre. Latenstiderne ligner dem i det enklere tilfælde: + + + +Tiden til kernen har meddelt X11-serveren at en knap er trykket ned. + + + +Tiden til X11-serveren har meddelt spillet at en knap er trykket ned. + + + +Tiden til spillet har bestemt at denne knap var værd at få et bang afspillet. + + + +Tiden til lydpakken som afspilles er begyndt at putte bang-lyden ind når lydserveren. + + + +Tiden det tager for banget (som lydserveren begynder at mikse med øvrig uddata med det samme) at gå gennem bufferdata, til det virkelig når stedet hvor lydkortet spiller. + + + +Tiden det tager for bang-lyden fra højtalerne at nå dine ører. + + + + +De eksterne latenstider er, som ovenfor, udenfor dette dokuments rækkevidde. + +Det er åbenbart at latenstiden for strømme afhænger af tiden det tager for alle pakker som bruges at afspilles en gang. Så den er (antal pakker) * (størrelse på hver pakke) / (samplingsfrekvensen * (størrelse på hver sampling)). + +Som du ser er dette samme formel som gælder for fragmenterne. For spil er der dog ingen grund til at have så korte forsinkelser som ovenfor. Jeg vil sige at et realistisk eksempel for et spil kunne være 2048 byte pr pakke, når der bruges 3 pakker. Latenstidsresultatet ville så være 35 ms. + +Dette er baseret på følgende: antag at et spil viser 25 billeder pr sekund (for skærmen). Det er antageligt helt sikkert at antage at en forskel på et billede for lydudskriften ikke vil kunne mærkes. Derfor er 1/25 sekunds forsinkelse for lydstrømmen acceptabelt, hvilket på sin side betyder at 40 ms skulle være o.k. + +De fleste personer kører heller ikke deres spil med realtidsprioritet, og faren for pauser i lyden kan ikke negligeres. Strømme med 3 pakker på 256 byte er mulige (jeg prøvede det) - men forårsager meget CPU-forbrug til strømning. + +Latenstider på serversiden kan du beregne præcis som ovenfor. + + + + +Nogle <acronym +>CPU</acronym +>-forbrugshensyn + +Der er mange faktorer som påvirker CPU-forbrug i et komplekst scenario, med nogle programmer med lydstrømme og nogle andre programmer, nogle plugin i serveren, osv. For at angive nogle få: + + + +CPU-forbrug for de nødvendige beregninger. + + + +&arts; interne skemalægningsomkostning - hvordan &arts; bestemmer hvornår hvilket modul skal beregne hvad. + + + +Omkostning til konvertering af heltal til decimaltal. + + + +&MCOP; protokolomkostning. + + + +Kernens proces/sammenhængsskift. + + + +Kernens kommunikationsomkostning. + + + +For beregning af rå CPU-forbrug, hvis du afspiller to strømme samtidigt skal du gøre additioner. Hvis du anvender et filter, er visse beregninger indblandede. For at tage et forenklet eksempel, at addere to strømme kræver måske fire CPU-cykler pr addition, på en 350 MHz processor er dette 44100 * 2 * 4 / 350000000 = 0,1 % CPU-forbrug. + +&arts; interne skemalægning: &arts; skal bestemme hvilket plugin som skal beregne hvad hvornår. Dette tager tid. Brug et profileringsværktøj hvis du er interesseret i det. Hvad som kan siges i almindelighed er at jo mindre realtid som bruges (dvs. jo større blokke som kan beregnes af gangen) desto mindre skemalægningsomkostning fås. Udover beregning af blokke med 128 samplinger af gangen (altså med brug af fragmentstørrelser på 512 byte) er skemalægningsomkostningen formodentlig ikke værd at bryde sig om. + +Konvertering fra heltal til decimaltal: &arts; bruger decimaltal som internt dataformat. De er enkle at håndtere, og på moderne processorer er de ikke meget langsommere end heltalsoperationer. Hvis der er klienter som afspiller data som ikke er decimaltal (såsom et spil som skal lave sin lydudskrift via &arts;), behøves konvertering. Det samme gælder hvis du vil afspille lyd på dit lydkort. Lydkortet behøver heltal, så du skal konvertere. + +Her er værdier for en Celeron, cirka klokcykler pr sampling, med -O2 og egcs 2.91.66 (målt af Eugene Smith hamster@null.ru). Dette er naturligvis yderst processorafhængigt: + +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 + + +Så dette betyder 1 % CPU-forbrug for konvertering og 5 % for interpolation på denne 350 MHz processor. + +&MCOP; protokollomkostning: &MCOP; klarer, som en tommelfingerregel, 9000 kald pr sekund. En stor del af dette er ikke &MCOP;'s fejl, men hører sammen med de to grunde for kernen som nævnes nedenfor. Dette giver i alle tilfælde en basis for at udføre beregninger af hvad omkostningen er for strømning. + +Hver datapakke som sendes med en strøm kan anses for at være et &MCOP;-kald. Store pakker er naturligvis langsommere end 9000 pakker/s, men det giver en god idé. + +Antag at du bruger pakkestørrelser på 1024 byte. På denne måde, for at overføre en strøm med 44 kHz stereo, behøver du at overføre 44100 * 4 / 1024 = 172 pakker pr sekund. Antag at du kunne overføre 9000 pakker med 100 % CPU-forbrug, så får du (172 *100) / 9000 = 2 % CPU-forbrug på grund af strømningen med 1024 byte pakker. + +Dette er en approksimation. Det viser i alle tilfælde at du ville klare dig meget bedre (hvis du har råd for latenstiden), med for eksempel at bruge pakker på 4096 byte. Her kan vi oprette en kompakt formel, ved at beregne pakkestørrelsen som forårsager 100 % CPU-forbrug som 44100 * 4 / 9000 = 19,6 samplinger, og på den måde få hurtigformlen: + +CPU-forbrug for en strøm i procent = 1960 / (din pakkestørrelse) + +som giver os 0,5 % CPU-forbrug med en strøm af 4096 byte pakker. + +Kernens proces/sammenhængsskift: Dette er en del af &MCOP;-protokollens omkostning. At skifte mellem to processer tager tid. Der er en ny hukommelsesafbildning, cacher er ugyldige, og en del andet (hvis en ekspert på kernen læser dette - fortæl mig om de nøjagtige grunde). Dette betyder: det tager tid. + +Jeg er ikke sikker på hvor mange procesbyte &Linux; kan lave pr sekund, men værdien er ikke uendelig. Så af &MCOP;-protokollens omkostning, antager jeg at en hel del afhænger af processkift. &MCOP; først påbegyndtes prøvede jeg samme kommunikation inde i en proces, og det var meget hurtigere (cirka fire gange hurtigere). + +Kernens kommunikationsomkostning: Dette er en del af &MCOP;-protokollens omkostning. At overføre data mellem processer gøres for øjeblikket via et udtag (sokkel). Dette er bekvemt, eftersom den almindelige select() metode kan bruges til at afgøre hvornår en meddelelse er ankommet. Det kan også kombineres med andre I/O-kilder såsom lyd-I/O, X11-server eller hvad som helst andet. + +Disse læse- og skrivekald koster definitivt processorcykler. For små kald (som at overføre en midi-begivenhed) er det formodentlig ikke så farligt, men for store kald (som at overføre et videobillede på flere Mbyte) er det helt klart et problem. + +At tilføje brug af delt hukommelse til &MCOP; hvor det er passende er formodentlig den bedste løsning. Det skal dog gøres transparent for anvendelsesprogrammerne. + +Tag et profileringsværktøj og udfør andre test for at finde ud af nøjagtigt hvordan nuværende lydstrømme påvirkes af ikke at bruge delt hukommelse. Det er dog ikke så dårligt, eftersom lydstrømme (afspilning af mp3) kan gøres med totalt 6 % CPU-forbrug for &artsd; og artscat (og 5 % for mp3-afkoderen). Dette omfatter alting fra nødvendige beregninger til omkostning for udtaget, så jeg vil bedømme at man måske ville vinde cirka 1 % på at bruge delt hukommelse. + + + + +Nogle hårde værdier + +Disse er lavet med den nuværende udviklingsversion. Jeg ville også forsøge med rigtigt svære tilfælde, så dette er ikke hvad programmer til daglig brug ville gøre. + +Jeg skrev et program som hedder streamsound som sender datastrømmen til &arts;. Her køres det med realtidsprioritet (uden problemer), og et lille plugin på serversiden (lydstyrkeskalning og klipning): + +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 + + +Hvert af programmerne sender en strøm med 3 fragmenter på 1024 byte (18 ms). Der er tre sådanne klienter som kører samtidigt. Jeg ved at det synes at være lidt vel meget, men som jeg sagde: tag et profileringsværktøj og find ud af hvad som koster tid, og hvis du vil, forbedr det. + +Jeg tror i alt fald ikke at bruge strømning sådan her er realistisk eller giver mening. For at gøre det hele endnu mere ekstremt, forsøgte jeg med den mindst mulige latenstid. Resultat: man kan bruge strømme uden afbrud med et klientprogram, hvis man tager 2 fragmenter med 128 byte mellem aRts og lydkortet, og mellem klientprogrammet og aRts. Dette betyder at man har en total maksimal latenstid på 128 * 4 / 44100 * 4 = 3 ms, hvor 1,5 ms genereres på grund af I/O til lydkortet og 1,5 ms genereres af kommunikation med &arts;. Begge programmer skal køre med realtidsprioritet. + +Men dette koster en enorm mængde CPU. Dette eksempel koster cirka 45 % på min P-II/350. Det begynder også at klikke hvis man starter top, flytter vinduer på X11-skærmen eller laver disk-I/O. Alt dette har med kernen at gøre. Problemet er at skemalægge to eller flere processer med realtidsprioritet også koster en enorm anstrengelse, endnu mere end kommunikation og meddelelse til hinanden, &etc;. + +Tilsidst, et mere hverdagsagtigt eksempel: Dette er &arts; med artsd og en artscat (en klient med datastrøm) som kører 16 fragmenter på 4096 byte: + +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 + + + + + + + + +Busser + +Busser er forbindelser som bygges dynamisk for at overføre lyd. Der er et antal oplink og nedlink. Alle signaler fra oplinkene adderes og sendes til nedlinkene. + +Busser er for øjeblikket implementerede til at virke med stereo, så du kan kun overføre stereodata via busser. Hvis du vil have monodata, ja, overfør det kun på en kanal og sæt den anden til nul eller noget vilkårligt. Hvad du skal gøre er at oprette en eller flere Synth_BUS_UPLINK-objekter og give dem et busnavn, som de skal tale med (f.eks. lyd eller trommer). Send derefter helt enkelt data derind. + +Derefter skal du oprette et eller flere Synth_BUS_DOWNLINK-objekter, og fortælle dem om busnavnet (lyd eller trommer... hvis det passer sammen, kommer data igennem), og den blandede lyd kommer ud igen. + +Oplinkene og nedlinkene kan være i forskellige strukturer, du kan til og med have forskellige aRts-byggere som kører og starte et oplink i en og tage imod data i den anden med et nedlink. + +Det der er rart ved busser er at de er fuldstændigt dynamiske. Klienter kan kobles ind eller ud i farten. Det skal ikke kunne høres noget klik eller støj når dette sker. + +Du skal naturligvis ikke tilkoble eller frakoble en klient mens den spiller et signal, eftersom den formodentlig ikke er nul når den kobles ud, og der så opstår et klik. + + + + +Handleren + +&arts;/&MCOP; afhænger helt af at opdele objekter i små komponenter. Dette gør alt meget fleksibelt, eftersom man let kan udvide systemet ved at tilføje nye komponenter, som implementerer nye effekter, filformater, oscillatorer, grafiske elementer, ... Eftersom næsten alt er komponenter, kan næsten alt let udvides uden at ændre eksisterende kildekode. Nye komponenter kan enkelt indlæses dynamisk for at forbedre programmer som allerede eksisterer. + +For at dette skal virke, kræves der dog to ting: + + + + +Komponenter skal fortælle at de findes - de skal beskrive hvilke storartede ting de tilbyder, så programmerne kan bruge dem. + + + +Programmer skal aktivt lede efter komponenter som de ville kunne bruge, i stedet for altid at bruge samme komponenter til en vis opgave. + + + + +Kombinationen af dette: komponenter som siger her er jeg, jeg er smart, brug mig, og programmer (eller om man vil, andre komponenter) som går ud og leder efter hvilken komponenter de kan bruge for at få noget gjort, kaldes at handle. + +I &arts; beskriver komponenter sig selv ved at angive værdier som de understøtter som egenskaber. En typisk egenskab for en filindlæsningkomponent kan være filendelsen for filerne som den kan behandle. Typiske værdier kan være wav, aiff eller mp3. + +I virkeligheden kan hver komponent vælge at tilbyde mange forskellige værdier for en egenskab. Så en enkelt komponent ville kunne tilbyde at læse både wav og aiff-filer, ved at angive at den understøtter disse værdier for egenskaben Endelse. + +For at gøre dette, skal en komponent placere en .mcopclass-fil som indeholder egenskaberne den understøtter på et passende sted. For vort eksempel, kan den se sådan her ud (og ville være installeret i komponentmappen/Arts/WavPlayObject.mcopclass): + +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 + + +Det er vigtigt at filnavnet på .mcopclass-filen også angiver hvad komponentens grænseflade hedder. Handleren kigger ikke på indholdet overhovedet, hvis filen (som her) hedder Arts/WavPlayObject.mcopclass, og komponentgrænsefladen hedder Arts::WavPlayObject (moduler hører sammen med mapper). + +For at lede efter komponenter er der to grænseflader (som er definerede i core.idl, så de er tilgængelige i hvert program), som hedder Arts::TraderQuery og Arts::TraderOffer. Du går på en indkøbsrunde efter komponenter sådan her: + + + +Opret et forespørgselsobjekt: +Arts::TraderQuery query; + + + + +Angiv hvad du vil have. Som du så ovenfor, beskriver komponenter sig selv med egenskaber, som de sætter til visse værdier. Så at specificere hvad du vil have gøres ved at vælge komponenter som understøtter en vis værdi for en egenskab. Dette sker med metoden supports i TraderQuery: + +query.supports("Interface","Arts::PlayObject"); + query.supports("Extension","wav"); + + + + +Tilsidst udføres forespørgslen med metoden query. Derefter får du (forhåbentlig) nogle tilbud: + +vector<Arts::TraderOffer> *offers = query.query(); + + + + +Nu kan du undersøge hvad du fandt. Det vigtige er metoden interfaceName i TraderOffer, som giver dig navnene på komponenterne som svarede på spørgsmålet. Du kan også finde ud af yderligere egenskaber med getProperty. Følgende kode løber helt enkelt gennem alle komponenterne, udskriver deres grænsefladenavn (som ville kunne bruges til at oprette dem), og fjerner resultaterne af forespørgslen igen: +vector<Arts::TraderOffer>::iterator i; + for(i = offers->begin(); i != offers->end(); i++) + cout << i->interfaceName() << endl; + delete offers; + + + + +For at denne slags handelsservice skal være nyttig, er det vigtigt på en eller anden måde at blive enig om hvilke egenskaber som komponenter normalt skal definere. Det er væsentligt at mere eller mindre alle komponenter indenfor et vist område bruger samme sæt egenskaber til at beskrive sig selv (og samme sæt værdier når det behøves), så programmer (eller andre komponenter) kan finde dem. + +Author (type streng, valgfri): Forfatter. Dette kan bruges til endelig at lade verden finde ud af at du har skrevet noget. Du kan skrive hvad du vil her, en e-mail-adresse er naturligvis en god hjælp. + +Buildable (type boolean, anbefales): Bygbar. Dette angiver om komponenten er brugbar med RAD-værktøj (såsom &arts-builder;) som bruger komponenter ved at tildele egenskaber og forbinde porte. Det anbefales at denne værdi sættes til true for næsten alle signalbehandlingskomponenter (såsom filer, lydeffekter, oscillatorer, ...), og for alle andre objekter som kan bruges på en RAD-lignende måde, men ikke for interne objekter som for eksempel Arts::InterfaceRepo. + +Extension (type streng, brugt hvor det passer): Filendelse. Alle moduler som håndterer filer bør overveje at bruge dette. Du angiver filendelsen med små bogstaver uden . her, så noget som wav skulle virke udmærket. + +Interface (type streng, kræves): Grænseflade. Dette skal omfatte hele listen af (nyttige) grænseflader som din komponent understøtter, formodentlig inklusive Arts::Object og hvis anvendeligt Arts::SynthModule. + +Language (type streng, anbefales): Sprog. Hvis du ønsker at din komponent skal indlæses dynamisk, skal du angive sproget her. For øjeblikket er den eneste tilladte værdi C++, som betyder at komponenten er skrevet med den normale C++ programmeringsgrænseflade. Hvis du angiver dette, skal du også angive egenskaben Library nedenfor. + +Library (type streng, brugt hvor det passer): Bibliotek. Komponenter som er skrevet i C++ kan indlæses dynamisk. For at gøre dette skal du kompilere dem i et dynamisk indlæseligt libtool (.la) modul. Her kan du angive navnet på .la-filen som indeholder din komponent. Husk at bruge REGISTER_IMPLEMENTATION (som altid). + +MimeType (type streng, brug hvor det passer): Mimetype. Alle som håndterer filer bør overveje at bruge dette. Du skal angive standard-mimetypen med små bogstaver her, for eksempel audio/x-wav. + +&URL; (type streng, valgfri): Hvis du vil fortælle hvor man kan finde en ny version af komponenten (eller en netside eller noget andet), kan du gøre dette. Dette skal være en standard &HTTP;- eller &FTP;-netadresse. + + + + + + +Navnerum i &arts; + + +Indledning + +Hver navnerumsdeklaration hører sammen med en deklaration af en modul i &MCOP; &IDL;. + +// mcop idl + +module M { + interface A + { + } +}; + +interface B; + + +I dette tilfælde ville den genererede C++ kode for &IDL;-fragmentet se sådan her ud: + +// C++ deklaration + +namespace M { + /* deklaration af A_base/A_skel/A_stub og lignende */ + class A { // Smartwrap referenceklasse + /* [...] */ + }; +} + +/* deklaration af B_base/B_skel/B_stub og lignende */ +class B { + /* [...] */ +}; + + +Så når du henviser til klasserne fra eksemplet ovenfor i din C++ kode, skal du skrive M::A, men kun B. Du kan imidlertid bruge using M et sted, som med alle navnerum i C++. + + + + +Hvordan &arts; bruger navnerum + +Der er et globalt navnerum som kaldes Arts, som alle programmer og biblioteker som hører til &arts; selv bruger til at lægge deres deklarationer i. Dette betyder at når du skriver C++ kode som afhænger af &arts;, skal du normalt bruge præfikset Arts:: for hver klasse du bruger, sådan her: + +int main(int argc, char **argv) +{ + Arts::Dispatcher dispatcher; + Arts::SimpleSoundServer server(Arts::Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/nogen_fil.wav"); + + +Det andet alternativ er at skrive "using" en gang, sådan her: + +using namespace Arts; + +int main(int argc, char **argv) +{ + Dispatcher dispatcher; + SimpleSoundServer server(Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/nogen_fil.wav"); + [...] + + +I &IDL;-filer, har du egentlig ikke noget valg. Hvis du skriver kode som tilhører &arts; selv, skal du putte den i modulet &arts;. + +// IDL-fil for aRts-kode: +#include <artsflow.idl> +module Arts { // put den i Arts-navnerum + interface Synth_TWEAK : SynthModule + { + in audio stream invalue; + out audio stream outvalue; + attribute float tweakFactor; + }; +}; + + +Hvis du skriver kode som ikke hører til selve &arts;, skal du ikke putte den i navnerummet Arts. Du kan dog oprette et eget navnerum hvis du vil. Under alle omstændigheder, skal du bruge præfiks for klasser fra &arts; som du bruger. + +// IDL-fil for kode som ikke hører til aRts: +#include <artsflow.idl> + +// skriv enten med eller uden moduldeklaration, og de genererede klasser +// kommer ikke til at bruge et navnerum: +interface Synth_TWEAK2 : Arts::SynthModule +{ + in audio stream invalue; + out audio stream outvalue; + attribute float tweakFactor; +}; + +// du kan dog vælge et eget navnerum hvis du vil, så hvis du +// skriver programmet "PowerRadio", ville du kunne gøre sådan her: +module PowerRadio { + struct Station { + string name; + float frequency; + }; + + interface Tuner : Arts::SynthModule { + attribute Station station; // intet præfiks for Station, samme modul + out audio stream left, right; + }; +}; + + + + + +Interne funktioner: hvordan implementeringen virker + +&MCOP; har ofte brug for at henvise til navne på typer og grænseflader for typekonverteringer, grænseflader og metodesignaturer. Disse repræsenteres af strenge i de almindelige &MCOP;-datastrukturer, mens navnerummet altid er fuldstændigt repræsenteret i C++ stilen. Dette betyder at strengene skal indeholde M::A og B, ifølge eksemplerne ovenfor. + +Bemærk at dette til og med gælder hvis navnerumskvalifikatorerne ikke blev givet inde i &IDL;-teksten, eftersom sammenhængen klargør hvilket navnerum grænsefladen A var beregnet til at bruge. + + + + + +Tråde i &arts; + + +Det basale + +At bruge tråde er ikke muligt på alle platforme. Dette er grunden til at &arts; oprindeligt blev skrevet uden at bruge tråde overhovedet. For næsten alle problemer, findes der en løsning uden tråde som gør det samme som hvert løsning med tråde. + +For eksempel, i stedet for at placere lyduddata i en separat tråd, og gøre den blokerende, bruger &arts; lyduddata som ikke blokerer, og regner ud hvornår næste del af uddata skal skrives med select(). + +&arts; understøtter i det mindste (i de nyeste versioner) støtte for dem som vil implementere deres objekter med tråde. Hvis du for eksempel allerede har kode for en mp3-afspiller, og koden forventer at mp3-afkoderen skal køres i en separat tråd, er det oftest lettest at beholde denne konstruktion. + +Implementeringen af &arts;/&MCOP; er opbygget ved at dele tilstanden mellem forskellige objekter på tydelige og mindre tydlige måder. En kort liste af delte tilstande omfatter: + + +Afsenderobjektet som laver &MCOP;-kommunikation + + + +Referenceregningen (Smartwrappers). + + + +I/O-håndteringen som håndterer tidsgrænser og fd-tidsmåling. + + + +Objekthåndteringen som laver objekter og indlæser plugin dynamisk. + + + +Flydesystemet som kalder calculateBlock i passende tilfælde. + + + +Ingen af de ovenstående objekter forventer at blive brugt samtidigt (dvs. at blive kaldt fra forskellige tråde samtidigt). I almindelighed er der to måder at løse dette: + + + +Kræv at den som kalder hvilken som helst funktion i objektet skaffer sig en lås inden den bruges. + + + +Gør objekterne virkeligt trådsikre og/eller opret instanser af dem for hver tråd. + + + +&arts; bruger den første måde. Du behøver en lås hver gang du skal have adgang til et af disse objekter. Den anden måde er sværere at gøre. Et hurtigt fiks som forsøger at opnå dette findes på http://space.twc.de/~stefan/kde/download/arts-mt.tar.gz, men for øjeblikket virker en minimal måde formodentlig bedre, og forårsager mindre problemer med eksisterende programmer. + + + +Hvornår/hvordan skal låsning ske? + +Du kan få/slippe låsen med de to funktioner: + + + + +Arts::Dispatcher::lock() + + + + +Arts::Dispatcher::unlock() + + + + +Generelt behøver du ikke at skaffe en lås (og du skal ikke forsøge at gøre det), hvis den allerede holdes. En liste over betingelser når dette er tilfældet er: + + + +Du tager imod et tilbagekald fra I/O-håndteringen (tidsgrænse eller fd). + + + +Du kaldes på grund af nogle &MCOP;-forespørgsler. + + + +Du kaldes fra NotificationManager. + + + +Du kaldes fra flydesystemet (calculateBlock) + + + +Der er også nogle undtagelse for funktioner som du kun kan kalde i hovedtråden, og af den grund aldrig behøver et låse for at kalde dem: + + + +Opret og fjern afsenderen eller I/O-håndteringen. + + + +Dispatcher::run() / IOManager::run() + + + +IOManager::processOneEvent() + + + +Men det er alt. For alt andet som på nogen måde hører sammen med &arts;, skal du skaffe låsen, og slippe den igen når du er klar. Her er et enkelt eksempel: + +class SuspendTimeThread : Arts::Thread { +public: + void run() { + /* + * du behøver denne lås fordi: + * - oprettelse af en reference behøver en lås (eftersom global: går til + * objekthåndteringen, som derefter kunne have brug for GlobalComm + * objektet for at slå hver forbindelse der skal gøres op) + * - tildeling af en smartwrapper behøver en lås + * - oprettelse af et objekt fra en reference behøver en lås (eftersom + * den kan få brug for at forbinde til en server) + */ + Arts::Dispatcher::lock(); + Arts::SoundServer server = Arts::Reference("global:Arts_SoundServer"); + Arts::Dispatcher::unlock(); + + for(;;) { /* + * du behøver en lås her, eftersom + * - følge en reference for en smartwrapper behøver en lås + * (eftersom den kan oprette objektet når den bruges) + * - at gøre et MCOP-kald behøver en lås + */ + Arts::Dispatcher::lock(); + long seconds = server.secondsUntilSuspend(); + Arts::Dispatcher::unlock(); + + printf("sekunder til ventetilstand = %d",seconds); + sleep(1); + } + } +} + + + + + + +Trådrelaterede klasser + +Følgende trådrelaterede klasser er tilgængelige for øjeblikket: + + + + Arts::Thread - som indkapsler en tråd. + + + + Arts::Mutex - som indkapsler en mutex. + + + + Arts::ThreadCondition - som giver støtte for at vække tråde som venter på at en vis betingelse skal blive sand. + + + +Arts::SystemThreads - som indkapsler operativsystemets trådningslager (og giver nogle hjælpefunktioner for anvendelsesprogrammører). + + + +Se linkene for dokumentationen. + + + + + +Referencer og fejlhåndtering + +&MCOP;-referencer er et af de mest centrale begreber i &MCOP; programmering. Dette afsnit forsøger at beskrive nøjagtigt hvordan referencer bruges, og behandler især fejltilfælde (server bryder sammen). + + +Grundlæggende egenskaber for referencer + + + +En &MCOP; reference er ikke et objekt, men en reference til et objekt: Selv om følgende deklaration + Arts::Synth_PLAY p; + ser ud som en definition af et objekt, så deklarerer den kun en reference til et objekt. Som C++ programmør, kan du også se den som Synth_PLAY *, en slags peger til et Synth_PLAY-objekt. Det betyder specielt at p kan være det samme som en NULL-peger. + + + +Du kan oprette en NULL-reference ved eksplicit at tildele den. +Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); + + + + +At kalde objekter med en NULL-reference forårsager et hukommelsesdump +Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); + string s = p.toString(); + +forårsager et hukommelsesdump. Hvis man sammenligner dette med en peger, er det stort set det samme som + QWindow* w = 0; + w->show(); + hvilket enhver C++ programmør ved at man skal undgå. + + + +Uinitierede objekter forsøger at oprette sig selv når de først bruges + +Arts::Synth_PLAY p; + string s = p.toString(); + +er noget anderledes end at følge en NULL-peger. Du fortalte slet ikke objektet hvad det er, og nu forsøger du at bruge det. Gætværket her er at du vil have en ny lokal instans af et Arts::Synth_PLAY-objekt. Du kan naturligvis have villet gøre noget andet (såsom at oprette objektet et andet sted, eller bruge et eksisterende fjernobjekt). Det er i alle tilfælde en bekvem genvej til at oprette objekter. At oprette et objekt når det først bruges virker ikke når du allerede har tildelt det til noget andet (som en null-reference). + +Den tilsvarende C++ terminologi ville være + QWidget* w; + w->show(); + som naturligvis helt enkelt giver en segmenteringsfejl i C++. Så dette er anderledes her. Denne måde at oprette objekt er tricket, eftersom det ikke er nødvendigt at der findes en implementering for din grænseflade. + +Betragt for eksempel et abstrakt objekt såsom et Arts::PlayObject. Der er naturligvis konkrete PlayObjects, såsom de til for at afspille mp3-filer eller wav-filer, men + Arts::PlayObject po; + po.play(); + mislykkes helt sikkert. Problemet er at selvom et PlayObject forsøges at blive lavet, så mislykkes det eftersom der kun er objekter såsom Arts::WavPlayObject og lignende. Brug derfor kun denne måde at oprette objekter hvis du er sikker på at der er en implementering. + + + +Referencer kan pege på samme objekt + +Arts::SimpleSoundServer s = Arts::Reference("global:Arts_SimpleSoundServer"); + Arts::SimpleSoundServer s2 = s; + + +laver to referencer som angiver samme objekt. Det kopierer ikke nogen værdi, og laver ikke to objekter. + + + +Alle objekter referenceregnes. Så snart et objekt ikke har nogen referencer længere, slettes det. Der er ingen måde udtrykkeligt at fjerne et objekt, men du kan dog bruge noget sådant her + Arts::Synth_PLAY p; + p.start(); + [...] + p = Arts::Synth_PLAY::null(); + for at få Synth_PLAY-objektet til at forsvinde til slut. Specielt er det aldrig nødvendigt at bruge new og delete i sammenhæng med referencer. + + + + + + +Tilfældet hvor det mislykkes + +Eftersom referencer kan pege på fjernobjekter, kan serverne som indeholder disse objekter bryde sammen. Hvad sker så? + + + + +Et sammenbrud ændrer ikke om en reference er en null-reference. Dette betyder at hvis foo.isNull() var true inden et serversammenbrud er den også true efter et serversammenbrud (hvilket er indlysende). Det betyder også at hvis foo.isNull() var false inden et serversammenbrud (foo angav et objekt) er den også false efter serversammenbruddet. + + + +At kalde metoder med en gyldig reference forbliver sikkert. Antag at serveren som indeholder objektet calc brød sammen. Kald til objekter såsom + int k = calc.subtract(i,j) + er stadigvæk sikre. Det er åbenbart at subtract skal returnere noget, hvilket den ikke kan eftersom fjernobjektet ikke længere findes. I dette tilfælde ville (k == 0) være sand. I almindelighed forsøger operationer at returnere noget neutralt som resultat, såsom 0.0, en null-reference for objekter eller tomme strenge, når objektet ikke længere findes. + + + +Kontrol med error() afslører om noget virkede. + +I ovenstående tilfælde, ville + int k = calc.subtract(i,j) + if(k.error()) { + printf("k er ikke i-j!\n"); + } + udskrive k er ikke i-j når fjernkaldet ikke virkede. Ellers er k virkelig resultatet af subtraktionsoperationen som udføres af fjernobjektet (intet serversammenbrud). For metoder som gør ting såsom at fjerne en fil, kan du ikke vide med sikkerhed om det virkelig er sket. Naturligvis skete det hvis .error() er false. Men hvis .error() er true, er der to muligheder: + + + +Filen blev slettet, og serveren brød sammen præcis efter den blev slette, men inden resultatet overførtes. + + + +Serveren brød sammen inden den kunne fjerne filen. + + + + + +Brug af indlejrede kald er farligt i et program som skal være sikkert mod sammenbrud. + +Brug af noget i retning af + window.titlebar().setTitle("foo"); + er ikke en god idé. Antag at du ved at vinduet indeholder en gyldig vinduesreference. Antag at du ved at window.titlebar() returnerer en reference til navnelisten eftersom vinduesobjektet er rigtigt implementeret. Sætningen ovenfor er imidlertid alligevel ikke sikker. + +Hvad kan ske hvis serveren som indeholder vinduesobjektet er brudt sammen. Så vil du, uafhængig af hvor god implementeringen af Window er, få en null-reference som resultat af operationen window.titlebar(). Og derefter vil kaldet til setTitle med denne null-reference naturligvis også føre til et sammenbrud. + +Så en sikker variant af dette ville være + Titlebar titlebar = window.titlebar(); + if(!window.error()) + titlebar.setTitle("foo"); + og tilføj den rigtige fejlhåndtering hvis du vil. Hvis du ikke stoler på implementeringen af Window, kan du lige så godt bruge + Titlebar titlebar = window.titlebar(); + if(!titlebar.isNull()) + titlebar.setTitle("foo"); + som begge er sikre. + + + +Der er andre fejlbetingelser, såsom nedkobling af netværket (antag at du tager kablet mellem din server og klient væk mens dit program kører). Deres effekt er imidlertid den samme som et serversammenbrud. + +Totalt set er det naturligvis et policy-spørgsmål hvor strengt du forsøger at håndtere kommunikationsfejl i hele dit program. Du kan følge metoden hvis serveren bryder sammen, skal vi fejlsøge den til den aldrig bryder sammen igen, som ville betyde at du ikke behøver bryde dig om alle disse problemer. + + + + +Interne funktioner: distribueret referenceregning + +Et objekt skal ejes af nogen for at eksistere. Hvis det ikke gør det, vil det ophøre med at eksistere (mere eller mindre) med det samme. Internt angives en ejer ved at kalde _copy(), som forøger en reference tæller, og en ejer fjernes ved at kalde _release(). Så snart referencetælleren når nul, så slettes objektet. + +Som en variation på temaet, angives fjernbrug med _useRemote(), og opløses med _releaseRemote(). Disse funktioner har en liste over hvilken server som har kaldt dem (og derfor ejer objektet). Dette bruges hvis serveren kobler ned (dvs. sammenbrud, netværksfejl), for at fjerne referencer som stadigvæk findes til objektet. Dette gøres i _disconnectRemote(). + +Nu er der et problem. Betragt en returværdi. I almindelige tilfælde ejes returværdiobjektet ikke af funktionen som kaldes længere. Det ejes heller ikke af den som kalder, førend meddelelsen som indeholder objektet er modtaget. Så der er en tid med objekter som mangler ejere. + +Når vi nu sender et objekt kan man være rimeligt sikker på at så snart det modtages, ejes det af nogen igen, med mindre, igen, modtageren bryder sammen. Dette betyder i alle tilfælde at specielle hensyn skal tages for objekter i det mindste mens der sendes, og formodentlig også mens der modtages, så de ikke fjernes med det samme. + +Måden som &MCOP; gør dette er ved at mærke objekter som er ved at blive kopieret over netværket. Inden en sådan kopiering begynder, kaldes _copyRemote. Dette forhindrer at objektet fjernes et stykke tid (5 sekunder). Så snart modtageren kalder _useRemote(), fjernes mærket igen. Så alle objekter som sendes over netværket, mærkes inden overførslen. + +Hvis modtageren modtager et objekt som findes på samme server, så bruges _useRemote() naturligvis ikke. I dette specialtilfælde, findes funktionen _cancelCopyRemote() til at fjerne mærket manuelt. Foruden dette, er der også en tidsbaseret fjernelse af mærker, hvis mærkning udførtes, men modtageren ikke virkelig fik objektet (på grund af sammenbrud, netværksfejl). Dette gøres med klassen ReferenceClean. + + + + + + +&GUI;-elementer + +&GUI;-elementer er for øjeblikket på det eksperimentelle stadium. Dette afsnit beskriver hvad det er meningen der skal ske med dem, så hvis du er udvikler, kan du forstå hvordan &arts; vil håndtere grafiske grænseflader i fremtiden. Der er også allerede en del kode på plads. + +&GUI;-elementer skal bruges til at lade syntesestrukturer vekselvirke med brugeren. I det enkleste tilfælde skal brugeren kunne ændre nogle parametre for en struktur direkte (som en forstærkningsfaktor som bruges inden det endelige afspilningsmodul). + +I mere komplekse tilfælde, kan man tænke sig at brugeren ændrer parametre for grupper af strukturer og/eller strukturer som ikke kører endnu, såsom at ændre ADSR enveloppen for det aktive &MIDI;-instrument. Noget andet ville kunne være at angive filnavnet for et samplingsbaseret instrument. + +På den anden side, kunne brugeren ville overvåge hvad syntheziseren gør. Der kunne være oscilloskoper, spektrumanalysatorer, lydstyrkemålere og eksperimenter som for eksempel regner frekvensoverførselskurven ud for et given filtermodul. + +Til sidst, skal &GUI;-elementer kunne kontrollere hele strukturen af alt som kører inden i &arts;, og på hvilken måde. Brugeren skal kunne tildele instrumenter til midi-kanaler, starte nye effektbehandlingsskridt, indstille sit hovedmikserpanel (som selv er opbygget af &arts;-strukturer) for at få yderligere en kanal eller bruge en anden strategi for tonekontrol. + +Som du ser, skal &GUI;-elementer give alle mulighederne i et virtuelt studie som &arts; simulerer for brugeren. Naturligvis skal de også vekselvirke med midi-indgange (såsom skydere som også flyttes hvis de får &MIDI;-inddata som ændrer tilsvarende parametre), og formodentlig til og med oprette begivenheder selv, for at vekselvirkning med brugeren skal kunne indspilles via en sequencer. + +Teknisk set er idéen at have en &IDL;-basisklasse for alle grafiske komponenter (Arts::Widget), og aflede et antal almindelige komponenter fra den (såsom Arts::Poti, Arts::Panel, Arts::Window, ...). + +Derefter kan man implementere disse grafiske komponenter med en værktøjskasse, for eksempel &Qt; eller Gtk. Til slut, bør effekter bygge deres grafiske grænseflader fra eksisterende komponenter. En efterklangseffekt ville for eksempel kunne bygge sin grafiske grænseflade fra fem Arts::Poti-tingester og et Arts::Window. Så HVIS der findes en &Qt; implementering for disse grundkomponenter, kan effekten vises med &Qt;. Hvis der findes en Gtk implementering, virker det også med Gtk (og ser mere eller mindre ud på samme måde). + +Til sidst, eftersom vi bruger &IDL; her, kan &arts-builder; (eller andre værktøjer) sætte grafiske grænseflader sammen visuelt, eller generere grafiske grænseflader automatisk, med tips for parameterværdier, kun baseret på grænsefladen. Det burde være ganske ligetil at skrive en klasse til at oprette grafisk grænseflader fra en beskrivelse, som tager en beskrivelse af en grafisk grænseflade (som indeholder de forskellige parametre og grafiske komponenter), og laver et levende objekt for en grafisk grænseflade ud fra den. + +Baseret på &IDL; og &arts;/&MCOP;-komponentmodellen, bør det være let at udvide de mulige objekter som kan bruges til den grafiske grænseflade præcis lige så let som det er at tilføje et plugin til &arts; som for eksempel implementerer et nyt filter. + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/digitalaudio.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/digitalaudio.docbook new file mode 100644 index 00000000000..fb8305b53f4 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/digitalaudio.docbook @@ -0,0 +1,16 @@ + + + +Indledning til digital lyd + +Digital sampling, filtre, lydeffekter, &etc;. + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/faq.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/faq.docbook new file mode 100644 index 00000000000..0476961bd72 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/faq.docbook @@ -0,0 +1,1307 @@ + + +Spørgsmål og svar + +Dette afsnit besvarer nogle spørgsmål som ofte stilles om &arts;. + + +Generelle spørgsmål + + + +Støtter &kde; mit lydkort for lydafspilning? + + + +&kde; bruger &arts; til at afspille lyd, og &arts; bruger driverne kernen for &Linux;, enten OSS eller ALSA (med emulering af OSS). Hvis dit lydkort enten understøttes af ALSA eller OSS og er rigtigt indstillet (dvs. alle andre &Linux;-programmer kan afspille lyd), kommer det til at virke. Der er dog nogle problemer med specifik hardware, læs afsnittet om hardwarespecifikke problemer hvis du har problemer med artsd på din maskine. +I mellemtiderne er støtte for diverse andre platforme også tilføjet. Her er en fuldstændig liste over hvordan den seneste version af &arts; kan afspille lyd. Hvis du har en platform som ikke understøttes, så overvej gerne at overføre &arts; til din platform. + + + + + +&arts; metode for lyd-I/O +Kommentar + + + + + +paud +Støtte for AIX personlige lydenhed (Personal Audio Device) + + + +alsa +Linux ALSA-0.5 og ALSA-0.9 drivere + + + +libaudioio +Støtte for det generelle LibAudioIO-bibliotek som virker på Solaris + + + +nas +NAS lydserver, nyttig for X-terminaler med NAS-støtte + + + +null +Lydenheden null, kasserer lyden uden at noget høres + + + +oss +OSS (Open Sound System) støtte (virker på Linux, forskellige BSD-versioner og andre platforme med OSS-drivere installerede) + + + +toss +Trådet OSS-støtte, som virker bedre i visse tilfælde når den almindelige OSS-støtte ikke virker godt + + + +sgi +Støtte for SGI Direct Media for IRIX + + + +sun +Solaris-støtte + + + + + + + + + + +Jeg kan ikke spille wav-filer med &artsd;! + + + +Tjek at &artsd; er linket til libaudiofile (ldd artsd). Hvis den ikke er det, så hent tdesupport, kompilér alt, og det vil virke. + + + + + +Jeg hører lyd når jeg er logget på som root, men ingen andre brugere har lyd! + + + +Tilladelserne for filen /dev/dsp påvirker hvilke brugere der har lyd. For at lade alle bruge den, gør sådan her: + + + +Log ind som root. + + + +Åbn et &konqueror;-vindue. + + + +Gå til mappen /dev. + + + +Klik på filen dsp med højre museknap, og vælg egenskaber. + + + +Klik på fanebladet Tilladelser. + + + +Markér Læs og Skriv i alle afsnit. + + + +Klik på O.k.. + + + +Du kan opnå samme virkning i et terminalvindue med kommandoen chmod /dev/dsp. + +For at begrænse adgangen af lyd til særlige brugere kan du bruge gruppetilladelser. For visse &Linux;-distributioner, for eksempel Debian/Potato, ejes /dev/dsp allerede af en gruppe som hedder audio, så alt du behøver gøre er at tilføje brugerne til denne gruppe. + + + + + +Dette hjælper for &artsd;, men hvad med for &kmix;, &kmid;, &kscd;? + + + +Der er forskellige andre enheder som sørger for funktioner som der skal være adgang til for multimedieprogrammer. Du kan behandle dem på samme måde, enten ved at gøre dem tilgængelige for alle, eller bruge grupper for at kontrollere adgangen. Her er en liste, som måske stadigvæk er ufuldstændig (og hvis der er flere enheder på formen midi0, midi1..., så er 0-versionen kun med): + + + + +/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 + + + + + + + + +Hvad kan jeg gøre hvis artsd ikke starter eller bryder sammen når den kører? + + + +Forsøg først at bruge standardindstillingerne i &kcontrol; (eller hvis du starter manuelt, angive ingen ekstra flag bortset fra eventuelt 10 4096 for latenstid). Særlig fuld dupleks virker formodentlig ikke med diverse drivere, så forsøg at deaktivere det. + +En god måde at regne ud hvorfor &artsd; ikke starter (eller bryder sammen når den kørt) er at starte den manuelt. Åbn et &konsole;-vindue og skriv: + +% artsd 10 4096 +> + +Du kan også tilføje flaget , som udskriver mere information om hvad der sker, sådan her: +% artsd 10 4096 + +Ved at gøre dette får du formodentlig nogen nyttig information om hvorfor den ikke startede. Eller hvis den bryder sammen mens noget særligt foregår, kan du gøre det og se hvordan den bryder sammen. Hvis du vil rapportere en fejl, kan et backtrace oprettet med gdb og/eller en strace hjælpe med til at finde problemet. + + + + + +Kan jeg flytte &artsd; (flytte kompilerede filer til en anden mappe)? + + + +Du kan ikke flytte &arts; helt perfekt. Problemet er at &artswrapper; har stedet for &artsd; indkompileret af sikkerhedsgrunde. Du kan imidlertid bruge .mcoprc-filen (TraderPath/ExtensionPath indgangene) til i det mindste at få en flyttet &artsd; til at finde sine komponenter. Se kapitlet om .mcoprc-filen for detaljer om hvordan man gør dette. + + + + + +Kan jeg kompilere &arts; med gcc-3.0? + + + +Et kort svar: nej, &arts; virker ikke hvis du kompilerer den med gcc-3.0. + +Langt svar: i den officielle udgave af gcc-3.0, er der to fejl som påvirker &arts;. Det første problem med gcc-3.0, c++/2733, er ganske ufarligt (og har at gøre med problemer med asm-sætningen). Det gør at convert.cc ikke kan kompileres. Dette er rettet i gcc-3.0 CVS, og vil ikke være et problem med gcc-3.0.1 og senere. En måde at gå udenom problemet er også tilføjet i CVS-versionen af KDE/aRts. +Det andet problem med gcc-3.0, c++/3145 (som forårsager fejlagtig kodegenerering i visse tilfælde af multipel virtuel arv) er kritisk. Programmer som &artsd; bryder helt enkelt sammen når de startes hvis de er kompileret med gcc-3.0. Selvom visse fremskridt er gjort i gcc-3.0 grenen når dette skrives, bryder &artsd; stadigvæk vældigt ofte sammen, uforudsigeligt. + + + + +Hvilke programmer kører med &arts;? + + + +Selvfølgelig så virker alle programmer som indgår i &kde; med &arts;. Dette omfatter: + + +&noatun; +&arts-builder; +&aktion; +&kmid; +&kmidi; +&kmix; +&kscd; +&kde;-spil såsom &kpoker; og &ktuberling; + + +Visse &kde;-programmer som endnu ikke indgår i &kde;-udgaver (f.eks. i kdenonbeta) understøtter også &arts;, inklusive: + + +&brahms; +Kaboodle +Kdao + + +Følgende programmer som ikke hører til -&kde; er kendte for at virke med &arts;: + + +xmms (med &arts;-plugin) +Real Networks RealPlayer 8.0 (virker med &artsdsp;; indbygget &arts;-støtte overvejes) + + +Følgende programmer er kendte for ikke at virke med &arts;: + + +ingen + + +Se også svarene på spørgsmålene i afsnittet om programmer som ikke understøtter &arts;. + +Dette afsnit er ufuldstændigt. Hvis du har mere information om programmer som understøttes eller ej, så vær venlig at sende dem til forfatteren så at de kan tilføjes her. + + + + + + +Programmer som ikke understøtter &arts; + + + +Så snart &kde; kører, så kan ingen andre programmer få adgang til mit lydkort! + + +Når &arts;-lydserveren som bruges af &kde; kører, bruger den lydenheden. Hvis serveren er i tomgang i 60 sekunder, går den i autosuspension og slipper enheden automatisk. + + + + + +Du sagde at den går i autosuspension efter 60 sekunder, det gør den ikke for mig! + + +Hvis du starter artsd fra KDE's kontrolcenter, er det standardværdien at gå i autosuspension efter 60 sekunder. Hvis du starter artsd fra kommandolinjen skal du bruge flaget -s for at angive ventetilstandsværdien, ellers er det standardopførsel at lukke af for autosuspensionsfunktionen. +For øjeblikket går serveren ikke i autosuspension hvis fuld dupleks bruges. Luk af for fuld dupleks i kontrolcentret så går den i autosuspension. At lukke af for fuld dupleks er i almindelighed en god idé alligevel, hvis du kun bruger &arts; til at afspille lyd og ikke til at indspille. + + + + + +Hvordan kan jeg køre gamle programmer som ikke understøtter &arts;? + + + +Kør dem med &artsdsp;. Hvis du for eksempel normalt ville køre: + +% mpg123 + +så brug i stedet: + +% artsdsp + +Dette sender lyduddata til &arts;. Denne metode kræver ikke nogen ændringer i programmet. Det er noget af et grimt fiks, og understøtter endnu ikke alle funktioner i lydkortsenheden, så visse programmer virker måske ikke. + + + + + +Jeg kan ikke køre &artsdsp; med noget program. Den bryder altid sammen! + + +Du behøver en ny udgave af glibc-bilblioteket. &artsdsp; virker ikke tilforladeligt på visse ældre &Linux;-distributioner. For eksempel på Debian 2.1 (som er baseret på glibc 2.0) virker den ikke, mens den gør det på Debian 2.2 (som er baseret på glibc 2.1.3). + + + + + +Er der teoretiske begrænsninger med visse programmer som forhindrer at de nogensinde kan virke med &artsdsp;? + + +Nej. Brugen &artsdsp; kan resultere i noget højere latenstider og CPU-brug end at bruge &arts; programmeringsgrænseflade direkte. Udover det, skal alle program som ikke virker anses som en fejl i &artsdsp;. Teknikken som bruges af &artsdsp; skal, hvis den er rigtigt implementeret, tillade hvert program at virke med den (inklusive store programmer såsom Quake 3). + + + + + +Hvad kan jeg gøre hvis et program ikke virker med &artsdsp;? + + +Du kan vente på at &artsd; går i autosuspension eller bruge kommandoen artsshell for at bede at servere om at gå i autosuspension. Du kommer kun til at kunne få serveren til at gå i autosuspension hvis intet &arts;-program bruger den for øjeblikket, og ingen &arts;-programmer kan køre mens serveren er i autosuspension. + +Hvis serveren er optaget ser en grov men effektivt måde at slippe af med den sådan her ud: + + +% killall ; killall +Start nu dit eget program. +% kcminit + + +Alle &arts;-programmer som kører lige nu kan bryde sammen, når du afslutter serveren. + + + + +Hvad gælder for programmer skrevet for &kde; 1.x? + + +Hvis du kører &kde; 1.x programmer, som afspiller lyd via lydserveren i &kde; 1, skal du køre kaudioserver for at det skal virke. Du kan starte kaudioserver på samme måde som andre programmer som ikke understøtter &arts;: + +% artsdsp + + +Du skal have installeret kaudioserver (fra samme kilde hvor du skaffede &kde; 1.x programmerne). Den hører til &kde; 1.x, ikke &kde; 2. + + + + + +Hvad gælder for programmer som bruger Enlightened Sound Daemon, ESD? + + +Dette problem ligner tilfældet med kaudioserver. Sådanne programmer kræver en esd-server som kører. Du kan starte esd via &artsdsp;, og alle programmer som understøtter ESD vil så virke godt, sådan her: +% artsdsp + +Nyere versioner af aRts ( +>= 1.2.0) kan også bruge Enlightened Sound Daemon i stedet for direkte adgang til lydkortet. På kommandolinjen kan du bruge flaget -a, på følgende måde +% artsd + +til at få understøttelse af ESD. I stedet for, i KDE, kan du bruge kontrolcentret til at indstille artsd til at bruge ESD, via Lyd -> Lydserver -> Lyd I/O. + + + + + + +Latenstid + + + +Ind imellem hører jeg korte pauser når jeg lytter til musik. Er dette en fejl? + + +Dette er formodentlig ikke en fejl, men forårsages af det faktum at &Linux; kernen ikke er særlig god til realtidsskemalægning. Der er situationer hvor &arts; ikke kan følge med i afspilningen. Du kan dog aktivere realtidsrettigheder (via kontrolcentret), og bruge en stor latenstidsindstilling (såsom 250 ms eller så stor som muligt), hvilket bør forbedre situationen. + + + + + +Hvad er effekten af svarstidsindstillingen? + + +Hjælpeteksten for denne indstilling i kontrolcentret kan være forvirrende. En lavere værdi betyder at &arts; reagerer hurtigere på ydre begivenheder (dvs. tiden det tager mellem et vindue lukkes og lyden afspilles af &artsd;). Den kommer også til at bruge flere CPU-ressourcer og det vil være mere sandsynligt med pauser i lyden. + + + + + +Er der noget andet jeg kan gøre for at undgå pauser? + + +For brugere af IDE-enheder, kan man bruge kommandoen hdparm til at indstille din IDE-enhed til at bruge DMA-tilstand. Et advarselsord: Dette virker ikke med alle slags hardware, og kan forårsage at man skal lave en hardware-nulstilling, eller i sjældne tilfælde, tab af data. Læs dokumentationen for kommandoen hdparm for flere detaljer. Jeg har brugt følgende kommando med heldigt resultat: + +% hdparm /dev/hda + + +Du skal køre dette efter hver boot, så måske vil du tilføje det i et opstartsscript for systemet (hvordan man gør dette er specifikt for hver distribution, på Debian &Linux; tilføjes det oftest i /etc/rc.boot). + + + + + +Realtidsprioritet synes ikke at have nogen virkning for mig? + + +Kontrollér at artswrapper virkelig er installeret suid root, som det er meningen at den skal være. Mange distributioner (for eksempel SuSE7.x) gør ikke dette. Du kan kontrollere det med: ls -l $(which artswrapper). Godt: +% ls $(which artswrapper) +-rwsr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper + Dårligt: +% ls $(which artswrapper) +-rwxr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper + Hvis du ikke har s'et med, kan du få det med: % chown $(which artswrapper) +% chmod $(which artswrapper) + + + +Hvis du gør &artswrapper; SUID root, kommer det formodentlig til at forbedre kvaliteten på lydafgivelsen ved at reducere ophold i musikken. Dog øger det også risikoen for at en fejl i koden, eller en bruger med lyst til at skade kan få maskinen til at bryde sammen eller skade på anden måde. Desuden, at prioritere høj lydkvalitet på flerbrugermaskiner kan forårsage forværret ydelse for brugere som forsøger at bruge maskinen på en produktiv måde. + + + + + + + +Hvorfor tager &artsd; så meget CPU-tid? + + +Kontrollér dine svarstidsindstillinger. Desuden er den nuværende version ikke egentlig optimeret. Dette vil blive bedre, og indtil da kan det ikke rigtigt forudsiges hvor hurtig &artsd; kan eller ikke kan være. + + + + + +Netværkstransparens + + + +Hvad skal jeg gøre for at få netværkstransparens? + + +Aktivér det i kontrolcentrets indstillinger for Lydserver (Aktivér sikkerheds- og referenceinformation for X11-serveren og Aktivér netværkstransparens). Kopiér derefter din .mcoprc-fil til alle maskiner som du vil bruge netværkstransparensen fra. Log på igen. Sørg for at værtsmaskinerne som skal samarbejde kender hinandens navne (dvs. de har navne som kan opløses eller findes i /etc/hosts). + +Dette skulle være alt du behøver at gøre. Hvis det ikke virker alligevel, følger nogen yderligere detaljer. &arts; lydserverprocessen &artsd; skal kun køres på en værtsmaskine, den med lydkortet hvor lyden skal afspilles. Den kan startes automatisk ved indlogning til &kde; (hvis du angiver det i kontrolcentret), eller manuelt med noget i retning af: + +% artsd 5 8192 + + +Flaget angiver netværkstransparens, mens de øvrige indstiller latenstider. + +Din .mcoprc-fil skal indeholde denne linje: + +GlobalComm=Arts::X11GlobalComm + + +for alle maskiner som er involverede, for at netværkstransparens skal virke. Det er dette som aktiveres af indstillingen Aktivér sikkerheds- og referenceinformation over X11-serveren i kontrolcentret. + +Til sidst, i alle &kde;-versioner i 2.0.x serien, er der en fejl som viser sig hvis du ikke har et domænenavn indstillet. Klienter for &artsd; forsøger at finde en forbindelse via kombinationen af værtsmaskinenavn.domænenavn. Hvis domænenavnet er tomt, forsøger de at forbinde til værtsmaskinenavn. (læg mærke til det ekstra punktum). At tilføje en post som ser sådan her ud i /etc/hosts (dvs. orion. hvis værtsmaskinenavnet er orion) gør at man undgår problemet. + + + + + + +Hvordan fejlretter jeg netværkstransparens hvis det ikke virker? + + +Hvis du har &kde;'s kildekode, gå til tdelibs/arts/examples, og kør make for at kompilere nogle programmer, inklusive referenceinfo. Kør derefter + +% ./referenceinfo + + +Udskriften angiver værtsmaskinenavnet og porten som bruges af &arts;. For eksempel, tcp:orion:1698 ville betyde at alle klienter som forsøger at bruge netværkstransparens skal vide hvordan værtsmaskinen orion kan nås. + + + + + + +Hardware-specifikke spørgsmål + + + +Hvilken hardware virker artsd ikke godt sammen med? + + +Det virker som om der er nogle få Linux-drivere som ikke virker godt sammen med aRts for visse udgaver af kernen. Læs først denne liste inden du rapporterer en fejl. Hvis du finder at informationen i listen ikke er fuldstændig, så tøv venligst ikke med at fortælle os om det. + + +Linux-driver/lydkort +Virker ikke med +Virker med +Bemærkninger + + + + + +i810-driver (Intel 810 + AC97 Audio) +2.4.9 +2.4.18, 2.2.20, kommerciel OSS-driver, alsa-0.5.12a med OSS-emulering +driver forårsager for stor CPU-belastning (se nedenfor) + + + +maestro 3/4-kredse +2.4.9 +? +driver forårsager ind imellem overbelastning af processoren (se nedenfor) + + + +aureal8820, aureal8830-drivere fra sourceforge +2.4.17 +? +driver forårsager fejlmeddelelse / for meget CPU-belastning (se nedenfor) + + + +OSS kommerciel 3.9.4g med Aureal Vortex +? +? +systemet låses + + + +ymfpci +2.4.0, 2.4.12 +2.4.17 +driver forårsager fejlmeddelelse (se nedenfor) + + + + + + + + + + + + + + + +Hvorfor er der hardware-specifikke problemer, og hvordan ser jeg dem? + + +De almindelige problemer er at driveren ikke giver aRts tilstrækkelig eller tilstrækkeligt nøjagtig information om hvornår lyddata skal skrives. De fleste OSS-drivere giver rigtig information, men ikke alle. +Du vil måske bemærke at visse andre programmer (såsom xmms) ikke behøver denne information, og derfor virker rigtigt til og med for din hardware. Men &arts; behøver denne information, så artsd vil måske ikke virke. Dette er stadigvæk en fejl i driveren, og ikke i &arts;. +Der er to slags opførsel som artsd påviser når den køres med en fejlagtig driver. Enten forsøger den at sende ny data, men det lykkes egentlig aldrig, hvilket til slut fører til en for stor CPU-belastning, dette rapporteres, og at den afsluttes. Det andet problem er at artsd kan få forkert information om hvor meget data der skal skrives. Så stopper artsd med et fejlmeddelelse som: artsd: audiosubsys.cc:458: void Arts::AudioSubSystem::handleIO(int): +Assertion `len == can_write' failed. +Aborted + + + + + + + +Hvad er forkert i driveren hvis jeg får problemet med for stor CPU-belastning? + + +Oftest bruger artsd kaldet select() for at holde styr på hvornår ny data skal skrives. Derefter bruger den kaldet ioctl(...GETOSPACE...), for at holde styr hvor meget data som skal skrives. Til sidst skriver den data. +Et problem opstår hvis artsd enten altid vækkes, eller hvis der er meget lidt data at skrive. OSS-dokumentationen angiver at kaldet select() kun vækker en proces hvis der er mindst et fragment at skrive. Hvis artsd vækkes når der ikke er nogen, eller meget lidt, data at skrive, for eksempel en sampling, forsøger den at skrive små stumper med lyddata, hvilket kan blive meget kostbart, og til slut give for stor CPU-belastning. +For at rette dette, skal driveren kun vække artsd hvis et helt fragment kan skrives. + + + + + +Hvad er forkert i driveren hvis jag får denne fejlmeddelelse? + + +Oftest bruger artsd kaldet select() for at holde styr på hvornår ny data skal skrives. Derefter bruger den kaldet ioctl(...GETOSPACE...), for at holde styr hvor meget data som skal skrives. Til sidst skriver den data. +Hvis artsd ikke kan skrive så meget data som angives af kaldet ioctl, så stopper den med fejlmeddelelsen ovenfor. For at rette dette, skal driveren angive den rigtige størrelse på det ledige plads. + + + + + +Andre problemer + + + +Jeg kan ikke bruge &arts-builder;. Den bryder sammen når jeg kører et modul! + + +Den mest sandsynlige grund er at du bruger gamle strukturer eller moduler som ikke understøttes i &kde; 2 versionen. Desværre er dokumentationen på nettet for &arts;-0.3.4.1 som er helt forældet. Det oftest rapporterede sammenbrud er at hvis en struktur køres i &arts-builder; så fås fejlmeddelelsen [artsd] Synth_PLAY: lydsystemet bruges allerede. + +Du skal bruge et Synth_AMAN_PLAY modul i stedet for Synth_PLAY så forsvinder problemet. Se også &arts-builder;'s hjælpefil (tryk på F1 i &arts-builder;). + +Nyere udgaver af &arts-builder; (&kde; 2.1 beta 1 og senere) levereres med et antal eksempler som du kan bruge. + + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/future.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/future.docbook new file mode 100644 index 00000000000..f8d9923ad7d --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/future.docbook @@ -0,0 +1,399 @@ + + + +Fremtidigt arbejde + +Dette afsnit beskriver en del af det pågående arbejde med &arts;. Udviklingen går hurtigt fremad, så denne information kan være forældet. Du bør kontrollere listefilen TODO og arkiverne for e-mail-listerne for at holde styr på hvilke nye funktioner der er planlagt. Deltag gerne i ny konstruktion og implementation. + +Dette er et udkast som forsøger at give dig en oversigt over hvordan nye teknologier vil integreres i &arts;. Det dækker følgende: + + +Hvordan grænseflader virker. +Afkodere - afkodning af mp3 eller wav-strømme til en form som gør at de kan bruges som data. +Video. +Trådning. +Synkronisering. +Dynamisk udvidelse/maskering. +Dynamisk sammensætning. +&GUI; +&MIDI; + + +Dette er pågående arbejde. Det bør dog kunne give grundlaget hvis du vil kigge på ny teknologi i &arts;. Det bør give dig en almen idé om hvordan disse problemer vil blive angrebet. Korrigér gerne alt du ser her. + +Ting som vil bruge &arts;-teknologi (så vær venlig og koordinér anstrengelserne): + + + +K-telefon (tale via IP) + + + +&noatun; (videoafspiller / lydafspiller) + + + +&artscontrol; (styreprogram for lydserveren, og for målere) + + + +Brahms (musiksequencer) + + + +Kaiman (&kde;2 medieafspiller - kmedia2-kompliant) + + + +mpglib/kmpg (mpg lyd- og videoafspilningsteknologi) + + + +SDL (direkte medialag for spil, som endnu ikke er påbegyndt men som kan være behageligt) + + + +Elektriske ører (ophavsmanden kontaktede mig - status ukendt) + + + + +Hvordan grænseflader virker + + + +&MCOP;-grænsefladen er grundlaget for &arts;-begrebet. De er det netværkstransparente ækvivalente til C++ klasser. Så snart det er muligt bør du indrette din konstruktion mod grænseflader. En grænseflade består af fire dele: + + +Synkrone strømme +Asynkrone strømme +Metoder +Egenskaber + + +Disse kan blandes på en hvilken som helst måde du vil. Nye teknologier bør defineres ved hjælp af grænseflader. Læs afsnittene om asynkrone strømme og synkrone strømme, samt KMedia2-grænsefladen, som er gode eksempler på hvordan sådanne ting virker. + +Grænseflader specificeres i .idl-kode og køres gennem mcopidl-oversætteren. Man afleder Grænsefladensnavn_impl klassen for at implementere dem, og bruger REGISTER_IMPLEMENTATION (Grænsefladensnavn_impl) til at indsætte en objektimplementering i &MCOP;'s objektsystem. + + + + +Codec'er, dataafkodning + +Kmedia2-grænsefladen lader dig se bort fra at wav-filer, mp3-filer eller hvad som helst består af datastrømme. I stedet implementerer du kun metoder for at spille dem. + +På den måde kan du skrive en bølgeformsladningsrutine på en måde så du kan spille bølgeformsfiler (som PlayObject), men ingen anden kan bruge din kode. + +Asynkrone strømme ville være alternativet. Man definerer en grænseflade som tillader at datablokke sendes ind, og hentes ud. Dette ser sådan her ud i &MCOP;: + +interface Codec { + in async byte stream indata; + out async byte stream outdata; +}; + + + +Afkodere kan naturligvis også angive egenskaber for at udsende yderligere data, som formatinformation. + +interface ByteAudioCodec { + in async byte stream indata; + out async byte stream outdata; + readonly attribute samplingRate, bits, channels; +}; + + +Denne ByteAudioCodec kan for eksempel forbindes til et ByteStreamToAudio-objekt, for at oprette rigtigt flydende lyd. + +Andre typer af afkodere kan naturligvis involvere at sende videodata direkte ud, som + +interface VideoCodec { + in async byte stream indata; + out video stream outdata; /* bemærk: videostrømme findes ikke endnu */ +}; + + +Sandsynligvis bør et afkodningsbegreb bruges i stedet for måden du ved hvordan det spilles med det gør jeg ikke som for eksempel WavPlayObject bruger for øjeblikket. Nogen skal dog sætte sig ned og eksperimentere lidt inden en programmeringsgrænseflade kan defineres. + + + + +Video + +Min idé er at sørge for video som asynkrone strømme for en indbygget &MCOP;-datatype som indeholder billeder. Denne datatype er ikke lavet endnu. Ved at gøre dette, kan plugin som håndterer video kobles sammen på samme måde som lydi-plugin. + +Der er nogle ting som det er vigtigt ikke at udelade: + + + +Der er RGB og YUV farverum. + + +Formatet bør markeres i strømmen på en måde. + + +Synkronisering er vigtig. + + + +Min idé er at lade muligheden for at ændre implementeringen af VideoFrame-klassen være åben, så den kan opbevare ting i et delt hukommelsessegment. Ved at gøre dette kan til og med videostrømme mellem forskellige processer blive mulige uden alt for store problemer. + +For video er den almindelige situation dog at alle ting er i samme proces, fra afkodningen til visningen. + +Jeg har lavet en prototypeimplementering af videostrømme, som kan hentes herfra. Dette skal integreres med &MCOP; efter nogle eksperimenter. + +En visningskomponent som understøtter XMITSHM (med RGB og YUV) bør der sørges for. Martin Vogt fortalte mig at han arbejder på en sådan. + + + + +Trådning + +For øjeblikket er &MCOP; helt og holdent en eneste tråd. For video kan vi måske ikke længere komme udenom tråde. O.k. Der er nogle ting som skal håndteres med forsigtighed: + + + +SmartWrappers - de er ikke trådsikre på grund af usikker referenceregning og lignende. + + +Afsenderen / I/O - heller ikke trådsikre. + + + +Hvad jeg i alle tilfælde kan tænke mig er at gøre udvalgte moduler trådsikre, både for synkrone og asynkrone strømme. På denne måde kan man skemalægge signalstrømmen på to eller flere processorer, med et flowsystem som kender til tråde. Dette burde også hjælpe en hel del med lyd med multiprocessorer. + +Hvordan det ville virke: + + + + +Flowsystemet bestemmer hvilke moduler der skal beregne hvad, dvs: + + videobilleder (med metoden process_indata) + synkrone lydstrømme (calculateBlock) + andre asynkrone strømme, i hovedsagen datastrømme + + + +Modulerne kan beregne disse ting i egne tråde. For lyd giver det mening at genbruge tråde (f.eks. håndtere den med fire tråde hvis der er fire processorer, også selvom 100 moduler kører). For video- og datakompression, kan det være bekvemmere at have en blokerende implementering i en egen tråd, som synkroniseres med resten af &MCOP; med flowsystemet. + + + +Moduler må ikke bruge &MCOP;-funktioner (som fjernkaldes) mens trådede operationer er i gang. + + + + + + +Synkronisering + +Video og &MIDI; (og lyd) kan kræve synkronisering. I grunden er dette tidsstempler. Idéen jeg har er at tilknytte tidsstempler til de asynkrone strømme, ved at tilføje et tidsstempel til hver pakke. Hvis man sender to videobilleder, gøres det helt enkelt som to pakker (de er store alligevel), så man kan have to forskellige tidsstempler. + +Lyd skal have underforståede tidsstempler, eftersom det er synkront. + + + + +Dynamisk sammensætning + +Det bør være muligt at sige: En effekt FX består af disse enkle moduler. FX bør se ud som en normal &MCOP;-modul (se maskering), men i virkeligheden bestå af andre moduler. + +Dette kræves for &arts-builder;. + + + + +&GUI; + +Alle komponenter i den grafiske grænseflade vil være &MCOP;-moduler. De bør have egenskaber som størrelse, etiket, farve, ... En RAD-bygger (&arts-builder;) bør kunne sammensætte dem visuelt. + +Den grafiske grænseflade bør det være muligt at gemme ved at gemme egenskaberne. + + + + +&MIDI; + +&MIDI;-tingene vil blive implementeret som asynkrone strømme. Der er to alternativer, en er at bruge normale &MCOP;-strukturer til at definere typerne og den anden er at introducere yderligere egne typer. + +Jeg tror at normale strukturer vil slå til, dvs noget som: + +struct MidiEvent { + byte b1,b2,b3; + sequence<byte> sysex; +} + + +Asynkrone strømme bør understøtte egne strømningstyper. + + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/glossary.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/glossary.docbook new file mode 100644 index 00000000000..352e57f6654 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/glossary.docbook @@ -0,0 +1,173 @@ + + + + + +ALSA + +Advanced &Linux; Sound Architecture. En lydkortsdriver for &Linux; som for øjeblikket ikke indgår som standard i kildekoden for kernen. + + + + +&arts; + +Analog realtidssynthesizer. Navnet på den multimediaarkitektur/bibliotek/værktøjskasse som bruges af &kde;-projektet (bemærk de store bogstaver) + + + + +BSD + +Berkeley Software Distribution. Refererer her til et af flere forskellige &UNIX;-kompatible operativsystemer som har deres oprindelse i BSD &UNIX;. + + + + +CORBA + +Common Object Request Broker Architecture. En standard for at implementere objektorienteret fjernkørsel. + + + + +CVS + +Concurrent Versions System. Et konfigurationshåndteringssystem for programmel som bruges af mange programmelprojekter inklusive &kde; og &arts;. + + + + +FFT + +Fast Fourier Transform. En algoritme til at konvertere data fra tids- til frekvensdomæne, som ofte bruges i signalbehandling. + + + + +Full duplex + +Muligheden for et lydkort til samtidigt at indspille og afspille lyd. + + + + +GPL + +GNU General Public License. En programmellicens som blev lavet af Free Software Foundation, som definerer betingelserne for at udgive frit programmel. + + + + +&GUI; + +Grafisk brugergrænseflade + + + + +IDL + +Interface Definition Language. Et format uafhængigt af programmeringssprog til at definere grænseflader (metoder og data). + + + + +&kde; + +K-desktopmiljø. Et projekt for at udvikle et frit grafisk desktopmiljø for &UNIX;-kompatible systemer. + + + + +LGPL + +GNU Lesser General Public License. En programmellicens som blev lavet af Free Software Foundation, som definerer betingelserne for at udgive frit programmel, med endnu færre begrænsninger end GPL som ofte bruges til programmelbiblioteker. + + + + +&MCOP; + +Multimedia COmmunication Protocol. Protokollen som bruges til kommunikation mellem &arts; programmoduler, som har ligheder med CORBA men er enklere og optimeret for multimedia. + + + + +&MIDI; + +Musical Instrument Digital Interface. En standardprotokol for kommunikation mellem elektroniske musikinstrumenter, angiver også ofte filformatet som bruges til at opbevare &MIDI;-kommandoer. + + + + +OSS + +Open Sound System. Lyddriverne som indgår i &Linux;' kerne (sommetider kaldet OSS/Free) eller en kommerciel version som sælges af 4Front Technologies. + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/gui.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/gui.docbook new file mode 100644 index 00000000000..b769c161b6b --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/gui.docbook @@ -0,0 +1,29 @@ + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/helping.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/helping.docbook new file mode 100644 index 00000000000..629b9c497d0 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/helping.docbook @@ -0,0 +1,237 @@ + + + +Hjælp til med &arts; + + +Hvordan du kan hjælpe til + +&arts;-projektet behøver hjælp fra udviklere for at at tilføje understøttelse for &arts; i eksisterende multimedieprogrammer, skrive nye multimedieprogrammer og forbedre &arts;' muligheder. Du behøver dog ikke være en udvikler for at bidrage. Vi behøver også hjælp fra testere til at indsende fejlrapporter, oversættere til at oversætte programteksten og dokumentationen til andre sprog, grafikere til at oprette ikoner (især for artsbuilder moduler), musikere til at lave &arts;-moduleksempler, og forfattere til at skrive eller gennemse dokumentation. + + + +E-mail-lister + +De fleste udviklingsdiskussioner om &arts; finder sted via to e-mail-lister. Dette er stedet at diskutere nye funktioner og implementeringsidéer og at spørge efter hjælp med problemer. + +&kde;'s multimedie e-mail-liste er til for generelle &kde; multimediespørgsmål inklusive &arts; samt multimedieprogrammer såsom &noatun; og &aktion;. Du kan abonnere fra netsiden på http://www.kde.org/mailinglists.html eller sende e-mail med emnet subscribe din-e-mail-adresse til kde-multimedia-request@kde.org. Listen findes også arkiveret på http://lists.kde.org. + +E-mail-listen for &arts; er til for spørgsmål som kun berører &arts;, inklusive brug af &arts; udenfor &kde;. For at abonnere, send e-mail til arts-request@space.twc.de med meddelelsesteksten subscribe din-epostadresse. Listen arkiveres på http://space.twc.de/~stefan/arts-archive. + + + + +Kodningsstandarder + +For at opnå en konsekvent læsning af al kildekode, er det vigtigt at holde kodningsstilen ens i hele &arts;' kildekode. Vær derfor rar og forsøg at skrive/formatere din kildekode i overensstemmelse med dette, også selvom du kun skriver et modul, eftersom det gør det enklere for forskellige personer at vedligeholde kildekodetræet, og lettere at kopiere dele af kildekoden fra en fil til en anden. + + + +Navngivning af medlemsfunktioner + +&Qt;/&Java;-stil. Dette betyder at store bogstaver bruges til at markere nye ord, og at det første bogstav altid er lille. Ingen understregninger. +Dette betyder for eksempel: + +createStructureDesc() + updateWidget(); + start(); + + + + + +Klassemedlemmer + +Klassemedlemmer har ikke store bogstaver, som for eksempel menubar eller button. + +Når der er funktioner som bruges til adgang, skal standarden som bruges være ifølge &MCOP;-måden, dvs. hvis der er et "long" medlem foo, som ikke skal være synlig, så laves: + +foo(long new_value); + long foo(); + +funktioner for at hente eller sætte en værdi. I dette tilfælde, skal den rigtige værdi for foo opbevares i _foo. + + + + +Klassenavne + +Alle klasser skal have store bogstaver for hvert ord, hvilket betyder ModuleView, SynthModule. Alle klasser som hører til biblioteker skal bruge &arts;-navnerummet, såsom Arts::Soundserver. +Implementeringer af &MCOP;-klasser skal døbes Class_impl, som for eksempel SoundServer_impl. + + + + +Parametre + +Parametre har altid små bogstaver. + + + + +Lokale variabler + +Lokale variabler har altid små bogstaver, og kan have navne såsom i, p, x osv. hvis det passer. + + + + +Tabulatorbredde (skiftbredde) + +Et tabulatortegn er lige så meget som fire blanke tegn. + + + + +Mellemrum i udtryk + +Normalt behøver du ikke bruge mellemrum i udtryk. Du kan i alle tilfælde bruge dem mellem operatorer og deres operander. Hvis du skriver et mellemrum før en operator (f.eks. +), skal du også skrive et mellemrum efter operatoren. Den eneste undtagelse fra dette er udtryk som ligner lister (med ,), hvor du kun skal bruge et mellemrum efter ",", men ikke før. Det er også i orden at udelade mellemrum her. +Følgende eksempel demonstrerer god brug af mellemrum: +{ + 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); +} + +Følgende eksempel demonstrerer hvordan man ikke skal bruge mellemrum. For funktionskald, efter if, while, for, switch og så videre, skrives intet mellemrum. +{ + // DÅRLIGT: Hvis du skriver en liste, skriv kun mellemrum efter "," + int a , b , c , d , e , f; + + // DÅRLIGT: ikke symmetrisk brug af mellemrum for = operatoren + a= 5; + + // DÅRLIGT: Hvis det anses at være en funktion, og ikke følges af et mellemrum + if (a == 5) { + } + + // DÅRLIGT: skriv ikke et mellemrum efter while + while (a--) + b++; + + // DÅRLIGT: Funktionsnavne følges ikke af et mellemrum + arts_debug ("%d\n", c); + + // DÅRLIGT: heller ikke medlemsnavne + Arts::Object o = Arts::Object::null (); +} + + + + + + +Navngivning af kildekodefiler + +Kildekodefiler skal ikke have store bogstaver i navnet. De skal have samme navne som klassen hvis de implementerer en enkelt klasse. Deres filendelse skal være .cc hvis de indeholder &Qt;- og grafikuafhængig kode, og .cpp hvis de indeholder &Qt;- og grafikafhængig kode. Implementeringsfiler for grænseflader skal benævnes foo_impl, hvis Foo er grænsefladens navn. + +&IDL;-filer skal benævnes på en beskrivende måde med tanke på den samling grænseflader de indeholder, også helt med små bogstaver. I særdeleshed er det ikke godt at benævne en &IDL;-fil som klassen selv, eftersom .mcopclass-handleren og typeinfoposterne så vil kollidere. + + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/artsbuilder/index.cache.bz2 new file mode 100644 index 00000000000..edffad9020b Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/artsbuilder/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/index.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/index.docbook new file mode 100644 index 00000000000..eb8ee5432e3 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/index.docbook @@ -0,0 +1,397 @@ + + + + + + + + + + + + + + + + + + + + MCOP"> + DCOP"> + MIDI"> + mcopidl"> + IDL"> + + +]> + + + +&arts;-håndbogen + + +Stefan Westerfeld
stefan@space.twc.de
+
+
+ +Jeff Tranter
tranter@kde.org
+
+
+ +&erik.kjaer.pedersen.role; +
+ + +1999-2001 +Stefan Westerfeld & Jeff Tranter + +&FDLNotice; + +2001-06-10 +1.00.09 + +Denne håndbog beskriver &arts;, den analoge realtidssynthesizer. + + + + +aRts +artsbuilder +synthesizer +multimedie +struktur +musik +lyd +KDE + +
+ + +Indledning + + +Hvad er &arts;? + +Den analoge realtidssynthesizer, eller &arts;, er et modulært system til at syntetisere lyd og musik på en digital computer. Med små byggeblokke, som kaldes moduler, kan brugeren let opbygge komplekse værktøjer til at behandle lyd. Moduler sørger for typiske funktioner såsom bølgeformsgeneratorer, filtre, lydeffekter, samt miksning og afspilning af digital lyd i forskellige filformater. + +Lydserveren &artsd; blander lyd fra forskellige kilder i realtid, hvilket lader flere lydprogrammer få transparent delt adgang til lydkortet. + +Ved at bruge &MCOP;, multimediakommunikationsprotokollen, kan multimedieprogrammer blive netværksgennemsigtige, sikkerhedsidentificerede, og virke på flere platforme med grænseflade som defineres på en sproguafhængig måde med &IDL;. Ældre programmer som ikke understøtter &arts; håndteres også. Som en central komponent i desktopmiljøet &kde; 2, sørger &arts; for grundlaget for &kde;'s arkitektur for multimedie, og vil støtte flere medietyper inklusive video i fremtiden. Ligesom &kde;, så kører &arts; på flere operativsystemer, inklusive &Linux; og BSD-varianter. Den kan også bruges uafhængig af &kde;. + + + + +Brug af denne håndbog + +Denne håndbog er beregnet til at give fuldstændig dokumentation for &arts; for brugere med forskellige kundskabsniveauer. Afhængig af om du er en hverdagsbruger af multimedieprogrammer som kører ved hjælp af &arts; eller en udvikler af multimedieprogrammer, kan du vælge at læse håndbogens afsnit i forskellig rækkefølge. + +Vi foreslår at du først læser kapitlet Hent og byg &arts; hvis du har brug for først at få &arts; installeret og kørbart. Hvis du allerede har et fungerende system, formodentlig installeret sammen med din operativsystemdistribution, kan du vælge at springe over dette afsnit. + +Derefter bør du læse afsnittene i kapitlet &arts; værktøjer, især &artsd;, artscontrol;, &artsshell;, og &artsdsp;. Dette hjælper dig til at bruge &arts; på den mest effektive måde. + +Hvis du er interesseret i at trænge yderligere ind i &arts;' funktion, så læs kapitlet om &arts-builder; og gennemgå øvelsen. Dette bør give dig en forståelse for &arts;' kraftfulde muligheder og de moduler som er beregnet til at bruge uden at behøve at kunne programmere. + +Hvis du vil lære dig mere om hvordan &arts; virker internt, enten for at udvikle multimedieprogrammer eller for at udvide selve &arts;, så læs nogle eller alle kapitlerne om &arts; i detalje. Dette bør give dig en forståelse for alle begreber som kræves for &arts;-programmeludvikling. + +Hvis du er særligt interesseret i MIDI-funktionerne i &arts;, bør du læse kapitlet om &MIDI;. + + + +Hvis du vil udvikle multimedieprogrammer som bruger &arts;, beskrives de forskellige programmelgrænseflader (API) detaljeret i kapitlet &arts;-API. + +Hvis du vil udvide &arts; ved at oprette nye moduler, læs kapitlet &arts;-moduler. + +Hvis du ændrer et eksisterende program til at køre sammen med &arts;, så læs kapitlet Overførsel af programmer til at passe sammen med &arts;. + +Du kan også finde ud af hvordan du kan hjælpe med og bidrage til &arts;-projektet i kapitlet Bidrag til &arts;, læs om kommende udvikling af &arts; i kapitlet Fremtidigt arbejde, og finde link til mere information i afsnittet Referencer. + +Vi har også afrundet håndbogen med en del yderligere materiale, inklusive svar på almindelige spørgsmål, en liste over bidragydere, detaljer om &arts; ophavsret og licenser, og en del baggrundsmateriale om digitallyd og &MIDI;. En ordforklaring indgår også. + + +Denne håndbog er stadigvæk i stor udstrækning ufærdig. Du må gerne bidrage med at skrive dele af den, men hvis du vil gøre dette, så kontakt først Jeff Tranter tranter@kde.org eller Stefan Westerfeld stefan@space.twc.de for at undgå dobbeltarbejde. + + + + + +Historien + +Mod slutningen af 1997 begyndte Stefan Westerfeld at arbejde med et modulært realtidssystem for lydsyntese. Koden kørtes oprindeligt på et PowerPC-system med &AIX;. Den første implementering var meget enkel, men understøttede et flow-system med fuldstændig funktion som kunne gøre sådanne ting som at afspille MP3-filer og sende data gennem lydeffektmoduler. + + +Næste skridt var at implementere en grafisk grænseflade, så moduler kunne manipuleres grafisk. Stefan havde en del god erfaring med at bruge &kde;, så derfor valgtes &kde; som den grafiske værktøjskasse, (med viden om at det kunne blive nødvendigt at lave en version med GNOME/Gtk+ også) og dette gjorde at &Linux; senere valgtes som den hovedsagelige udviklingsplatform. Projektet, som oprindeligt hed ksynth, omdøbtes til &arts; og udviklingstakten øgedes. På dette tidspunkt var projektet næsten komplet, med en CORBA-baseret protokol, dusinvis af moduler, et grafisk modulredigeringsværktøj, C og C++ grænseflade, dokumentation, værktøj og en e-mail-liste og netside med en lille gruppe udviklere. Projektet var kommet et godt stykke af vejen efter kun noget mere end et års udvikling. + +Da &kde;-gruppen begyndte at planlægge for &kde; 2.0, blev det klart at &kde; behøvede en kraftfuldere infrastruktur for lyd og andre medietyper. Beslutningen blev taget at tilrette &arts;, eftersom det var et skridt i den rigtige retning med en gennemprøvet arkitektur. En ny stor udviklingsanstrengelse gjordes for denne nye version af &arts;, frem for alt udskiftningen af CORBA-koden med et helt nyt undersystem, &MCOP;, optimeret for multimedie. Version 0.4 af &arts; indgik i udgave 2.0 af &kde;. + +Arbejdet med &arts; fortsætter, med at forbedre ydelsen og tilføje nye funktioner. Bemærk selvom &arts; nu er en central komponent i &kde;, kan den bruges uden &kde;, og bruges også af programmer som går udenfor traditionel multimedie. Projektet har modtaget en vis interesse fra GNOME-gruppen, som åbner en mulighed for at det i fremtiden kan blive standardarkitekturen for multimedie på &UNIX; desktopsystemer. + + + + + +&tools; +&artsbuilder-doc; +&detail; +&arts-midi; +&gui; +&mcop-ref; +&apis; +&modules; +&porting; +&helping; +&future; +&references; +&arts-faq; + + + +&arts; Ophavsret og licens + +&arts; programmel ophavsret 1998-2001 Stefan Westerfeld stefan@space.twc.de + + Dokumentation ophavsret 1999-2001 Stefan Westerfeld stefan@space.twc.de og Jeff Tranter tranter@kde.org. +&erik.kjaer.pedersen.credit; +&underFDL; Alle biblioteker som indgår i &arts; udgives under betingelseren i GNU Lesser General Public licensen. En overvældende majoritet af koden i &arts; findes i biblioteker, inklusive hele MCOP og ArtsFlow. Dette tillader at bibliotekerne bruges af programmer som ikke er fri eller åbne hvis det ønskes sådan. + +Det er et fåtal af programmer (såsom artsd), som udgives under betingelseren i GNU General Public License. Eftersom der har været forskellige meninger om det er tilladt eller ej at linke GPL-programmer med &Qt;, har jeg også tilføjet en udtrykkelig anmærkning som tillader dette, som en tilføjelse til GPL: tilladelse gives også at til at linke dette program med &Qt;-biblioteket, hvor &Qt; behandles som et bibliotek som normalt følger med operativsystemets kerne, hvad enten dette er tilfældet eller ej. + + + + +Installering af &arts; + +For at kunne bruge &arts; skal du naturligtvis have det installeret og køre det på systemet. Der er to metoder at opnå dette, som beskrives i de følgende afsnit. + + +Installér en færdigkompileret binær udgave + +Den hurtigste og enkleste måde at få &arts; køreklar er at installere færdigkompilerede binære pakker for systemet. De fleste nyere &Linux;-distributioner indeholder &kde;, og hvis det er &kde; 2.0 eller senere er &arts; med. Hvis &kde; ikke følger med installationen, kan det findes tilgængeligt til download fra din operativsystemleverandør. Som et alternativ kan det findes tilgængeligt fra tredjepart. Sørg for at du bruger pakker som passer sammen med dit operativsystem. + +En grundlæggende installation af &kde; indeholder lydserveren, som tillader de fleste programmer at afspille lyd. Hvis du vil have hele opsætningen med multimedieværktøj og programmer, vil du formodentlig skulle installere yderligere valgfrie pakke. + +Bagdelen ved at bruge færdigkompilerede binære filer er at de måske ikke indeholder den nyeste version af &arts;. Dette er særlig sandsynligt hvis de er kommet på cd-rom, eftersom udviklingstakten for &arts; og &kde; er sådan at cd-rom udgaver oftest ikke kan følge med. Du kan også komme ud for at færdigkompilerede binære pakker ikke er tilgængelige, hvis du har en mindre almindelig arkitektur eller operativsystemdistribution, og du må derfor bruge den anden metoden. + + + + +Byg fra kildekode + +Selv om det tager tid, er den mest fleksible måde at bygge &arts; selv at kompilere den fra kildekode. Dette sikrer dig at du har en version som er optimalt kompileret for din systemopsætning og lader dig bygge den nyeste version. + +Her har du to valg, du kan enten installere den nyeste stabile version som indgår i &kde; eller du kan skaffe den nyeste (men måske ustabile) udgave direkte fra &kde;-projektets CVS-arkiv. De fleste brugere som ikke udvikler med &arts; bør bruge den stabile version. Du kan hente den fra ftp://ftp.kde.org eller et af de mange spejle. Hvis du allerede udvikler aktivt med &arts; vil du formodentlig bruge CVS-versionen. Hvis du vil bruge aRts uden KDE, kan du hente en selvstændig udviklingsversion fra http://space.twc.de/~stefan/kde/arts-snapshot-doc.html. + +Bemærk at hvis du bygger fra CVS, vil visse komponenter i &arts; (dvs. de grundlæggende centrale komponenter inklusive lydserveren) være i CVS-modulet tdelibs, mens yderligere komponenter (f.eks. artsbuilder) indgår i tdemultimedia. Dette vil muligvis blive ændret i fremtiden. Du kan også finde en version i modulet kmusic, det er den gamle version (før &kde; 2.0) som nu er forældet. + +Kravene til at bygge &arts; er i hovedsagen de samme som for &kde;. Konfigurationsscripterne bør opdage systemindstillingerne og angive om nogle nødvendige komponenter mangler. Sørg for at du har en fungerende lyddriver-rutine på systemet (enten OSS/Free driver i kernen, OSS-driveren fra 4Front Technologies, eller en ALSA-driver med OSS-støtte). + +Mere information om at hente og installere &kde; (inklusive &arts;) findes i &kde;'s &FAQ;. + + + + + +&digitalaudio; +&midiintro; +&arts-glossary; + +
+ diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/mcop.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/mcop.docbook new file mode 100644 index 00000000000..916d8b5f301 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/mcop.docbook @@ -0,0 +1,1972 @@ + + + +&MCOP;: objektmodel og strømme + + + +Oversigt + +&MCOP; er standarden som &arts; anvender til: + + + +Kommunikation mellem objekter. + + + +Netværkstransparens. + + + +Beskrivelse af objektgrænseflader. + + + +Sproguafhængighed. + + + +En vigtig del af &MCOP; er grænsefladesbeskrivelsessproget, &IDL;, som bruges til at definere mange af &arts; programmeringsgrænseflader og andre grænseflader på en sproguafhængig måde. + +For at bruge en &IDL;-grænseflade fra C++, kompileres den med &IDL; oversætteren til C++ kode. Når du implementerer en grænseflade, afleder du fra skabelonklassen som &IDL; oversætteren har oprettet. Når man bruger en grænseflade gør man det med en omliggende skal. På denne måde kan &MCOP; bruge en protokol hvis objektet du taler med ikke er lokalt - man får netværkstransparens. + +I dette kapitel er emnet at beskrive de grundlæggende funktioner i objektmodellen som er resultatet af at bruge &MCOP;, protokollen, hvordan &MCOP; bruges med C++ (sprogbindning), og så videre. + + + + + +Grænseflade og &IDL; + +Meget af den service som varetages af &arts;, såsom modulerne og lydserveren defineres i form af grænseflader. Grænseflader specificeres i et programsprogsuafhængig format: &IDL;. + +Dette tillader at mange af implementeringsdetaljerne såsom formatet på multimediadatastrømmene, netværkstransparens og programsprogsuafhængig skjules for specifikationen af grænsefladen. Et værktøj, &mcopidl;, oversætter grænsefladedefinitionen til et specifikt programmeringssprog (for øjeblikket understøttes kun C++). + +Værktøjet laver en skeletklasse med al standardkode og grundlæggende funktionalitet. Man afleder fra denne klassen for at implementere de funktioner man vil have. + +Det &IDL; som bruges af &arts; ligner det som bruges af CORBA og DCOM. + +&IDL;-filer kan indholde: + + + +C-stil #include-direktiv for andre &IDL;-filer. + + + +Definitioner af nummereringstyper og struct-typer, som i C/C++. + + + +Definitioner af grænseflade. + + + +I &IDL; defineres grænseflade på en måde som minder meget om en C++ klasse eller C-struct, dog med visse begrænsninger. Som i C++, så kan grænseflader være underklasser til andre grænseflader med arv. Grænsefladedefinitioner kan indeholde tre ting: Strømme, egenskaber og metoder. + + + +Strømme + +Strømme definerer multimediadata, en af de vigtigste komponenter i et modul. Strømme defineres med følgende format: + +[ async ] in|out [ multi ] typ stream navn [ , navn ] ; + +Strømme har en defineret retning i forhold til modulet, som angives af de nødvendige parametre in eller out. Typeargumentet definerer datatypen, som kan være en hvilken som helst af typerne for egenskaber som beskrives senere (ikke alle understøttes endnu). Mange moduler bruger strømtypen audio, som er et alias for float eftersom det er det interne dataformatet for lydstrømme. Flere strømme af samme type kan indgå i samme definition med navne adskilt med kommategn. + +Strømme er normalt synkrone, hvilket betyder at de er kontinuerlige dataflows med en konstant hastighed, såsom PCM-lyd. Parameteren async angiver en asynkron strøm, som bruges til ikke-kontinuerlige datastrømme. Det almindeligste eksempel på en asynkron strøm er &MIDI;-meddelelser. + +Nøgleordet multi, som kun er gyldigt for inddatastrømme, angiver at grænsefladen understøtter et variabelt antal indgange. Dette er nyttigt til at implementere enheder såsom en mixer som kan tage imod et hvilket som helst antal inddatastrømme. + + + + +Attributter + +Attributter er data som hører sammen med en udgave af en grænseflade. De deklareres som medlemsvariabler i C++, og kan bruges af en hvilken som helst af de primitive typer boolean, byte, long, string, eller float. Du kan også bruge selvdefinerede struct- eller nummereringstyper samt sekvenser af variabel størrelse med syntaksen sekvens<type>. Attributter kan valgfrit markeres som skrivebeskyttede. + + + + +Metoder + +Som i C++, kan metoder defineres i grænseflader. Metodeparametrene er begrænsede til samme typer som attributterne. Nøgleordet oneway angiver en metode som returnerer umiddelbart og køres asynkront. + + + + + +Standardgrænseflader + +Flere grænseflader for standardmoduler er allerede definerede for dig i &arts;, såsom StereoEffect, og SimpleSoundServer. + + + + +Eksempel + +Et enkelt eksempel på et modul taget fra &arts; er modulet med konstant forsinkelse, som findes i filen tdemultimedia/arts/modules/artsmodules.idl. Grænsefladedefinitionen angives nedenfor: + +interface Synth_CDELAY : SynthModule { + attribute float time; + in audio stream invalue; + out audio stream outvalue; +}; + + +Modulet arver SynthModule. Den grænseflade, som findes i artsflow.idl, definerer alle standardmetoder som implementeres i alle syntesemoduler. + +CDELAY-effekten forsinker en stereolydstrøm med tidsværdien som angives som en decimaltal parameter. Grænsefladedefinitionen har en attribut af typen float til at opbevare forsinkelsesværdien. Den definerer to inddata- og to uddatastrømme (typisk for stereoeffekter). Ingen metoder kræves ud over de arvede. + + + + + + +Mere om strømme + +Dette afsnit dækker en del yderligere emneområder som hører sammen med strømme. + + +Strømtyper + +Der er forskellige krav for hvordan et modul kan håndtere strømningen. For at illustrere dette, betragt følgende eksempel: + + + +Skalering af et signal med en faktor to. + + + +Udfører frekvenskonvertering af samplinger. + + + +Dekomprimering af et runlength-kodet signal. + + + +Læs &MIDI;-begivenheder fra /dev/midi00 og indsæt dem i en strøm. + + + +Det første tilfælde er det enkleste: når modulet modtager 200 inddatasamplinger producerer det 200 uddatasamplinger. Det producerer kun uddata når det får inddata. + +Det andet tilfælde producerer forskellige antal uddatasamplinger når det får 200 inddatasamplinger. Det afhænger af hvilken konvertering som udføres, men antallet er kendt i forvejen. + +Det tredje tilfælde er endnu værre. Fra begyndelsen kan man ikke engang gætte hvor meget data som laves af 200 inddata byte (formodentlig meget mere end 200 byte, men...). + +Det sidste tilfælde er et modul som aktiveres af sig selv, og sommetider laver data. + +I &arts;-0.3.4, håndteredes kun strømme af den første type, og de fleste ting virkede godt. Dette er formodentlig hvad du mest behøver når du skriver moduler som behandler lyd. Problemerne med de andre, mere komplekse slags strømme er, at de er svære at programmere, og at man for det meste ikke behøver funktionerne. Dette er grunden til at vi gør dette med to forskellige slags strømtyper: synkrone og asynkrone. + +Synkrone strømme har følgende egenskaber: + + + +Moduler skal kunne beregne data af en hvilken som helst længde, givet tilstrækkelig meget inddata. + + + +Alle strømme har samme samplingsrate. + + + +Funktionen calculateBlock() kaldes når tilstrækkeligt med data er tilgængelig, og modulet kan stole på at pegerne angiver data. + + + +Der er ingen allokering eller afallokering der skal gøres. + + + +Asynkrone strømme, på den anden side, opfører sig sådan her: + + + +Moduler kan producere data ind imellem, eller med varierende samplingsfrekvens, eller kun hvis de får inddata fra en fil. De skal ikke følge reglen skal kunne håndtere forespørgsler af en hvilken som helst størrelse. + + + +Asynkrone strømme for et modul kan have helt forskellige samplingsrater. + + + +Udgående strømme: der er særlige funktioner til at allokere pakker, til at sende pakker - og en valgfri mekanisme til at spørge efter data som fortæller når mere data skal laves. + + + +Indkommende strømme: et kald sendes når en ny pakke modtages. Man skal fortælle når man er færdig med at behandle al data i den pakke, og dette må ikke ske med det samme (man kan fortælle om det når som helst senere, og hvis alle har behandlet en pakke, bliver den frigjort/genbrugt). + + + +Når strømme deklareres, bruges nøgleordet async til at angive at strømmen skal være asynkron. Så antag for eksempel at du vil konvertere en asynkron strøm af byte til en synkron strøm af samplinger. Grænsefladen ville så kunne se sådan her ud: + +interface ByteStreamToAudio : SynthModule { + async in byte stream inddata; // den asynkrone inddatasampling + + out audio stream left,right; // de synkrone uddatasamplinger +}; + + + + + +Brug af asynkrone strømme + +Antag at du har bestemt dig for at skrive et modul som laver asynkron lyd. Dens grænseflade kunne se sådan her ud: + +interface SomeModule : SynthModule +{ + async out byte stream outdata; +}; + + +Hvordan sender man data? Den første metode kaldes trykleverance. Med asynkrone strømme sender man data som pakker. Det betyder at individuelle pakker sendes som i eksemplet ovenfor. Den virkelige proces er: allokér en pakke, fyld den, send den. + +Her følger det i form af kode. Først allokerer vi en pakke: + +DataPacket<mcopbyte> *packet = outdata.allocPacket(100); + + +Så fylder vi den: + +// typekonvertering så fgets får en (char *) peger +char *data = (char *)packet->contents; + +// som du ser, kan du krympe pakkestørrelsen efter allokeringen +// hvis du vil +if(fgets(data,100,stdin)) + packet->size = strlen(data); +else + packet->size = 0; + + +Nu sender vi den: + +packet->send(); + + +Dette er meget enkelt, men hvis vi vil sende pakker nøjagtigt så hurtigt som modtageren kan håndtere dem, behøves en anden måde, metoden med trækleverance. Man beder om at sende pakker så hurtigt som modtageren er klar til at behandle dem. Man begynder med en vis mængde pakker som sendes. Mens modtageren behandler pakke efter pakke, begynder man at fylde dem igen med friske data, og sende dem igen. + +Du starter det ved at kalde setPull. For eksempel: + +outdata.setPull(8, 1024); + + +Dette betyder at du vil sende pakke via uddata. Du vil begynde med at sende 8 pakker på én gang, og når modtageren behandler nogle af dem, vil du fylde dem op igen. + +Derefter behøver du at implementere en metode som fylder pakken, som kunne se sådan her ud: + +void request_outdata(DataPacket<mcopbyte> *packet) +{ + packet->size = 1024; // skal ikke være mere end 1024 + for(int i = 0;i < 1024; i++) + packet->contents[i] = (mcopbyte)'A'; + packet->send(); +} + + +Det er alt. Når du ikke har flere data, kan du begynde at sende pakker med størrelsen nul, som stopper trækleverancerne. + +Bemærk at det er væsentligt at give metoden nøjagtigt navnet request_strømnavn. + +Vi beskrev netop at sende data. At modtage data er meget enklere. Antag at du har et enkelt filter, ToLower, som helt enkelt konverterer alle bogstaver til små: + +interface ToLower { + async in byte stream inddata; + async out byte stream uddata; +}; + + +Dette er virkeligt enkelt at implementere. Her er hele implementationen: + +class ToLower_impl : public ToLower_skel { +public: + void process_inddata(DataPacket<mcopbyte> *inpacket) + { + DataPacket<mcopbyte> *outpacket = ouddata.allocPacket(inpacket->size); + + // lav om til små bogstaver + 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); + + +Igen er det væsentligt at give metoden navnet process_strømnavn. + +Som du kan se, så får du et kald til en funktion for hver pakke som ankommer (process_indata i vort tilfælde). Du skal kalde metoden processed() for en pakke for at angive at du har behandlet den. + +Her er et implementeringstip: Hvis det tager lang tid at behandle data (dvs. hvis du skal vente på udskrift til lydkortet eller noget sådant), så kald ikke processed med det samme, men opbevar hele datapakken og kald kun processed når du virkelig har behandlet pakken. På denne måde, har afsenderne en chance for at vide hvor lang tid det virkelig tager at udføre arbejdet. + +Eftersom synkronisering ikke er så behagelig med asynkrone strømme, skal man bruge synkrone strømme så ofte som muligt, og kun asynkrone hvis det er nødvendigt. + + + + +Standardstrømme + +Antag at du har to objekter, for eksempel en AudioProducer og en AudioConsumer. AudioProducer har en uddatastrøm og AudioConsumer har en inddatastrøm. Hver gang du vil forbinde dem, bruger du disse to strømme. Den første brug af defaulting er at lade dig oprette forbindelsen uden at angive portene i dette tilfælde. + +Antag nu at de to objekter ovenfor kan håndtere stereo, og begge har en venstre og højre port. Du vil stadigvæk skulle kunne koble dem sammen lige så let som tidligere. Men hvordan kan forbindelsesystemet vide hvilken udgang som skal kobles til hvilken indgang? Det har ingen måde at koble strømmene rigtigt sammen. Defaulting bruges så til at angive flere strømme med en vis rækkefølge. På den måde, hvis du forbinder et objekt med to standard uddatastrømme til et andet med to standard inddatastrømme, behøver du ikke angive portene, og forbindelserne gøres rigtigt. + +Dette er naturligvis ikke begrænset til stereo. Hvilket som helst antal strømme kan gøres standard hvis det behøves, og forbindelsesfunktionen kontrollerer at antallet af standarder for to objekter passer sammen (med de angivne retninger) hvis du ikke angiver portene som skal bruges. + +Syntaksen er den følgende: I &IDL; kan du bruge nøgleordet default i strømdeklarationen, eller på en enkelt linje. For eksempel: + +interface TwoToOneMixer { + default in audio stream input1, input2; + out audio stream output; +}; + + +I dette eksempel kommer objektet til at forvente at dets to inddataporte skal forbindes som standard. Rækkefølgen er den som angives på linjen, så et objekt som dette: + +interface DualNoiseGenerator { + out audio stream bzzt, couic; + default couic, bzzt; +}; + + +laver automatisk en forbindelse fra couic til input1, og bzzt til input2 Bemærk at eftersom der kun er én udgang for mikseren, kommer den til at være standard i dette tilfælde (se nedenfor). Syntaksen som bruges i støjgeneratoren er nyttig til for at angive en anden rækkefølge end i deklarationen, eller til kun at vælge nogle få porte som standard. Retningen på portene på denne linje slås op af &mcopidl;, så angiv dem ikke. Du kan til og med blande ind- og udporte på en sådan linje, kun rækkefølgen spiller en rolle. + +Der er nogle regler som følges når arv bruges: + + + +Hvis en standardliste angives i &IDL; så skal den bruges. En forælders port kan også indgå i listen, hvad enten de var standard forælderen eller ej. + + + +Ellers arves forældrenes standarder. Rækkefølgen er forælder1 forvalg1, forælder1 forvalg2..., forælder2 forvalg1... Hvis der er en fælles forfader som bruger to forældregrene, laves en sammenfletning som ligner virtual public ved standardens første plads i listen. + + + +Hvis der stadigvæk ikke er nogen standard og en eneste strøm i en vis retning, så bruges den som standard for den retning. + + + + + + + +Ændringsmeddelelser for attributter + + + +Ændringsmeddelelser for attributter er en måde at vide når en attribut ændres. De kan i en vis udstrækning sammenlignes med et &Qt;- eller Gtk-signal eller slot. Hvis du for eksempel har et grafisk element, en skyder, som indstiller et tal mellem 0 og 100, har du oftest et objekt som gør noget med tallet (det kan for eksempel kontrollere lydstyrken på et lydsignal). Så vil du gerne at så snart skyderen flyttes skal objektet som indsteller lydstyrken underrettes. En forbindelse mellem en sender og modtagar. + +&MCOP; håndterer dette ved at kunne give meddelelser når attributter ændres. Alt som deklareres som attribute i &IDL; kan afgive sådanne ændringsmeddelelser, og skal gøre det, nårsomhelst de ændres. Alt som deklareres som attribute kan også modtage sådanne ændringsmeddelelser. Så hvis du for eksempel har to &IDL;-grænseflader såsom disse her: + +interface Slider { + attribute long min,max; + attribute long position; + }; + interface VolumeControl : Arts::StereoEffect { + attribute long volume; // 0..100 + }; + + +kan du forbinde dem med ændringsmeddelelser. Det virker med det normale flydesystems forbindelsesoperation. I dette tilfælde, ser C++ koden som forbinder de to objekter sådan her ud + +#include <connect.h> +using namespace Arts; +[...] +connect(slider,"position_changed",volumeControl,"volume"); + + +Som du kan se, tilbyder hver egenskab to forskellige strømme, en for at sende ændringsmeddelelser, som hedder attributnavn_changed, og en til at modtage ændringsmeddelelser, som hedder attributnavn. + +Det er vigtigt at vide at ændringsmeddelelser og asynkrone strømme passer sammen. De er også netværkstransparente. Så du kan forbinde en flyttelsesegenskabs ændringsmeddelelse for en grafisk komponent til en asynkron strøm for en syntesemodul som kører på en anden maskine. Dette betyder naturligvis også at ændringsmeddelelser ikke er synkrone, hvilket betyder at det kan tage tid inden de virkelig modtages efter at du har sendt dem. + + + +Send ændringsmeddelelser + +Når du implementerer objekter som har egenskaber, skal du sende ændringsmeddelelser så snart en egenskab ændres. Koden til at gøre dette ser sådan her ud: + +void KPoti_impl::value(float newValue) + { + if(newValue != _value) + { + _value = newValue; + value_changed(newValue); // <- send ændringsmeddelelse + } + } + + +Det anbefales varmt at bruge kode som denne for alle objekter som du implementerer, så ændringsmeddelelser kan bruges af andre. Du bør dog undgå at sende meddelelser for ofte, så hvis du laver signalbehandling er det formodentlig bedst at holde styr på hvornår du sendte din seneste meddelelse, så du ikke sender en for hver sampling. + + + + +Anvendelser af ændringsmeddelelser + +Det vil være særligt nyttigt at bruge ændringsmeddelelser sammen med målere (objekter som for eksempel visualiserer lyddata), grafiske grænseflader, kontrolelementer og monitorer. Kode som bruger dette findes i tdelibs/arts/tests, og i den eksperimentelle artsgui-implementation, som du finder i tdemultimedia/arts/gui. + + + + + + + + + + +Filen <literal role="extension" +>.mcoprc</literal +> + +Filen .mcoprc (i hver brugers hjemmemappe) kan bruges til at indstille &MCOP; på nogle måder. For øjeblikket er følgende muligt: + + + + +GlobalComm + +Navnet på en grænseflade som skal bruges til global kommunikation. Global kommunikation bruges til at finde andre objekter og hente den hemmelige cookie. Alle &MCOP; klienter/servere som skal kunne kommunikere med hinanden skal have et GlobalComm-objekt for at kunne dele information. For øjeblikket er de mulige værdier Arts::TmpGlobalComm for at kommunikere via mappen /tmp/mcop-brugernavn (som kun virker på den lokale maskine) og Arts::X11GlobalComm for at kommunikere via rootvinduesegenskaberne på X11-serveren. + + + + +TraderPath + + +Angiver hvor handlerinformation skal findes. Du kan angive mere end en mappe her, og adskille dem med kommategn. + + + + + +ExtensionPath + + +Angiver fra hvilke mapper udvidelser (i form af delte biblioteker) indlæses. Flere værdier kan adskilles med kommategn. + + + + + +Et eksempel som bruger alt det ovenstående er: + +# $HOME/.mcoprc file +GlobalComm=Arts::X11GlobalComm + +# hvis du er udvikler kan det være bekvemt at tilføje et mappe i din +# hjemmemappe til TraderPath/ExtensionPath søgestierne for at kunne tilføje +# til komponenter uden at installere dem +TraderPath="/opt/kde2/lib/mcop","/home/joe/mcopdevel/mcop" +ExtensionPath="/opt/kde2/lib","/home/joe/mcopdevel/lib" + + + + + +&MCOP; for <acronym +>CORBA</acronym +>-brugere + +Hvis du har brugt CORBA tidligere, vil du kunne mærke at &MCOP; er meget lig. I virkeligheden så brugte &arts; CORBA inden version 0.4. + +Den grundlæggende idé med CORBA er den samme: man implementerer objekter (komponenter). Ved at bruge funktionerne i &MCOP; er objekter ikke kun tilgængelige som normale klasser fra samme proces (via standard C++ teknikker), men de er også transparent tilgængelige for en fjernserver. For at dette skal virke, er det første du skal gøre at specificere grænsefladen for dine objekter i en &IDL;-fil, præcis som for CORBA-&IDL;. Der er kun et fåtal af forskelle. + + +<acronym +>CORBA</acronym +>-funktioner som mangles i &MCOP; + +I &MCOP; er der ingen in og out parametre for metodekald. Parametre er altid indgående, og returværdien er altid udgående, hvilket betyder at grænsefladen: + +// CORBA idl +interface Account { + void deposit( in long amount ); + void withdraw( in long amount ); + long balance(); +}; + + +skrives som + +// MCOP idl +interface Account { + void deposit( long amount ); + void withdraw( long amount ); + long balance(); +}; + + +i &MCOP;. + +Der er ingen støtte for undtagelser. &MCOP; har ikke undtagelser, den bruger noget andet til fejlhåndtering. + +Der er ingen union-typer og ingen typedefinitioner. Jeg ved ikke om det er en virkelig svaghed, noget man desperat behøver for at overleve. + +Der er ingen understøttelse for at sende grænseflader eller objektreferencer + + + + +<acronym +>CORBA</acronym +>-funktioner som er anderledes i &MCOP; + +Du deklarerer sekvenser som sequencetyp i &MCOP;. Der er intet behov for en typedefinition. For eksempel, i stedet for: + +// CORBA idl +struct Line { + long x1,y1,x2,y2; +}; +typedef sequence<Line> LineSeq; +interface Plotter { + void draw(in LineSeq lines); +}; + + +ville du skrive + +// MCOP idl +struct Line { + long x1,y1,x2,y2; +}; +interface Plotter { + void draw(sequence<Line> lines); +}; + + + + + +&MCOP;-funktioner som ikke findes i <acronym +>CORBA</acronym +> + +Du kan deklarere strømme, som senere behandles af &arts;' skelet. Strømme deklareres på en måde som ligner egenskaber. For eksempel: + +// MCOP idl +interface Synth_ADD : SynthModule { + in audio stream signal1,signal2; + out audio stream outvalue; +}; + + +Dette betyder at dit objekt vil acceptere to indkommende synkrone lydstrømme som kaldes signal1 og signal2. Synkron betyder at de er strømme som leverer x samplinger pr sekund (eller anden tid), så skemalæggeren altid garanterer at du får en balanceret mængde inddata (f.eks. 200 samplinger af signal1 er der og 200 samplinger af signal2 er der). Du garanterer at hvis dit objekt kaldes med disse 200 samplinger af signal1 + signal2, så kan det producere præcis 200 samplinger uddata. + + + + +&MCOP;-bindingen til C++ sproget + +Dette adskiller sig fra CORBA i hovedsagen hvad angår: + + + +Strenge bruger C++ STL-klassen string. Når de opbevares i sekvenser, opbevares de enkelt, hvilket betyder at de anses for at være en primitiv type. Derfor behøver de at blive kopieret. + + + +long er enkle long (forventes at være 32 bit). + + + +Sekvenser bruger C++ STL-klassen vector. + + + +Strukturer afledes alle fra &MCOP; klassen Type, og genereres af &MCOP; &IDL;-oversætteren. Når de opbevares i sekvenser, opbevares de ikke enkelt, men som pegere, eftersom der ellers ville opstå for meget kopiering. + + + + + +Implementering af &MCOP;-objekter + +Efter at have sendt dem gennem &IDL;-oversætteren, skal du aflede fra klassen _skel. Antag for eksempel at du har defineret grænsefladen sådan her: + +// MCOP idl: hello.idl +interface Hello { + void hello(string s); + string concat(string s1, string s2); + long sum2(long a, long b); +}; + + +Du sender det gennem &IDL;-oversætteren ved at kalde mcopidl hello.idl, som derefter laver hello.cc og hello.h. For at implementere dette, behøver du en C++ klasse som arver skelettet: + +// C++ deklarationsfil - indsæt hello.h et sted +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); +}; + + +Til sidst skal du implementere metoderne som almindelig C++. + +// C++ implementeringsfil + +// som du ser sendes strenge som konstante strengreferencer +void Hello_impl::hello(const string& s) +{ + printf("Hello '%s'!\n",s.c_str()); +} + +// når de er en returværdi sendes de som "normale" strenge +string Hello_impl::concat(const string& s1, const string& s2) +{ + return s1+s2; +} + +long Hello_impl::sum2(long a, long b) +{ + return a+b; +} + + +Når du har gjort dette, har du et objekt som kan kommunikere med &MCOP;. Opret kun et (med de normale C++ faciliteter til at oprette et objekt): + +Hello_impl server; + + +Og så snart du giver nogen referencen + +string reference = server._toString(); + printf("%s\n",reference.c_str()); + + +og gå til &MCOP;:s venteløkke + +Dispatcher::the()->run(); + + +har alle adgang til objektet med + +// denne kode kan køre hvorsomhelst - ikke nødvendigtvis i samme proces +// (den kan også køre på en anden maskine/arkitektur) + + Hello *h = Hello::_fromString([objektreferencen som blev udskrevet ovenifor]); + + +og kalde-metoder: + +if(h) + h->hello("test"); + else + printf("Adgang mislykkedes?\n"); + + + + + + +Sikkerhedshensyn for &MCOP; + +Eftersom en &MCOP;-server lytter på en TCP-port, kan potentielt set alle (hvis du er forbundet til internettet) forsøge at forbinde til en &MCOP;-tjeneste. Derfor er det vigtigt at identificere klienter. &MCOP; bruger md5-auth protokollen. + +Protokollen md5-auth gør følgende for at sikre at kun udvalgte (pålidelige) klienter kan forbinde til en server: + + + +Den antager at du kan give hver klient en hemmelig cookie. + + + +Hver gang en klient forbindes, verificerer den at denne klient kender til den hemmelige cookie, uden virkelig at sende den (ikke engang på en form som nogen som lytter på netværkstrafik kunne finde ud af). + + + + +For at give hver klient den hemmelige cookie, putter &MCOP; den (normalt) i mcop mappen (i /tmp/mcop-USER/secret-cookie). Du kan naturligvis kopiere den til andre maskiner. Men hvis du gør det, så brug en sikker overførselsmekanisme, såsom scp (fra ssh). + +Godkendelsen af klienter anvender følgende skridt: + + + +[SERVER] opret en ny (tilfældig) cookie R + + + +[SERVER] send den til klienten + + + +[KLIENT] læs den "hemmelige cookie" S fra en fil + + + +[KLIENT] bland cookierne R og S for at oprette en blandet cookie M med MD5-algoritmen + + + +[KLIENT] send M til serveren + + + +[SERVER] verificerer at blanding af R og S giver præcis samme cookie som cookien M som blev modtaget fra klienten. Hvis dette stemmer er godkendelsen lykkedes. + + + + +Denne algoritme skulle være sikker, under forudsætning af at + + + +De hemmelige og tilfældige cookier er tilfældige nok og + + + +MD5-algoritmen ikke tillader at originalteksten kan afgøres, det vil sige den hemmelige cookie S og den tilfældige cookie R (som er kendt alligevel), fra den blandede cookie M. + + + +&MCOP;-protokollen starter hver ny forbindelse med en godkendelsesprocess. Basalt ser den sådan her ud: + + + + +Serveren sender meddelelsen ServerHello, som beskriver de kendte godkendelsesprotokoller. + + + +Klienten sender meddelelsen ClientHello, som indeholder godkendelsesinformation. + + + +Serveren sender meddelelsen AuthAccept. + + + +For at se at sikkerheden virkelig virker, bør vi kigge på hvordan meddelelser behandles for ikke godkendte forbindelser: + + + +Inden godkendelsen er lykkedes, tager serveren ikke imod andre meddelelser fra forbindelsen. I stedet, hvis serveren for eksempel forventer sig meddelelsen ClientHello, og får meddelelsen mcopInvocation, så lukker den ned for forbindelsen. + + + +Hvis klienten ikke sender en gyldig &MCOP;-meddelelse overhovedet (ingen magisk værdi &MCOP; i meddelelseshovedet) i godkendelsesfasen, uden noget andet, så lukkes der for forbindelsen. + + + +Hvis klienten forsøger at sende en meget stor meddelelse (> 4096 byte) under godkendelsesfasen, kappes meddelelsesstørrelsen ned til 0 byte, hvilket gør at den ikke accepteres til godkendelse. Dette er der for at forhindre at ikke godkendte klienter sender f.eks. en 100 Mbyte meddelelse, som ville blive modtaget og kunne forårsage at serveren løber tør for hukommelse. + + + +Hvis klienten sender en fejlagtig ClientHello meddelelse (en hvor afkodningen mislykkes), så lukkes der for forbindelsen. + + + +Hvis klienten ikke sender noget i det hele taget, skal en tidsgrænse overskrides (endnu ikke implementeret). + + + + + + +&MCOP; protokolspecifikation + + +Indledning + +Den har begrebsmæssige ligheder med CORBA, men er beregnet til at kunne udvides på alle måder som kræves for multimediaoperationer i realtid. + +Den sørger for en multimediaobjektmodel, som både kan bruges til kommunikation mellem komponenter i et adresserum (en proces), og mellem komponenter som findes i forskellige tråde, processer eller på forskellige værtsmaskiner. + +Totalt set, vil den blive konstrueret til ekstremt høj ydelse (så alt skal optimeres for at være voldsomt hurtigt), passende for meget kommunikationsintensive multimedieprogrammer. At for eksempel sende video rundt er en af tilpasningerne for &MCOP;, hvor de fleste CORBA-implementationer ville gå i knæ. + +Grænsefladedefinitionerne kan håndtere følgende selv: + + + +Kontinuerlige datastrømme (såsom lyddata). + + + +Begivenhedsstrømme af data (såsom &MIDI;-begivenheder). + + + +Rigtig referenceregning. + + + +og de vigtigste CORBA-kneb, såsom + + + +Synkrone metodekald. + + + +Asynkrone metodekald. + + + +Konstruere brugerdefinerede datatyper. + + + +Multipel arv. + + + +Sende objektreferencer. + + + + + + +&MCOP;'s meddelelseskodning + +Konstruktionsmål/idéer: + + + + +Kodning skal være enkelt at implementere. + + + +Afkodning kræver at modtageren véd hvilken type som skal afkodes. + + + +Modtageren forventes at bruge al information, så mulighed for at hoppe over data findes kun i protokollen i det omfang at: + + + +Hvis man ved at en blok af data bliver modtaget, behøver man ikke kigge på hver del efter en slutmarkør. + + + +Hvis man ved at en streng vil blive modtaget, behøver man ikke læse til en null-byte for at finde ud af dens længde ved afkodning, men, + + + +Hvis man véd at en sekvens af strenge bliver modtaget skal man kigge på længden for hver af dem for at finde ud af slutningen af sekvensen, eftersom strenge har variabel længde. Men hvis strengene bruges til noget nyttigt, skal det gøres i alle tilfælde, så dette er ikke noget tab. + + + + + + +Så lidt ekstra omkostning som muligt. + + + + + +Kodningen af de forskellige typer vises i tabellen nedenfor: + + + + + +Type +Kodningsproces +Resultat + + + + + +void +typen void kodes ved at udelade den, så ingenting skrives til strømmen for den. + + + + +long +kodes som fire byte, med den mest signifikante først, så tallet 10001025 (som er 0x989a81) vil blive kodet som: +0x00 0x98 0x9a 0x81 + + + +nummereringstyper +kodes som long + + + + +byte +kodes som en enkelt byte, så 0x42 vil blive kodet som: +0x42 + + + +streng +kodes som en long, som indeholder længden på den efterfølgende streng, og derefter sekvensen af tegn. Strenge skal slutte med en null-byte (som indgår i længdeberegningen). + +inklusive den sidste 0 byte i længderegningen! + +hello ville blive kodet som: +0x00 0x00 0x00 0x06 0x68 0x65 0x6c 0x6c 0x6f 0x00 + + + +boolean +kodes som en byte, som indeholder 0 hvis false eller 1 hvis true, så at den booleske værdi true kodes som: +0x01 + + + +float +kodes med fire-byte IEEE754 repræsentationen, detaljeret dokumentation om hvordan IEEE fungerer findes her: http://twister.ou.edu/workshop.docs/ common-tools/ numerical_comp_guide/ ncg_math.doc.html og her: http://java.sun.com/docs/books/ vmspec/ 2nd-edition/ html/ Overview.doc.html. Så værdien 2,15 ville blive kodet som: +0x9a 0x99 0x09 0x40 + + + +struct +En struktur kodes ved at kode dens indhold. Der kræves ingen yderligere præfiks eller suffiks, så strukturen +struct test { + string name; // som er "hello" + long value; // som er 10001025 (0x989a81) +}; + +ville blive kodet som: + +0x00 0x00 0x00 0x06 0x68 0x65 0x6c 0x6c +0x6f 0x00 0x00 0x98 0x9a 0x81 + + + + +sekvens +En sekvens kodes ved at lave en liste over antallet af elementer som følger, og derefter kode elementerne en efter en. +Så en sekvens med tre "long a", med a[0] = 0x12345678, a[1] = 0x01 og a[2] = 0x42 ville blive kodet som + +0x00 0x00 0x00 0x03 0x12 0x34 0x56 0x78 +0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x42 + + + + + + + +Hvis du har brug for at henvise til en type, angives alle primitive typer med navnene som findes ovenfor. Strukturer og nummereringstyper får deres egne navne (som Header). Sekvenser benævnes som *normal type, så en sekvens af long er *long og en sekvens af Header struct'er er *Header. + + + + +Meddelelser + +Formatet på &MCOP;'s meddelelseshovede defineres af denne struktur: + +struct Header { + long magic; // værdien 0x4d434f50, som kodes som MCOP + long messageLength; + long messageType; +}; + + +De mulige meddelelsetyper er for øjeblikket + +mcopServerHello = 1 + mcopClientHello = 2 + mcopAuthAccept = 3 + mcopInvocation = 4 + mcopReturn = 5 + mcopOnewayInvocation = 6 + + +Lidt information om &MCOP;'s meddelelseshåndtering: + + + + +Hver meddelelse begynder med et hoved. + + + +Visse meddelelsestyper skal ignoreres af serveren, indtil godkendelsen er færdig. + + + +Efter at hovedet er modtaget, kan protokolhåndteringen (forbindelsen) tage imod meddelelsen i sin helhed, uden at kigge på indholdet. + + + +Meddelelseslængden i hovedet er naturligvis sommetider redundant, hvilket gør at metoden ikke altid er minimal med hensyn til antal byte. + +Dette giver dog en enkel (og hurtig) implementation for behandling af meddelelser som ikke blokerer. Ved hjælp af hovedet kan meddelelser modtages af protokolhåndteringsklasser i baggrunden (uden blokering), hvis der er mange forbindelser til serveren kan alle behandles parallelt. Man behøver ikke kigge på meddelelsens indhold for at tage imod en meddelelse (og afgøre når man er klar), kun på hovedet, så koden for dette er ganske enkel. + +Når en meddelelse er på plads, kan den afkodes og behandles i et enkelt skridt, uden at bryde sig om tilfælde hvor al data måske ikke er modtaget (eftersom meddelelseslængden garanterer at alt er på plads). + + + + +Kald + +For at kalde en fjernmetode, skal man sende følgende struktur i en &MCOP;-meddelelse med messageType = 1 (mcopInvocation): + +struct Invocation { + long objectID; + long methodID; + long requestID; +}; + + +derefter sendes parametrene som en struktur, f.eks. hvis man kalder metoden "string concat(string s1, string s2)", sendes strukturen + +struct InvocationBody { + string s1; + string s2; +}; + + + +hvis metoden deklareredes som envejs, hvilket betyder asynkront uden returværdi, er det alt. Ellers får man en meddelelse som svar med messageType = 2 (mcopReturn). + +struct ReturnCode { + long requestID; + <resulttype> result; +}; + + + +hvor <resulttype> er typen for resultatet. Eftersom void-typer udelades ved kodning, kan man også kun angive requestID hvis man returnerer fra en void-metode. + +Så vor "string concat(string s1, string s2)" ville give en returkode som + +struct ReturnCode { + long requestID; + string result; +}; + + + + + +Inspektér grænseflader + +For at lave kald, skal man kende til metoderne som et objekt understøtter. For at gøre dette, er methodID 0, 1, 2 og 3 hårdkodede for visse funktioner. Det vil sige + +long _lookupMethod(MethodDef methodDef); // metode-id altid 0 +string _interfaceName(); // metod-id altid 1 +InterfaceDef _queryInterface(string name); // metodie-id altid 2 +TypeDef _queryType(string name); // metodie-id altid 3 + + +for at læse dette, behøver du naturligvis også + +struct MethodDef { + string methodName; + string type; + long flags; // nu sat til 0 (kræves for strømme) + sequence<ParamDef> signature; +}; + +struct ParamDef { + string name; + long typeCode; +}; + + +parameterfeltet indeholder typekomponenter som angiver typerne for parametrene. Typen for returkoden angives i typefeltet for MethodDef. + +Hvis man skal være streng, er det kun metoderne _lookupMethod() og _interfaceName() som varierer fra objekt til objekt, mens _queryInterface() og _queryType() altid er ens. + +Hvad er en sådan her methodID? Hvis man laver et &MCOP;-kald, forventes man at sende nummeret for metoden som kaldes. Årsagen til dette er at numre kan behandles meget hurtigere end strenge når en &MCOP;-forespørgsel køres. + +Så hvordan skaffer man sig et sådan nummer? Hvis man kender til signaturen for metoden, dvs. en MethodDef som beskriver den (som indeholder navn, type, parameternavn, parametertyper og lignende), så kan man sende den til _lookupMethod for objektet hvor man vil kalde en metode. Eftersom _lookupMethod er hårdkodet til methodID 0, skulle det ikke være nogen problem at gøre dette. + +Hvis man på den anden side ikke kender til metodens signatur, kan man finde hvilke metoder der understøttes ved at bruge _interfaceName, _queryInterface og _queryType. + + + +Typedefinitioner + +Brugerdefinerede datatyper beskrives med strukturen TypeDef: + +struct TypeComponent { + string type; + string name; +}; + +struct TypeDef { + string name; + + sequence<TypeComponent> contents; +}; + + + + + + +Hvorfor &arts; ikke bruger &DCOP; + +Eftersom &kde; droppede CORBA fuldstændigt, og i stedet bruger &DCOP; overalt, opstår naturligvis spørgsmålet hvorfor ikke &arts; også gør det. Trods alt findes &DCOP;-understøttelse i KApplication, er godt vedligeholdt, forventes at integreres udmærket med libICE, og alt muligt andet. + +Eftersom der (muligvis) vil være mange som spørger om det virkelig er nødvendigt at have &MCOP; foruden &DCOP;, så er svaret her. Misforstå mig ikke, jeg forsøger ikke at sige at &DCOP; er dårlig. Jeg forsøger kun at sige at &DCOP; ikke er den rette løsning for &arts; (mens det er en god løsning for andre ting). + +Først skal man forstå nøjagtigt hvad &DCOP; blev skrevet for. Oprettet på to dage under mødet &kde;-TWO, var det hensigten at være så enkel som muligt, en virkelig letvægts kommunikationsprotokol. I særdeleshed udelod implementationen alt som kunne indebære kompleksitet, for eksempel et fuldstændigt begreb om hvordan datatyper skal kodes. + +Selvom &DCOP; ikke bryder sig om visse ting (som hvordan man sender en streng på en netværkstransparent måde), skal dette gøres. Så alt som &DCOP; ikke gør overlades til &Qt; i &kde;-programmerne som bruger &DCOP; i dag. Dette er i hovedsagen typehåndtering (som bruger &Qt;'s serialiseringsoperator). + +Så &DCOP; er en minimal protokol som gør det helt muligt for &kde;-programmer at sende enkle meddelelser såsom åbn et vindue som peger på http://www.kde.org eller dine indstillinger er ændrede. Inde i &arts; fokuseres imidlertid på andre ting. + +Idéen er at små plugin i &arts; skal kommunikere med sådanne datastrukturer som midi-begivenheder og sangpositionspegere og flydegrafer. + +Dette er komplekse datatyper, som skal sendes mellem forskellige objekter, og håndteres som strømme, eller parametre. &MCOP; sørger for et typebegreb til at definere komplekse datatyper ud fra enklere (ligesom struct'er og felter i C++). &DCOP; bryder sig ikke om typer i det hele taget, så dette problem skulle overlades til programmøren, såsom at skrive C++ klasser for typerne, og sikre sig at de kan serialisere på en rigtig måde (for eksempel understøttelse for &Qt;'s serialiseringsoperator). + +Men på den måde ville de ikke være tilgængelige for noget andet end direkte kodning i C++. I særdeleshed ville man ikke kunne oprette et scriptsprog som ville kunne kende til alle typer som et plugin kan gøre tilgængelige, eftersom de ikke ville være selvbeskrivende. + +Samme argument gælder også grænseflader i stor udstrækning. &DCOP;-objekter gør ikke deres forhold, arvhierarkier, osv. tilgængelige. Hvis man ville skrive en objektbladrer som ville vise hvilke egenskaber har dette objekt, ville det mislykkes. + + +Selvom Matthias fortalte mig at man har en speciel funktion functions for hvert objekt som informerer om hvilke metoder som objektet understøtter, udelader dette ting såsom egenskaber, strømme og arvrelationer. + +Dette gør at programmer som &arts-builder; ikke ville fungere overhovedet. Men husk, det var ikke meningen at &DCOP; skulle være en objektmodel (eftersom &Qt; allerede har en med moc og lignende), heller ikke være noget som CORBA, men sørge for kommunikation mellem programmer. + +Årsagen til at &MCOP; overhovedet findes er at den skal virke godt med strømme mellem objekter. &arts; bruger mange små plugin, som forbindes med strømme. CORBA-versionen af &arts; var tvunget til at introducere en besværlig opdeling mellem SynthModule-objekt, som var de interne arbejdsmoduler som oprettede strømme, og CORBA-grænseflade, som var noget eksternt. + +Meget kode bekymrede sig om at opnå at vekselvirkningen mellem SynthModule-objekt og CORBA-grænsefladen så naturlig ud, men den gjorde det aldrig, eftersom CORBA ikke kendte til noget om strømme overhovedet. &MCOP; gør det. Kig på koden (noget i stil med simplesoundserver_impl.cc). Adskilligt bedre! Strømme kan deklareres i modulernes grænseflade, og implementeres på en måde som ser naturlig ud. + +Man kan ikke benægte det. En af grunderne til at jeg skrev &MCOP; var hurtighed. Her er et argument for at &MCOP; definitivt vil være hurtigere end &DCOP; (selv uden at angive tal). + + +Et kald i &MCOP; vil have et hoved med seks long. Det vil sige: + + +magisk værdi MCOP +meddelelsetype (kald) +størrelse på forespørgsler i byte +ID for forespørgsler +ID for målobjektet +ID for målmetoden + + +Efter dette følger parametrene. Bemærk at afkode dette går ekstremt hurtigt. Man kan bruge tabelopslag for at finde afkodningsfunktionen for objektet og metoden, hvilket betyder at kompleksiteten er O(1) [det tager lige lang tid uafhængig af hvor mange objekter som findes, og hvor mange funktioner som findes]. + +Hvis dette sammenlignes med &DCOP;, ser du at der er i det mindste + + +en streng for målobjektet - noget i stil med myCalculator +en streng som ligner addNumber(int,int) for at angive metoden +yderligere protokolinformation tilføjet af libICE, og andre DCOP-specifikke ting som jeg ikke kender til + + +Disse er meget sværere at afkode, eftersom man skal tolke strengen, lede efter funktionen, osv. + +Med &DCOP; sendes alle kald gennem en server (DCOPServer). Det betyder at håndteringen af et synkront kald ser sådan her ud: + + + +Klientprocessen sender kald. + + + +DCOPserver (manden i midten) tager imod kaldet og ser efter hvor det skal hen, og sender det til den rigtige server. + + + +Serverprocessen tager imod kaldet, udfører forespørgsler og sender resultatet. + + + +DCOPserver (manden i midten) tager imod resultatet og ... sender det til klienten. + + + +Klienten afkoder svaret. + + + +I &MCOP; ser samme kald ud sådan her ud: + + + +Klientprocessen sender kald. + + + +Serverprocessen tager imod kaldet, udfører forespørgsler og sender resultatet. + + + +Klienten afkoder svaret. + + + +Antag at begge er rigtigt implementerede. &MCOP;'s ikke-hierarkiske strategi bør være hurtigere med en faktor to, end &DCOP;'s mand i midten-strategi. Bemærk dog at der naturligvis var grunde til at vælge &DCOP;-strategien, som er at hvis du har 20 programmer som kører, og hvert program taler med hvert andet program, så behøver man 20 forbindelser med &DCOP;, og 200 med &MCOP;. I tilfældet med multimedie er det dog ikke meningen at dette skal være et almindeligt scenario. + +Jeg forsøgte at sammenligne &MCOP; og &DCOP;, med at gøre et kald som lægger to tal sammen. Jeg ændrede testdcop for at opnå dette. Testen var dog måske ikke præcis på &DCOP;-siden. Jeg kaldte metoden i samme proces som gjorde kaldet til &DCOP;, og jeg vidste ikke hvordan man blev af med en fejlsøgningsmeddelelse, så jeg brugte omdirigering af udskriften. + +Testen brugte kun et objekt og en funktion, så resultaterne for &DCOP; forventes at blive mindre med flere objekt og funktioner, mens resultaterne for &MCOP; bør forblive de samme. Desuden var dcopserver-processen ikke forbundet til andre programmer, og det er måske sådan at hvis mange programmer er forbundne så mindskes overføringsydelsen. + +Resultatet jeg fik var at mens &DCOP; fik lidt mere end 2000 kald pr sekund, fik &MCOP; noget mere end 8000 kald pr sekund. Det betyder en faktor 4. Jeg véd at &MCOP; ikke er afstemt for den maksimalt mulige hastighed endnu. (Som sammenligning: CORBA, med mico-implementationen, klarer noget mellem 1000 og 1500 kald pr sekund). + +Hvis du vil have rigtigere data, så overvej at skrive et lille måleprogram for &DCOP; og send det til mig. + +CORBA havde den behagelige funktion at man kunne bruge objekter som man havde implementeret, som separat serverproces, eller som bibliotek. Man kunne bruge samme kode for at gøre det, og CORBA bestemte transparent hvad der skulle gøres. Med &DCOP;, er det ikke rigtigt meningen, og så vidt jeg ved ikke egentlig muligt. + +&MCOP; på den anden siden skulle understøtte dette fra begyndelsen. Så man kan køre en effekt inde i &artsd;. Men for en bølgeformseditor kan man også vælge at køre samme effekt inde i processen. + +Mens &DCOP; i hovedsagen er en måde at kommunikere mellem programmer, er &MCOP; også en måde at kommunikere inde i programmerne. Især for multimediestrømme er dette vigtigt (eftersom man kan køre flere &MCOP;-objekter parallelt, for at løse en multimediaopgave i et program). + +Selvom &MCOP; ikke gør det for øjeblikket, er mulighederne åbne for at implementere servicekvalitetsfunktioner. Noget i stil med at den &MIDI;-begivenhed er virkelig rigtigt vigtig, sammenlignet med dette kald. Eller noget som skal være der til tiden. + +På den anden siden kan strømoverførsler integreres i &MCOP;-protokollen på en behagelig måde, og kombineres med QoS-ting. Under forudsætning af at protokollen kan ændres, bør &MCOP; strømoverførsler ikke blive virkelig langsommere end en konventionel TCP-strøm, men de vil være enklere og mere konsekvente at bruge. + +Der er ingen grund til at basere mellemprogrammer for multimedie på &Qt;. Ved at bestemme sig for det, og bruge alle de behagelige &Qt;-strømme og andre ting, kan det let føre til at mellemprogrammer kun bliver en sag for &Qt;-(eller i virkeligheden kun &kde;). Jeg mener at hvis jeg nogensinde ser at GNOME også bruger &DCOP;, eller noget lignende, er det naturligvis beviset for at jeg har taget fejl. + +Selvom jeg ved at &DCOP; i grunden ikke kender til de datatyper som den sender, så man ville kunne bruge &DCOP; uden &Qt;, se hvordan den bruges i daglig &kde;-brug: man sender typer rundt såsom QString, QRect, QPixmap, QCString, .... Disse bruger &Qt;'s-serialisering. Så hvis nogen vælger at understøtte &DCOP; i et GNOME-program, skal han enten angive at han bruger QString,... typer (selvom han ikke gør det), og emulere måden som &Qt; bruger til strømme, eller også skulle han sende andre streng-, pixmap- og rect-typer rundt, og på den måde alligevel ikke kunne virke sammen med &kde;-programmer. + +Nå, under alle omstændigheder var det altid meningen at &arts; var beregnet til at virke med eller uden &kde;, med eller uden &Qt;, med eller uden X11, og måske til og med med eller uden &Linux; (og jeg har ikke engang indvendinger mod personer som tilretter den til operativsystemer som ikke er frie). + +Min indstilling er at komponenter som ikke indgår i en grafisk grænseflade skal skrives uafhængig af denne, for at muliggøre at de deles mellem et større antal udviklere (og brugere). + +Jeg indser at brug af to IPC-protokoller kan være ubekvemt. Desuden er begge to ikke standardiserede. Af de grunde som blev angivet ovenfor er det ikke muligt at skifte til &DCOP;. Hvis der er betydeligt interesse i at finde en måde at forene de to, så kan vi forsøge. Vi ville til og med kunne forsøge at få &MCOP; til at tale IIOP, når skulle vi have en CORBA ORB ;). + +Jeg talte en del med Matthias Ettrich om fremtiden med de to protokoller, og vi fandt mange måde som tingene kunne gå videre. &MCOP; ville for eksempel kunne håndtere meddelelsekommunikationen i &DCOP;, og på denne måde få protokollerne nærmere til hinanden + +Nogle mulige løsninger ville være: + + + +Skriv en portal mellem &MCOP; og &DCOP; (hvilket bør være muligt, og ville muliggøre samkørsel). Bemærk at der findes en eksperimentel prototype, hvis du skulle have lyst til at arbejde med det. + + + +Integrér alt det &DCOP;-brugere forventer sig i &MCOP;, og forsøg kun at bruge &MCOP; - man skulle også kunne tilføje en mand i midten mulighed i &MCOP;) + + + +Basér &DCOP; på &MCOP; i stedet for libICE, og begynd langsomt at integrere tingene tættere sammen. + + + +Den værste mulighed er måske ikke at bruge hver protokol til alt det som den var beregnet til (der er nogle store forskelle i målene med deres konstruktion), og ikke forsøge slå dem sammen til et. + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/midi.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/midi.docbook new file mode 100644 index 00000000000..77a7fe72308 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/midi.docbook @@ -0,0 +1,524 @@ + + + +&MIDI; + + +Oversigt + + + +&MIDI;-understøttelsen i &arts; kan gøre et antal forskellige ting. For det første, tillader den kommunikation mellem forskellige dele af programmellet som producerer eller konsumerer &MIDI;-begivenheder. Hvis du for eksempel har en sequencer og en samplingsenhed som begge bruger &arts;, kan &arts; sende &MIDI;-begivenheder fra sequenceren til samplingsenheden. + +På den anden side kan &arts; også hjælpe programmer til at vekselvirke med maskinellet. Hvis en programmeldel (for eksempel samplingen) virker sammen med &arts;, kan den desuden tage imod &MIDI;-begivenheder fra et eksternt &MIDI;-keyboard. + +Til slut, så udgør &arts; en udmærket modulær synthesizer. Den er konstrueret til at gøre netop dette. Man kan altså bygge instrumenter af små moduler med aRts-byggeren, og derefter bruge instrumenterne til at komponere eller spille musik. Syntese betyder ikke nødvendigtvis kun ren syntese, men der er moduler som kan bruges til at afspille samplinger. På denne måde kan &arts; være både en samplingsenhed eller synthesizer, og eftersom den er fuldstændig modulær, er den meget let at udvide, meget let at eksperimentere med, kraftfuld og fleksibel. + + + +&MIDI;-håndteringen + + +Den centrale komponent i &arts; som holder rede på hvilke programmer der er tilsluttet og hvordan midi-begivenheder skal sendes mellem dem er midi-håndteringen. For at se eller påvirke hvad den gør, startes artscontrol. Derefter vælges VisVis midihåndtering i menuen. + +Til venstre ser man Midi-inddata. Der er alle objekter som producerer &MIDI;-begivenheder på en liste, såsom en ekstern &MIDI;-port som sender data fra et tilsluttet &MIDI;-keyboard, en sequencer som spiller en sang og så videre. Til højre ser man Midi-udskrift. Der er alting som konsumerer &MIDI;-begivenheder på en liste, såsom en simuleret samplingsenhed (programmel), eller den eksterne &MIDI;-port som en hardware-samplingsenhed der er tilsluttet udenfor din maskine. Nye programmer, såsom en sequencer eller lignende, registrerer sig selv, så at listen ændres med tiden. + +Du kan tilslutte indgange og udgange hvis du markerer en indgang i listen til venstre og en udgang til højre, og vælger Forbind med knappen nedenfor. Afbryd forbindelse virker på samme måde. Du ser hvad der er tilsluttet som små linjer mellem indgange og udgange, midt i vinduet. Bemærk at du kan tilslutte en indgang til mere end en udgang (og omvendt). + +Programmer (såsom sequenceren Brahms) tilføjes af sig selv når de startes og fjernes fra listen når de afsluttes. Men du kan også tilføje nye enheder med menuen Tilføj. + + + +System midi port (OSS) + +Dette laver et nyt &arts;-objekt som kommunikerer med en ekstern midi-port. + +Eftersom eksterne midi-porte både kan sende og modtage data, så tilføjes både en indgang og udgang med dette valg. Med &Linux;, skal du enten have en OSS-driver (eller OSS/Free, som følger med &Linux;-kernen) eller en ALSA-driver installeret for dit lydkort, for at dette skal virke. Du bliver spurgt om enhedens navn. Dette er oftest /dev/midi eller /dev/midi00. + +Hvis du har mere end en &MIDI;-enhed eller en &MIDI;-tilbagekoblingsenhed installeret, kan der dog være flere valgmuligheder. For at vise information om midi-porte, startes &kcontrolcenter;, og Information Lyd vælges. + + + + +aRts syntese midi-uddata + +Dette tilføjer en ny &MIDI;-udgang med et &arts; synteseinstrument. Hvis du vælger menupunktet, kommer en dialog frem, som lader dig angive et instrument. Du kan oprette nye instrumenter med artsbuilder. Alle .arts-filer med et navn som begynder med instrument_ vises her. + + + + + + + +Brug af &arts; & Brahms + +I virkeligheden er det rigtig let at komme i gang. Du behøver en version af Brahms som virker med &kde; 2.1, som findes i kmusic CVS-modulet. Der er også information om hvordan man får fat på &brahms; på aRts' hjemmeside i afsnittet om download. + +Når du har startet programmet, ses det i &MIDI;-håndteringen. Hvis du vil bruge syntese, så tilføj helt enkelt et &MIDI;-instrument med TilføjaRts syntese midi uddata. + +Vælg et instrument (for eksempel organ2). Forbind dem ved brug af knappen Forbind. Derefter kan du begynde at komponere i &brahms;, og resultatet syntetiseres med &arts;. + +Det er oftest en god ide at have &artscontrol;-vinduet åbent, og se at lydstyrken ikke er for høj (lydkvaliteten bliver dårligere når bjælkerne når den øvre grænse). Nu kan du begynde at skrive en ny &arts; demo, og når du er klar kan du få den publiceret på aRts-project.org ;-). + + + + + + +midisend + +midisend er et lille program som lader dig sende &MIDI;-begivenheder fra skallen. Det registreres som en klient ligesom alle andre programmer. Den enkleste måde at bruge det er at skrive % midisend /dev/midi00 hvilket opnår cirka det samme som at tilføje en &MIDI;-port til &artscontrol;. (Ikke helt, fordi midisend kun sender begivenheder). Forskellen er at det er for eksempel er let at starte midisend på forskellige computere (og på den måde bruge netværkstransparens). + +Det er også muligt at lade midisend sende data fra stdin, hvilket du kan bruge til at sende data fra programmer som ikke understøtter &arts;, sådan her: % program_som_sender_MIDI_begivenheder_til_standarduddata | midisend + + + + + + +Opret instrumenter + +Den måde &arts; udfører midi-syntese er følgende: Du har strukturer som har et antal indgange, hvor de henter frekvensen, hastigheden (lydstyrke) og en parameter som angiver om tasten stadigvæk er trykket ned. Strukturen skal nu syntetisere nøjagtigt den tone med den lydstyrke, og reagere på parameteren pressed (hvor pressed = 1 betyder at brugeren holder tasten nede og pressed = 0 betyder at brugeren har sluppet tasten). + +Når &MIDI;-begivenheder ankommer, laver &arts; nye strukturer for tonerne efter behov, angiver parametrene, og rydder dem væk når de er færdige. + +For at oprette og bruge en sådan struktur, skal du gøre følgende: + + + +For at komme i gang er den behageligste måde at åbne template_Instrument.arts i &arts-builder;. + +Dette kan opnås ved at bruge FilÅbn eksempel... og vælge template_Instrument i fildialogen. Dette laver en tom struktur med de nødvendige parametre, som du kun behøver udfylde. + + + +For at håndtere parameteren "pressed", er det praktisk at bruge Synth_ENVELOPE_ADSR, eller hvis en wav-fil med tromme spilles, så spil den blot alligevel og ignorér parameteren. + + + +Strukturen skal indikere hvornår den ikke behøves længere med uddata done. Hvis done er 1, antager &arts; at strukturen kan slettes. Praktisk nok så sørger ADSR-envelopen for en parameter som angiver når den er færdig, så du behøver kun forbinde den til done-udgangen for strukturen. + + + +Du bør omdøbe din struktur til et navn som begynder med instrument_, såsom instrument_piano.arts - du bør gemme filen under samme navn i mappen $HOME/arts/structures (hvor artsbuilder normalt gemmer filer). + + + +Til sidst, når du har gemt den, kan du bruge den med &artscontrol; i &MIDI;-håndteringen. + + + +Åh, og din struktur skal naturligvis afspille lyddata som den laver via venstre og højre udgang for strukturen, som siden afspilles med lydhåndteringen (du kan se dette i &artscontrol;), så du til slut kan høre lyden (eller efterbehandle den med lydeffekter). + + + +En god måde at lære sig hvordan man laver instrumenter er at åbne et eksisterende instrument med FilÅbn eksempel og se hvordan det virker ;) + + + +Instrumentkort + +Instrumentkort er instrumenter som opfører sig forskelligt afhængig af tonehøjden, programmet, kanalen eller hastigheden. Man kan for eksempel oprette et piano med fem oktaver, og bruge en sampling for hver oktav (med tonehøjden forskudt tilsvarende). Dette lyder meget bedre end kun at bruge en sampling. + +Man kan også bygge et trommekort, som spiller en særlig trommesampling for hver tast. + +Til sidst er det meget nyttigt hvis man kombinerer helt forskellige lyde i et instrumentkort for forskellige programmer. På denne måde kan man bruge sin sequencer, eksterne keyboard eller en anden &MIDI;-kilde til at skifte mellem lyde uden at behøve at manipulere &arts; under arbejdets gang. + +Et godt eksempel på dette er arts_all, som helt enkelt kombinerer alle instrumenter som levereres med &arts; i et kort. På denne måde behøver man kun angive at dette instrument skal bruges en gang i &artscontrol;, og derefter kan man komponere en hel sang i en sequencer uden overhovedet at bryde sig om &arts;. Brug for en anden lyd? Ændr helt enkelt programmet i sequenceren, og &arts; sørger for en ny lyd. + +Oprettelse af sådanne kort er ganske ligetil. Man behøver kun at oprette en tekstfil, og skrive regler som ser sådan her ud: + +ON [ betingelser ...] DO structure=en_struktur.arts + + +Betingelserne kan være en eller flere af følgende: + + + + + + + +Tonehøjden som spilles. Man bruger dette hvis man vil opdele instrumentet afhængig af tonhøjde. I vort oprindelige eksempel, skulle et piano som bruger forskellige samplinger for forskellige oktaver bruge dette som betingelser. Man kan angive en enkel tonehøjde, såsom =62 eller et interval af tonehøjder, såsom =60-72. De mulige tonehøjder går mellem 0 og 127. + + + + + + +Programmet som er aktivt på kanalen som tonen afspilles i. Oftest lader sequenceren dig vælge instrument via programindstillingen. Enkle programmer eller intervaller er tilladte, dvs. =3 eller =3-6. Mulige programmer går mellem 0 og 127. + + + + + + +Kanalen som tonen sendes på. Enkle kanaler eller intervaller er tilladte, dvs. =0 eller =0-8. Mulige kanaler går mellem 0 og 15. + + + + + + +Hastigheden (lydstyrken) som tonen har. Enkle hastigheder (hvem skulle ville bruge det?) eller intervaller er tilladte, dvs. =127 eller =64-127. Mulige hastigheder går mellem 0 og 127. + + + + +Et fuldstændigt eksempel for et kort kan være (dette kommer fra den nuværende 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 + + +Som du ser, vælges strukturen afhængig af programmet. For program 11, ses et trommekort (med to indgange), som vil spille en deepdrum med C-5 (tonehøjde = 60), og en chirpdrum med C#5 (tonehøjde = 61). + +For at kortfiler automatisk skal ses i &artscontrol; som et valg for instrumenterne, skal de hedde instrument_noget.arts-map og enten være i din hjemmemappe i $HOME/arts/structures, eller i &kde;-mappen i $KDEDIR/share/apps/artsbuilder/examples. Strukturer som bruges af kortene kan enten angives med en absolut søgesti, eller relativt til mappen som kortfilen findes i. + +Udvidelse af arts_all map eller til og med at lave et fuldstændigt generelt &MIDI;-kort for &arts; er en god idé for at gøre &arts; lettere at bruge direkte som det er. Overvej gerne at bidrage med interessante instrumenter som du laver, så de kan inkluderes i fremtidige udgaver af &arts;. + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/midiintro.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/midiintro.docbook new file mode 100644 index 00000000000..eb3caf8ed84 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/midiintro.docbook @@ -0,0 +1,16 @@ + + + + +Introduktion til <acronym +>MIDI</acronym +> + +Ikke skrevet endnu + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/modules.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/modules.docbook new file mode 100644 index 00000000000..a49f27641ac --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/modules.docbook @@ -0,0 +1,1333 @@ + + + +&arts;-moduler + + +Indledning + +Dette kapitel beskriver alle standardmodulerne i &arts;. En af de mest kraftfulde funktioner i &arts; er at moduler kan sammenkobles til strukturer som implementerer nye funktioner såsom lydeffekter og instrumenter. + +Moduler opdeles i to kategorier. Syntesemoduler bruges til at implementere rørlægningen som manipulerer multimedie-datastrømme for at lave nye effekter, instrumenter, miksere og programmer. Visuelle moduler tillader dig at oprette en grafisk grænseflade til at styre lydstrukturerne som opbygges med syntesemodulerne. + + + + +Reference til syntesemoduler + + + +Aritmetik + miksning + + + + +Synth_ADD + + + + + +Synth_ADD + + +Denne adderer to signaler. + + + + +Synth_MUL + + + + + +Synth_MUL + + +Denne multiplicerer signalet med en faktor. Du kan bruge dette til at skalere signaler ned (0 < faktor < 1) eller op (faktor > 1) eller invertere signaler (faktor < 0). Bemærk at faktoren kan være et signal og ikke behøver at være konstant (f.eks. envelopper eller rigtige signaler). + + + + +Synth_DIV + + + + + +Synth_DIV + + +Dette dividerer et signal med en faktor. Du kan bruge dette til at dividere et signal med et andet. Eller sætte indværdi11 til 1 så du derved får den reciprokke værdi af indværdi2 som udværdi. Pas på med at indværdi2 aldrig nærmer sig 0 ellers vil du få problemer med divisioner med nul. + + + + +Synth_MULTI_ADD + + + + + +Synth_MULTI_ADD + + +Denne adderer et vilkårligt antal signaler. Hvis du har brug for at opsummere bølgeformer som slaves af fire forskellige oscillatorer, kan du for eksempel tilslutte alle deres udgange til et Synth_MULTI_ADD-modul. Dette er effektivere end at bruge tre Synth_ADD-moduler. + + + + +Synth_XFADE + + + + + +Synth_XFADE + + +Denne overtoner to signaler. Hvis procentindgangen er -1, høres kun signalet til venstre, hvis den er 1, høres kun det til højre. Hvis den er 0, høres begge signalerne med samme lydstyrke. + +Denne gør at du kan sørge for at signalerne bliver indenfor et veldefineret område. Hvis du har to signaler som er mellem -1 og 1 inden overtoningen, forbliver de i samme område bagefter. + + + +Synth_AUTOPANNER + + +Det modsatte af overtoning. Denne tager et monosignal og deler det op til et stereosignal. Den bruges til automatisk at panorere inddata-signalet mellem venstre og højre udgang. Dette gør miksningen mere levende. En standardanvendelse kunne være en guitar- eller sololyd. + +Forbind en LFO, for eksempel en sinus eller savtakbølge til inlfo, og vælg en frekvens mellem 0,1 og 5 Hz for at få en traditionel effekt eller endnu mere for specialeffekter (FX). + + + + + + +Busser + + +Synth_BUS_UPLINK + + + + + +Synth_BUS_UPLINK + + +Et oplink til en bus. Angiv signaler til venstre og højre, og navnet på bussen som data skal sendes til på bus-porten. Det kombinerede signal fra alle oplink med dette navn havner på hvert nedlink på denne bus. + + + +Synth_BUS_DOWNLINK + + + + + +Synth_BUS_DOWNLINK + + +Henter (summen af) alle data som sendes på en vis bus (med navnet du angiver på bus-porten). + + + + + + + +Forsinkelser + + + + +Synth_DELAY + + + + + +Denne forsinker inddata-signalet en vis tid. Tidsangivelsen skal være mellem 0 og maxdelay for en forsinkelse mellem 0 og maxdelay sekunder. + +Denne slags forsinkelse kan ikke bruges i tilbagemeldingsstrukturer. Dette skyldes at det er en varierbar forsinkelse. Det går an at ændre længden mens den kører, og endog sætte den til nul. Men eftersom de egne uddata behøves for at beregne næste sampling i en tilbagemeldingsstruktur, kan en forsinkelse med en værdi som kan gå ned til nul under syntese føre til en låsningssituation. + +Brug CDELAY'er i sådanne situationer, eller kombinér en kort konstant forsinkelse (på 0,001 sekunder) med en variabel forsinkelse. + +Man kan også kombinere en CDELAY og en DELAY for at opnå en forsinkelse med variabel længde i en tilbagekobling. Sørg blot for at du har med en CDELAY at gøre. + + + + +Synth_CDELAY + + + + +Synth_CDELAY + + +Denne forlænger inddatasignalet en vis tid. Tidsangivelsen skal være større end 0 for en forsinkelse af på sekunder eller mere. Forsinkelsen er konstant under beregningen, hvilket betyder at den ikke kan ændres. + +Dette sparer beregningstid eftersom ingen interpolation gøres, og er nyttigt til rekursive strukturer. Se beskrivelsen ovenfor (Synth_DELAY). + + + + + + +Enveloper + + + + +Synth_ENVELOPE_ADSR + + + + +Synth_ENVELOPE_ADSR + + +Dette er en klassisk ADSR-envelop, som betyder at du angiver: + + + +active + +Hvis brugeren holder tasten nede lige nu. + + + + +invalue + +Inddatasignalet. + + + + +attack + +Tiden som skal gå fra brugerens tryk på tasten og til signalet når sin maksimale amplitude (i sekunder). + + + + +decay + +Tiden som skal gå fra signalet har nået sin maksimale amplitude til signalet går tilbage til et konstant niveau (i sekunder). + + + + +sustain + +Det konstante niveau som holdes for signalet bagefter, til brugeren slipper tasten. + + + + +release + +Tiden som skal gå fra brugeren har sluppet tasten til signalet går ned til nul (i sekunder). + + + + +Du får det behandlede signal som uddata-værdi. Når ASDR-envelopen er klar, sætter den done til 1. Du kan bruge dette til at sørge for uddata done for et instrument (som gør at instrumentstrukturen fjernes fra &MIDI;-relæobjektet når lyden er hørt op). + + + + +Synth_PSCALE + + + + +Synth_PSCALE + + +Modulet Synth_PSCALE vil skalere lydstrømmen som sendes gennem den fra lydstyrke 0 (tavs) til 1 (oprindelig lydstyrke) tilbage til 0 (tavs), ifølge positionen (hent positionen fra en Synth_SEQUENCE). Positionen hvor toppen skal være kan angives som pos. + +Eksempel: sæt top til 0,1 betyder at efter at 10 % af tonen er afspillet, har lydstyrken nået sin maksimale værdi, og begynder derefter at aftage. + + + + + +Effekter + + +Synth_FREEVERB + + + + +Synth_FREEVERB + + +Dette er en efterklangseffekt. I den nuværende implementering er det tænkt at sende en stereosignal gennem modulet, og det vil så -tilføje- efterklangseffekten til signalet. + + +Dette betyder at den også kan bruges inde i en StereoEffectStack. + + +Inddata-signalet skal forbindes til (inleft, inright), og uddata-signalet bliver (outleft, outright). + +Parametrene som du kan indstille er: + + + +roomsize + +Størrelsen af rummet som efterklangseffekten simulerer (område: 0 .. 1, hvor 1 er det største mulige rum). + + + + +damp + +Dette angiver et filter som gør at det simulerede rum absorberer høje frekvenser (område 0 .. 1, hvor 1 betyder absorbere høje frekvenser i stor udstrækning). + + + + +wet + +Størrelsen af efterklangsignalet (dvs. den del af signalet som skal ændres af filtret, og forårsage en vådt lyd, dvs. en efterklangslyd). + + + + +dry + +Størrelsen af rent signal som sendes gennem, som forårsager et ekko (eller kombineret forsinkelse) i stedet for en efterklangseffekt (område: 0 .. 1). + + + + + +width + +Størrelsen af udvidet stereoeffekt som efterklangsalgoritmen tilføjer til efterklangseffekten, for at gøre efterklangslyden bredere i stereolydbilledet (område 0 .. 1). + + + + +mode + +[HUSK: Jeg tror at hvis mode er 1, beholder efterklangen det nuværende lydbillede for lyden, mens 0 er normal behandling] + + + + + + + +Synth_TREMOLO + + + +Synth_TREMOLO + + +Tremolomodulet modulerer amplituden ifølge en LFO-bølgeform. Traditionelt bruger man en sinusbølge, men hvorfor begrænse sig? Hvad man får er en meget intensiv effekt som skærer gennem de fleste arrangementer på grund af sit store dynamiske omfang. Tremoloeffekten er stadigvæk en favoriteffekt bland guitarister, selvom den ikke er så populær som i tresserne. + +[HUSK: for øjeblikket implementeres dette som invalue + abs(inlfo) - måske ville det være bedre at implementere det som invalue * (1+inlfo*depth), hvor depth ville være en parameter mellem 0 .. 1 - dette afgøres efter &kde;2.1. Hvis du har en kommentar, så skriv til &arts;' e-mail-liste ;). ] + + + +Synth_FX_CFLANGER + + + +Synth_FX_CFLANGER + + +En flanger er en tidsvariabel forsinkelseseffekt. For at gøre udvikling af komplekse flangereffekter enklere, leveres dette modul som indeholder kernen af en enkanals flangerenhed. + +Den har følgende porte: + + + +invalue + +Signalet som du vil behandle. + + + + +lfo + +Helst en sinusbølge som modulerer forsinkelsestiden inde i flangeren (-1 .. 1). + + + + +mintime + +Den minimale værdi for tiden inde i flangeren i millisekunder. Foreslåede værdier: forsøg med noget i retning af 1 ms. Brug helst værdier < 1000 ms. + + + + +maxtime + +Den maksimale værdi for tiden inde i flangeren i millisekunder. Foreslåede værdier: forsøg med noget i retning af 5 ms. Brug helst værdier < 1000 ms. + + + + +outvalue + +Uddatasignalet. Det er vigtigt at du blander dette med originalsignalet (uden flanger) for at få den ønskede effekt. + + + + + +Du kan bruge dette som en basis for koreffekter. + + + + + + + +Filtre + + +Synth_PITCH_SHIFT + + + +Synth_PITCH_SHIFT + + +Denne tonehøjdeforandrende effekt ændrer frekvensen på inddatasignalet uden at påvirke hastigheden. En anvendelse af dette er for eksempel at ændre tonehøjden på din stemme mens du indspiller (og afspiller) den i realtid. + +Parameteren speed er den relative hastighed som signalet afspilles med. Så med en hastighed på to bliver lyden dobbelt så høj (dvs. en inddatafrekvens på 440 Hz giver en uddatafrekvens på 880 Hz). + +Parameteren frequency bruges internt til at ændre mellem forskellige korn i signalet. Den er indstillelig, og afhængig af valget kommer tonehøjdens ændring til at lyde mere eller mindre realistisk i dit brugstilfælde. En god værdi at begynde med er noget i stil med 5 eller 10. + + + + +Synth_SHELVE_CUTOFF + + + +Synth_SHELVE_CUTOFF + + +Filtrerer alle frekvenser væk over afskæringsfrekvensen. + + + + +Synth_BRICKWALL_LIMITER + + + +Synth_BRICKWALL_LIMITER + + +Dette modul klipper et signal så det passer i området [-1;1]. Det gør ingenting for at begrænse den forvridning som opstår når et stærk signal klippes af. Man kan bruge dette som en lydeffekt (for eksempel til at oprette en noget afklippet sinusbølge). Det er dog oftest en god idé at lade signalet gå gennem et lowpass-filter bagefter hvis du gør dette, for at gøre lyden mindre skærende. + + + +Synth_STD_EQUALIZER + + + +Synth_STD_EQUALIZER + + +Dette er en god byggeblok for en parametriserbar tonekontrol. Dens parametre er: + + + +Indværdi, udværdi + +Signalet som filtreres af tonekontrollen. + + + + +low + +Hvordan lave frekvenser skal ændres. Værdien angives i dB, mens 0 betyder at lave frekvenser ikke skal ændres, ville -6 betyde at de dæmpes med 6 dB, og +6 betyder at de øges med 6 dB. + + + + +mid + +Hvordan middelfrekvenser skal ændres af tonekontrollen i dB (se low). + + + + +high + +Hvordan høje frekvenser skal ændres af tonekontrollen i dB (se low). + + + + +frekvens + +Dette er midtfrekvensen for tonekontrollen i Hz, midtfrekvensen befinder sig omkring dette spektrum, med de lave og høje frekvenser nedenfor og ovenfor. Bemærk at frekvensen ikke kan være højere end en halvdel af samplingsfrekvensen, oftest er den 22050 Hz, og ikke lavere end 1 Hz. + + + + +q + +Dette påvirker hvor bredt midterspektret er. Det skal være et positivt tal > 0. En værdi på et er rimelig, højere værdier af q betyder et smallere spektrum af midterfrekvenser. Lavere værdier end et betyder et bredere spektrum. + + + + + + + +Synth_RC + + + +Synth_RC + + +Et dæmpet resonansfilter som filtrerer alle frekvenser omkring en højeste værdi. Der er ingen nyttig måde at angive en midterfrekvens (som ikke skal klippes ), eftersom inddata er to underlige konstanter f og b. Koden er meget gammel, fra synthesizerns tidligste dage, og vil formodentlig blive skiftet ud mod et nyt filter som har en frekvens og en resonansværdi som parametre. + +Forsøg med noget som ligner b=5, f=5 or b=10, f=10 or b=15, f=15 i alle tilfælde. + + + + +Synth_MOOG_VCF + + + +Synth_MOOG_VCF + + +Filtrerer alle frekvenser væk over afskæringsfrekvensen (det er et 24 dB firepols filter, som filtrerer 24 dB pr oktav over afskæringsfrekvensen), men sørger for en yderligere parameter til at indstille filtrets resonans, hvor 0 betyder ingen resonans og 4 betyder selvsving. + + + + + + +Midi + sekvensering + + +Synth_MIDI_TEST + + + +Synth_MIDI_TEST + + +Dette modul indlæser en instrumentstruktur fra en fil, og registrerer sig som en midi-udgang med &arts; &MIDI;-håndtering. Toner som sendes til denne udgang gør at instrumentstemmer laves. + + +Du kan indstille noget sådant her på en behageligere måde i &artscontrol; i stedet for manuelt i &arts-builder;. + + + + + +Synth_SEQUENCE + + + + +Afspiller en sekvens af toner om og om igen. Tonerne angives i spornotation, og adskilles af semikolon. Et eksempel er A-3;C-4;E-4;C-4;. Hastigheden angives som sekunder pr tone, så hvis du vil angive 120 slag pr minut, angiver du formodentlig 0,5 sekunder/tone, idet 60 sekunder/0,5 sekunder pr tone = 120 slag pr minut. + +Du kan give hver tone en længde i forhold til hastigheden ved at bruge et kolon efter tonen fulgt af længden. A-3:2;C-4:0.5;D-4:0.5;E-4; viser dette. Som du kan se, tenderer midi-tonesætningsprogrammer til at tilbyde større bekvemmelighed ;) + +Synth_SEQUENCE giver yderligere information om positionen for tonen som afspilles lige nu, hvor 0 betyder lige påbegyndt og 1 betyder afsluttet. Denne information kan man bruge med Synth_PSCALE (se nedenfor). + + + +Synth_SEQUENCE_FREQ + + + + +Dette modul virker præcis som Synth_SEQUENCE, med den eneste forskel at du ikke indskriver nodenavne men frekvenser. + + + + + + +Samplinger + + +Synth_PLAY_WAV + + + + +Synth_PLAY_WAV + + +Dette afspiller en wav-fil. Den er kun tilstede hvis du har libaudiofile på computeren. Bølgeformsfilen afspilles så snart modulet laves. + +Den stopper så snart den er klar, og done sættes til 1. Hastighedsparameteren kan bruges til at afspille filen hurtigere eller langsommere, hvor 1.0 er den normale (indspillede) hastighed. + + + + + + +Lyd-I/O + + +Synth_PLAY + + + + +Synth_PLAY + + + +Normalt behøver man ikke dette modul, hvis man ikke skriver selvstændige programmer. Inde i &artsd;, er der allerede et Synth_PLAY modul, og at oprette et til virker ikke. + + +Modulet Synth_PLAY giver lydsignalet som uddata til lydkortet. Venstre og højre kanal skal indeholde normaliseret inddata for kanalerne. Hvis inddata ikke er mellem -1 og 1, får man klipning. + +Som allerede nævnt, må der kun være et Synth_PLAY modul, eftersom det har direkte adgang til lydkortet. Brug busser til at blande mere end en lydstrøm sammen inden afspilning. Brug modulet Synth_AMAN_PLAY for at få noget som ligner uddata inde i &artsd;. + +Bemærk at Synth_PLAY også kontrollerer tiden for hele strukturen. Dette betyder: ingen Synth_PLAY = ingen kilde for tid = ingen lyd. Så der behøves (nøjagtigt) et Synth_PLAY objekt. + + + + +Synth_RECORD + + + +Synth_RECORD + + + +Normalt behøver man ikke dette modul, hvis man ikke skriver selvstændige programmer. Inde i artsd, er der normalt allerede et Synth_RECORD modul, og at oprette et til virker ikke. + + +Modulet Synth_RECORD indspiller et signal fra lydkortet. Venstre og højre kanal indeholder inddata for kanalerne (mellem -1 og 1). + +Som allerede nævnt, må der kun findes et Synth_RECORD modul, eftersom det har direkte adgang til lydkortet. Brug busser for at bruge den indspillede lydstrøm på mere end et sted. Brug modulet Synth_AMAN_RECORD for at få noget som ligner en indgang inde i artsd. For at dette skal virke skal &artsd; køre med full dupleks aktiveret. + + + +Synth_AMAN_PLAY + + + +Synth_AMAN_PLAY + + +Modulet Synth_AMAN_PLAY giver lydsignalet som uddata. Det er godt (men ikke nødvendigt) at uddata er et normaliserer signal (mellem -1 og 1). + +Dette modul bruger lydhåndteringen til at angive hvor signalet bliver spillet. Lydhåndteringen kan styres gennem &artscontrol;. For at gøre det mere intuitivt at bruge, er det godt at navngive signalet som afspilles. Det kan opnås ved at angive title. En anden funktion i lydhåndteringen er at kunne huske hvor et signal sidst blev afspillet. For at kunne gøre dette skal den kunne skelne mellem signaler. Derfor skal man også angive en entydig værdi for autoRestoreID. + + + +Synth_AMAN_RECORD + + + +Synth_AMAN_RECORD + + +Modulet Synth_AMAN_RECORD optager et lydsignal fra en ekstern kilde (dvs. linje ind/mikrofon) inde i &artsd;. Uddata vil være et normaliseret signal (mellem -1 og 1). + +Dette modul bruger lydhåndteringen til at angive hvor signalet afspilles. Lydhåndteringen kan styres med artscontrol. For at gøre det mere intuitivt at bruge, er det godt at navngive signalet som afspilles. Det kan opnås ved at angive title. En anden funktion i lydhåndtereringen er at kunne huske hvor et signal afspilledes sidst. For at kunne gøre dette skal den kunne skelne mellem signaler. Derfor skal man også angive en entydig værdi for autoRestoreID. + + + +Synth_CAPTURE + + + +Synth_CAPTURE + + +Modulet Synth_CAPTURE skriver et lydsignal til en bølgeformsfil på harddisken. Filen hedder altid /tmp/mcop-brugernavn/capture.wav + + + + + +Tester + + +Synth_NIL + + + +Synth_NIL + + +Dette gør ingenting. Det er meget nyttigt i testsituationer. + + + + +Synth_DEBUG + + + +Synth_DEBUG + + +Man kan bruge dette til fejlsøgning. Det udskriver værdien for signalet ved invalue i regelmæssige intervaller (cirka 1 sekund), sammen med kommentaren som du har angivet. På denne måde kan man finde ud af om visse signaler forbliver indenfor visse områder, eller om de findes i det hele taget. + + + +Synth_MIDI_DEBUG + + + +Synth_MIDI_DEBUG + + +Man kan bruge dette til at fejlsøge hvordan &MIDI;-begivenheder virkelig kommer ind i &arts;. + +Når en MIDI_DEBUG kører, udskriver &artsserver; linjer såsom: + +201 100753.837585 on 0 42 127 + +202 101323.128355 off 0 42 + +Den første linje fortæller at 100753 ms (dvs. 100 sekunder) efter MIDI_DEBUG startede, kom en &MIDI;-begivenhed "on" på kanal 0. Denne midi-begivenhed havde hastighed (lydstyrke) 127, den højest mulige. Næste linje viser midi-begivenhed da tasten blev sluppet. [HUSK: dette virker ikke for øjeblikket, få det til at virke, og gør det via &MIDI;-håndteringen]. + + + +Synth_DATA + + + +Synth_DATA + + +Dette laver et signal med en konstant værdi. + + + + + +Oscillation & Modulation + + +Synth_FREQUENCY + + + +Synth_FREQUENCY + + +Oscillatorer i &arts; kræver ikke en frekvens som inddata, men i stedet en position i bølgen. Positionen skal være mellem 0 og 1, som i et standardobjekt Synth_WAVE_SIN oversættes til området 0 .. 2*Pi. For at oprette oscillerende værdier fra en frekvens, bruges et Synth_FREQUENCY modul. + + + +Synth_FM_SOURCE + + + +Synth_FM_SOURCE + + +Dette bruges til frekvensmodulering. Angiv frekvensen med indgangen frequency og put et andet signal til moduleringsindgangen. Indstil derefter modlevel til et eller andet, f.eks. 0,3. Frekvensen moduleres derefter med moduleringen. Prøv det. Virker godt hvis man tilføjer en tilbagekobling, hvilket betyder at man tager en kombination af det forsinkede uddatasignal fra Synth_FM_SOURCE (man skal sende det til en oscillator eftersom det kun virker som Synth_FREQUENCY) og et andet signal for at få et godt resultat. + +Virker godt sammen med Synth_WAVE_SIN oscillatorer. + + + + + +Bølgeformer + + +Synth_WAVE_SIN + + + +Synth_WAVE_SIN + + +Sinusoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en sinusbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. + + + + +Synth_WAVE_TRI + + + +Synth_WAVE_TRI + + +Triangelbølgeoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en triangelbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet skal være i området 0 .. 1 for at udsignalet kan give et godt resultat. + + + +Synth_NOISE + + + +Synth_NOISE + + +Støjgenerator. Denne laver et tilfældigt signal mellem -1 og 1. + + + + +Synth_WAVE_SQUARE + + + +Synth_WAVE_SQUARE + + +Firkantbølgeoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en firkantbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet skal være i området 0 .. 1 for at udsignalet kan give et godt resultat. + + + +Synth_WAVE_SOFTSAW + + + +Synth_WAVE_SOFTSAW + + +Blød savtandsbølge, som ligner Synth_WAVE_TRI oscillatoren i udseende. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en blød savtandsbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalen skal være i området 0 .. 1 for at udsignalet kan give et godt resultat. + + + +Synth_WAVE_PULSE + + + +Synth_WAVE_PULSE + + +Pulsoscillator. Dette modul ligner den rektangulære oscillator (Synth_WAVE_RECT), men det sørger for et indstilleligt op/ned-forhold, ved parameteren dutycycle. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en pulsbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet skal være i området 0 .. 1 for at udsignalet kan give et godt resultat. + + + +Diverse + + +Synth_COMPRESSOR + + + + + +Dette modul reducerer det dynamiske omfang af et signal. Reduktion er for eksempel nyttigt for at kompensere for de store variationer i lydstyrke når nogen taler i en mikrofon. + +Så snart inddataniveauet overstiger et vist niveau (tærskelen) så reduceres signalet. Den multiplicerer helt enkelt alt over tærskelen med en ratio, som skal være en værdi mellem 0 og 1. Tilsidst multipliceres hele signalet med uddatafaktoren. + +Argumenterne attack og release forsinker starten og slutningen af reduktionen. Brug dette hvis du for eksempel stadigvæk vil høre den stærke begyndelse af en bastromme. Argumenterne angives i millisekunder, og en attack eller release på 0 ms er mulig, men kan resultere i en let støj. + + + + + + +Reference til visuelle moduler + +HUSK når visuelle moduler er "færdige". + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/porting.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/porting.docbook new file mode 100644 index 00000000000..89f1d0789e4 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/porting.docbook @@ -0,0 +1,50 @@ + + + +Overfør programmer til at passe sammen med &arts; + + +Brug af &artsdsp; + +Værktøjet &artsdsp;, tidligere beskrevet, tillader de fleste ældre lydprogrammer som taler direkte med lydenheder at virke rigtigt med &arts;. Programmer som er skrevet til at bruge Enlightenment Sound Daemon (esd) virker også i de fleste tilfælde ved at køre esd med &artsdsp;. + +Dette giver en god løsning på kort sigt for at ændre eksisterende programmer til &kde;. Det tillader dog ikke programmet direkte at drage fordel af hele &arts;' kraftfulde funktioner, såsom at bruge moduler og andre multimedietyper end digitallyd. Hvis programmet gør mere end kun helt enkelt at afspille lydfiler, er det oftest bedre at tilføje indbygget støtte for &arts; i programmet. + +At bruge &arts; betyder også at programmet ikke behøver gøre så meget arbejde - det kan drage fordel af funktioner i &arts; til at håndtere ting såsom kodning for forskellige mediaformater og kontrol af lydkort. + + + + +Tilføjelse af indbygget støtte for &arts; + +Når du bruger &arts;, er der et antal forskellige programmeringsgrænseflader (API) at vælge blandt. Beslutningen om hvilket som skal bruges afhænger af et antal forskellige faktorer, blandt andet hvilken slags medietype der bruges (lyd, &MIDI;, lyd-CD, etc.), de funktioner der kræves af grænsefladen, og om programmet er skrevet i C++. I de fleste tilfælde bør valget være ganske klart baseret på de nødvendige funktioner. + +For flytbarhed mellem platforme kan programmer som skal kunne køre i andre miljøer end &kde; ikke stole på at &arts; er tilgængeligt. At bruge en plugin-paradigme er en god måde at støtte forskellige multimediemiljøer. At lave et plugin-API åbent og dokumenteret (især for programmer uden adgang til kildekode) har også den fordel at en anden end programudvikleren kan implementere plugin til &arts;. + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/references.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/references.docbook new file mode 100644 index 00000000000..7e1dd77a275 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/references.docbook @@ -0,0 +1,61 @@ + + + +Referencer + + + + +http://multimedia.kde.org + +Dette er den hoved-hjemmesiden for &kde;-relateret multimedieinformation. + + + + +http://www.arts-project.org + +Dette er &arts;-projektets hjemmeside. + + + + +&kde; 2.0 udvikling + +Kapitel 14 i denne offentliggjorte bog dækker multimedie, inklusive &arts;. Den er tilgængelig på tryk eller på nettet med kommentarer på http://www.andamooka.org. + + + + + +http://sound.condorow.net + +Dette sted har en udtømmende liste over lyd- og &MIDI;-programmer for &Linux;. + + + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/artsbuilder/tools.docbook b/tde-i18n-da/docs/tdemultimedia/artsbuilder/tools.docbook new file mode 100644 index 00000000000..d5ec657d4b5 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/artsbuilder/tools.docbook @@ -0,0 +1,1003 @@ + + + +&arts;-værktøjer + +Et antal værktøjer levereres sammen med &arts; til at kontrollere og indrette dens opførsel. Du skal kende en smule til de fleste af disse værktøjer for at kunne bruge &arts; på en effektiv måde. Dette afsnit beskriver hvert af værktøjerne og deres kommandoflag. + + +&kcontrol; + +Når man kør &arts; under &kde;, sørger &kcontrolcenter; for en gruppe af indstillinger i kategorien Lyd. Visse af disse bruges af &arts;. Man kan også tilknytte lyd til forskellige vinduehåndterings- og &kde;-begivenheder med dialogen LydSystembekendtgørelser. Se håndbogen for &kcontrol; for mere information om hvordan dialogens indstillinger bruges. + + + + +&artsd; + +Adgangen til lydkort kontrolleres af &artsd;, lydserveren for &arts;-dæmonen. Dette tillader at flere programmer samtidigt sender forespørgsler til serveren, hvor de kan blandes og afspilles. Uden en central lydserver ville et enkelt program som bruger en lydenhed forhindre andre programmer i at bruge det. + +For at bruge &arts; skal der være en og kun en kopi af &artsd; som kører. Den startes typisk når &kde; startes hvis dette er aktiveret i &kcontrol;'s Lydserver-modul. + +Programmet accepterer følgende flag: + + + +artsd + + + + +Indstil samplingrate som skal bruges. + + + + + + +Vis kommandobrug. + + + + + + +Aktivér netværkstransparens. + + + + + + + +Sæt TCP-port som skal bruges (forudsætter ). + + + + + + +Offentlig, ingen godkendelse (farligt). + + + + + + +Aktivér fuld duplex. + + + + + +Angiv lydenhed (almindeligvis /dev/dsp). + + + + + + +Sæt antal fragmenter. + + + + + + +Sæt fragmentstørrelse i byte. + + + + + + +Indstil forsinkelsen før autosuspendér aktiveres i sekunder. Værdien nul lukker af for autosuspendér. + + + + + + +Angiv navnet på et program som bruges til at vise fejl, advarsler og informationsmeddelelser. Hvis du kører KDE kan du bruge værktøjet artsmessage til dette. + + + + + + +Forøg størrelsen af netværksbufferne til en værdi som er passende til at køre med et 10 Mbps lokalt netværk. Dette er det samme som at bruge flaget -w 5 (se nedenfor). + + + + + +Når artsd køres via en netværkstilslutning til en anden værtsmaskine vil man ofte bruge en stor buffer for at undgå pauser. aRts foreslår en minimal bufferstørrelse for programmer. Uden denne valgmulighed baserer den standardstørrelsen på fragmentstørrelsen * antal fragmenter. Med dette tilvalg kan man øge størrelsen fra standardstørrelsen med en faktor n. + + + + + + +Indstil informationsniveau: 3 (tavs), 2 (advarsler), 1 (info), 0 (fejlsøgning). + + + + + + +Vis versionsniveau. + + + + + +I de fleste tilfælde er det nok kun at køre &artsd;. + + + +&artswrapper; + +For at give gode realtidsegenskaber køres &artsd; oftest som en realtidsproces (på platforme hvor realtidsprioriteter understøttes). Dette kræver root-rettigheder, så for at minimere sikkerhedsproblemerne, kan &artsd; startes med det lille omsluttende program &artswrapper; som helt enkelt skifter til realtidsprioritet (mens det kører som root) og derefter starter &artsd; som en anden bruger end root. + +Hvis du gør &artswrapper; SUID root, kommer det formodentlig til at forbedre kvaliteten af lydgengivningen ved at reducere huller i musikken. Dog øges også risikoen for at en fejl i koden, eller en ondsindet bruger kan få maskinen til at bryde sammen eller skade den på anden måde. Desuden kan det at prioritere høj lydkvalitet på flerbrugermaskiner forårsage forringet ydelse for brugere som forsøger at bruge maskinen på en produktiv måde. + + + + +&artsshell; + +Kommandoen &artsshell; er beregnet som et værktøj til at udføre diverse funktioner som hører sammen med lydserveren. Formodentlig vil værktøjet blive udvidet med nye kommandoer i fremtiden (se kommentarerne i kildekoden for nogle idéer). + +Kommandoen accepterer følgende format: + + + +artsshell suspendstatus terminate autosuspend secs networkbuffers n volume [volume] stereoeffect options + +artsshell [flag] kommando [kommandotilvalg] + +Følgende flag understøttes: + + + + + + +Undertryk al udskrift. + + + + + + +Vis kommandobrug. + + + + + +Følgende kommandoer understøttes: + + + + + + +Suspendér lydserveren. + + + + + + +Vis statusinformation for lydserveren. + + + + + + +Afslut lydserveren. Dette kan forvirre og/eller forårsage sammenbrud for programmer som for øjeblikket bruger den. + + + + + sekunder + +Indstil forsinkelsen for aktivering af autosuspension til det angivne antal sekunder. Lydserveren vil blive suspenderet hvis den er inaktiv så længe. Værdien nul deaktiverer autosuspension. + + + + + n + +Indstiller størrelsen af netværksbufferne til en faktor n gange standardstørrelsen. + + + + + [volume] + +Indstiller lydstyrkeskalering for lydserverens lyduddata. Parameteren volume er et decimaltal. Uden parameter vises den nuværende lydstyrke. + + + + + + +Vis alle tilgængelige stereoeffektmoduler. + + + + + navn + +Indsæt en stereoeffekt i stereoeffekt-stakken. Returnerer en identifikator som senere kan bruges til at fjerne den. Effekten kan installeres længst oppe eller længst nede (normalværdien). + + + + + id + +Fjerner stereoeffekten med identifikatoren id fra effektstakken. + + + + + + + + +<application +>artsplay</application +> + +Programmet artsplay er et enkelt værktøj til at afspille en lydfil. Det accepterer en enkelt parameter som svarer til navnet på lydfilen som sendes til lydserveren for at spilles. Lydfilen kan være en hvilken som helst almindelig lydfiltype, såsom wav eller au. Dette værktøj er godt til at prøve om lydserveren virker. Ved at køre to kommandoer parallelt eller i hurtig rækkefølge kan man demonstrere hvordan lydserveren blander mere end en lydkilde. + + + + +<application +>artsdsp</application +> + +Lydserveren håndterer kun programmer som understøtter &arts;. Mange gamle programmer vil ønske at komme direkte til lydenheden. Kommandoen &artsdsp; sørger for en interimløsning som lader de fleste af disse programmer køre uforandrede. + +Når et program køres med &artsdsp; fanges alle forsøg på at komme til lydenheden /dev/dsp og forvandles til kald til &arts; programmeringsgrænseflade. Selv om enhedsemuleringen ikke er perfekt, så virker de fleste programmer på denne måde, omend med en vis forværring i ydelse og latenstid. + +Kommandoen &artsdsp; følger formatet: + + +artsdsp [flag] programargumenter + +Følgende flag genkendes: + + + + +, + +Vis kortfattet hjælp. + + + + = navn + +Brug navn til at identificere en afspiller for artsd. + + + + + + + +Emulér hukommelsesafbildning (f.eks for Quake). + + + + + + +Vis parametre. + + + + + +Et typisk kald er: + + +artsdsp realplay song.mp3 + + +Visse programmer virker bedre med flaget . Lydenhedens funktioner er ikke alle fuldstændigt emulerede, men de fleste programmer skulle virke. Hvis du finder et som ikke gør det, så indsend en detaljeret fejlrapport så udviklerne kan ordne det. Igen, husk at dette er en midlertidig løsning og noget af en grim hurtigløsning. Den bedste løsning er at tilføje indbygget støtte for &arts; i programmerne. Hvis dit favoritlydprogram ikke har støtte for &arts;, så bed udviklerne om at sørge for det. + + + + +<application +>artscat</application +> + +Dette er et enkelt værktøj til at sende rå lyddata til lydserveren. Man skal angive dataformatet (samplingsfrekvens, samplingsstørrelse og antal kanaler). Dette er formodentlig ikke et værktøj som man behøver bruge ofte, men det kan være bekvemt for testformål. Kommandosyntaksen er: + + + +artscat [ flag ] [ filnavn ] + +Hvis intet filnavn angives læser programmet fra standardinddata. Følgende flag understøttes: + + + + samplingsfrekvens + +Sæt den samplingsfrekvens som bruges. + + + + + bit + +Sæt samplingsstørrelse som bruges (8 eller 16). + + + + + kanaler + +Sæt antal kanaler (1 eller 2). + + + + + + +Vis kommandobrug og afslut. + + + + + + + +&artscontrol; + +Dette er et grafisk værktøj til at udføre et antal opgaver som hører sammen med lydserveren. Standardvinduet viser to lydstyrkeindikatorer og en skyder til at indstille den generelle afspilningslydstyrke. Fra menuen Vis kan du vælge andre funktioner: + + + + +FFT-omfang + +Åbner et vindue som viser en skærm med en realtidsspektrumanalysator. + + + + +Lydhåndtering + +Viser aktive lydkilder og lader dig forbinde dem til alle tilgængelige busser. + + + + +aRts status + +Viser om lydserveren kører og om realtidsskemalægning bruges. Angiver når serveren vil autosuspendere og tillader dig at suspendere med det samme. + + + + +Midihåndtering + +Viser aktive &MIDI; ind- og udgange og tillader dig at lave forbindelser [HUSK: virker dette endnu? Behøver flere detaljer]. + + + + +FreeVerb + +Tilslutter en FreeVerb efterklangseffekt til stakken af &arts; udskriftseffekter og lader dig kontrollere lydeffektindstillingerne grafisk. + + + + +Led-lignende lydstyrkevisning + +Ændrer lydstyrkeindikatorerne i hovedvinduet til at bruge et visningsformat med farvede lysdioder i stedet for bjælker. + + + + + + + + +<application +>artsc-config</application +> + +Dette værktøj er der for at hjælpe udviklere som bruger C-API i &arts;. Det angiver de rigtige oversætter- og linkflag som behøves når man kompilerer og linker med &arts;. Det er beregnet til at bruges i make-filer for at hjælpe til med flytbarhed. Kommandoen accepterer tre flag: + + + + + +Viser oversætterflag som behøves når man kompilerer med &arts; C-API. + + + + + + +Viser linkerflag som behøves når man linker med &arts; C-API. + + + +---version + +Viser versionen af kommandoen artsc-config. + + + + +Typisk udskrift fra kommandoen vises nedenfor: + +% 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 + + +Man skal kunne bruge dette værktøj i en make-fil med en regel såsom: + +artsc: artsc.c + gcc `artsc-config --cflags` -o artsc artsc.c `artsc-config --libs` + + + + + +&mcopidl; + +Kommandoen &mcopidl; er &IDL;-fil oversætteren for &MCOP;, multimedia-kommunikationsprotokollen som bruges af &arts;. Grænseflader i &arts; defineres med &IDL;, et sproguafhængig grænsefladesdefinitionssprog. Værktøjet &mcopidl; accepterer en &IDL;-fil som inddata og laver C++ deklarations- og kildekodefiler for en klasse som implementerer grænsefladen. Kommandoen accepterer følgende syntaks: + + + +mcopidl [ flag ] filnavn + +Gyldige flag er: + + + mappe + +Søg i mappe efter deklarationsfiler. + + + + + navn + +Spring over en struct, grænseflade eller nummereringstypen navn ved kodegenerering. + + + + + + +Opret også .mcoptype/.mcopclass filer som indeholder typeinformation for &IDL;-filen. + + + + +Mere information om &MCOP; og &IDL; findes i afsnittet Grænseflader og &IDL;. + + + + diff --git a/tde-i18n-da/docs/tdemultimedia/juk/Makefile.am b/tde-i18n-da/docs/tdemultimedia/juk/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/juk/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/juk/Makefile.in b/tde-i18n-da/docs/tdemultimedia/juk/Makefile.in new file mode 100644 index 00000000000..eeebe7b94ca --- /dev/null +++ b/tde-i18n-da/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 = da +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/juk/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/juk/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-da/docs/tdemultimedia/juk/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/juk/index.cache.bz2 new file mode 100644 index 00000000000..a698baa1f74 Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/juk/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/juk/index.docbook b/tde-i18n-da/docs/tdemultimedia/juk/index.docbook new file mode 100644 index 00000000000..9d20087b85a --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/juk/index.docbook @@ -0,0 +1,2395 @@ + + + + JuK"> + + +]> + + + + +&juk;-håndbogen + + +&Lauri.Watts; &Lauri.Watts.mail; +Michael Pyne
michael.pyne@kdemail.net
+
+
+ +Scott Wheeler
&Scott.Wheeler.mail;
+
+
+ +&erik.kjaer.pedersen.role; + +
+ + +2001 +2002 +2004 +&Scott.Wheeler; + +&FDLNotice; + +2004-05-06 +2.1 + + +&juk; er en jukebox, mærke- og musiksamlingshåndtering. + + + +KDE +tdemultimedia +lyd +mærker +afspiller +jukebox +JuK + + +
+ + +Indledning + +&juk; er, lige nøjagtigt, en jukebox. Ligesom mange andre jukeboxprogrammer, gør &juk; det muligt at redigere dine lydfilers mærker, og håndtere samlinger og spillelister. + + + +Brug af &juk; + + + +Her er et skærmaftryk af &juk; + + + + + + Skærmaftryk af &juk; i gang. + + + + + +&juk; håndterer en liste med alle kendte filer. Den kaldes samlingslisten. Samlingslisten tilhører kun &juk;, og deles ikke med andre programmer. + +Spillelisterne er uafhængige af samlingslisten. Du kan have så mange spillelister som du vil. Du kan bruge spillelister oprettede i &juk; med andre mediespillere (såsom &noatun; eller xmms), og du kan håndtere spillelister som er lavet af disse programmer inde i &juk;. + +Du kan tilføje individuelle filer til samlingslisten, med FilÅbn fil... og vælge dem med en almindelig &kde; fildialog. Du kan tilføje hele mapper med FilÅbn mappe.... Mapper som tilføjes på denne måde, gennemsøges hver gang &juk; startes. Du kan tvinge mapperne til at blive skannet igen ved at højreklikke på ikonen Samlingsliste , og vælge Genindlæs. + +Når en sang tilføjes til en spilleliste, tilføjes filen automatisk til samlingslisten, men at tilføje en fil til samlingslisten gør ikke at den automatisk tilføjes til nogen spilleliste. + +Du kan hurtigt oprette en spilleliste af hele samlingslisten, ved at højreklikke på ikonen Samlingsliste, og vælge Duplikér. Spillelisten som laves er en normal spilleliste, og redigering i den påvirker ikke samlingslisten. + +Du kan tilføje individuelle spillelistefiler som er lavet udenfor &juk; ved at vælge dem med FilÅbn fil.... Alle spillelistefiler som findes i mapper du tilføjer med FilÅbn mappe... tilføjes også automatisk. + +Du kan oprette en ny spilleliste ved at vælge FilNy, eller ikonen Ny på værktøjslinjen. Du bliver spurgt om et navn, og derefter vises en ikon for spillelisten i feltet med spillelister. Nu kan du trække og slippe filer fra samlingslisten, eller fra andre spillelister, til den nye spillelisten. Brug ikonen Gem eller FilGem for at gemme spillelisten når som helst. + + +Sanglisten + +Når du kigger på samlingslisten, indeholder hovedvinduet alle filer som &juk; kender til. Når du kigger på en spilleliste, vises kun sangene i den spilleliste. I begge tilfælde er udseende og opførsel for listen den samme. + +Hver sang optager en linje i listen. Der er en søjle for hvert datafelt som &juk; håndterer. Søjlerne svarer til felterne som er tilgængelige i mærkeeditoren. + +Du kan omarrangere listen når som helst ved at venstreklikke på søjlehovedet. Det sorterer først filerne i stigende rækkefølge baseret på søjlens indhold. Hvis du venstreklikker på samme hoved, sorteres filerne i faldende rækkefølge. + +Søjlerne er brede nok til at vise den længste værdi som findes. Du kan ændre størrelse på søjlerne ved at placere musemarkøren på grænsen mellem to søjler. Når markøren ændres fra en peger, venstreklikkes og trækkes i den retning som du vil ændre størrelsen af søjlerne. + +Du kan omarrangere søjlerne ved at venstreklikke på et hoved og trække den til venstre eller højre. Du kan dog ikke trække forbi vindueskanten når du gør dette, så du kan behøve at rulle lidte til venstre eller højre, og trække hovedet igen, til du har placeret den hvor du vil have den. + +Du kan vise eller skjule søjler ved at klikke med &RMB; på en søjleoverskrift, og klikke på søjlens navn for at ændre det. + +Et dobbeltklik med venstre museknap på en fil spiller den med den indbyggede afspiller. Hvis en anden sang allerede er ved at blive spillet, stoppes den, og den nye sang afspilles. + +Højreklik på en fil giver dig flere valgmuligheder: + + + +Spil den næste + +Dette vil starteafspilning af filen så snart den nuværende sang er forbi. Hvis der ikke er nogen sang der bliver spillet, vil filen blive afspillet næste gang du trykker på Spil-knappen. Hvis du allerede har valgt Spil den næste for en anden, så vil denne fil sætte det valg ud af kraft. + + + + +Klip +Kopiér +Indsæt + +... + + + + +Ryd + +Hvis du bruger samlingslisten, fjernes filen fra listen med Ryd, og fra alle tilsvarende linjer for sangen i alle spillelister. Bemærk at hvis denne fil findes i en mappe som &juk; gennemsøger ved start, så tilføjes den til samlingslisten igen næste gang &juk; startes, men den tilføjes ikke automatisk til en spilleliste. +Hvis du kigger i en spilleliste, så vil Ryd helt enkelt fjerne sangen fra spillelisten. + + + + + +Redigér + +Lader dig redigere den markerede sang, i søjlen som du klikkede på. Hvis du for eksempel ikke har mærkeeditoren synlig, og du er i gang med at oprette en spilleliste, men ser en stavefejl i kunstnernavnet, kan du redigere det direkte med dette menupunkt. +Ændringer som laves på denne måde, gemmes altid med det samme så snart du klikker et andet sted og er færdig med redigeringen. +Dette menupunkt vil blive deaktiveret hvis &juk; detekterer at sporet du har valgt kun er læsbart. + + + + +Genopfrisk punkter + +Dette vil genindlæse mærke-information for de valgte filer, i tilfælde af at filerne er blevet ændret mens &juk; kørte. + + + + +Fjern fra disk + +Dette fjerner filen fra samlingslisten, fjerner alle linjer med sangen i alle spillelister, og fjerner filen fra disk. Du kan ikke fortryde dette, men du bliver bedt om at bekræfte dit valg. Brug dette med forsigtighed. + + + + +Gæt mærke-information + +Dette vil få &juk; til at forsøge at gætte information såsom kunstner og titel for en sang. &juk; bruger forskellige metoder til at gætte: + + Fra filnavn: + &juk; vil forsøge at gætte mærterne for sangen baseret på dens filnavn. For eksempel, hvis en sangs navn er Roxette - You've Got the Look.mp3 vil der blive gættet på Roxette som kunstneren og You've Got the Look som titlen. Du kan justere den måde &juk; gætter mærker ved at vælge Opsætning Mærkegætter..., hvilket vil åbne Mærkegætterdialogen. &juk; vil ikke erstatte de mærker som den ikke gættede ud fra filnavnet. + + + + Fra internettet + &juk; vil forsøge at gætte mærkerne for sangen ved at bruge MusicBrainz-programmet. Du skal have MusicBrainz installeret for at denne kommando skal virke. + + + + + + + + + +Omdøb fil + +Dette vil omdøbe de udvalgte filer til at passe med et givet format. Du skal vælge den måde du ønsker filerne omdøbt ved at vælge OpsætningFil-omdøber.... Det resulterende navn på hver fil er baseret på dens metadata-mærker. For eksempel ville Ogg Vorbis sangen The Theme (Metroid) af Stemage blive til /usr/share/music/Stemage/The Theme (Metroid).ogg. + + + + +Opret spilleliste ud fra valgte punkter + +Dette tillader dig hurtigt at lave en spilleliste ud fra sange i din samlingsliste. Denne funktion vil bede dig om et navn for den nye spilleliste, og vil så indsætte alle sangene der er udvalgt i den nye spilleliste. + + + + +Tilføj udvalgte punkter til K3b-projekt + +Dette tillader dig hurtigt at lave et K3b cd-brænde projekt ud fra dine udvalgte sange. &juk; vil spørge dig om det skal være en lyd-cd eller en data-cd, med mindre K3b allerede har et åbent projekt. + +Hvis K3b ikke allerede kører, vil &juk; starte den for dig. Derefter vil &juk; tilføje dine udvalgte filer til det nuværende K3b-projekt. Du kan så gemme projektet i K3b til at brænde senere, eller brænde cd'en med det samme. + + + + + + + + + +&juk;'s spillelister +En spilleliste er simpelthen en samling sange grupperet efter en eller anden kategori. For eksempel kan du have en spilleliste af sange som du lytter til mens du koder, mens du prøver på at sove, eller til når du harbrug for at grine. &juk; understøtter adskillige forskellige typer spillelister. + + + + +Normale spillelister. + Dette er den mest almindelige slags spilleliste. Det er en spilleliste der består af filer, ligesom smalingslisten. + + + +Historikspilleliste + Hvid du aktiverer denne spilleliste (ved at aktivere VisVis historik, vil denne spilleliste huske hver sang som &juk; afspiller. Spilleliste vil have en ekstra søjle, Tid, som husker det nøjagtige tidspunkt og datoen sangen blev spillet. Spillelisten starter imidlertid ikke med at spore historikken før den er aktiveret. + + + +Søgespillelister. + Dette er en spilleliste som er baseret på en søgning. Du kan lave en sådan spilleliste ved at klikke på FilNySøgespilleliste, eller ved at klikke på knappen Avanceret søgning i Søgelinjen. +Efter at have lavet denne spilleliste, vil den holde styr på hvilke sange i samlingslisten der matcher dien kriterier, og automatisk opdatere sigselv følgeligt når sammenslisten ændres. + + + + +Spillelister er organiserede i Spillelisteruden, som er den lodrette bjælke til venstre. I denne rude er der en ikon for hver spilleliste du har. Der er forskellige visningstilstande for denne rude, som kan vælges fra menuen VisVisningstilstande. + + +Standard-visningstilstand + +Dette er standard-visningstilstanden. I denne tilstand, bliver alle spillelisterne vist som store ikoner, en ovenover den anden i visningstilstanden. + + + + +Kompakt visningstilstand + +Denne tilstand ligner den normale visningstilstand, med den undtagelse at spillelisterne er repræsenteret med vandrette linjer med små ikoner i stedet for med firkantede felter. + + + + +Trævisningstilstand + +Denne tilstand er den kraftigste. Denne tilstand er ligesom den kompakte visningstilstand, bortset fra at samlingslisten nu er roden af et træ af virtuelle spillelister. Samlingslisten har tre afledte knuder, Kunstner, Album og Genre. Hver af disse knuder har afledte der repræsenterer alle indgange fra denne specifikke kategori. For eksempel, hvis din samlingsliste indeholder musik fra 4 forskellige kunstnere, vil du have 4 indgange under kunstnerknuden. +En smart egenskab af trævisningstilstanden er noget der hedder træk-og-slip ommærkning. Vælg blot nogle filer i sporlisten og træk dem hen på en af kunstner-, album-, eller genre-knuderne under samlingslisten. Sangene vil så automatisk blive ommærkede til at matche det punkt du slap sporene på. For eksempel, hvis du trækker en gruppe spor på en genre der hedder "Rock", vil alle sporene blive mærket om til et genre-mærke der er Rock. + + + + + + + + + + +&juk;s mærkeeditor + +Det er praktisk at bruge filnavnet til at beskrive filens indhold, for mange filformater. Rapport til styrelsen - Juni 2003.doc, kan for eksempel være al information som behøves for at finde filen igen. At forsøge at indfange al nyttig information om en særlig sang, kan give filnavne som dette: Type O Negative - The Glorious Liberation Of The Peoples Technocratic Republic Of Vinnland By The Combined Forces Of The United Territories Of Europa.mp3 eller Various Kunstners_15_The Smithsonian Collection of Classic Jazz Volume II_Jimmie Lunceford & His Orchestra - Organ Grinder's Swing.mp3. Dette er ikke særlig praktisk at bruge, og indeholder heller ikke al nyttig information som du kan have skaffet om sangen. At for eksempel tilføje album og spornummer i det første filnavn, ville gøre det endnu længere og mere håndterligt, mens du stadigvæk ikke direkte vil kunne se året sangen blev udgivet, eller hvilken musikstil det er, hvis du ikke kender til kunstneren. + +Løsningen er altså at opbevare denne slags ekstra data inde i selve filerne. MP3- og OGG-filer kan også indeholde små tekststumper som kan bruges til at beskrive filernes indhold. Der er flere forskellige formater, men &juk; skjuler forskellene mellem dem, og giver en standardmåde at redigere en standardiseret delmængde med velkendte mærker for alle lydfiler. + +&juk;'s fuldstændige mærkeeditor lader dig redigere mærker i både MP3- og OGG-filer. Du kan redigere enkelte filer eller flere filer, og du kan vælge en blanding af MP3- og OGG-filer at redigere. Det eneste krav er at du kan skrive til selve filerne. Du kan for eksempel ikke redigere mærker for en fil som er monteret fra en &CD-ROM;. + + +Redigér mærker i en enkelt fil + +For at redigere mærket i en enkelt fil, markeres den enten i samlingslisten eller på en linje hvor den findes i en spilleliste. Hvis mærkeeditoren ikke er synlig, aktiveres den ved at vælge VisVis mærkeeditor. Mærkeeditoren ses længst nede i listevisningen. + +Skriv helt enkelt i et af redigeringsfelterne for at ændre informationen. Når du er færdig, venstreklikkes i listen, så bliver du bedt om at gemme ændringerne. + +Du vil måske finde at mærkeeditoren forbliver deaktiveret når du har klikket på en fil. Dette sker når &juk; har detekteret at sporet kun er læsbart. + + +Mærkeeditorenes felter + +Kunstnernavn: + +Navn på kunstneren eller kunstnerne som udgav sangen. + + + + +Sportitel: + +Sangens navn. + + + + +Albumnavn: + +Navnet på albumet hvor sangen blev udgivet. + + + + +Genre: + +Musikkens stil. &juk; sørger for en liste som cirka svarer til den uformelle ID3-standard, men du kan frit indtaste egne værdier i listen. + + + + +Filnavn: + +Filnavnet på den egentlige fil på disken. Du kan direkte redigere dette, og når du gemmer så skifter filen navn. + + + + +Spor: + +Stedet for sporet på originalindspilningen. + + + + +År: + +Året sangen blev udgivet. + + + + +Længde: + +Dette kan ikke redigeres, det bliver blot vist som information. + + + + +Bitrate: + +Dette kan ikke redigeres, det bliver blot vist som information. + + + + +Kommentar: + +Du kan tilføje egne frie tekstkommentarer her, med yderligere påtegninger osv. + + + + +Du kan udtrykkelig og umiddelbart gemme dine ændringer når som helst, med menupunktet MærkerGem eller ved at trykke på &Ctrl;T. + + + + +Redigér mærker i flere filer + +Du kan vælge flere filer i listevinduet, og redigere et eller flere felter i mærkerne for alle filer på en gang. + +Brug Shift og venstre museknap for at vælge en liste med en sammenhængende række filer, og &Ctrl; og venstre museknap for at vælge enkelte filer som ikke er i en rækkefølge. + +Hvis mærkeeditoren ikke er synlig, kan du aktivere den ved at vælge VisVis mærkeeditor. Mærkeeditoren vises længst nede i listevisningen. + +Mærkeeditoren opfører sig noget anderledes når du har valgt flere filer. + +Hvert felt i mærkeeditoren har nu et afkrydsningsfelt som hedder Aktivér ved siden af. Alle felter som har nøjagtigt samme indhold for alle filer du markerede, viser dette indhold, og er aktiverede for at redigeres, med afkrydsningsfeltet Aktivér markeret. + + + +Alle felter som ikke har samme indhold i alle markerede filer kan ikke redigeres fra begyndelsen, og viser ikke noget indhold over hovedet. + +For at ændre indhold i et felt, markeres afkrydsningsfeltet Aktivér hvis den ikke allerede er det, og feltet redigeres på almindelig måde. + +Når du er færdig, venstreklikkes i listevisningen igen og så bliver du bedt om at gemme ændringerne. Dialogen viser en liste med filer som påvirkes, så du har en mulighed for at kontrollere at du virkelig ændrede de filer du ville. + +Du kan udtrykkelig og umiddelbart gemme dine ændringer når som helst, med menupunktet MærkerGem eller ved at trykke på &Ctrl;T. + + + + + + +Fildialogen omdøb + + +Dialogen Omdøb fil + + + + + + Skærmaftryk af Fildialogen omdøb. + + + + + +Fildialogen omdøb bruges til at indstille handling Omdøb fil, som ændrer navne på sange baseret på den information der er indeholdt indeni dens metadata-mærker. Først ændres mærkerne ifølge de forskellige symboler du kan ændre, og så bruges symbolerne til at generere filnavnet ifølge Filnavnesystemet. + +Den vigtigste del af dialogen er afsnittet Filnavnesystem. Du kan skrive et filnavnesystem her som &juk; så vil bruge til at omdøbe filerne. Den måde det virker på er at visse tegn er specielle. + + + +%t +Dette bliver erstattet med Titel-symbolet ved evaluering. + + + + +%a +Dette bliver erstattet med Kunstner-symbolet ved evaluering. + + + + +%A +Dette bliver erstattet med Album-symbolet ved evaluering. + + + + +%T +Dette bliver erstattet med Spor-symbolet ved evaluering. + + + + +%c +Dette bliver erstattet med Kommentar-symbolet ved evaluering. + + + + + + +Hvert symbol kan indeholde %s, som bliver erstattetmed det egentlige mærke, og en vilkårlig tekst du ønsker, inklusive skråstreg (/). Hvis et symbol har en skråstreg, så vil det indikere en mappe-adskiller. Det vil naturligvis være muligt blot at skrive mappe-adskillerne direkte i linjen i Filnavnesystemet. + +Brug af symboler tillader os imidlertid fuldstændigt at ignorere mærker der er tomme. Hvis du markerer feltet Behøver værdi, så vil symbolet blive ignoreret hvis det tilsvarende mærke er tomt. For eksempel kan du bruge dette til at adskille filer med kommentarer fra dem uden, ved at placere noget såsom har-kommentar/%s i editoren Kommentar-symbol. + +Du kan teste dit filnavnesystem ved at bruge editoren Nuværende filnavn for neden i dialogen. Indskriv et filnavn på en musik-fil, så vil området Nyt filnavn vise hvordan &juk; ville omdøbe filen, givet de nuværende indstillinger. + + + +Indstillingsdialogen til mærkegætning + + +Dialog til indstilling af mærkegætter + + + + + + Skærmaftryk af mærkegætterens indstillingsdialog. + + + + + +Mærkegætterens indstillingsdialog bruges til at indstille kommandoen Gæt ud fra filnavn. + +I dialogen vil du se en liste til venstre med forskellige mønstre for filnavnesystem. &juk; inkluderer et ekstensivt sæt standardmønstre der matcher de mest almindelige behov. Hvis du har lyst til at tilføje en ny, så klik på Tilføj-knappen, og indskriv dit system og klik på O.k.. Du kan bruge de samme procent-symboler som defineret i Dialogen indstilling af Omdøb. + +&juk; vil prøve de systemerr du har på listen én af gangen, startende for oven på listen. Det første system som resulterer i en tilpasning vil blive det system der bruges til at gætte sangen mærker. Nogle sange kan matche mere end et system. Du kan sikre dig at det rigtige system matcher den første ved at vælge systemet i listens felt og så bruge piletasterne til at flytte det til toppen af listen. + +Du kan også redigere eller fjerne et system fra listen. Vælg blot systemet på listen, og brug Ændr-knappen til at ændre systemet, eller Fjern-knappen til at fjerne systemet fra listen. + + + +Den avancerede søgedialog + + +Avanceret søgedialog + + + + + + Skærmaftryk af den avancerede søgedialog. + + + + + +Den avancerede søgedialog bruges til at lave Søgespillelister. den tillader dig at lave en finkornet søgning mellem alle de forskellige mærker i din samling af sange. + +For oven i dialogen, kan du indskrive navnet på din søgespilleliste. Derpå kan du definere dine søgekriterier i gruppen Søgekriterier. + +For oven i gruppen Søgekriterier er der to radioknapper, Match nogen af følgende og Match alle de følgende. Hvis du vælger Match enhver af de følgende, så vil enhver tilpasning til en af betingelserne du definerer inkludere sangen i spillelisten. Ellers skal alle betingelser du definerer matche for at inkludere sangen i spillelisten. + +Under radioknapperne er betingelsesdefinitionerne. Du kan tilføje flere betingelser ved at bruge Mere-knappen, og fjerne betingelser ved brug af Færre-knappen. Enhver betingelse du efterlader blank bliver ignoreret, så du behøver ikke at bruge Færre for at eliminere tomme betingelser. + +Hver betingelsesdefinition har tre dele: Mærkevælgerlisten til venstre, den matchende stilliste til højre og søgeteksten i midten. Mærkevælgeren lader &juk; vide hvilket mærke du ønsker at søge efter teksten i. Hvis du vælger det specielle mærke "<Alt synligt>", så vil ethvert mærke som du kan se i samlingslisten kunne blive brugt til at matche søgeteksten. + +Matchstillisten lader &juk; vide hvilken søgningsmetode der skal bruges. Søgemetoderne du kan bruge er som følger: + +Normal matchning +Dette er standard matchende stil. Den søger efter den givne tekst hvorsomhelst i det valgte mærke, ignorerende versaltype. For eksempel vil en søgning efter mode i kunstnermærket passe med Depeche Mode. + + + +Versalfølsom +Denne søgning er ligesom Normal, bortset fra at søgningen skal matche den nøjagtige versaltype af teksten. + + + +Mønster-matchning +Dette er den kraftigste søgemetode. Søgeteksten du skriver vil definere et regulært udtryk der bruges til at søge indeni mærket. Regulære udtryk går ud over omfanget af denne dokumentation,men programmet &kregexpeditor; kan hjælp dig med at lave et regulært udtryk. &juk; bruger &Qt;'s stil for regulære udtryk. + + + + + + +Vælg blot de betingelser du ønsker at inkludere i din søgning, og klik på O.k. for at lave din søgespilleliste. + + + + +&juk;'s omslagshåndtering + +&juk; 2.3 (en del af &kde; 3.5) indeholder forbedret kode for håndtering af omslag hvilket introducerer nogle nye muligheder for brugere sammenlignet med &juk; 2.2 (som levereredes med &kde; 3.4). Den kan også ændre arbejdsstrømmen noget for dig hvis du er vant til hvordan omslag håndteredes i &juk; 2.2. Lad os altså først repetere hvordan det var tidligere. + + +Hvordan omslag fungerede i &juk; 2.2 + +I &juk; 2.2 var et spors omslag hårdt knyttet til informationen om dets kunstner og album. Selvom det viste sig at være nyttigt nok, og havde nogle fordele, var det ikke en perfekt måde at organisere omslagene. Hvis man ville bruge et omslag til et andet spor, var man enten tvunget til at skifte navn på sporets mærker, eller duplikere omslaget, og sløse med harddiskplads. Og hvis sporet ikke havde nogen information om kunstner eller album, forhindrede &juk; at man angav et omslag, eftersom der ikke fandtes nogen information at knytte det til. Det fungerede, men kunne have været bedre. + + + + + +Hvordan omslag fungerer i &juk; 2.3 + +I &juk; 2.3 blev koden lavet om til at tilføje en komponent i kernen som har ansvaret for omslagsbilleder. I stedet for at kigge på harddisken efter en billedfil med et specifikt navn som i &juk; 2.2, kobler omslagshåndteringen i &juk; 2.3 hvert omslag sammen med et identifikationsmærke, og bruger derefter dette mærke med din musik. Dette er stadigvæk ikke perfekt, men det fungerer og kan spare tid, samtidigt med at det tillader at flere ting kan gøres. + + + +Eksempel på at tilføje omslag + +Som et eksempel, lad os antage at du ville angive et omslag for spor som du netop har rippet fra en cd. Vi bruger Alabama - Greatest Hits III til denne beskrivelse. I &juk; 2.2 kunne du markere nogle af sporene, og importere et omslag fra internettet ved at højreklikke på sporet og bruge kommandoen Mærkning Omslagshåndtering Hent omslag fra internettet . Som en bivirkning af hvordan &juk; virkede , blev omslaget med det samme brugt til alle sporene på Alabama - Greatest Hits III, det være sig om du havde lyst eller ej. + +I &juk; 2.3 er proceduren nøjagtigt den samme, med en undtagelse. Du skal først markere alle de spor som du ønsker at omslaget skal gælde. Du skulle altså markere alle spor på Alabama - Greatest Hits III inden du bruger kommandoen Hente omslag fra internettet. Eller vis du kun vil angive et omslagsbillede for halvdelen af sporene, skal du kun markere halvdelen af sporene inden du udfører kommandoen Hent omslag fra internettet. Bekymr dig heller ikke om at duplikere omslag: &juk; er smart nok at genbruge samme billede, så du får ikke 14 duplikerede .png-billeder som roder rundt omkring på harddisken. + + + + +Genbrug gamle omslag + +Men hvad sker der hvis du glemmer at markere alle spor du ville give et mærke? Du kunne markere dem og gentage processen, men det ville efterlade et duplikeret omslag på harddisken eftersom &juk; ikke hurtigt kan afgøre at omslaget du finder er det samme som det du allerede har. Men det er intet problem, eftersom du kan bede &juk; om at bruge omslaget fra et andet spor. + +Der er to måder at gøre dette: + +1. Åbn dialogen Omslagshåndtering med menuen Mærkning (Mærkning Omslagshåndtering Vis omslagshåndtering). Omslagshåndteringen viser en liste til højre med alle omslag som &juk; kender til, og efter de er indlæst kan du hurtigt reducere listen med søgelinjen længst oppe, eller ved at bruge listen med kunstnere til venstre. Når du ser omslaget du vil bruge, kan du trække og slippe det på et spor for at får det til at gælde. Det skulle ske næsten med det samme, eftersom &juk; genbruger samme omslag (og du ser desuden omslaget mens du trækker det). Desværre kan det tage en stund at indlæse omslagene i begyndelsen, og omslagshåndteringen er ikke nyttig for meget andet udover dette. + +2. Jeg foretrækker at bruge denne metode eftersom den er temmelig nem. Alt du behøver at gøre er at dobbeltklikke på et spor som har omslaget du vil have, for at begynde at spille det. Det gør at omslaget vises på linjen Spiller nu, og du kan trække og slippe omslaget på sporet som du vil ændre lige som du ville have gjort med omslagshåndteringen. + + + + + +Træk omslag til mere end et spor af gangen + +Bemærk også at du kan bruge træk og slip til hurtigt at angive omslag for mere end et spor. Markér blot sporene du ønsker at omslaget skal gælde, og træk omslaget til et af de markerede spor. + + + + +Hvad sker der med mine gamle omslag? + +Du undrer dig måske over hvad &juk; gør hvis du allerede har omslag fra &juk; 2.2. Det der sker er at &juk; automatisk konverterer de gamle omslag og sammenfletter dem i omslagshåndteringssystemet. + +Eftersom det er en tidskrævende proces, sker det ikke på en gang. I stedet konverteres kun de gamle omslag når omslaget behøver at vises på skærmen. Når konverteringsprocessen udføres, genkender &juk; de spor som skulle have vist omslaget som konverteres, og lader automatisk det nye omslag gælde for disse spor. Slutresultatet er at det ikke skulle opstå nogen synlige ændringer. &juk; beholder samme omslag som sporene altid har haft, bortset fra at du nu med det samme kan drage fordel af de nye funktioner for omslagshåndtering. + + + + +Fjern omslag + +En anden bivirkning er at du nu kan fjerne et omslag fra et spor uden samtidigt at fjerne det fra alle andre spor med samme kunstner og album. + +I &juk; 2.3 tager kommandoen for fjernelse af omslag kun omslagene væk fra de markerede spor. + + + + +Forslag til brug: + +1. Du kan nu bruge samme omslag for spor med albummer som har Disk 1, Disk 2, osv. hvilket du ikke kunne gøre i &juk; 2.2 uden at duplikere omslaget. + +2. Brug af et generelt omslag for spor hvis du simpelthen skal have et omslag for alle spor, eller hvis du har musik som ikke er udgivet som et album, men passer godt i en genre. Du kunne oprette et omslag for denne musiktype og bruge det for sangene det drejer sig om. + + + + + + + + +Værktøjslinjen i &juk; + + +Hovedværktøjslinjen + + +Værktøjslinjen i &juk; + + + + + +Værktøjslinjen i &juk; + +Værktøjslinjen i &juk; + + + +Fra venstre til højre i skærmaftrykket ovenfor, er ikonerne i standardværktøjslinjen følgende: + + + +Ny +Lav en ny spilleliste. Hvis du holder knappen nede, vil en menu komme frem der tillader dig at vælge de forakellige slags spillelister der skal laves. + + Tom spilleliste... + Dette beder dig om et spillelistenavn, og indsætter det så i spillelistevisningen. Spillelisten starter med at være fuldstændig tom. + + + Spilleliste ud fra mappe... + Dette beder dig om en mappe der skal åbnes, og laver så en spilleliste der indeholder den musik, der er i denne mappe og undermapper. Navnet på den nyoprettede spilleliste er det samme som navnet på den valgte mappe. + + + Søgespilleliste... + Dette får den avancerede søgedialog frem, og tillader dig at lave en virtuel spilleliste. Enhver sang i din samlingsliste der matcher søgekriterier som du angiver i den avancerede søgedialog bliver tilføjet til den nye spilleliste. Når din samling ændrer sig, ændrer den nye spilleliste sig også. For eksempel, hvis du laver en spilleliste med alle dine Kim Larsen sange, og så tilføjer endnu en Kim Larsen sang til din samlingsliste, så vil den også vise sig i Kim Larsen spillelisten uden at du skal gøre noget for at dette skal ske. + + + + + + + +Åbn +Tilføj en fil til samlingslisten (hvis den er aktiv) eller til den markerede spilleliste. Tilføjes en fil til en spilleliste, tilføjes den også automatisk til samlingslisten, men ikke omvendt. + + + +Gem +Gem den markerede spilleliste. For at gemme et mærke som du har redigeret, vælges enten et andet objekt, eller der trykkes i stedet på &Ctrl;T. + + + +Klip +Hvis en spilleliste eller sang er markeret, klippes (fjernes) den fra listen. Hvis mærkeeditoren er aktiv, virker det som klip i en hvilken som helst editor, og fjerner den markerede tekst, men beholder en kopi i klippebordet. + + + +Kopiér +Hvis mærkeeditoren er aktiv, virker dette som kopiér i en hvilken som helst editor, og placerer en kopi af den markerede tekst i klippebordet. +Hvis du bruger kopiér for en sang i samlingslisten, tilføjes dens &URL; til klippebordet, så du kan indsætte den. Du vil for eksempel kunne indsætte &URL;'en i en teksteditor, &konqueror; eller en anden spilleliste. + + + +Indsæt +Hvis du enten klippede eller kopierede en &URL; tidligere fra samlingslisten, kan du indsætte den igen i en ny spilleliste. Du kan også indsætte en &URL; som du har kopieret fra &konqueror; eller et andet program. Hvis du bruger mærkeeditoren, indsættes teksten fra klippebordet i det markerede felt. + + + +Vis søgelinje +Vis eller skjul søgelinjen. + + + +Vis mærkeeditor +Vis eller skjul mærkeeditoren. + + + +Afspilningsknapper + +De virker som for alle almindelige mediespillere som du måtte være stødt på. Knapperne er Spil, Pause, Stop, Gå tilbage til foregående sang og Gå fremad til næste sang. +Der er også en skyder, som viser hvor længe (relativt) den nuværende sang er spillet. Du kan trække skyderen med musen for at gå fremad eller tilbage i et spor. +Endelig er der en lydstyrkekontrol. Som man kunne forvent, øger og sænker den lydstyrken. Højt er til højre, og lavt til venstre. + + + + + + +Søgelinjen + +Søgelinjen lader dig lede efter en sang i samlingslisten eller en spilleliste hurtigt. + +Ved helt enkelt at indtaste en tekst i søgelinjen, mindskes den synlige liste med sange til de som indeholder teksten i en søjle som vises. Tryk på Enter vil starte afspilning af den første der matcher i spillelistens visning. + +Søgningen begynder med det samme når teksten skrives ind i søgefeltet. Søgningen er inkrementel, det vil sige når du skriver hvert tegn i tekstfeltet, begrænses søgningen yderligere. Det er nyttigt til for eksempel at finde en sang hvor du kun husker en del af navnet. + +Hvis du gerne vil lave en mere finkornet søgning, kan du klike på den avancerede søgeknap til højre for søgelinjen, hvilket vil tillade dig at oprette en virtuel spillelist. Hvis du gerne vil annullere søgningen, kan du blot klikke på Ryd-knappen til venstre for søgelinjen. + + + + + + +Menu og kommandoreference + + +Menuer + + +<guimenu +>Fil</guimenu +>menu + + + +&Ctrl;N FilNyTom spilleliste.. + +Opret en ny spilleliste + + + + +&Ctrl;D FilNySpilleliste ud fra mappe... + +Opretter en ny spilleliste, der indeholder alle musikfilerne i en mappe og dens undermapper. Enhver musik indeni spillelister som &juk; genkender vil også blive tilføjet. + + + + +&Ctrl;F FilNySøgespilleliste... + +Laver en ny søgespilleliste. + + + + + &Ctrl;O Fil Åbn... + +Vælg en fil (eller filer) som skal tilføjes til samlingslisten. Hvis du vælger en spillelistefil, vil hver fil i spillelisten blive tilføjet. + + + + +Fil Tilføj mappe... + +Vælg en mappe (eller mapper) som skal tilføjes til samlingslisten. Mapperne gennemsøges så snart &juk; startes, eller punktet Fil Genindlæs vælges. + + + + +Fil Omdøb... + +Omdøb en spilleliste. + + + + +Fil Duplikér... + +Opret en duplikeret spilleliste ud fra den markerede spilleliste, og bed efter et nyt navn. + + + + +Fil Genindlæs + +Genindlæser mærkeinformation for hver fil i den valgte spilleliste. + + + + +Fil Fjern +Fjern den markerede spilleliste. + + + +&Ctrl;S FilGem + +Gem den markerede spilleliste. + + + + +FilGem som... + +Gem den markerede spilleliste med et nyt navn. + + + + + + + +<guimenu +>Redigér</guimenu +>-menuen + + + + +Redigér Ryd + +Fjerner de markerede sange fra spillelisten. + + + + + + + +<guimenu +>Vis</guimenu +>-menuen + + + +Vis Vis søgelinje + +Dette er en handling der skifter mellem om Søgelinjen vises eller ej. + + + + +Vis Vis mærkeeditor + +Dette er en handling der skifter mellem om Mærkeeditoren vises eller ej. + + + + +Vis Vis historik + +Dette er en handling der skifter mellem om Historikspilleliste vises eller ej. + + + + +VisVisningstilstandeStandard + +Skifter til Standard visningstilstand. + + + + +VisVisningstilstandeKompakt + +Skifter til Kompakt visningstilstand. + + + + +VisningVisningstilstandeTræ + +Skifter til Trævisningstilstand. + + + + + + + +<guimenu +>Afspiller</guimenu +>-menu + + + +AfspillerTilfældig afspilning + +Dette er et valg der kontrollerer indstillingen for tilfældig afspilning. Hvis tilfældig afspilning er aktiveret, så vælger &juk; en sang tilfældigt ud fra den nuværende spilleliste når den sang der spilles nu er forbi. + + + + +AfspillerSpilleliste i løkke + +Dette er et valg der kontrollerer indstillingen for afspilning i løkke. Hvis afspilning i løkke er aktiveret, så vil &juk; starte forfra når den sang der spilles nu er forbi. + + + + +AfspillerSpil + +Denne kommando starter afspilning af den sang der er valgt nu, eller genoptager afspilning af sangen hvis den holdt pause. + + + + +AfspillerPause + +Denne kommando holder pause i den sang der afspilles nu. Brug Spil-kommandoen for at genoptage afspilningen. + + + + +AfspillerStop + +Denne kommando stopper afspilning af den sang der spilles nu. Du kan ikke genoptage afspilning fra dens nuværende position efter det. + + + + +AfspillerForrige spor + +Denne kommando afspiller sangen der spillede lige før den sang der spilles nu. + + + + +AfspillerNæste spor + +Denne kommando springer videre til den næste sang på spillelisten. + + + + + + + +<guimenu +>Mærker</guimenu +>-menu + + + + +CtrlT MærkerGem + +Denne kommando gemmer alle ændringer af de mærker du redigerede. Normalt gemmes ændringer ikke før du afvælger den fil du er ved at redigere. + + + + +MærkerSlet + +Denne kommando sletter de filer der er valgt nu fra samlingslisten og enhver spilleliste der indeholder den, og den sletter den valgte fil fra disken. + + + + +CtrlF MærkerGæt mærkeinformationFra filnavn + +Denne kommando forsøger at gætte mærkerne for de valgte filer ved at skanne filnavnet. Du kan indstille det mønster der bruges til at gætte ved at vælge Opsætning Mærkegætter..., hvilket åbner for Mærkegætterens indstillingsdialog. + + + + +CtrlI MærkerGæt mærkeinformationFra internet + +Denne kommando forsøger at gætte mærkerne for de valgte filer ved at bruge trm som kommer med MusicBrainz. + + + + + + + + +<guimenu +>Opsætnings</guimenu +>menu + + + + +OpsætningVærktøjslinje Vis hovedværktøjslinje + +Denne kommand viser eller skjuler Hovedværktøjslinjen. + + + + +OpsætningVærktøjslinjer Vis spilleværktøjslinje + +Denne kommando viser eller skjuler Spilleværktøjslinjen. + + + + +Opsætning Vis opstartsskærm ved Opstart + +Dette er et skiftevalg. Hvis det er aktivt vil &juk; vise en informationsskærm ved opstart mens denindlæser din musiksamling. + + + + +Opsætning Dok i statusfelt + +Dette er et skiftevalg. Hvis det er aktivt vil &juk; vise en ikon i dit statusfelt. Du kan bruge statusikonen til at finde ud af om &juk; spiller, og kontrollere afspilningen. + + + + +Opsætning Forbliv i statusfelt ved lukning + +Dette er et skiftevælg. Hvis det er aktivt, &juk; vil fortsætte med at køre når du lukker hovedvinduet. Dok i statusfelt skal også være aktiveret. For at afslutte &juk;, bruges kommandoen Fil Afslut fra hovedvinduet, eller Afslut-kommandoen fra statusfeltets sammenhængsafhængige menu. + + + + +Opsætning Pop sporannoncering op + +Dette er et skiftevalg. Hvis det er aktivt, vil &juk; vise en indikator når en sang afspilles, med information om kunstneren og titlen, og med knapper der tillader dig hurtigt at skifte til en anden sang. Dok i statusfeltet skal også være aktivt. + + + + +Opsætning Mærkegætter... + +Denne kommando får Mærkegætterens indstillingsdialog frem, hvor du kan ændre de mønstre der bruges til at gætte mærkeinformation ud fra filnavne. + + + + +Opsætning Fileomdøber... + +Denne kommando får Filomdøberens indstillingsdialogfrem, hvor du kan ændre den måde &juk; omdøber filer for dig. + + + + +Opsætning Indstil genveje... + +Dette får &kde;'s standarddialog frem, hvor du kan indstille tastaturgenveje for &juk;. Nogle rimelige standarder er også inkluderet, inklusive Multimedie-taster for folk der har multimedie-tastaturer. + + + + + + + + + + +Tastebindingsreference + + + + + + +Tastekombination +Handling + + + + +&Ctrl;A +Markér alle + + +&Ctrl;C +Kopiér + + +&Ctrl;R +Omdøb filer + + +&Ctrl;I +Gæt mærker ud fra internettet. + + +&Ctrl;G +Gæt mærke ud fra filnavn. + + +&Ctrl;F +Ny søgespilleliste. + + +&Ctrl;G +Gæt mærkeværdier baseret på filnavn + + +&Ctrl;N +Ny tom spilleliste + + +&Ctrl;D +Ny spilleliste ud fra mappe. + + +&Ctrl;T +Gem ændringer af redigerede mærker. + + + + + + + + + +Medvirkende og licens + +&juk; ophavsret © 2002, 2003, 2004 &Scott.Wheeler;. + +&juk; udvikles og vedligeholdes af &Scott.Wheeler; &Scott.Wheeler.mail;.. + +Mange tak til følgende personer som har bidraget til &juk;: + + +&Daniel.Molkentin; &Daniel.Molkentin.mail; for dokning i statusfeltet, mærkeeditering indlejret, fejlretninger, missionering, moralsk støtte. + +Tim Jansen tim@tjansen.de for overførsel til GStreamer + + +Stefan Asserhäll stefan.asserhall@telia.com for global støtte af tastegenveje. + + +Stephen Douglas stephen_douglas@yahoo.com for sporannoncerings popopper. + + +&Frerich.Raabe; &Frerich.Raabe.mail; for automagisk gætning af spordata og fejlrettelser. + + +Zack Rusin zack@kde.org for flere automagiske ting, inklusive støtte for MusicBrainz. + + +Adam Treat manyoso@yahoo.com for medstuderen af MusicBrainz. + + +Matthias Kretz kretz@kde.org for at være naboskabets venlige &arts;-guru. + + +Maks Orlovich maksim@kde.org for at gøre &juk; venligere overfor folk med terabytes af musik. + + +Antonio Larrosa Jimenez larrosa@kde.org for &DCOP;-grænsefladen. + + + + +Dokumentation ophavsret © 2003, ved &Lauri.Watts;, og ophavsret © 2004 ved Michael Pyne. + +&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; + +&documentation.index; + +
+ diff --git a/tde-i18n-da/docs/tdemultimedia/kaboodle/Makefile.am b/tde-i18n-da/docs/tdemultimedia/kaboodle/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kaboodle/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/kaboodle/Makefile.in b/tde-i18n-da/docs/tdemultimedia/kaboodle/Makefile.in new file mode 100644 index 00000000000..71bd3dc5297 --- /dev/null +++ b/tde-i18n-da/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 = da +#>- 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-da/docs/tdemultimedia/kaboodle/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/kaboodle/index.cache.bz2 new file mode 100644 index 00000000000..56a3e380d9a Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/kaboodle/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/kaboodle/index.docbook b/tde-i18n-da/docs/tdemultimedia/kaboodle/index.docbook new file mode 100644 index 00000000000..c85ddf6716b --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kaboodle/index.docbook @@ -0,0 +1,96 @@ + +kaboodle"> + + + +]> + + + + +&kappname;-håndbogen + + +
+
+
+&erik.kjaer.pedersen.role; +
+ +&FDLNotice; + + + +2000-09-02 +0.00.00 + + + + +&kaboodle; er &kde;'s hurtigmedieafspiller til at afspille en enkelt fil. + + + + +KDE +Kapp + + +
+ + Indledning Desværre, dokumentationen til &kappname; var ikke færdiggjort da &kde; blev installeret på denne computer. Hvis du har brug for hjælp, så se efter opdateringer på &kde;'s hjemmeside eller send dit spørgsmål til &kde;-brugerpostlisten. &kde;-holdet &underFDL; + +&documentation.index; +
+ + diff --git a/tde-i18n-da/docs/tdemultimedia/kaudiocreator/Makefile.am b/tde-i18n-da/docs/tdemultimedia/kaudiocreator/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kaudiocreator/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/kaudiocreator/Makefile.in b/tde-i18n-da/docs/tdemultimedia/kaudiocreator/Makefile.in new file mode 100644 index 00000000000..b624285966c --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kaudiocreator/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/kaudiocreator +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 = da +#>- 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/kaudiocreator/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/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/kaudiocreator/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kaudiocreator/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)/kaudiocreator + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/$$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/kaudiocreator/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kaudiocreator/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-da/docs/tdemultimedia/kaudiocreator/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/kaudiocreator/index.cache.bz2 new file mode 100644 index 00000000000..67e21592c3a Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/kaudiocreator/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/kaudiocreator/index.docbook b/tde-i18n-da/docs/tdemultimedia/kaudiocreator/index.docbook new file mode 100644 index 00000000000..b7b0dc9e455 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kaudiocreator/index.docbook @@ -0,0 +1,1674 @@ + +kaudiocreator 1.12"> + + + + +]> + + + + +&kaudiocreator;-håndbogen + + + +alan + +
desværre@ingen.e-mailingen e-mail, desværre.
+
+
+&erik.kjaer.pedersen.role; +
+ + +1999 +2007 +alan + +&FDLNotice; + + + +2007-01-15 +1.13 + + +&kaudiocreator; er et rippeprogram af lyd-cd'er for &kde;. + + + +KDE +kaudiocreator +cd +ripper + + +
+ + +Indledning + +&kaudiocreator; er et rippeprogram af lyd-cd'er for &kde;. Du kan nemt rippe dine lyd-cd'er som mp3- eller ogg-filer, eller andre formater, afhængig af hvilke indkodningsprogrammer du har installeret på systemet. + +&kaudiocreator; er en grænseflade for cdparanoia (til at rippe cd-data som wav-filer på harddisken) og mange indkodningsprogrammer som indkoder (komprimerer) disse wav-filer. For øjeblikket understøttes lame for mp3, oggenc for ogg og flac (tabsfri komprimering) direkte ved leverancen (du kan dog behøve at installere disse indkodningspakker fra din distribution). Men du kan tilføje flere indkodningsprogrammer til programmet (hvis du har installeret dem). + +I almindelighed er ripning af en lyd-cd en proces som består af to skridt: + først rippes cd-sporene eller sangene til computeren som wav-filer (tabsfrit, uden komprimering) og derefter + i et andre skridt komprimeres wav-filerne (oftest en pr sang) til mp3- eller ogg-format, eller til andre formater såsom det tabsfrie flac-formatet. + + + +&kaudiocreator; bruger cdparanoia til det første skridt, ripningen af cd'en. Næsten alle distributioner har en forkompileret pakke, så installér den hvis du ikke allerede har gjort det. + +Til det andet skridt skal lame (mp3), oggvorbis (for ogg) eller andre indkodningsprogrammer være installerede. Alle disse programmer sørges der som regel for med hvilken distribution af Linux du end har, så det er formodentlig ikke nødvendigt at kompilere noget selv. Du kan dog behøve at installere nogen af disse pakker. Du behøver kun at installere de indkodningspakker du behøver. Hvis du for eksempel ikke vil bruge flac, er der ingen grund til at installere det. + +Hvilket indkodningsprogram eller filformat skal man bruge? Kapitlet Hvilken indkodning skal man bruge giver en kort introduktion om indkodning, lydkvalitet og komprimeringsfaktorer. + +Nogle ord om kopibeskyttede cd'er: Som allerede nævnt, bruger &kaudiocreator; cdparanoia til at rippe lyddata fra cd'en. Dette program er ikke konstrueret til at bryde kopibeskyttelse. Så medmindre din cd- eller dvd-afspillers faste programmer kommer forbi denne beskyttelse, vil det mislykkes at rippe beskyttede lyd-cd'er. Under ingen omstændigheder kan &kaudiocreator; selv håndtere eller gå forbi nogen beskyttelsesmekanisme. Dette er dit problem: Køb helt enkelt ikke kopibeskyttede lyd-cd'er, så kommer markedskræfterne til at få sådanne uting til at tørre ud! + +Minsandten, læser du stadigvæk? Selvom du blot klikkede på hjælpeindgangen da du startede programmet første gang, og ikke havde nogen anelse om hvordan man fortsætter fra den tomme skærm og uvenligt korte menu (især hvis en lyd-cd ikke allerede var indsat i drevet da programmet blev startet)? + +Helt i orden, denne håndbog vil fortælle for dig hvordan du ripper en cd med dette program. Udover den sædvanlige forklaring af programmets kommandoer og indstillinger, er der et særligt afsnit med et fuldstændigt skridtvis eksempel. Først skal du lære dig hvordan man indstiller den generelle opsætning. Dette omfatter dit cd-drev (enhedsidentifikation), mappen for midlertidige filer, hovedmappen for resultater, hvor undermapper som navngives efter hvad du vælger fra cd-parametrene laves for hver cd, indkodningsprogrammet der skal bruges (såsom lame for mp3-filer og oggvorbis for ogg-filer), og blandt andre indstillinger hvis du vil bruge freedb til at hente data for cd'en fra internettet eller om du vil indtaste al data manuelt (paranoia, ikke cdparanoia :-)). +Mens opsætningen kun skal gøres en gang (du kan dog justere den så ofte du vil indtil du finder en indstilling som passer dig), kommer du derefter til at lære dig det daglige job at rippe en cd på harddisken. Det er (forhåbentligt) der du forstår og lærer at synes om grænsefladens enkle udgangspunkt, som du måske først står tvivlende overfor. + +En sidste bemærkning: &kaudiocreator; er et meget fleksibelt program som kan kalde mange indkodningsprogrammer. Derfor dækker håndbogen (for nærværende) ikke alle mulige kommandoer og indstillinger. Brug den som et udgangspunkt til selv at udforske programmet hvis du har behov for mere end det som dækkes her. Oftest kan mere information om indkodningsprogrammer (programnavn), som &kaudiocreator; kalder, opnås ved at starte en terminal og skrive man programnavn, programnavn -help, programnavn --help eller programnavn -h. + +Og nu: mor dig bare... + + + +Brugen af &kaudiocreator; + +Hvad er det vi taler om? Nå, du læser jo dette, så du har formodentlig allerede startet programmet. Det bør se cirka sådan her ud: + + + +Her er et skærmaftryk af &kaudiocreator; + + + + + + Skærmbillede af hovedvinduet i &kaudiocreator; + + + + +Hovedvinduet efter programmet er startet. + + +En kort liste med funktionerne i &kaudiocreator; + + + Kan indkode mange formater, afhængig af hvilke indkodningsprogrammer som du har installeret (mp3, ogg, flac, &etc;) + Kan hente cd-information fra freedb via internettet, eller du kan arbejde helt afkoblet, og indtaste alt i hånden + Kan tilføje mærker til filerne som laves, afhængig af hvilket format du indkoder til + Angiv mappenavn og sangnavn ifølge frit indstillelige kombinationer af cd-information + + + + + + +Kommandoreference + +Dette er kun en kortfattet liste med kommandoer i hovedvinduet. Se det fuldstændige skridtvise eksempel for flere detaljer om hvordan programmet bruges, og skærmaftryk med beskrivelser af programmets indstillingsfaneblade. + + +Hovedvinduet i &kaudiocreator; + + +Menuen <guimenu +>Fil</guimenu +> + + + +Fil Skub cd ud +Åbner drevet og skubber cd'en ud. + + + +Fil CDDB-opslag +Starter CDDB-opslag af cd-data ifølge indstillingerne under fanebladet Opslag i fanebladet CDDB. (Kan være lokal eller online. I det senere tilfælde skal du først forbinde til internettet.) + + + +Fil Redigér album... +Åbner albumredigeringsvinduet. + + + +Fil Markér alle spor +Markerer alle spor til behandling (ripning, og hvis indstillet, indkodning). + + + +Fil Afmarkér alle spor +Afmarkerer alle spor til behandling. + + + +Fil Rip markerede +Begynder at rippe, og hvis et kodningsprogram er valgt under fanebladet Kodningsindstilling i indstillingsdialogen, kodningen. + + + + &Ctrl;S Fil Rip markerede +Åbner en undermenu med en liste over tilgængelige kodningsprogrammer, så du kan rippe en markering med et andet kodningsprogram end det sædvanlige. Bemærk at kodningsprogrammet skal være indstillet under fanebladet Kodningsindstilling i indstillingsdialogen. + + + +Fil Fjern færdige job +Fjerner færdige job fra jobvinduet. + + + +Fil Indkod fil... +Åbner en filbrowser så du kan vælge en fil som allerede er rippet at indkode i stedet for først at rippe og derefter indkode en hel cd. + + + + &Ctrl;Q Fil Afslut +Afslutter &kaudiocreator;. + + + + + + + +Menuen <guimenu +>Opsætning</guimenu +> + + + +Opsætning Vis/Skjul værktøjslinje +Viser eller skjuler værktøjslinjen. + + + +Opsætning Vis/Skjul statuslinje +Viser eller skjuler statuslinjen. + + + +Opsætning Indstil genveje... +Åbner indstillingsvinduet for at indstille genveje (tastekoder) for menukommandoer. + + + +Opsætning Indstil værktøjslinjer... +Åbner indstillingsvinduet for at indstille værktøjslinjen. + + + +Opsætning Indstil meddelelser... +Åbner indstillingsvinduet for at indstille meddelelsestypen (såsom log, bip) for programbegivenheder (såsom færdig med cd-ripning). + + + +Opsætning Indstil &kaudiocreator; +Åbner hovedindstillingsdialogen i &kaudiocreator; med flere faneblade (såsom Indkodere, for indstilling af indkodningsprogrammer). Du skal gå herhen inden du kan bruge programmet med godt resultat! + + + + + + + +<guimenu +>Hjælpe</guimenu +>menuen +&help.menu.documentation; + + + + + +Hvilket indkodningsprogram og filformat man skal bruge: Om lydkvalitet, indkodningsprogrammer og komprimeringsgrader + +Hvilken indkodning skal man bruge? + +Hvis du ikke vil tabe lydinformation behøver du et tabsfrit lydformat. Udover flac er der andre såsom shorten eller monkey, som kan være tilgængelige i din distribution. Bagdelen er at komprimeringsgraden er lav og at næsten ingen kommercielle afspillere kan spille filerne. + +Blandt lydformater som taber information på grund af datakomprimering ifølge en psykoakustisk model, er mp3 og ogg de sædvanligste. I dag har ogg måske en vis fordel frem for mp3 i lydkvalitet ved lavere bithastigheder (op til 128 kbit/s), men over denne hastighed bliver forskellene mindre vigtige, eftersom begge indkodningsprogrammer producerer meget god lydkvalitet. + +I korthed: + +flac + + tabsfri komprimering + + fri + + meget god lydkvalitet (uden tab) + - lav komprimeringsgrad (formodentlig kun omkring 2,x) + - understøttelse i musikafspillere mangler (så vidt jeg ved) + + + +ogg + - tab af lydinformation (hvor meget afhænger af endelig bithastighed) + + fri + + god til meget god lydkvalitet (ved høje bithastigheder) + + høj komprimeringsgrad (afhængig af resultatets lydkvalitet) + - dårlig understøttelse i musikafspillere + + + +mp3 + - tab af lydinformation (hvor meget afhænger af endelig bithastighed) + 'ikke særlig' fri, lame levereres frit med de fleste distributioner, men der er licensproblemer + + god til meget god lydkvalitet (ved høje bithastigheder), men dog noget dårligere ved lave bithastigheder sammenlignet med ogg + + høj komprimeringsgrad (afhængig af resultatets lydkvalitet) + + god understøttelse i musikafspillere + + + +Som tidligere nævnt, er både mp3 og ogg lydformater hvor du til sidst taber lydinformation. Du kan ikke gå tilbage til originalen når du har mp3- eller ogg-filer. Du kan oprette wav-filer ud fra dem, og til og med brænde dem på en cd igen for at afspille dem på en cd-spiller (mens dvd-spillere som oftest kan spille både wav og mp3, men ikke ogg), men wav-filerne som laves ud fra mp3 eller ogg er ikke lige så gode som originalen. I virkeligheden, afhængig af dit hifi-system og komprimeringsgraden du valgte da du oprettede mp3- eller ogg-filerne, kan du måske end ikke høre nogen forskel. Hvis du imidlertid ikke vil tabe nogen lydinformation men alligevel vil komprimere dine wav-filer, bør du tage et kig på flac, shorten eller monkey. Men disse indkodningsprogram komprimerer ikke meget bedre end en faktor 2,x. + +Hvis du ikke er en absolut fanatiker vælger du formodentlig mellem ogg og mp3. Vælg: + +ogg - hvis du kun vil lytte til musikken via computeren eller en computerbaseret musikserver og/eller du allerede har en af de få afspillere som kan spille ogg. + +mp3 - hvis du derudover vil lytte til musik på andre enheder, såsom sædvanlige dvd-spillere, bærbare afspillere (USB-stænger, hukommelseskort, HD) eller særlige bilstereoanlæg. For øjeblikket, i begyndelsen af 2005, understøtter de fleste af disse enheder kun mp3-formatet. + +Kvalitetsmæssigt skulle begge lydformater være gode nok, afhængig af komprimeringsgraden du vælger. For mp3 (og formodentlig også for ogg) giver bithastigheden 128 kbit/s komprimeringsgraden 11 sammenlignet med de oprindelige wav-filerne som er opbevarede på cd'en. Det kan være godt på rejser, men er ikke tilstrækkeligt til et godt hifi hjemmesystem. Værdien 192 kbit/s er et godt kompromis til og med for hifi-systemet i dagligstuen. Det giver komprimeringsgraden 7,3. + +Allerede for flere år siden kunne end ikke eksperter skelne en 256 kbit/s mp3-fil fra cd-originalen, og det gjaldt en blindtest med et hifi-system som du formodentlig aldrig vil få råd til. Det reducerer stadigvæk rippepladsen for den oprindelige wav-fil med faktoren 5,5, hvilket er rigtigt godt. Du kan også bruge variable bithastigheder på de fleste moderne systemer. Så varierer indkoderen bithastighed afhængig af musikkens kompleksitet, ifølge dens psykoakustiske model. Indstillingen '--preset extreme' i lame laver en fil med variabel bithastighed (VBR) i modsætning til en konstant bithastighed (CBR) på 224 til 256 kbit/s, afhængig af musikkens kompleksitet. Dette komprimerer originalen med op til faktoren 6,3 og kan spilles på næsten alt som for øjeblikket findes på markedet. + +Hvis du ikke har yderst dyr udrustning (vi taler om titusindvis af kroner) og et yderst optrænet musikøre, kan du formodentlig ikke høre forskel mod den maksimale konstante bithastighed på 320 kbit/s, tro mig. Til og med den skulle give komprimeringsgraden 4,4. Indstillingen '--preset extreme' bruger forresten 320 kbit/s til komplekse dele af musikken, mens mindre kompleks musik komprimeres meget mere for at nå middelbithastigheden 224 til 256 kbit/s. + +En kort liste med lydkvalitetsparametre og resulterende komprimeringsgrad for lame (mp3) (tjek lame --help for flere): + '--preset extreme' = 224 til 256 kbit/s variabel bithastighed, komprimeringsgrad op til 6,3. Bruger op til 320 kbit/s for komplekse dele af musikken og meget mindre for mindre komplekse dele af en sang. Godt nok for hifi hjemmesystemet med høj kvalitet. Bedste valg! + '--preset extreme -b 256' = 256 kbit/s konstant bithastighed, komprimeringsgrad omkring 5,5. Bruger altid 256 kbit/s for komplekse og mindre komplekse dele af en sang. Godt nok for hifi hjemmesystem med høj kvalitet. + '-h' = 128 kbit/s konstant bithastighed fælles stereo, cirka komprimeringsgrad 11. 128 kbit/s for alle sangens dele. Godt nok til børnemusik, bærbare afspillere og, ja, bilstereoanlæg. Imidlertid ikke godt nok for bedre hifi hjemmesystemer. + + + + + + + +&CD;-Informationsparametre + +Informationen om cd'en som du skriver ind eller programmet automatisk henter fra freedb via internettet, er tilgængelig som en liste parametre i programmet, som kan tolkes af og bruges i &kaudiocreator; og indkodningsprogrammerne til at oprette mappe og filnavn, og/eller oprette mærker i sangfilerne. + +Når de bruges med indkodningsprogrammer skal du ofte bruge en kombination af flag fra indkodningsprogrammet og disse parametre her. Indkodningsprogrammets manual eller hjælp giver dig information om disse programmers flag. + +For eksempel for at tilføje cd-titlen i et mærke når mp3 indkodes med lame, skal du tilføje flaget -tt fra lame fulgt af titlens parameter fra &kaudiocreator;. Resultatet ser så ud som '... -tt {title} ...' . + +Her er en opsummering af parametrene i &kaudiocreator; som du kan bruge (= navnet på knappen i guiden): + + %{albumartist} - albummets kunstner (Kunstner) + %{albumtitle} - albummets titel (Album) + %{artist} - sangens kunstner (Sporets kunstner) + %{albumcomment} - kommentar om albummet (Kommentar) + %{comment} - kommentar om sang (Sporkommentar) + %{extension} - filendelse såsom mp3 eller ogg (Filendelse) + %{genre} - musikgenre (Genre) + %{title} - nuværende spors sangtitel (Sportitel) + %{number} - nuværende spors nummer (Spornummer) + %{~} - sædvanlig genvej til brugerens hjemmemappe i Linux (Hjemmemappe) + + + + + + +Hvad er freedb? + +Du er ikke alene om ønsket om at lytte til din musik uafhængig af din lyd-cd. Folk over hele verden ripper deres cd'er og konverterer dem til et andet format. Alle har samme erfaring: Den mest tidsrøvende del af processen er at indtaste cd-data. Nogle smarte folk fik idéen at det ville være meget effektivere hvis kun en person gjorde det for hver cd, og alle andre kunne hente cd-data og spare sig indtastningsarbejdet. + +Det er hvad freedb er. En fri database hvor rippere kan indsende information om en cd, så alle andre kan hente informationen i stedet for at indtaste den selv i computeren hver for sig. Bemærk at vi kun taler om tekst her: cd-titel, kunstner, sangens navn, osv., ikke selve lydfilen. + +Er det lovligt og sikkert at bruge? + +Ja, det skulle være lovligt, men jeg er ikke en jurist. Imidlertid kan ingen forhindre dig i at bruge cd-information som alligevel er åbent tilgængelig på cd'en. Endnu bedre er, at informationen er mere eller mindre meningsløs uden cd'en, så ingen skade kan gøres mod kunstneren eller musikforlaget. Du kan alligevel hente al information ved at besøge en cd-butik, fysisk eller på nettet. + +Sikkert at bruge? For at hente cd-information behøver du altså ikke at afsløre personlige data selv. Der er spejlsteder af freedb i mange lande og du kan til og med hente databasen hjem for at arbejde i afkoblet tilstand. (Advarsel, nu i begyndelsen af 2005 er den allerede en 370 Mbyte tar.bz2-fil!). Du bliver bedt om at indstille en e-mail-adresse for at hente data, men den kan være forfalsket. Jeg ville egentlig anbefale dette, for at sikre at din e-mail-adresse ikke ved en fejl slipper ud til offentligheden og slutresultatet bliver at du får mængder af spam. De som sørger for denne tjeneste hævder at de ikke sporer eller opbevarer data (så hvad er grunden til at de spørger alligevel?), og desuden er mange af spejlstederne i hænderne på pålidelige institutioner. + +Du skal aktivt markere et felt i &kaudiocreator; for at aktivere SMTP (for at sende en adresse) og du kan angive en anden (forfalsket) adresse at bruge med freedb, som adskiller sig fra den som systemet er indstillet med. Det synes som om at den måde indstillingen er designet, ikke bruger e-mail-adressen når data hentes fra serveren. (Men jeg er ikke programmøren, og har ikke kontrolleret koden.) + +For at kunne give tilbagemelding, beder initiativtagerne til freedb imidlertid om, at hvis du sender data ind (om en ny, endnu ikke listet cd eller en korrigering af en eksisterende indgang), skal du gøre det med en gyldig e-mail-adresse. Det er en udmærket tjeneste, så respektér dette ønske hvis du vil bidrage og har noget at bidrage med. Det skulle ikke være noget at bekymre sig om, bortset fra det faktum at din e-mail-adresse kan komme i forkerte hænder og du modtager (mere) spam. (Du vil måske ikke ønske at bruge din bedste adresse). Læs tilsvarende OSS og vejledninger på freedb.org hvis du tror at du har en cd hvis data endnu ikke er sendt ind til databasen. + +Der er spejlsteder af hoveddatabasen i mange lande. Når du indstiller &kaudiocreator; til at bruge freedb, så vælg et spejlsted nærmest dig. Dette sparer båndbredde på nettet og afbalancerer belastningen mellem serverne. + +Besøg freedb.org for at hente en nuværende liste med spejlsteder til at hente cd-information hver gang du ripper en cd, eller for at hente hele databasen eller (sædvanligvis månedsvis oprettede) opdateringer af databasen. + +Jaså, hvordan virker det? + +Afhængig af en del magi genereres en (ikke helt) entydig identifikation automatisk fra cd-data når den sættes ind eller er i drevet. Det kan være antal spor og deres længde og/eller noget andet. Se freedb.org for mere information. Mærkeligt nok, men desværre, synes identifikationen som laves ikke at være entydig for hver cd. Sommetider skal en cd sorteres ind i en forkert kategori af de 11 som defineres af freedb, eftersom der allerede findes en cd med samme nøgle i databasen i den rigtige kategori. For at fungere med eksisterende data vil de ikke ændre hvordan nøgler laves. Imidlertid bør dette kun ske i undtagelsestilfælde. Kontrollér kategorierne på freedb.org inden du sender noget ind. Kategorien Rock indeholder desuden pop og rap, og der synes ikke at være en kategori for pop eller rap. + + + + + +Spørgsmål og svar +&reporting.bugs; &updating.documentation; + + +Hvilket rippeprogram bruges til at rippe sangene fra cd'en som wav-filer på computeren? + + +Nå, jeg har ikke gennemsøgt kildekoden, men rygtet siger at cdparanoia bruges til det. Det har altid været det bedste valg til at rippe lyd-cd'er. Bemærk at du skal installere pakken cdparanoia fra din distribution, hvis det ikke allerede er gjort. +I mellemtiden er cdda2wav nået frem, og der kan være områder hvor det har gået forbi cdparanoia, såsom cd'er med blandet tilstand. For enkel ripning af cd'er, bruger cdda2wav nu samme biblioteker som cdparanoia. Denne informationen er imidlertid ikke så meget værd for dig, eftersom du ikke kan ændre cd-rippeprogrammet i &kaudiocreator;. Hvis du har problemer med at rippe en cd, og vil prøve cdda2wav, skal du bruge et andet program såsom grip, et program som bruger gtk, og som lader dig definere rippeprogrammet du vil bruge. + + + + +Hvilke indkodere og filformater understøttes? Kan jeg lave mp3- eller ogg-filer? + + +Du kan vælge indkodningsprogrammer og på den måde filformat som du vil forvandle de rippede wav-filer til. Når du først åbner det finder du fordefinerede indgange for lame (mp3), oggenc (ogg) og flac (et lydformat med tabsfri komprimering) i indstillingsfanebladet for indkodning, men du kan også tilføje andre indkodningsprogrammer i dette faneblad. +Bemærk at du først skal installere indkodningspakken fra din distribution for det indkodningsprogram som du vil bruge, inden du kan bruge det. (Dette kræves også for de fordefinerede indkodningsprogrammer!). Kig i kapitlet Hvilken indkodning for mere information om indkodningsprogrammer. +Efter installation af et indkodningsprogram kan du få mere information om dets flag ved at skrive noget i retning af lame -help eller lame --help i en terminal (fx konsole), hvor lame skal erstattes af navnet på indkodningsprogrammet som du har installeret. + + + + +Der er ikke meget som virker her, eller hvad? + + +Hmm, der er tusindvis af mulige grunde til det. Kontrollér indstillingen af cd- eller dvd-drevets enhedsidentifikation, adgangsrettigheder og læserettigheder og om du har installeret cdparanoia og lydindkoderen du har valgt (lame for mp3, oggenc for ogg, flac osv.). Forsøg at kalde begge fra kommandolinjen i en terminal. Det kan give dig et vink om hvad der er galt. +Åh, du forsøger vel ikke at rippe en kopibeskyttet lyd-cd, gør du? Kontrollér cd'ens omslag. Dette virker ikke! Dette er dit problem: Køb en ubeskyttet lyd-cd næste gang. +Der er et kapitel med et fuldstændigt skridtvis eksempel. Selvom du vil bruge andre indstillinger, kan det give dig vink om hvordan du kan fortsætte. + + + + + + + + +Eksempel fra første start over basale indstillinger til ripning af den første cd + +Har du læst hele håndbogen, forstået alting og er alligevel på en måde usikker på hvad du skal gøre? Nå, det er intet problem. Følg dette skridtvise eksempel så får du nok med information til at justere de områder som får programmet til at gøre nøjagtigt det du vil. + +I eksemplet starter vi programmet den første gang, indstiller alting, og ripper vor første cd. Vi bruger lame '--preset extreme' til at lave mp3-filer med variabel bithastighed (VBR), med mellem 224 og 256 kbit/s i middeltal, og ID3V1-mærker. + +Du skal have installeret cdparanoia og lame på systemet. Begge programmer skulle være tilgængelige som forkompilerede pakker for din distribution af Linux. Du skal måske bruge en søgetjeneste for at finde en passende pakke for lame, eftersom dette program sommetider ikke anses for at være helt frit. Under alle omstændigheder behøver du måske ikke at kompilere fra kildekode, noget som du naturligvis alligevel altid kan gøre. + +Strukturen som vi bruger til at organisere musikken på harddisken er: + Hovedmappenavn for alle cd'er: /usr/share/cd + I den en undermappe for hver cd som hedder: cdkunstner - cdtitel - år + I undermappen sangnavne: spornummer - sportitel + + +Sammenfattende: /usr/share/cd/cdkunstner - cdtitel - år/spornummer - sportitel +Sørg for at mappen /usr/share/cd findes og at du har skriverettigheder til den (forsøg f.eks. at kopiere noget til den med Konqueror). + +Eksemplet er opdelt i to afsnit: + Det første dækker grundlæggende indstilling af &kaudiocreator;, noget som du måske kun gør en gang, og + Det andet beskriver processen at lave selve ripningen af en cd, som du skal gentage for hver cd du ripper. + + + +Nu går vi i gang... + + + E 1 Grundlæggende indstilling + + Her indstiller vi indkoderen der skal bruges til at komprimere musikken (lame) og altså lydfilformatet (mp3) samt resultatets lydkvalitet(--preset extreme = +> variabel bithastighed 224 til 256 kbit/s). Du definerer hvor filerne havner og hvilken struktur der bruges til at rippe dem. Indstil programmet til at bruge freedb for at hente cd-data fra internettet, eftersom vi er dovne. + + Selvom du altid kan ændre nogle af indstillingerne, ændrer du dem formodentlig ikke hver gang du ripper en cd når du har fundet en bekvem indstilling. + + + + + + + E 1.1 Skridt 01: Indstil enhedsidentifikation for cd- eller dvd-drev/brænder + + + + + I hovedvinduet: + + + + + + + + + Skærmbillede af hovedvinduet i &kaudiocreator; + + + + + indstil Enhed: til /dev/cdrom + Enhedsidentifikationen tolkes for rippeprogrammet så det kan læse data og sange fra cd'en. + Ofte er /dev/cdrom et symbolsk link til drevet egentlige enhedsidentifikation. Hvis dette ikke virker, eller du har flere end et cd- eller dvd-drev, kan du angive nøjagtig enhedsidentifikation. Hvis du kan få adgang til enheden med andre programmer, så kig i /etc/fstab og forsøg med enhedsindgangene for cd-rom og/eller dvd-drev som listes der. + Ingenting der, uheldigt? + Hvis du kører version 2.6 af kernen: + Hvis du skulle have en af de sædvanlige &ATAPI; (eller IDE)-drev, kommer enhedsidentifikationen til at være i området fra /dev/hda til /dev/hdd. Hovedenheden på kanal 2 er et godt startpunkt: den er /dev/hdc. Hvis alle dine harddiske bruger S-ATA, gør /dev/hda at det lykkes. Indbyggede SCSI-drev begynder på /dev/sda hvis du ikke har S-ATA harddiske, som er først i listen, så afhængig af antal diske begynder cd- eller dvd-drevet på /dev/sdb eller /dev/sdc. + Hvis du kører version 2.4 af kernen: + Adgang til cd- og dvd-drev sker via SCSI, så enhederne begynder med /dev/sda. + + + + + + + + + + + E 1.2 Skridt 02: Indstillingsfanebladet Generelt + + + + + Opsætning -> Indstil Kaudiocreator... -> Generelt + + + + + + + + + Skærmbillede af indstillingsfanebladet Generelt i &kaudiocreator; + + + + + Indstillingsfanebladet Generelt. Ikke så meget at gøre her. Du vil dog kunne definere yderligere formatering. I vort eksempel, skriv blot ind eller efterlad alt som det vises på skærmaftrykket. + Markér blot Spørg hvis information ikke er fuldstændig så du bliver informeret om noget information om at oprette mærker ikke er tilgængelig. + + + + + + + + + + E 1.3 Skridt 03: Indstillingsfanebladet Cd + + + + + Opsætning -> Indstil Kaudiocreator... -> &CD; + + + + + + + + + Skærmbillede af indstillingsfanebladet Cd i &kaudiocreator; + + + + + Indstillingsfanebladet Cd. Markér blot begge indgange. Vi er dovne og ønsker at cd-data hentes automatisk via internettet fra en freedb-server. + Bemærk at du skal være online når du ripper cd'en for at kunne komme til freedb-serveren. + Det andet felt er bekvemt, eftersom hvis en cd-indgang findes, rippes cd'en med det samme. Dette er risikofrit, eftersom hvis du senere ikke er tilfreds med databaseindgangen og resulterende mappe- og filnavne eller mærkeindgange, kan du nemt ændre dem. Mappe- og filnavne med Konqueror -> Omdøb og ID3-mærker med kid3, KDE's mærkningsprogram. + En yderligere bemærkning udenfor dette eksempel: Hvis du vil indtaste alting i hånden, så afmarkeres felterne og så bruges freedb ikke. Du kan bruge freedb lokalt i afkoblet tilstand hvis du henter databasen i forvejen. Den er imidlertid mere end 370 MB, så overvej om det virkelig er det værd. For at bruge freedb i afkoblet tilstand, skal du markere felterne her, i det mindste det første. Tilstanden indstilles i følgende faneblad. + + + + + + + + + + E 1.4 Skridt 04: Indstillingsfanebladet CDDB Opslag + + + + + Opsætning -> Indstil Kaudiocreator... -> CDDB -> Opslag + + + + + + + + + Skærmbillede af indstillingsfanebladet CDDB Opslag i &kaudiocreator; + + + + + CDDB er freedb for os. Opsætningen som bruges til dataopslag, for at hente cd-informationen fra freedb-serveren via internettet. Hvordan ved systemet hvilke data som skal hentes? Læs afsnittet om freedb. Indstil kun alting som på skærmaftrykket. + Kort forklaring: + Tilstand: Vi har ikke hentet databasen, så vi vil kun arbejde med fjernserveren på internettet. + CDDB-server: VÆR SØD (ja, jeg insisterer!), at gå til freedb.org og slå et spejlsted op nær dig. På den måde balanceres belastningen mellem spejlserverne. Som et første forsøg skulle denne indstilling dog virke, men VÆR SØD... + Port og overførsel: Der er to kombinationer, som selv spejlsteder skulle forstå. + + Port=80 og Overførsel=&HTTP; + Port=8880 og Overførsel=CDDB + + Begge virker ens med hensyn til serveren, men eftersom mange brandmure normalt blokerer port 8880, kan du have større held med port 80, eftersom &HTTP;-porten oftest er åben for at kunne browse på internettet. + + + + + + + + + + + E 1.5 Skridt 05: Indstillingsfanebladet CDDB Indsend + + + + + Opsætning -> Indstil Kaudiocreator... -> CDDB -> Indsend + + + + + + + + + Skærmbillede af indstillingsfanebladet CDDB Send ind med &kaudiocreator; + + + + + I dette eksempel vil vi ikke sende cd-data til freedb-serveren. Afmarkér det første felt, og det skulle være alt. + En yderligere bemærkning udenfor dette eksempel: Hvis du finder en cd engang som endnu ikke er kendt af freedb-serveren, eller hvis du finder en fejl i en cd-indgang, kan du indsende ny eller opdateret information. Markér første felt længst oppe i fanebladet og brug derefter enten en e-mail-adresse som er kendt i dit system, og som &kaudiocreator; allerede har detekteret, eller vælg den nedre radioknap og skriv en ny e-mail-adresse ind. Læs først afsnittet om freedb. Du bliver bedt om at sørge for en e-mail-adresse når du indsender ny eller opdateret information til serveren, og du bør læse informationen på freedb.org om versionsnummerering når du indsender opdateret information i tilfælde af at du har fundet en fejl. + + + + + + + + + + E 1.6 Skridt 06: Indstillingsfanebladet Rip + + + + + Opsætning -> Indstil &kaudiocreator;... -> Rip + + + + + + + + + Skærmbillede af indstillingsfanebladet Rip i &kaudiocreator; + + + + + Overtag blot indstillingerne fra skærmaftrykket. (Sørg for at mappen /tmp findes på dit system!) + Lydsignal efter hver ripning er færdig: markér dette for at få en hørbar tilbagemelding af fremgangen. + Antal spor som skal opbevares på en gang: Kan desværre ikke tænke mig til en grund til at gøre mere end en med en enhed? Læsning og kodning parallelt? Ved det ikke, forsøg selv. + Skub automatisk ud cd efter sidste sang er rippet: Nå ja, så at du ved at det er færdigt. Gør som du vil. + Standard midlertidig mappe: Hvis du markerer det kan og skal du angive søgestien eller mappen hvor wav-filerne opbevares. Dette kan være praktisk hvis du kun har plads på et andet drev. Hvis det ikke markeres, laves filerne i din hjemmemappe. Husk søgestien hvis du vil gøre noget med selve wav-filerne. + + + + + + + + + + + E 1.7 Skridt 07: Indstillingsfanebladet Indkoder + + + + + Opsætning -> Indstil Kaudiocreator... -> Indkoder + + + + + + + + + Skærmbillede af indstillingsfanebladet Indkoder i &kaudiocreator; + + + + + Endelig indstillingen af indkodningsprogrammet. Vi bruger lame. Her har vi lidt mere at gøre: + Klik på Lame + Klik på knappen Indstil... + + + + + + + + Skærmbillede af Lame-indstilling i &kaudiocreator; + + + + + Puha, skriv alting ligesom på skærmaftrykket. Kommandolinjen er ganske lang, så du kan behøve at panorere lidt til højre. + Opsætningen er mere eller mindre selvforklarlig. Der er et mellemrum mellem '--preset' og 'extreme'. + '--preset extreme' definerer lydkvaliteten for mp3-filerne. Som tidligere nævnt er dette en indstilling for meget god lydkvalitet, tilstrækkelig selv for meget gode hifi stereosystemer. Resultatets bithastighed er omkring 224 til 256 kbit/s i middeltal. Den opnåede komprimeringsgrad er 6,3 . En god balance mellem lydkvalitet og pladskrav. Opbevaringsplads og hukommelse er billigt nu for tiden, ikke sandt? + Bemærk flaget '--id3v1-only' for at begrænse oprettede mærker til version 1- eller version 1.1-mærker. Slet det hvis du også vil have ID3V2-mærker. Programmet kid3 er et meget godt ID3-mærkningsprogram for &kde; ifald du senere vil behandle mærker. De interne variabler for inddatafilen (inklusive fuldstændig søgesti) og uddatafilnavnet (inklusive fuldstændig søgesti) skal være %f og %o . + Klik på O.k. for at lukke dialogen og anvende ændringerne. + Indkodet fils sted: Tilbage under indstillingsfanebladet Kodningsindstilling, definerer vi her resultatmappen inklusive mappenavnet for filerne fra cd'en som opbevares. Det er variabler som udfyldes med tilsvarende cd-data hver gang du ripper en cd. Data for cd'en kan indtastes manuelt eller hentes via internet (CDDB). Vi bruger freedb og henter data automatisk, hvilket allerede er indstillet i eksemplet. Leg med guiden, men tilsidst skal værdien være følgende for vort eksempel: + '/usr/share/cd/%{albumartist} - %{albumtitle} - %{year}/%{number} - %{title}.%{extension}' + Indstil resten som på skærmaftrykket. Nogle kommentarer om fremtidig brug udenfor selve dette eksempel: + Antal wav-filer som skal kodes samtidigt: Hvorfor skulle man ville kode mere end en wav-fil af gangen? Multiprocessorcomputerer? Nå, de dukker snart op, så hvis du allerede har en når du læser dette, så gør et forsøg. + Kodningsprioritet: For fanatikere, leg med den hvis du føler for det. Højere er hurtigere, antager jeg! + + + + + + Det er alt, vi er netop færdige med den grundlæggende indstilling af Kaudiocreator. Denne indstilling bruges normalt for alle cd'er som rippes. Hvis du har valgt en måde at organisere musikken forstandigt, kommer du aldrig til at behøve at ændre den igen. + + + + + E 2 Rip en cd + + Klar til at gå i gang! Dette afsnit beskriver rippeprocessen af en cd til harddisken. Vi vil oprette mp3-filer. Mappestrukturen, måden som musikken er organiseret på harddisken, blev beskrevet og indstillet i foregående afsnit. Forbind til internettet nu, eftersom vi er dovne og vil hente cd-data fra freedb. Processen som beskrives i dette afsnit skal gentages for hver cd som du vil rippe. + Eftersom vi bruger en cd som endnu ikke er listet i freedb, kan skærmaftrykkene se noget anderledes ud sammenlignet med dem som du støder på for en cd som kan hentes fra freedb. Derfor må du lære dig hvordan man indtaster cd-data i hånden i stedet for at hente dem fra internettet, men kommentarer vil blive gjort for at påpege forskellene. + Anstreng dig ikke altfor meget for at lede efter cd'en vi bruger i dette eksempel. Den er en af håndbogsforfatterens 'specialudgivelser'. Sørgeligt nok, kan man ikke rigtigt vide sådan noget nu om dage... + Nu går vi i gang... + + + + + + + E 2.1 Skridt 01: Rip en cd. + + + + + Hovedvinduet med en lyd-cd i drevet: + + + + + + + + + Skærmbillede af hovedvinduet i &kaudiocreator; med indsat cd + + + + + Hvis du ikke allerede har gjort det, så sæt cd'en ind i drevet med enhedsidentifikationen som du angav her i hovedvinduet. + Efter et kort øjeblik skulle spor og deres længde listes i vinduet, som på skærmaftrykket. Det vil sige hvis cd'en kunne identificeres som en lyd-cd og læses af cdparanoia. + Hvis det ikke sker, så kig i afsnittet Spørgsmål og svar for hjælp, eller gå tilbage til foregående afsnit som dækker den grundlæggende indstilling. + Bemærk: Hvis cd'en kunne hentes fra freedb, er alle sangtitler allerede udfyldte og over sporlisten vises kunstner og albumnavn. + Hvis der er mere end en indgang i databasen som svarer til den 'entydige' cd-nøgle for din cd, vises et meddelelsevindue og du kan vælge databaseindgangen som du tror passer bedst til din cd. + Hvis du ikke har markeret feltet for automatisk at spørge freedb (Cd-indstilling), kan du starte det manuelt med den første knap i værktøjslinjen. Hvis du ikke har en lokal database, men henter fra internettet, skal du være forbundet til nettet. + + + + + + + + + + + E 1.2 Skridt 02: Albumeditoren - Indtast albumdata og den første sangtitel + + + + + Dobbeltklik hvor som helst i den første blå markerede linje (spor 1): + + Albumeditorens vindue dukker op. + + + + + Skærmbillede af albumeditoren i &kaudiocreator; + + + + Indtast albumdata for cd'en ifølge mønstret på næste skærmaftryk. Sangtitlen på linjen Spor 1 i feltet Nuværendet spor, resten af informationen om cd'en i feltet Album. + Der er intet behov for at indtaste kunstneren i feltet med nuværende spor, med mindre du har en samlings-cd med forskellige kunstnere for hver sang. + Det øvre kommentarfelt kan bruges til individuelle kommentarer om hver sang, mens albumkommentarfeltet kan bruges til kommentarer som skal være de samme for alle sange. + Bemærk: Når du har hentet data fra freedb, er albumeditoren naturligvis ikke tom men indeholder allerede data som vises på følgende skærmaftryk. Det er imidlertid altid en god idé at åbne albumeditoren en gang for at kontrollere at du er tilfreds, ikke kun med kunstneren og albumnavnet (fx at alle ord begynder med store bogstaver eller ej...) men for at kontrollere om der er uønskede kommentarer. + + + + + Skærmbillede af indskrivning af titel for sang 1 og albumdata i &kaudiocreator; + + + + Bemærk: I dette eksempel bruger vi kun ID3V1-mærker. Det begrænser feltets længde til 30 tegn for kunstner, album og sangtitel og kun 28 tegn for kommentarfeltet. Hvis du vil oprette ID3V2-mærker kan du bruge ubegrænset feltlængde, ja i det mindste hvad &kaudiocreator; tillader her. Har ikke kontrolleret det. Du indstiller dette i indstillingsfanebladet for indkodning. Kig i afsnittet om grundlæggende indstillinger for mere om dette. + Du kan ændre mærkeinformation for de oprettede filer senere når som helst med en mærkeeditor. Kid3 er en god sådan for mp3-filer, som du også kan oprette ID3V2-mærker med. + Mærker understøttes måske ikke af alle indkodningsprogrammer og filformater. Kig i indkodningsprogrammets hjælp for mere information om dette. + + Efter at have klikket på O.k., dukker en bekræftelsesmeddelelse op: + + + + + Skærmbillede af bekræftelse ved ændring af albumdata i &kaudiocreator; + + + + Vi ændrede de generelle albumdata, så en meddelelse dukker op som spørger om vi vil lade ændringen gælde for de øvrige sange. Ja, det vil vi. Sparer en del arbejde. Klik på Ja. + Bemærk: Meddelelsesvinduet vises ikke hvis du for eksempel ændrer albumnavn i albumfeltet. Imidlertid er ændringen også gyldig for de andre sange. + + Og et andet meddelelsesvindue: + + + + + Skærmbillede af indstilling af albumkategori i &kaudiocreator; + + + + Vi bliver bedt om at vælge en musikkategori for albumnet. Bland ikke dette sammen med genren for ID3-mærkerne. Dette er de 11 kategorier som er definerede af freedb til at sortere cd-identifikationer i forvejen. Eftersom vores cd ikke findes i nogen database (hvordan skulle den kunne være det, med den måde vi bruger programmet), skal vi vælge en så hvis vi vil sende cd-data ind, kommer det til at blive sorteret rigtigt i freedb-databasen. + Vælg blot en af indgangene som synes at stemme med stilen for cd'en som du ripper. Det er ikke vigtigt for dette eksempel, vi indsender alligevel ikke cd-data. For mere information, gå til freedb.org og læs om kategorierne. Pop eller rap listes for eksempel under Rock. + Efter du har klikket på O.k. kommer du tilbage til hovedvinduet igen. Dobbeltklik blot på det andet spors linje. + Igen dukker albumeditorens vindue op og du kan se at albumfeltet allerede er udfyldt med data som blev skrevet ind for det første spor. Skriv kun feltindgangene i feltet for nuværende spor. Definitivt sangtitlen og øvrig information hvis du vil. + Klik på næste linje på hovedskærmen og fortsæt på samme måde til du har skrevet spordata ind for alle spor på cd'en. + Bemærk: Dette meddelelsesvindue vises ikke hvis du har hentet data fra freedb. Det blev allerede sorteret ind i en af kategorierne i databasen. + + + + + + + + + + + E 2.3 Skridt 03: Begynd at rippe + + + + + Klik på knappen Rip markerede som vises på skærmaftrykket + + + + + + + + + Skærmbillede når rippeprocessen påbegyndes i &kaudiocreator; + + + + + Det er den tredje knap i værktøjslinjen. Bemærk at kunstner og album vises over sporlisten. + Bemærk desuden at nu er der en markering udfor hvert spor. Kun de spor som er markerede på denne måde vil blive behandlet. Et enkeltklik på sporlinjen ændrer sporets markering. Sørg for at alle spor er markerede eller brug knappen Markér alle spor længst nede på skærmen (vises ikke på skærmaftrykket) for at markere alle spor på en gang. + + + + + + + + + Skærmbillede af meddelelse om at job er startet i &kaudiocreator; + + + + + Når du har startet rippeprocessen ved at klikke på knappen Rip markerede, dukker dette bekræftelsesvinduet op. Klik på O.k., og derefter kigger vi på jobvinduet for at følge med i det som foregår. + + + + + + + + + + + + E 2.4 Skridt 04: Følg forløbet i jobvinduet + + + + + Klik på fanebladet Job for at skifte til jobvinduet. Det er længst oppe til venstre på skærmen, lige under værktøjslinjen med knapperne. + + + + + + + + + Skærmbillede af jobstyringsvinduet i &kaudiocreator; + + + + + Det er jobstyringsvinduet. Det første spor er netop blevet rippet til harddisken. Programmets status vises længst nede til venstre på skærmen i statuslinjen. + + + + + + + + + Skærmbillede når indkoder ikke findes i &kaudiocreator; + + + + + Å, nej! Skidt! Lige pludselig dette. RTFM (læs den forbandede manual)! Jeg skrev den! Jeg skulle være inkompetent. Dette er hvad du ser når du forsøger at indkode med eller kalde et indkodningsprogram som du endnu ikke har installeret. Spor som ikke kunne indkodes markeres også med et rødt 'X' i joblisten. + Forresten, ser du hvordan jeg snød? Søgestien til den midlertidige fil og resultatsøgestien er ikke hvad vi indstillede her i eksemplet. Jeg burde skamme mig, men du har vel kontrolleret at du har skriveadgang både til mappen for midlertidige filer og resultatmappen, ikke sandt? + Lad os gøre det igen... + + + + + + + + + Skærmbillede af ripning og indkodning i &kaudiocreator; + + + + + Hmm, nu kan man forstå hvorfor fejlen opstod lige da ripningen af den første sang var færdig. + Ser du? Job 1, ripning af det første spor, er væk (færdigt) men vi har en ny indgang: Job 4 som er indkodning af spor 1 til mp3. Så ripning og indkodning udføres parallelt. Kig på statusmeddelelsen længst nede i vinduet, det er nu udvidet. + Jeg kunne ikke finde en indstilling til at undertrykke denne opførsel. Det eneste som synes at kunne stilles ind er antal parallelle ripninger og indkodninger. Smart, endnu flere job parallelt? Jeg ved ikke hvad det betyder for computere med lav kapacitet. Den AMD64 som bruges her synes ikke at have noget problem med at rippe og indkode et spor (dog to forskellige) samtidigt. + + + + + + + + + Skærmbillede af ripning og indkodning i &kaudiocreator; 2 + + + + + Ja, cyklen fortsætter. Nu ripper vi det sidste spor mens et andet indkodes og et findes i indkodningskøen. Efter det sidste spor er indkodet, vises et lille meddelelsesfelt længst oppe til venstre i vinduet en kort stund. + Det er alt. Klar til næste cd. Nyt at lytte til din musik... + + + + + + + + + + + + +Medvirkende og licens + +&kaudiocreator; +Program ophavsret 2003-2007 Benjamin Meyer ben+kaudiocreator@meyerhome.net +Bidragydere: Hidtil et enmandsshow! nej@ingen.e-mail + + + +Dokumentation ophavsret 2005-2007 alan desværre@ingen.e-mail +Som et dårligt eksempel, desværre ingen e-mail-adresse. Jeg kan ikke vedligeholde denne håndbog. Den er tænkt som en første start som håndbog for Kaudiocreator. Hvem som helst som kommer på noget nyttigt at tilføje eller ændre, kan gøre det. Ja, i det mindste efter forfatteren først er kontaktet, antager jag. Og hvis du læser dette, lod han dette afsnit forblive der og er derfor enig i dette forslag. + +&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; + + +Installation + + +Hvordan får man fat i &kaudiocreator; +&install.intro.documentation; + + +Krav + +For at bruge &kaudiocreator; med godt resultat behøver du &kde; 3.x og cdparanoia. Hvis du vil oprette komprimerede lydfiler som mp3 eller ogg, behøver du også indkodningsprogram efter dit valg. + +&kaudiocreator; vedligeholdes i dag i KDE's CVS-arkiv som en del af pakken tdemultimedia. Hvis du kender til CVS kan du lave en anonym udtjekning derfra. Dog levereres de fleste distributioner med forkompilerede pakker, i særdeleshed eftersom &kaudiocreator; er den del af en hovedpakke i KDE. Installér pakken tdemultimedia fra din distribution. Hvis du læser dette, har du formodentlig allerede fundet det ... + + + + +Kompilering og installation + +Mærkeligt, hvis det lykkedes at tjekke kildekoden ud fra KDE's SVN-arkiv behøver du ikke disse informationer, men ... +&install.compile.documentation; + + +Indstilling + +Nå, dette afsnit er formodentlig beregnet for dem som bygger fra kildekode og ikke brugere som bruger forkompilerede pakker fra en distribution. + +Desværre er der for øjeblikket ingen hjælp med indstillingstilvalg inden kildekoden kompileres. + +Hvis du kigger efter hjælp til at indstille programmet efter dine behov når det kører, er det følgende for dig: + +Eftersom dette er et program som kan kalde mange forskellige andre programmer er der meget at indstille. Det er bedst at læse det fuldstændige skridtvise eksempel for at gøre dig bekendt med indstillingsvalgmulighederne. Det indeholder skærmaftryk af de forskellige indstillingsfaneblade og sørger for kommentarer også for tilvalg som ikke bruges i eksemplet. + + + + + +&documentation.index; +
+ + + diff --git a/tde-i18n-da/docs/tdemultimedia/kio_audiocd/Makefile.am b/tde-i18n-da/docs/tdemultimedia/kio_audiocd/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kio_audiocd/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/kio_audiocd/Makefile.in b/tde-i18n-da/docs/tdemultimedia/kio_audiocd/Makefile.in new file mode 100644 index 00000000000..9df6ddca334 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kio_audiocd/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/kio_audiocd +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = da +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kio_audiocd/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @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/kio_audiocd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kio_audiocd/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-da/docs/tdemultimedia/kioslave/Makefile.am b/tde-i18n-da/docs/tdemultimedia/kioslave/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kioslave/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/kioslave/Makefile.in b/tde-i18n-da/docs/tdemultimedia/kioslave/Makefile.in new file mode 100644 index 00000000000..7b4545c37cb --- /dev/null +++ b/tde-i18n-da/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 = da +#>- 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-da/docs/tdemultimedia/kioslave/audiocd.docbook b/tde-i18n-da/docs/tdemultimedia/kioslave/audiocd.docbook new file mode 100644 index 00000000000..c8f0e6147fc --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kioslave/audiocd.docbook @@ -0,0 +1,313 @@ +
+audiocd + + +&Rik.Hemsley; &Rik.Hemsley.mail; +BenjaminMeyer +&erik.kjaer.pedersen.role; + + +2004-09-16 +2.30.00 + + + +Tillader at behandle lyd-CD'er ligesom et rigtigt filsystem, hvor spor repræsenteres som filer og, når de kopieres fra mappen, bliver trukket digitalt ud fra CD'en. Dette sikrer en perfekt kopi af lyddata. + +For at se hvordan denne slave virker, indsættes en lyd-CD i dit &CD-ROM;-drev og du skriver så audiocd:/ i &konqueror;. I løbet af nogle få sekunder skulle du så se en liste af spor og nogle mapper. + +Lyd-CD'er har ikke egentlige mapper, med audiocd-slaven sørger for disse som en behagelighed. Hvis du kigger inden i disse mapper, vil du se at de alle indeholder det samme antal spor. Hvis du er forbundet til internettet, vil nogle mapper have de egentlige sportitler vist somderes filnavne. + +Grunden til at disse separate mapper eksistere er så du kan vælge i hvilket format du gerne vil lytte til (eller kopiere) sporene fra CD'en. + +Hvis du trækker et spor fra Ogg Vorbis-mappen og slipper det i et andet &konqueror;-vindue der er åbent med din hjemmemappe, skulle du se et fremgangsvindue der viser dig at sporet er ved at blive trukket ud fra CD'en og gemt som en fil. Bemærk at Ogg Vorbis er et komrimeret format, så filen i din hjemmemappe vil se en del mindre ud end den ville have været hvis du havde kopieret de rå data. + +Mekanismen bag dette er ganske simpel. Når audiocd-slaven bliver bedt om at hente spor fra Ogg Vorbis-mappen, begynder denmed at trække de digitale lyddata ud fra CD'en. Mens den sender data over til filen i din hjemmemappe, indkoder den samtidigt i Ogg Vorbis-formatet (CD-lyd er ikke et komprimeret format til at begynde med). + +Du kunne også prøve at trække en fil der ender på .wav og droppe den på &kde;'s medieafspiller, &noatun;. I dette tilfælde er den procedure der foregår bag ved scenen tilsvarende, bortset fra at i stedet for at indkode lyddata i Ogg Vorbis-format, sendes de gennem en meget simpel konvertering, fra rå binære data (som .cda-filerne i mappen på topniveau repræsenterer) til RIFF WAV format, et ikke-komprimeret format som de fleste medieafspillere forstår. + +&noatun; skulle nu gladeligt afspille .wav-filen, men hvis der er problemer, kan du overveje at bruge -tilvalget der er forklaret nedenfor. + + +Tilvalg + + + + +Sæt stien til CD-lydenheden, ⪚ audiocd:/=/dev/sdc. Normalt vil slaven forsøge at finde et CD-drev med en lyd-CD indsat, men hvis det mislykkes eller du har mere end et CD-drev, kan du forsøge dig med dette tilvalg. Bemærk at indstillingsdialogen tillader dig at sætte en standardværdi for dette tilvalg. + + + + + + +Sæt filnavn-skabelon, ⪚ audiocd:/=Track %{number}. Bemærk at indstillingsdialogen tillader dig at sætte en standardværdi for dette tilvalg. Pas på med at sætte det til en tom streng, for så vil ingen filer blive vist. + + + + + + +Sæt albummets navneskabelon, ⪚ audiocd:/=%{albumartist} %{albumtitle}. Bemærk at indstillingsdialogen tillader dig at sætte en standardværdi for dette tilvalg. + + + + + + +Sætter processens nice-niveau for indkodere, ⪚ audiocd:/=niceLevel=10. Bemærk at indstillingsdialogen tillader dig at sætte en standardværdi for dette tilvalg. + + + + + + +Sæt mængden af fejldetektion og korrektion der bruges når data trækkes ud. + + + +Niveau 0 + +Ingen detektion eller korrektion. Kun brugbart hvis du har et perfekt CD-drev (usandsynligt). + + + + +Niveau 1 + +Aktivér basal fejltjek og korrektion. + + + + +Niveau 2 + +Standard. Angiver at kun perfekt udtrækning vil blive accepteret. + + + + +Bemærk at der er en bagdel ved niveau 2. Det kan være meget langsom at trække et spor ud, så realtidsafspilning vil muligvis ikke virke rigtigt. Hvis du har et CD-drev af god kvalitet (husk at dyrere ikke altid betyder bedre) så vil du formodenlig ikke komme ud for langsom udtrækning, men med et dårligt drev kan det tage dage (!) at trække lyd ud fra en CD. + + + + + + + +Angiv hvilken CD-database på internettet der skal bruges. Lyd-CD'er har ikke navne på sporene, men CD-databaser på internettet er et smart system, som bruger en speciel entydig identifikator genereret ud fra antallet og længden af spor på hver CD til at lave en kryds-reference med en liste af spor. Lister med spor laves af internet-samfundet og stilles til rådelighed for alle. En gang i mellem vil der være flere indgange. Du kan angive hvilken der skal bruges. + +Du kan indsende dine egne lister af spor ved brug af &kscd;, &kde;'s CD-afspiller. + +Som standard forsøger audiocd at vælge den bedste. + + + + + +Eksempler + +audiocd:/?device=/dev/scd0&paranoia_level=0&cddbChoice=0 + +Giver en liste af sporene på den lyd-CD der er indsat i /dev/scd0, hvilket på &Linux; angiver den første SCSI &CD-ROM;-enhed. Hvis du kopierer spor fra CD'en, digitalt vil udtrækning blive udført uden fejlkorrektion eller -detektion. CDDB-database indgang 0 vil blive brugt. + + + + + +Ofte stillede spørgsmål + + +Jeg får Filen eller mappen / eksisterer ikke. Hvordan ordner jeg det? Jeg har en lyd-CD i mit drev! + + + +Prøv at køre cdparanoia som digselv (ikke root). Ser du en liste af spor? Hvis ikke så sørg for at du har adgangstilladelse til CD-enheden. Hvis du bruger SCSI-emulering (muligt hvis du har en IDE CD-brænder) så sørg for at du hær læse- og skrivetilladelse til den generiske SCSI-enhed, som formodentlig er /dev/sg0, /dev/sg1, &etc;. Hvis det stadig ikke virker, så prøv at skrive audiocd:/?device=/dev/sg0 (eller lignende) for at fortælle kio_audiocd hvilken enhed din &CD-ROM; er. + + + + + +
diff --git a/tde-i18n-da/docs/tdemultimedia/kmid/Makefile.am b/tde-i18n-da/docs/tdemultimedia/kmid/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kmid/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/kmid/Makefile.in b/tde-i18n-da/docs/tdemultimedia/kmid/Makefile.in new file mode 100644 index 00000000000..cf2c1222105 --- /dev/null +++ b/tde-i18n-da/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 = da +#>- 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-da/docs/tdemultimedia/kmid/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/kmid/index.cache.bz2 new file mode 100644 index 00000000000..486c33d8a33 Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/kmid/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/kmid/index.docbook b/tde-i18n-da/docs/tdemultimedia/kmid/index.docbook new file mode 100644 index 00000000000..f5ea8b6b869 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kmid/index.docbook @@ -0,0 +1,1384 @@ + + + + + +]> + + + + +&kmid;-håndbogen + +Antonio Larrosa Jiménez
larrosa@kde.org
+
+
+&erik.kjaer.pedersen.role; +
+ + +19992001 +Antonio Larrosa Jiménez + + +2002-02-05 +2.00.00 + + +&kmid; er en midi/karaoke multimedie-spiller + + + +KMid +midi +karaoke +multimedie +mid +kar +afspiller +musik +lyd +fm +awe +gus + +
+ + +Indledning + +&kmid; er &kde;'s MIDI og Karaoke multimediespiller. Den sørger for nogle funktioner som ikke findes i nogen anden &UNIX; MIDI-afspiller, såsom blandt andet realtidsgrafik og markering af Karaoke-tekst. + +Det er rapporteret at &kmid; kører på operativsystemerne &Linux; og FreeBSD. Den bruger OSS-lyddriveren, så den bør køre på alle systemer hvor &kde; og OSS kan kompileres. &kmid; understøtter også &Linux; Ultrasound Project Driver, som kræves for at få lyd med GUS-kort. Jeg planlægger understøttelse for ALSA-driveren så snart den understøtter en sequencer-enhed. + +&kmid; viser sangteksten på skærmen med en farve som ændrer sig samtidig med at musikken spiller, så det er vældig let at følge sangens melodi. + +Håber at du synes at &kmid; er lige så sjov at bruge som jeg syntes det var at udvikle den. + +Antonio Larrosa Jiménez larrosa@kde.org + + +&kmid;s funktioner + +Dette er nogle af &kmid;s vigtigste funktioner: + + + +Den har en meget brugervenlig grænseflade til at vise Karaoke med markering af sangtekst i realtid. + + +Den har en funktion som grafisk viser hvad der spilles på hver midi-kanal, ved at markere tasterne som trykkes ned på et (virtuelt) keyboard. + + +Den kraftfuldeste håndtering af Midi-kort som findes for noget operativsystem. + + +Træk & slip så du kan slippe en vilkårlig midi-fil i &kde; fra et &konqueror;-vindue. + + +Du kan ændre tempo på sange for at spille dem langsommere eller hurtigere som du vil. + + +Den viser lamper som følger sangens rytme. + + +Brugerindstillelige skrifttyper for Karaoke-teksten som skal vises. + + +Undestøtter de to standardmåder at indsætte sangtekster i midi-filer, dvs. sangtekster eller tekstbegivenheder (og gætter automatisk hvad en sang bruger). + + +Sessionshåndtering. Hvis en sang spilles når du logger af fra &kde;, så begynder samme sang med at blive spillet næste gang du logger på. + + +Justérbar lydstyrke i realtid. + + +Den kan spille brudte midi-filer som får andre afspillere til at lave kerne-dump! + + +Den kan åbne komprimerede MIDI/Karaoke-filer præcis som en hvilken som helst anden fil. + + +Forbruger cirka 0,1 % af min CPU (afhængig på sangens kompleksitet). + + +Støtter ekstern midi-syntese, AWE-, FM- og GUS-kort (for det sidstnævnte må du installere LUP-driveren og gusd). + + +Kører på &Linux; og FreeBSD (og måske også på andre Unix-systemer...). + + + + + + + +Almen brug + + +Åbn sange + +Du kan åbne en sang på flere forskellige måder. + +Først kan du vælge Åbn... i menuen Fil, så vises en standarddialog til at åbne filer, hvor du kan vælge sangen som du vil åbne. + +Du kan trække en fil fra et &konqueror;-vindue og slippe den i &kmid;-vinduet. Du kan også trække & slippe flere sange samtidigt. + +Hvis du angiver en sang på kommandolinjen når du starter &kmid;, bliver den også åbnet. + +Og den sidste måde er at vælge sangen fra listen over sange i den nuværende samling. + + + + +Afspil sange + +For at spille en sang, åbnes den først, og derefter trykkes på knappen Spil i værktøjslinjen, vælg Spil i menuen Sang, eller tryk på tasten mellemrum. + +Bemærk at når du åbner en fil ved at trække & slippe, begynder &kmid; automatisk at spille den (hvis du slipper mere end en fil, tilføjes de til en samling og spilles i rækkefølge). + +Når &kmid; spiller en sang, kan du flytte skyderen for at gå til en angiven position, ved at trykke med musens midterste knap. + +Hvis en sang spilles for hurtigt eller for langsomt for dig, kan du trykke på knapperne på hver sider af tempo-LCD'en og få den til at spilles hurtigere eller langsommere. For at nulstille til standardtempo, dobbeltklikkes på tempo-LCD'en. + +Tasten mellemrum bruges til to ting. Når musik spilles og du trykker på mellemrum, virker den som om du trykkede på knappen Pause eller valgte Pause i menuen Sang, dvs. den stopper musikken. Hvis du trykker på mellemrum når musik ikke spilles, begynder &kmid; at spille. + + + + +Vis sangtekster + +Det er to måder at opbevare sangtekst i en sang, ved at bruge Tekstbegivenheder eller Sangtekstbegivenheder, visse sange bruger den første måde, andre den anden, visse bruger begge, og en del indeholder ikke sangtekst overhovedet :-) + +&kmid; lader dig vælge hvilke begivenheder som skal vises, og endnu bedre, den har et tilvalg til automatisk at vælge begivenhedstypen som en sang bruger, så du ikke behøver ændre type manuelt. På denne måde, hvis du aktiverer Automatisk Tekstvælger i menuen Opsætning, vælges Karaoke-teksten automatisk, men du kan stadigvæk ændre indstillingen hvis du vil se den anden slags. + +For at vælge hvilken slags der vises, kan du bruge et passande valg i menuen Opsætning, eller blot trykke på tasterne 1 eller 2 på tastaturet for at vise Tekstbegivenheder eller Sangtekstbegivenheder. + + + + + + +Samlinger + +En samling er en mængde midi-filer som du opbevarer i en liste, og som spilles en efter en anden. Dette afsnit hjælper dig med at bruge samlinger, og giver dig nogle nyttige tips til at bruge dem på en god måde. + + +Opret en samling + +For at oprette en samling, åbnes først dialogen Samlingshåndtering, ved at vælge Organisér... i menuen Samlinger. Klik derefter på knappen Ny, og indskriv navnet du ønsker at samlingen skal have. + +Du kan også kopiere en fuldstændig samling ved at vælge den og siden tryk på knappen Kopiér, som spørger om navnet på den nye samling. Fra begyndelsen kommer den nye samling til at have samme sange som den oprindelige. + +Når du har mere end en samling, kan du ændre den aktive samling fra Samlingshåndteringen, ved at markere den. + + + +Temporary Collection + +Samlingen "Temporary Collection" er en samling som bruges til at opbevare sange som du vil spille, men ikke vil tilføje i nogen samling. + +Denne samling gemmes ikke når du afslutter programmet, så husk det hvis du tilføjer mange sange til den. + +Fortsæt med at læse dette afsnit for at forstå "Temporary Collection" bedre. + + + + +Tilføj sange til en samling +Brug Tilføj automatisk til en samling + +Der er et antal forskellige måder at tilføje en sang til en samling. + +Du skal først af alt have samlingen markeret, du vil tilføje sange til i Samlingshåndteringen for hver måde. Derefter kan du trykke på knappen Tilføj for at tilføje en sang. Så vises en dialog til at åbne en fil så du kan vælge sangen som skal tilføjes. + +Øvrige måder at tilføje en sang afhænger på tilstanden af tilvalget Tilføj automatisk til samling. + +Hvis Tilføj automatisk til samling er aktiveret, og du åbner en sang (med Fil Åbn... eller træk & slip) tilføjes den (de) til den aktive samling uden påvirkning fra brugeren. + +Hvis Tilføj automatisk til samling ikke er aktivt, og du åbner en sang så vælges og ryddes "Temporary Collection", og de åbnede sange tilføjes til den. + + + + +Fjern sange fra samlinger + +For at fjerne en sang fra en samling, åbnes blot Samlingshåndteringen, samlingen markeres, og sangen som du vil fjerne, så klikkes på knappen Fjern. + + + + +Spil i rækkefølge eller tilfældigt + +Du kan vælge rækkefølgen som sange spilles. Når du vælger tilstanden I rækkefølge fra undermenuen Spilrækkefølge i menuen Samlinger, spilles sange i samme rækkefølge som de er tilføjet til samlingen. + +Når du vælger tilstanden Bland, så laver &kmid; en tilfældig variabel med en diskret uniform fordeling for virkelig at spille sangene i samlingen tilfældigt. Den giver værdier til denne tilfældige variabel mens den laver listen med rækkefølgen som sangene spilles (du vil sikkert spille tilfældige sange, men vil ikke spille samme sang to gange, og vil spille den seneste sang når du trykker på knappen Foregående sang, ikke sandt? :-) ). + +Den tilfældige rækkefølge som samlingen spilles med laves om hver gang du tilføjer eller fjerner en fil i den aktive samling, og når du vælger Bland i menuen. + + + + +Vælg en sang fra en samling + +Du kan vælge en sang at spille i Samlingshåndteringen, eller ved at bruge dropned-feltet ovenfor Karaoke-teksten. + +Du kan også skifte til næste sang ved at bruge Næste sang i menuen Sang, knappen Næste sang i værktøjslinjen, eller ved at trykke på tasten højrepil. + +For at skifte til foregående sang, bruges Foregående sang i menuen Sang, knappen Foregående sang i værktøjslinjen, eller der trykkes på tasten venstrepil på tastaturet. + + + + +Fjern en samling + +For at fjerne en samling, åbnes helt enkelt Samlingshåndteringen, samlingen markeres som du vil fjerne, og der klikkes på Fjern. Enkelt, ikke sandt? + +Husk at du ikke kan fjerne "Temporary Collection", men det spiller ikke nogen rolle eftersom den ikke gemmes når du afslutter &kmid;. + + + + + + +Midi-kort + + +Hvad er et midi-kort? + +Et midi-kort er noget som oversætter midi-begivenheder til andre midi-begivenheder. + +Det er fuldstændigt nødvendig hvis en synthesizer ikke forstår standardbegivenhederne (dvs. hvis en synthesizer ikke opfylder General Midi), i dette tilfælde oversætter et midi-kort Generelle Midi-begivenheder til begivenheder som synthesizeren forstår. + +Du kan for eksempel oprette et midi-kort som ændrer alle begivenheder Ændr patch til piano, til Ændr patch til trompet, så når en sang forsøger at spille en piano, så spilles en trompet i stedet. + +Dette kan lyde mærkeligt (hvorfor spille en trompet når sangen er lavet til at spille et piano?), men det er meget nyttigt. GM-standarden angiver at et midi-keyboard skal skifte til flygel når det modtager en begivenhed til at skifte patch til 0, men en ældre synthesizer ændrer for eksempel til en elektrisk guitar når den modtager 0. Dette ældre keyboard behøver at modtage 3 (for eksempel) for at skifte til et piano. Her træder midi-kort ind og skifter alle ændr patch til 0 til ændr patch til 3 og på denne måde spilles virkelig det rigtige instrument når det skal. + + + + +Behøver jeg et midi-kort? + +I korthed, hvis du ikke har en ekstern synth, nej! + +Hvis du kun har et lydkort, behøves midi-kort ikke eftersom alle lydkort understøtter GM (dette omfatter AWE-kort, GUS-kort, FM-enheder og så videre). + +Hvis du spiller musik med en ekstern syntheziser, og den ikke understøtter GM, skal du lave et midi-kort for dit midi-keyboard. Selv om det kan tage dig en hel eftermiddag at oprette kortfilen, og prøve forskellige værdier for alle valgmuligheder, får du belønningen når du er klar med den, eftersom du så mærker alle de skjulte muligheder med dit keyboard. Jeg har for eksempel en billig Yamaha PSS-790, som ikke understøtter GM, og ikke har så mange instrumenter som en GM-synthesizer, men med &kmid;s håndtering af midi-kort, lyder den til og med bedre end mange lydkort (inklusive AWE :-)), afhængig af lydkvaliteten som ekstern synth har (selv de som ikke understøtter GM). + + + + +Opret et midi-kort + +Der er ikke noget program til at oprette midi-kort, så du skal redigere en fil i hånden (med din foretrukne teksteditor). + +Et midi-kort er en tekstfil som indeholder alle nødvendige oversættelser som laves når musikken spilles. + +Den består af fire dele: PATCHMAP, KEYMAP, CHANNELMAP og OPTIONS. + +Hver del må kun forekomme en gang, bortset fra afsnittet KEYMAPsom kan forekomme så mange gange som behøves, under forudsætning af at hver forekomst bruger et andet TekstID (fortsæt med at læse for flere detaljer). + +Den generelle struktur for en kortfil er: + +DEFINE PATCHMAP +... +END + +DEFINE KEYMAP "Navn på tastekort" +... +END + +DEFINE KEYMAP "Et andet tastekort" +... +END + +DEFINE CHANNELMAP +... +END + +OPTIONS +... +END + + +Du kan se at nøgleordet DEFINE bruges til at angive hvilket afsnit der bliver startet (bortset fra at OPTIONS), og END skrives ved slutningen af hvert afsnit. + +Du kan angive kommentarer ved at indlede linjen med et #-tegn. + +Vær rar at sende mig din kortfil med e-mail, så fremtidige udgaver af &kmid; indeholder understøttelse for flere keyboards som ikke understøtter General Midi. + + +Afsnittet <literal +>PATCHMAP</literal +> + +Dette afsnit bruges til at angive hvordan patcher skal oversættes fra GM til specifikationen for dit keyboard. Den generelle brug er: + +(Navn på GM-patch)=(N) [AllKeysTo M] + + +Hvor N er tallet som dit keyboard behøver at tage imod for at ændre patchen til det samme som GM-standarden bruger. + +Bemærk at venstresiden af lighedstegnet ignoreres, så GM-patcher antages at være i rækkefølge (fra 0 til 127), og du må ikke ændre rækkefølgen på linjerne eller udelade nogen af de 128 instrumenter. + +Det valgfrie AllKeysTo M bruges til at oversætte alle toner som bruger det instrumentet til tasten M. Antag for eksempel at dit midi-keyboard ikke har en pistolskudslyd (GM patch 127), så du vil oversætte det til en tromme (dvs. tast 60), som lyder noget lignende et pistolskud. For at gøre dette kan du skrive følgende på den 127. linje i afsnittet PATCHMAP: + +Pistolskud =100 AllKeysTo 60 + + +Så hvis en midi-fil forsøger at spille en tone med patch 127 (pistolskud), så oversættes den til patchen 100 (dit keyboards slagværkspatch) og spiller tonen 60 (uafhængig af tonen der skulle have været skulle spillet). + +Bemærk at når jeg bruger udtrykket Slagværkspatch, mener jeg patchen hvor hver tast spiller en særlig tromme, cymbal, tom-tom, maracas og så videre, og ikke en mulig lyd som visse keyboard har som spiller en anden tone med samme tromme for hver tast. + + + + +Afsnittet <literal +>KEYMAP</literal +> + +Afsnittet KEYMAP bruges til at angive hvordan taster oversættes, for en given kanal eller instrument. Det bruges sådan her: + +DEFINE KEYMAP "Navn på tastekortet" +C 0 =0 +C#0 =1 +D 0 =2 +... +END + + +Som for afsnittet PATCHMAP, er linjernes rækkefølge meget vigtig, og at alle er der (128 taster). + +Eftersom du kan angive flere tastekort for forskellige kanaler og instrumenter, skal du angive et entydigt navn for hver enkelt på den første linje. + +Tastekort bruges hovedsageligt til at oversætte taster for slagværkskanalen. Kig i de medfølgende kort for at se nogle eksempler. + + + + +Afsnittet <literal +>CHANNELMAP</literal +> + +Dette afsnit kan bruges til at oversætte nogle kanaler til andre. Hvis du for eksempel vil bytte om på første og anden kanal, kan du gøre dette enkelt i afsnittet CHANNELMAP. + +Det er dog mere nyttigt for et keyboard som skal have slagværkskanalen som en særlig kanal (GM-standarden bruger kanal 10, andre bruger kanal 16 eller 9). + +Bemærk at midi-enheder bruger 16 kanaler, så afsnittet CHANNELMAPhar 16 linjer, fra 0 til 15, som denne her: + +(N) = (M) [Keymap "Navn"] [ForcePatch x] + + +Hvor N er kanalen som oversættes til kanalen M. Hvis tilvalget Keymap angives, kommer tastekortet med navnet Navntil at bruges for denne kanal (dette tastekort skal angives tidligere i kortfilen!). Hvis tilvalget ForcePatch angives, kommer alle begivenheder som forsøger at ændre patchen som bruges for denne kanal, til at blive ignoreret, og patchen x bruges i stedet. + +Tilvalget ForcePatch kan være nyttigt til for eksempel altid at bruge slagværkspatchen på slagværkskanalen. + + + + +Afsnittet <literal +>OPTIONS</literal +> + +Afsnittet OPTIONS har en del generelle valgmuligheder som kan være meget nyttige: + +OPTIONS +PitchBenderRatio = r +MapExpressionToVolumeEvents +END + + +Du kan angive begge valgmuligheder, kun en, eller ingen af dem. + +Værdien PitchBenderRatio r, angiver forholdet som tonehøjdeforandringer bliver multipliceret med. Dvs. når en midi-fil forsøger at sende en midi-begivenhed med en tonehøjdeforandring som har værdien n, kommer den rigtige værdi som sendes til at være n*(r/4096) (værdien 4096 er der for ikke at behøve at angive decimalkommaer i kortfilen). + +Dette bruges fordi GM-standarden siger at når et midi-keyboard modtager en tonehøjdeforandring med dataværdien 4096, skal det ændre tonen til næste højere tone, men visse midi-keyboard forsøger at ændre initialtonen til to eller flere toner højere (til og med en oktav højere!) når de modtager 4096. Dette kan let ordnes ved at forsøge med forskellige værdi, så i stedet for at sende 4096, så sender KMid en passende værdi. + +Når tilvalget MapExpressionToVolumeEvents angives i kortfilen, og en midi-fil forsøger at sende en udtryksbegivenhed, sender KMid en lydstyrkebegivenhed, som forstås af flere keyboard som ikke følger GM, og som har en lignende effekt. Der er mange midi-filer som bruger udtryksbegivenheder til at dæmpe lyden i slutningen af en sang, så hvis du ønsker at musikken skal lyde mere og mere stille, kan du aktivere dette og se om det er hvad du behøver, eftersom din midi-synthesizer måske ignorerer udtryksbegivenhederne fordi den ikke forstår dem. + + + + + + +Brug af midi-kort + +For at bruge et midi-kort, åbnes helt enkelt dialogen Indstil midi-enheder ved at vælge Opsætning for midi... i menuen Opsætning. + +Klik derefter på Gennemsøg..., vælg kortfilen i dialogen og nyd musikken! :-) + + + + +Avancerede funktioner + + +Kanalviseren + +Kanalvisningen er et vindue hvor flere keyboard vises (et for hver midi-kanal). På hvert keyboard markeres tonerne som spilles for hvert instrument, så du kan se hvad hvert instrument spiller. + + +Skift instrument + +Du kan bruge kanalvisningen til at ændre instrumentet som hver kanal spiller. For hver kanal findes et dropned-felt hvor det kan vælges. Når du har ændret dette, bliver den grønne knap ved siden af rød for at vise at dette ikke er standard-instrumentet. + +Hvis du vil vælge standard-instrumentet igen, så klik på den røde knap, så vælges det automatisk. + + + + +Skift udseende-tilstand + +Kanalvisningen har to forskellige måder at vise spillede toner (for øjeblikket), som du kan vælge fra Kanalvisningsindstillinger... i Opsætningsmenuen. + +Du kan vælge en tilstand hvor spillede taster trykkes ned, som om det var et almindeligt piano (3D-udseende), eller en tilstand hvor taster også udfyldes med rød farve, så nedtrykkede taster let genkendes (3D - fyldte). Hvis du spiller piano, eller et andet musikinstrument, kan du bruge denne visning til at lære dig at spille en sang selv. Jeg har brugt denne teknik, og det er en udmærket måde at lære sig nye melodier (sammen med et reduceret tempo). + + + + + + +Tempo <acronym +>LCD</acronym +> + +Dette viser tempoet som en sang spilles med, dvs. sangens hastighed. Jo højere dette tal er, desto hurtigere spilles sangen. + +Du kan også ændre sangens tempo, så hvis en sang spilles for hurtigt til at du kan følge sangteksten, kan du få den at spilles langsommere. Du kan bruge pilene som ses på hver side af LCD'en til at ændre tempo. + +Når du har ændret tempo, kan du få standardtempoet tilbage ved at dobbeltklikke på LCD'en. + + + + + + +Tastebindinger + + + + + +Tast +Handling + + + + +Mellemrum +Spil sangen som er indlæst hvis den ikke spilles, eller hold pause hvis den allerede spilles. + + +Backspace +Stop med at spille + + +Højre pil +Næste sang i den nuværende samling + + +Venstre pil +Foregående sang i den nuværende samling + + +Opad pil +Rul sangteksten en linje opad + + +Nedad pil +Rul sangteksten en linje nedad + + +Page Up +Rul sangteksten en side opad + + +Page Down +Rul sangteksten en side nedad + + +1 +Vis tekstbegivenheder + + +2 +Vis sangtekstbegivenheder + + +&Ctrl;O +Åbn en sang + + +&Ctrl;Q +Afslut &kmid; + + +F1 +Åbn dette dokument + + + + + + + + +Ofte stillede spørgsmål(OSS) + + + + +Nøjagtigt hvad er en midi-fil? + + + +En midi-fil er en fil som indeholder information om hvordan en sang skal spilles, dvs. den indeholder helt enkelt noderne, rytmen, hastigheden, osv. Dette betyder at samme midi-fil spillet på to forskellige enheder, kan give meget forskellige resultat, præcis som et givet nodehefte kan spilles meget forskelligt af to musikere. + + + + + +Jeg kan få bedre lyd med en mp3/wav-spiller, hvorfor skulle jeg så bruge &kmid;? + + +Nå ja, jeg kan ikke tvinge nogen til at bruge &kmid;, men en typisk midi-fil bruger 50 Kb, mens en typisk mp3-fil behøver 4 Mb (og det er med en komprimeringsfaktor 1:80). Med en god synthesizer kan du også få sammenlignelig lydkvalitet. Desuden kan du ændre individuelle instrumenter, ændre hastigheden på en sang, osv. med en midi-fil, så du har større muligheder for at styre musikken. + + + + + +Jeg kan ikke få mit AWE-kort til at virke med KMid, hvad kan jeg gøre? + + +Dette kan indtræffe hvis du har en binær distribution (rpm, deb) af &kmid;. Det sker derfor at &kmid; kompileredes uden AWE-støtte. Hvis det ikke virker, skal du hente en kildekodedistribution (for eksempel, fra &kmid;s hjemmeside) + + + + + +Jeg vil tilføje en hel mappe til en samling, men at skulle tilføje midi-filerne en af gangen er ikke morsomt. + + + +Jeg er enig. Det er derfor &kmid; understøtter træk og slip. Åbn blot mappen som du vil tilføje i &konqueror;, vælg alle filerne, træk dem og slip i &kmid;. +Sørg for at tilvalget Tilføj automatisk til samling er aktiveret, så filerne tilføjes til den nuværende samling. Hvis du ikke gør dette, bliver filerne tilføjet til "Temporary Collection". + + + + + +Jeg kan ikke følge med i sangteksten, den spilles for hurtigt! + + +Du kan trykke på venstrepilen i Tempo LCD'en for at få den til at spille langsommere. Husk at du kan dobbeltklikke på LCD'en for at få standardtempoet tilbage. + + + + + + + +Slutbemærkninger + + +Nogle vink + +Jeg inkluderer nogle vink så at du kan drage fordel af alle funktioner i &kmid; i fuld udstrækning: + + + +Åbn filer + +Jeg har altid en &kde;-desktop med et &konqueror;-vindue som viser min hovedmappe med midi-filer, og &kmid; på desktoppen (hvis jeg spiller en midi-fil) eller på alle desktoppe (hvis jag spiller en Karaoke-fil :-)). Hvis jeg vil spille nogle filer når den aktive samling afsluttes, kan jeg på denne måde blot gå til &konqueror;-vinduet, vælge de ønskede filer og trække & slippe dem i &kmid;s vindue. + +Antag at du vil spille nogle midi-filer, men ikke vil tilføje dem til nogen samling. Luk så blot for Tilføj automatisk til samling i menuen Samlinger, og åbn filerne, så tilføjes de til "Temporary Collection". + + + + +En anden måde at oprette en ny samling + +Antag at du har midi-filerne A.mid, B.mid og C.mid. Først vil du kun spille den første midi-fil, så du lukker for Tilføj automatisk til samling og åbner A.mid. Så får du en "Temporary Collection" med kun en midi-fil. +Derefter bestemmer du dig for også at spille B og C, og lave en samling med allesammen. Hvad gør du så? +Let, vælg Tilføj automatisk til samling og åbn B.mid og C.mid (med en af de forskellige metoder), så tilføjes de automatisk til "Temporary Collection", som nu indeholder A.mid, B.mid og C.mid. Åbn nu dialoge Samlingshåndteringen, markér "Temporary Collection", og klik på knappen Kopiér, angiv navnet på den nye samling, og du er klar. Du har direkte en ny samling som indeholder midi-filerne A, B og C, som ikke fjernes når du afslutter &kmid;. + + + + + + + +Galleri med &kmid;s venner + +Dette er nogen af de personer som har sendt midi-filer eller et visningskort til mig, tak allesammen! At høre disse sange eller kigge på visningskortene får mig til at fortsætte med at programmer mere og mere med &kmid;. + + + +Ola Sigurdson - Taking Care of Business (Bachman Turner Overdrive) + + +EG Lim - Et virkelig smukt postkort fra Penang. + + +Guenther Starnberger - Amadeus (Falco) og Schrei Nach Liebe (Die Ärzte) + + +Leandro Terrés - All That She Wants og The Sign (Ace of Base) + + +Nick Stoic - To midi-filer + + + + + + +Om forfatteren + +&kmid; er lavet af Antonio Larrosa Jiménez, i Málaga (Spanien). Jeg studerer matematik ved Málagas universitet, og er for øjeblikket i gang med tredje kursus, så jeg har ikke så meget fritid til mine hobbyer, men jeg forsøger altid at skaffe mig lidt tid :-) . Mine hobbyer inkluderer: programmering, samle midi-filer, spille musik og bevise sætninger ;-). + +Hvis du vil vide hvor man kan hente Midi/Karaoke-filer, eller du har et spørgsmål, en fejlrapport, en idé eller en funktion som du gerne ville se i &kmid; eller blot vil glæde mig, så tøv ikke at skrive til larrosa@kde.org eller antlarr@arrakis.es + +eller skriv til mig med almindelig post: + +Antonio Larrosa Jimenez +Rio Arnoya 10 5B +Malaga (Spanien) + + +Du gør mig glad hvis du sender mig et postkort fra dit hjemsted, eller en MIDI/Karaoke-fil fra en lokal musikgruppe i dit land. Alle som sender mig et postkort eller en midi-fil får deres navn i galleriet med &kmid;s venner i denne fil (under forudsætning af at de ikke modsætter sig dette). Var rar at kontakte mig inden du sender mig nogle midi-filer, eftersom jeg måske allerede har dem. + +Jeg vil understrege at &kmid; er lavet helt i fritiden, uden finansiel støtte fra noget foretagende eller andet. Husk derfor, når du bruger den, at det eneste som får mig til at fortsætte arbejdet med dette er at få tilbagemeldinger fra brugere (et postkort eller blot en e-mail). + +Jeg vil gerne takke følgende personer for deres hjælp med at udvikle &kmid;: + + + +Paul J. Leonard P.J.Leonard@bath.ac.uk - understøttelse for AWE-kort + + +Sebestyen Zoltan szoli@digo.inf.elte.hu- overførsel til FreeBSD og test af AWE + + +Christian Esken esken@kde.org - for at have organiseret anstrengelserne med KDE's multimedia + + +Stephan Kulow coolo@kde.org- konfigurationscripter og hjælp med automake og CVS + + +Jaroslav Kysela - hjælp med at få understøttelse for &Linux; Ultrasound Project driveren + + +Takashi Iwai og Joseph H. Buehler - Rettelser for at tonehøjden på AWE-kort var for høj + + +Adrian Knoth - for at have givet mig gode nyheder og mange forslag + + +Kevin Street - programrettelser for at støtte FreeBSD 3.0 + + +Tak også til Jose Luis Sanchez for test af GUS-understøttelse, Ignacio Garcia for test af AWE-understøttelse, Hans Petter Bieker, Ola Sigurdson, Marc Diefenbruch, Peter Gritsch, Magnus Pfeffer, Urko Lusa, Peter-Paul Witta, Thorsten Westheider, Ulrich Cordes og alle som sendt en rettelse til mig, en fejlrapport eller blot e-mail for at opmuntre mig. + + +Og naturligvis til alle fantastiske musikere på nettet som fortsætter med at give os alle de vidunderlige MIDI- og Karaoke-filer. + + + +&erik.kjaer.pedersen.credit; + + + + +Ophavsret og licens + +&kmid; ophavsret Antonio Larrosa Jiménez, 1999-2001 + +Dokumentation ophavsret Antonio Larrosa Jiménez 1999, 2001 +&underFDL; &underGPL; + + + + +Installation + + +Hvordan får man fat på &kmid; +&install.intro.documentation; Desuden findes &kmid; på sin egen hjemmeside, som er på http://www.arrakis.es/~rlarrosa/kmid.html. På hjemmesiden kan du følge udviklingen, se en del information om programmet, nogle skærmaftryk, en liste over netsider hvor du kan hente flere Karaoke-sange, osv. + + + + +Krav + +For at virke kræver &kmid;: + + + +&kde;. Nå, det har du formodentlig allerede :-) + + +Et lydkort. Et godt lydkort og/eller ekstern synthesizer anbefales, eftersom lydkvaliteten i stor udstrækning afhænger af lydkortet, det er ikke det samme at spille musikken med en FM-enhed, som at bruge et AWE-kort. + +Hvis du ikke har et lydkort, kan du stadigvæk kompilere kmid; med MODE_DEMO_ONLYVISUAL defineret og den kører som om du havde et kort (med du hører naturligvis ingen musik :-( ). + + + + + + +Kompilering og installation +&install.compile.documentation; Jeg har vedlagt nogle eksempler som installeres i $KDEDIR/share/apps/kmid. + +Hvis du støder på noget problem, så tøv ikke med at kontakte en af &kde;'s e-mail-lister, eller send en rapport direkte til mig. + + + + + +
+ diff --git a/tde-i18n-da/docs/tdemultimedia/kmix/Makefile.am b/tde-i18n-da/docs/tdemultimedia/kmix/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kmix/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/kmix/Makefile.in b/tde-i18n-da/docs/tdemultimedia/kmix/Makefile.in new file mode 100644 index 00000000000..af9c7283b6e --- /dev/null +++ b/tde-i18n-da/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 = da +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmix/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmix/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-da/docs/tdemultimedia/kmix/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/kmix/index.cache.bz2 new file mode 100644 index 00000000000..b729696cc41 Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/kmix/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/kmix/index.docbook b/tde-i18n-da/docs/tdemultimedia/kmix/index.docbook new file mode 100644 index 00000000000..4e316c9751e --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kmix/index.docbook @@ -0,0 +1,924 @@ + + + + + +]> + + + + +&kmix;-håndbogen + + +Matt Johnston
&Matt.Johnston.mail;
+
+
+ +Christian Esken
esken@kde.org
+Udvikler +
+ +Helio Chissini de Castro
helio@kde.org
+Udvikler +
+ + +Stefan Schimanski
1Stein@gmx.de
+Udvikler +
+ +Lauri Watts
&Lauri.Watts.mail;
+Tester +
+&lars.schunk.role; &erik.kjaer.pedersen.role; +
+ + +19962005 +Christian Esken & &Matt.Johnston; + + +&FDLNotice; + +2007-01-05 +2.6.1 + +&kmix; er et program som lader dig ændre lydstyrken på dit lydkort. + + +KDE +KMix +tdemultimedia +lyd +lydstyrke +mikser + + +
+ + +Indledning + +&kmix; er &kde;'s mikserprogram til kontrol af lydkort. Selv om det er et lille program, er det en fuldt udstyret mikser. Programmet skulle give dig kontrol over alle dine lydkort. + +&kmix; understøtter adskillige platforme og lyddrivere: + + +ALSA-lydkortdriveren. +Alle Open Sound System-platforme. &Linux;, FreeBSD, NetBSD og BSDI er eksplicit testet. +&Solaris;-baserede maskiner. +&IRIX;-baserede maskiner. +&HP-UX;-baserede maskiner. + + +Hvis du både har installeret ALSA og Open Sound System drivere, bruger &kmix; ALSA-driveren. + + + + +Arbejd med &kmix; + + +Det basale + +Brugen af &kmix; er ligetil. Hver mikserkontrol som dit lydkort tilbyder, er repræsenteret af en lydstyrkeskyder. Monokontroller har en enkelt skyder, stereokontroller har enten én eller to skydere alt afhængigt at hvad du vælger. Der er yderligere en panoreringsskyder i bunden af &kmix;-vinduet. Hvis du har mere end et lydkort, vil en liste blive vist for oven i vinduet, hvor du kan vælge mellem dine lydkort. +&kmix; hovedvindue + + + +&kmix; hovedvindue + + + + + + +Vinduet kan have op til tre faneblade med forskellige lydkortskontroller: Output, Input og afbrydere. Disse faneblade indeholder skydere for lydstyrke, afbrydere til at aktivere eller deaktivere indspilning eller afspilning, og flervalgskontroller. +Output: Dette indeholder kontroller som for det meste har med afspilning at gøre, såsom lydstyrkekontrollen Master. +Input: Dette indeholder alle kontroller som for det meste har med indspilning at gøre, såsom Capture. +Afbrydere: Dette indeholder alle kontroller som lader dig lukke af eller slå til for en funktion (såsom "Mic Boost (+20dB)"), og flervalgskontroller (såsom Mic Select: Mic1 eller Mic2). + + + +Foruden lydstyrkekontroller, indeholder &kmix; også lysdioder. Den generelle farvelægningsregel er: + +Grøn: En lysdiode som har med afspilning at gøre +Rød: En lysdiode som har med indspilning at gøre +Gul: En lysdiode som har med særlige funktioner på lydkortet at gøre + +De tre farver har to varianter: En tændt lysdiode betyder TIL, og en slukket lysdiode betyder FRA. + + + +Lydstyrkekontroller + +Lydstyrkekontrollerne under fanebladene Output og Input består af (oppefra og nedad): +Lydstyrkekontrol (fanebladet Input) + + + +Lydstyrkekontrol (fanebladet Input) + + + + +En ikon som repræsenterer kontrollens funktion. +En indikering af lydstyrkens værdi (valgfri). +En grøn lysdiode for tavshed, som lader dig lukke for en kontrol (lyset slukkes, bliver mørkt) eller sætte den til igen (lyset tændes, bliver lyst). +Et skyder for lydstyrkekontrol (vink: du kan skjule skyderens navn, for eksempel hvis mixeren optager for meget plads på skærmen). +Hvis en kontrol understøtter indspilning er der en rød indspilningslysdiode. Hvis dioden er tændt (lyser rødt), er kontrollen valgt for indspilning. Hvis den ikke er tændt (mørkerød), er kontrollen IKKE valgt for indspilning. + + + +Lydstyrkekontrol med indspilningsafbryder (fanebladet Output) + + + +Lydstyrkekontrol med indspilningsafbryder (fanebladet Output) + + + + + + +Mange af disse kontroller har en sammenhængsafhængig menu, som vises ved at højreklikke på kontrollen eller enhedsikonen. Flere indgange er tilgængelige i den sammenhængsafhængige menu, men kun de som passer ind vises. + + + +Opsplit kanaler +Vis enten én eller to skydere. Dette er kun tilgængeligt for stereoenheder. Skyderen til højre kontrollerer den højre lydstyrke, og skyderen til venstre kontrollerer den venstre lydstyrke. + + + +Uden lyd +Tænd eller sluk for enheden. + + + +Skjul +Hvis du ikke er interesseret af at regulere denne enhed, kan du skjule den med dette tilvalg. Hvis du vil vise den igen, kan du kun gøre det ved at vælge tilvalget Kanaler (se nedenfor). + + + +Indstil globale genveje... +Du kan kontrollere en enhed med dit tastatur. Brug dette menuvalg til at vise &kde;'s Indstil genveje-dialog. Her kan du definere taster til at øge eller mindske lydstyrken og til at gøre enheden stille. Tasterne er globale og virker også når &kmix; er minimeret eller dokket. + + + +Kanaler +En dialog vises hvor du kan indstille hvilke kanaler du vil se under hvert faneblad (Output, Input, Afbrydere). + + + +Vis/Skjul menulinje +Dette er ikke specifikt for en bestemt enhed, men påvirker mikservinduet. Du kan skjule eller vise menulinjen med dette. Du kan også gøre dette med genvejstasten (oftest &Ctrl;M). + + + + + + +Afbrydere og flervalgskontroller + +Kontrollerne under fanebladet Afbrydere består af en lysdiode og en kort etiket som beskriver funktionen. Fanebladet Afbrydere kan også indeholde flervalgskontroller. Bemærk at disse kontroller oftest er meget specielle og oftest ikke behøver ændres af en sædvanlig brugere. Den sammenhængsafhængige menu indeholder valgmulighederne Kanaler og Vis/Skjul menulinje som allerede beskrevet. Afbrydere og flervalgskontroller (fanebladet Afbrydere) Afbrydere og flervalgskontroller (fanebladet Afbrydere) Husk at røde lysdioder har med indspilning at gøre, gule lysdioder styrer specialfunktioner på lydkortet. Skærmbillederne ovenfor viser fra venstre til højre en slukket IEC958 Output lysdiode (gul = specialkontrol), en tændt Mix lysdiode (rød = indspilningsrelateret), en slukket indspilningsrelateret lysdiode, en tændt specialkontrol og en flervalgskontrol (PCM Out Path & Mute). Hvis du er usikker på hvad en kontrol betyder, så spørg leverandøren af lydkortsdriveren (for de fleste nuværende &Linux;-distributioner er det ALSA). + + + + +Panoreringsskyder + +Med denne skyder kan du kontrollere fordelingen af lydstyrken mellem venstre og højre højttaler. Denne skyder er overordnet og påvirker og påvirker master-lydstyrken. Den midterste position er standarden. At trække skyderen tilvenstre gør lydstyrken svagere på højre højtaler, til højre omvendt. Dette kan naturligvis være byttet rundt hvis dine højttalere ikke er placeret korrekt. +Vær klar over at for surround-system styrer hovedenheden ofte kun de forreste højtalere. Dette er en begrænsning i lydkortets drivere. +Hvis lydkortet ikke har en hovedenhed, kan en anden enhed vælges af &kmix;. For de fleste er det Wave-kontrollen (eller PCM-kontrollen). + + + + +Indstillingsmuligheder + +Brug Opsætning Indstil &kmix;... i menulinjen for at vælge indstillinger. Disse punkter er: + + + +Dok i panel +Hvis dette er afkrydset, vil &kmix; dokke ned i statusfeltet når der trykkes på vinduets lukkeknap. Hvis det ikke er afkrydset vil &kmix; afslutte i stedet. Pas på: Efter at have afsluttet vil du ikke kunne kontrollere lydstyrken hvis du har knyttet taster til at gøre dette. + + +Aktivér kontrol af lydstyrke i statusfelt +Hvis det er aktiveret, viser et venstreklik på &kmix;' dokkede ikon et vindue med en lydstyrkekontrol for enheden som foretrækkes. (Vink: For øjeblikket kan du ikke ændre enheden - &kmix; vælger den selv.) Hvis punktet er deaktiveret vises &kmix; hovedvindue ved venstreklik på &kmix; dokkede ikon. + + +Vis tikmærker +Vis linjer til at markere positioner på skyderne. + + +Vis etiketter +Vis etiketter for hver lydenhed. Ved at lade musen hvile over ikonet for hver enhed kan du se denne oplysning uafhængigt af om 'Vis etiketter' er afkrydset. + + +Genopret lydstyrker ved login +Lad &kde; genoprette lydstyrker når du logger på. Dette genopretter dine personlige lydstyrkeniveauer, som blev gemt da du sidst loggede af. Hvis operativsystemet gemmer lydniveauer, behøver du måske ikke dette (men på en maskine med flere brugere behøves det alligevel). + + +Lydstyrkeværdier: +Vælg om og hvordan lydstyrkeværdier vises: Ingen, Absolutte eller Relative. + + +Skyderens orientering +Du kan venda hovedvinduet for &kmix; 90 grader med dette tilvalg. Skydere, tekst og alt andet (hvis det er passende) roteres. Der er visse undtagelse fra denne regel, i første omgang menulinjen, mikservælgeren (hvis den i det hele taget vises), panoreringsskyderen og flervalgskontrollerne. + + + + + + + + + + +&kmix;-panel-applet + +&kmix; panelminiprogram er en alternativ grænseflade for &kmix;. Du kan til det til &kde;'s panel ved at vælge Tilføj miniprogram til panelet... i Panelmenuen eller den sammenhængsafhængige menu. Vælg Lydmikser og klik på Tilføj til panelet eller dobbeltklik på Lydmikser. + +Du kan arbejde med &kmix;-appletten som beskrevet for hovedvinduet - inklusive sammenhængsmenuen. På grund af den begrænsede plads i panelet er der forskelle: +Ingen hovedmenu tilgængelig. +Hvis du har flere lydkort, kan du ikke ændre den valgte mikser efter det initiale valg. +Ingen dokningsikon. Hvis du vil bruge dokningspunktet, skal du desuden starte &kmix; fra K-menuenMultimedie &kmix; lydmikser. +Ikoner kun til stede når panelet er stort nok. +Ingen navne på enheder. +Indstilling udføres via panelmenu - du kan indstille farver og skyder-retning her. +Lydstyrker gemmes ikke automatisk. Hvis du ønsker at lydstyrker skal gemmes når du logger af for senere at kunne genoprettes, skal du også starte &kmix; fra K-menuen. + + + + + + + +Avancerede &kmix;-egenskaber + +Dette kapitel beskriver &kmix;-funktionalitet der er rettet mod den erfarne bruger. De fleste brugere vil aldrig få brug for denne funktionalitet, så du kan uden problemer springe over dette kapitel + + +&DCOP;-Grænsefladen + +Sommetider vil du udføre specielle funktioner. Ting som at styre mikseren fra et andet program, eller lukke af for lyden fra hovedenheden hver dag klokken 22. &kmix; har en &DCOP;-grænseflade, som lader dig opnå meget med minimalt arbejde. Du kan starte en skal og skrive dcop kmix, for at begynde med at udforske &kmix; &DCOP;-grænseflade. De særlige grænseflader i &kmix; er følgende: + + + +Mixer0 +Muliggør manipulering af den første mikser. Du kan indstille lydstyrkeniveauer, lukke af for lyden for enheden, ændre balance, hente miksernes navn, og meget mere. Skriv dcop kmix Mixer0 hvis du vil udforske alle funktioner. Der er flere indgange såsom Mixer1, hvis flere lydkort er installerede. + + + +kmix-mainwindow#1 +Det grafiske vindue kan styres med denne kommando. Du kan skjule og vise vinduet, ændre størrelse på det, og meget mere. Skriv dcop kmix kmix-mainwindow#1 hvis du vil udforske alle funktioner. + + + + + + + +&DCOP;-Eksempler + + + +dcop kmix kmix-mainwindow#1 hide +Skjuler det grafiske vindue. Brug dcop kmix kmix-mainwindow#1 show eller dokningsikonen for at vise det igen. + + + +dcop kmix kmix-mainwindow#1 resize 1 1 +Ændrer størrelse på &GUI;-vinduet til det mindst mulige. Dette er størrelsen så alle skyderne (og andre &GUI;-elementer) vil passe i vinduet. + + + +dcop kmix Mixer0 mixerName +Angiver navnet på den første mikser, for eksempel Sound Fusion CS46xx. + + + +dcop kmix Mixer1 setVolume 0 10 +Indstiller lydstyrke for den anden mikser, enhed 0, til 10 procent. Enhed 0 er ofte hovedenheden, men ikke altid. Hvis du vil gøre den (første) hovedenhed på dit andet lydkort mere stille, kan du bruge dcop kmix Mixer1 setMasterVolume 0. + + + +Du kan direkte køre disse kommandoer fra en skal som du startet inde i &kde;. Hvis du behøver at køre DCOP-kommandoen et andet sted, for eksempel fra et crontab-script, skal du definere miljøvariablen DCOPSERVER (som vises på første linje i filen ~/.DCOPserver_hostname_:0), for eksempel: + +#!/bin/sh +DCOPSERVER=`cat /home/dinhemmappe/.DCOPserver_dinvært_:0 | grep local` +eksport DCOPSERVER +dcop kmix Mixer0 setMasterVolume 0 + + + + +Tips og Tricks + +Brug af ALSA pg OSS driver samtidigt +På &Linux; kan &kmix; enten bruge ALSA-driveren eller OSS-driveren, ikke begge. Hvis du virkelig skal bruge begge drivere samtidigt (en meget sjælden situation), kan du gøre det som følger. Afslut &kmix; og tilføj følgende linje i din kmixrc-fil i afsnittet for globale indstillinger. +MultiDriver=true +Start &kmix; igen. Hvis du klikker på Hjælp Hardwareinformation bør du se Lyddriverer som bruges: ALSA0.9 + OSS og Experimental multiple-Driver mode activated. + +Du ser formodentlig alle din miksere dublerede. +Der er ingen støtte for denne slags indstilling. + + + + + + + +Medvirkende og licens + +Hovedudviklere + + +Ophavsret 1996-2000 Christian Esken +Ophavsret 2000-2003 Christian Esken & Stefan Schimanski +Ophavsret 2003-2005 Christian Esken & Helio Chissini de Castro + + +Bidragydere: + + +Christian Esken esken@kde.org +Stefan Schimanski 1Stein@gmx.de +Paul Kendall paul@orion.co.nz - &SGI;-portering +Sebestyen Zoltan szoli@digo.inf.elte.hu - FreeBSD-rettelser +Faraut Jean-Louis jlf@essi.fr - &Solaris;-rettelser +Nick Lopez kimo_sabe@usa.net - ALSA-portering +&Helge.Deller; deller@gmx.de - oversættelse til &HP;-UX +Lennart Augustsson augustss@cs.chalmers.se - *BSD-rettelser + + +Dokumentation ophavsret 2000 &Matt.Johnston; &Matt.Johnston.mail; + +Opdateret 2003 til at matche &kmix; V1.91 ved Christian Esken esken@kde.org + +Opdateret 2005 til at matche &kmix; V1.91 ved Christian Esken esken@kde.org + +Opdateret 7/2005 til at matche &kmix; V2.6 ved Christian Esken esken@kde.org + +Baseret på dokumentation af Christian Esken esken@kde.org +&lars.schunk.credit;&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; + + +Installation + + +Anskaf &kmix; +&install.intro.documentation; + + +Krav + +&kmix; er åbenlyst kun nyttig hvis du har et lydkort. &kmix; understøtter adskillige platforme og lyddrivere. + + +Alle Open Sound System-platforme. &Linux;, FreeBSD, NetBSD og BSDI er eksplicit testet. +&Solaris;-baserede maskiner. +&IRIX;-baserede maskiner. +ALSA-lydkortdriveren. +&HP-UX;-baserede maskiner. + + + + + +Kompilering og installation +&install.compile.documentation; + + + +
+ + diff --git a/tde-i18n-da/docs/tdemultimedia/krec/Makefile.am b/tde-i18n-da/docs/tdemultimedia/krec/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/krec/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/krec/Makefile.in b/tde-i18n-da/docs/tdemultimedia/krec/Makefile.in new file mode 100644 index 00000000000..553203a23ea --- /dev/null +++ b/tde-i18n-da/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 = da +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/krec/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/krec/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-da/docs/tdemultimedia/krec/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/krec/index.cache.bz2 new file mode 100644 index 00000000000..ff6d356bb56 Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/krec/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/krec/index.docbook b/tde-i18n-da/docs/tdemultimedia/krec/index.docbook new file mode 100644 index 00000000000..4415f823adc --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/krec/index.docbook @@ -0,0 +1,633 @@ + + + + + +]> + + + +&krec;-håndbogen + + +Arnold Krille
arnold@arnoldarts.de
+
+
+
+ +&erik.kjaer.pedersen.role; + + +2002 +2003 +2004 +Arnold Krille + +&FDLNotice; + +2004-03-01 +0.5.1 + + + +&krec; er et optage-program &arts;. Det kan bruges til at optage enhver lyd der kommer ind eller ud af computeren. Visse dynamiske effekter er implementerede, samt muligheden for samtidigt at afspille det som optages. + + + +KDE +tdemultimedia +Krec +aRts +indspilning +grænseflade + + +
+ + + + +Indledning + + +Hvorfor skrev jeg &krec; + +Efter at have arbejdet med &arts; et stykke tid, indså jeg at der ikke fandtes nogen program til at optage lyd, bortset fra kommandolinjeværktøjet artsrec. Jeg skulle optage et radiospil som nogen af mine venner ville at jeg skulle mikse, og jeg ville bruge &Linux; til indspilningen. Altså begyndte jeg at skrive &krec;. + + + +Hvad &krec; gør + +&krec;'s funktion er meget enkel. Det forbinder til &arts;-serveren og optager det som sendes til den til en fil. Disse filer er i et specielt &krec;-format men det er muligt at eksportere til wave-, ogg- og mp3-filer. +Men &krec; har meget mere funktionalitet. Du kan lave flere optagelser i en fil endog med overliggende funktionaliter. + + + +Få mere information +&reporting.bugs; &updating.documentation; + + + + +Et første blik på &krec; + + + + +Her er et skærmaftryk af &krec;. + + + + + +Her er et skærmaftryk af &krec; lige efter den er startet. + + + + + +&krec;'s hovedvindue i detaljer + + +For oven er der menulinjen og to værktøjslinjer. Den første værktøjslinje indeholder nogle nyttige punkter fra Filer-menuen, den anden værktøjslinje er leveret med vigtige funktioner fra Spil-menuen. +Midten har vigtige dele: Til venstre er VU-måleren der viser styrken af lydsignalet der bliver optaget/afspillet lige nu kombineret med en lydstyrkekontrol til at justere niveauet. +Hoveddelen viser filen og består af fire dele. Først er der navnet på filen for oven, dernæst vises de dele der er optaget i deres kronologiske rækkefølge og skaleret længde. Dette tillader også at deaktivere eller slette dele via sammenhængsmenuen. Nedenfor er tidslinjen hvor du kan se den nuværende position og (ved at klikke) flytte til den position du ønsker. Bunden af denne blok er to kontroller der viser den nuværende position og længde i det tidsformat du ønsker. +Helt forneden er der en anden værktøjslinje der indeholder en komprimerer til at redigere dynamikken i din optagelse og en statuslinje der vise alle mulige slags beskeder. + + +Se for mere info. + + + + + +Hvordan optager du + +Dette kapitel indeholder nogle trin for trin gennemgange der viser dig vejen til nogle gode optagelser med &krec;. + + +Optagelse fra intern musik + + +Først vil vi lave en optagelse fra vores foretrukne &kde; lydafspiller. Så start &noatun;, &juk; eller &kaboodle;. Vi kunne bruge andre afspillere men de skal bruge &arts; til deres output, ellers er optagelse en smule mere komplekst og går ud over omfanget af dette afsnit. Så spring venligst over din skygge og vælg en sang at spille i en af disse tre afspillere (alle leveres med tdemultimedia derfra hvor du fik &krec;). +I &krec; vælges Lydhåndtering fra Værktøjer-menuen. Der vil du se i det mindste en linje for &krec;::In og en linje for &krec;::Out. Den anden søjle siger hvilken type punktet er, enten afspil eller optag. Den sidste søjle siger hvor lyden for dette punkt kommer fra eller går til. For øjeblikket er &krec;::In punktet (skulle være?) forbundet til in_soundcard som er inputkanalen for dit lydkort, men da vi nu ønsker at optage fra afspilleren og afspilleren spiller til out_soundcard, klikker vi på &krec;::In punktet for at skifte den til en anden kilde. Vælg out_soundcard fra det vindue der kommer op og klik på O.k. For at lære mere om lydhåndteringen se . +Nu skulle VU-måleren i &krec; flimre op og ned på en måde der svarer til musikken du hører (hvis du ikke hører lyd vil du ikke forvente at VU'en viser noget). +Åbn nu en ny fil enten ved at klikke på det første punkt i værktøjslinjen eller ved at vælge Ny fra Filer-menuen. Acceptér kvalitetsopsætningen indtil videre eller se for mere info. +Vælg Optag fra Afspil-menuen eller tryk på R-tasten. Efter du er færdig vælg Stop fra den samme menu eller brug S-tasten. +At gemme virker på standard vis, hvid du er interesseret i at eksportere se . + + +Det er det hele. Nu kan du høre din optagelse elle eksportere den (glem ikke at gå tilbage til begyndelsen). + + + + +Optagelse fra Line-In eller Mic-In + +Optagelse af kilder udefra er en smule mere kompliceret dat det involverer en masse forskellige programmer og enheder. Jeg antager at din hardware er installeret rigtigt, driverne virker som de skal og du er i stand til at kontrollere lydstyrker via &kmix;. I &kmix; kan du også bælge kanaler til optagelse hvilket basalt set betyder at deres signal sendes til analog-digital-konvertering (kort ADC) og kan læses af driveren og programmer. Dette virker forskelligt på næsten alle lydkort og drivere så du skal prøve en smule før du kan være sikker... +Den anden vigtige ting er at &arts; skal køre i fuld dupleks tilstand. Det betyder at &arts; læser fra lydkortet og skriver til det samtidigt. Du skal starte &kcontrol; og redigere lydsystemets opsætning (eller trykke på Alt+F2 og indtaste kcmshell arts). På den anden fanebladsside skal du sørge for at afkrydsningsfeltet for fuld dupleks er markeret, klik på Anvend genstarter &arts; hvilket betyder at du også må genstarte &krec;. +Efter disse forberedelse skulle VU-måleren (se for mere info) for &krec; flimre følgende det lydsignal du ønsker at optage og som du har valgt til optagelse i &kmix;. Justering af lydstyrken til de rigtige værdier er meget vigtigt for brugbare optagelser. Hvis forstærkelsen indeni lydkortet er for høj får du digitale klik fordi ADC kun kan lave værdier mellem et minimum og et maksimum og hvis signalet er for højt bliver det klippet digitalt hvilket ødelægger optagelsen. På den anden side, hvis lydstyrken er for stille, vil du få støj og hvislen fra lyd-hardware til at høres højt i din optagelse. Så du må vælge ne mellemvej, så signalet ikke er for højt og bliver klippet, og ikke er for stille og går tabt i støjen fra hardware. Det er næsten altid bedre at lade lidt være til overs. +Nu kan du justere niveauet en anden gang i &krec; hvilket så er en software-forstærkelse. Her er det bedst at bruge kompressoren til at udjævne forskellene mellem stille og høje lyde en smule. Mere info om kompressorens brug kan findes i . +De tilbageværende skridt er de samme som i fra skridt fire og følgende. Så hvis du startede med det afsnit skule du vide det nu. + + + + + +&krec; forklaret + +Dette kapitel beskriver nogle dele af og nogle funktioner i &krec; i detalje og giver nogle vink om brugen. Punkterne er sorteret alfabetisk, ikke efter hvor vigtige de er. + + +Lydhåndteringen +Lydhåndteringen bruges til at forbinde uddata fra forskellige programmer til eksisterende eller nye busser. En bus er en slags virtuel signal-distributør. Hvert afspilnings- eller optagelsespunkt kan forbinde til nøjagtigt en bus men flere punkter kan forbindes til en bus. Eksempel: Uddata fra &noatun; kan forbindes til hovedudgangen eller en vilkårlig anden bus. Men flere udgaver af &noatun; kan alle forbindes til hovedudgangen. + + +Hovedvinduet for lydhåndteringen +Det indeholder tre søjler: + +Nævnet på punktet der afspiller eller optager lyd. +Typen af punktet enten afspil eller optag. +Bussen punktet er forbundet til. + +Klik på et punkt så vil en dialog for at vælge den ønskede bus komme frem. + + +Busdialogen +Hoveddelen viser alle busser der eksisterer for øjeblikket. Vælg en at sende din lyd til eller at få din lyd fra. Nedenunder kan du lave nye busser at forbinde dit punkt til. +For at optage fra en afspiller der bruger &arts; og lytte til det du rent faktisk optager laver du blot en ny bus (test for eksempel), forbinder din afspiller til den (du vil ikke høre noget nu), forbind &krec;::In til den nye bus også og slå så Spil igennem til. + + + + + +Komprimeringen +Hvis du optager med en mikrofon, bemærker du måske at niveauet ind imellem næsten klippes, og sommetider er meget lavt, især ved sang eller tale. For at kompensere for dette, kan du bruge komprimering. Den reducerer alle lyde som er over en vis tærskel-værdi med faktoren som angives af ratio. Bemærk at denne tærskel er logaritmisk, en midterindstilling er allerede relativt lav men det er meget brugbart på den måde. En anden bemærkning: ratio er højest drejet til venstre, højre ende af potentiometeret betyder ingen komprimering overhovedet. Eftersom dette reducerer lydstyrken, er der et udgangspotentiometer til at ekspandere (eller reducere) lyden. Attack og release bruges for at styre tiden inden komprimeringen reagerer (tiden som går efter indgangen først overskrider tærskelværdien) og tiden som komprimeringen stadigvæk reagerer efter lyden er under tærskelværdien. +Prøv det mens du taler i mikrofonen med Spil igennem aktiveret, så hører du forskellen mellem den almindelige og den komprimerede udgave. + +Vink om brug af komprimering +Dette er kun vink. Til allersidst er det eneste der tæller hvordan det lyder. Så hvis det lyder som du vil have det, er det formodentlig den rigtige indstilling. Og hold dig ikke tilbage med at lave nogle eksperimenter. + +Normal taleDe fleste gange er enkle stemmer der taler på radio eller i fjernsynet ekstremt komprimeret. Det er fordi hovedproblemet med tale er at niveauet måske er rigtigt i begyndelsen af sætningen men formodentlig ikke i slutningen. Derudover er slutningen af ord mindre højre end starten. Det gør det umuligt at bruge talte ord uden at komprimere dem. Eksempel på indstilling: Kort attack, midttids release, lav tærskel, meget høj ratio. +Mastering 1: Begrænsning af niveauetFor blot at begrænse toppene men ikke at komprimere hele dynamikken bruges en høj tærskel, en høj ration, et kort attack og et kort-til -middel release. Dette beskytter din optagelse fra nogle indre digitale forvrængninger og, med tærsklen en smule lavere, fjerner det sjældne (og måske uønskede) toppe og giver mere plads til det rent faktisk optagne signal. +Mastering 2: Udførsel af den egentlige masteringUdførsel af egentlig Mastering af musik er svært og afhænger fuldstændig af din hørelse og den musik der skal masteres. Normalt vil du bruge hurtige angreb så du får niveauet reduceret hurtigt nok til bassens trommeslag. På den anden side ønsker du ikke at musikken skal pumpe op og ned blot fordi bastrommen slår så du vælger en længere udgave. Kompressionsfaktoren skal ikke være for stor. Ideelt ville du indsætte en begrænser efter kompressoren for at være fri for klik og klip. +Enkelte instrumenterDisse indstillinger afhænger af instrumentet. Mens der optages er det klogt at bruge en begrænseropsætning. +Endeligt vinkBrug dine ører og øv dig. Alt er tilladt der lyder godt. + + + + + + +Indstilling +Der er to sider tilgængelige i indstillingen. Den første er til generel opsætning og forklaret i dette afsnit. Den anden er om opsætning af standardkvalitet og den samme som beskrevet i . + +Generel opsætning + + + + + +Redigering af generel &krec;-opsætning. + + + +Den første det er indstillinger der kontrollerer den måde tider og steder vises. Stilen "Almindelige sampler" viser blot antallet af sampler, den næste har muligheden for timer, minutter, sekunder og sampler. Den tredje stil er den samme som den anden bortset fra at den viser rammer i stedet for sampler. Den fjerde stil viser størrelsen i megabyte og kilobyte og er nyttig til at kontrollere diskplads. På højre side af stilerne har du muligheden for at vælge antallet af rammer der danner en anden. +Afkrydsningsfeltet nedenfor gør tidsvisninger mere ordrige og viser enheden indeni. +Hvis du ønsker at genoprette dagens vink ved opstart kan du gøre dette med det næste afkrydsningsfelt. Knappen nedenfor får alle de beskeder tilbage hvor du valgte "Vis ikke denne besked igen", mest beskeder fra eksportfunktionerne. + + + +Eksporterer +
+En anonym fan af &krec; +Dit program er rigtigt lækkert, jeg bruger det hele dagen men det mangler virkelig eksport til wave/mp3/ogg! +
+Her er det: den definitive eksportfunktionalitet for &krec;. De tilgængelige eksportformater varierer med bibliotekerne der findes på kompileringstidspunktet, alle de der for øjeblikket er tilgængelige beskrives i de følgende afsnit. +Valg af det ønskede eksport-plugin gøres med filnavnet: Du vælger Eksportér fil... fra Filer, vælger filnavnet på den eksporterede fil og dens endelse og så vil dit plugin blive bestemt ud fra din endelse. Listen af endelser i dialogen viser også hvilke eksport-plugin der er tilgængelige. +For at forstå den generelle brug af eksport: Teknisk virker eksport ligesom afspilning. Det betyder at du skal gå til positionen hvor du ønsker at starte på at eksportere før du gør det. Det betyder også at du kan se fremgængen af eksporten ud fra positionen af markeringen der bevæger sig fremad. Og det betyder at i fremtiden vil det være muligt at eksportere ethvert udvalg på samme måde som du kan afspille et udvalg. + +Eksport til Wave (*.wav) +Det simpleste eksport-plugin. Det eksporterer din &krec;-fil til en wave-fil med de kvalitetsindstillinger du lavede for hele filen. + + +Eksport til MP3 (*.mp3) +Måske den mest ønskede eksportmulighed. Denne eksporterer din &krec;-fil til en mp3-fil. +Kvalitetsopsætningen du indstiller i afsnittet Lyd & Multimedie / Lyd-CD'er i &kcontrol; bruges i denne udgave da &krec; bruger de samme biblioteker som audiocd:/-funktionen. + + +Eksport til OGG (*.ogg) +Denne eksporterer din &krec;-fil til en ogg-fil. +Kvalitetsopsætningen du indstiller i afsnittet Lyd & Multimedie / Lyd-CD'er i &kcontrol; bruges i denne udgave da &krec; bruger de samme biblioteker som audiocd:/-funktionen. + +
+ + +Spil igennem +For de som vil høre det som indspilles, er der det meget nyttige punkt Spil igennem i menuen Spil. Jeg råder dig til at bruge det så meget som muligt, især hvis komprimering eller andre effekter og ønsker at kontrollere hvad der rent faktisk optages. +Undgå at oprette en løkke ved indspilning fra out_soundcard når Spil igennem aktiveres. En sådan løkke er for meget for den stakkels &arts;, og gør din maskine enormt meget langsommere! Du kan få brug for at dræbe &arts;... Grunden er at &arts; beregner et netværk for lyd for hvert sample (rent faktisk blokke af sampler) og hvis et sample er bygget via en løkke til sig selv skal &arts; beregne mere end det er muligt. + + + +Kvalitetsopsætning + +Egenskaber for nye filer + + + + + +Dette er dialogen til at vælge egenskaberne for nye filer. + + + +Mens en ny &krec;-fil laves vises denne dialog som lader dig vælge nogle indstillinger angående kvaliteten af optagelserne. Alle disse indstillinger påvirker størrelsen. +Samplingraten er raten som fortæller lydsystemet hvor mange sampler der skal tages i et sekund og deres mål i Hertz (Hz) henholdsvis Kilohertz (kHz). Jo højere denne rate er jo højere er den maksimale optagne frekvens. Idet mindst to sampler er nødvendige for at genbygge en sinus-bølge er den maksimale optagelsesfrekvens det halve af samplingraten. Menneskets øre er i stand til at høre toner op til noget mellem 10kHz og 20kHz afhængig af alder, små børn er muligvis nærmere ved 20kHz mens normale voksne har deres maksimum omkring 15kHz og ældre mennesker går ned til 10kHz. Men selv uden rent faktisk at høre de højere frekvenser påvirker de stadigvæk det der bliver hørt følt (tilsvarende nøgleord: psykoakustik). +Antallet af kanaler kan vælges frit afhængig af opgaven ved optagelsen. Hvis du bruger en mono-mikrofon uden at bruge en stereoeffekt kan du uden videre vælge Mono uden tab af data. +Den sidste del er antallet af bit der bruges til et sample, mulige værdier er 8 og 16 bit. Jo flere bit jo flere trin er tilgængelige for området fra minimum til maksimum signalet. 8 bit er en byte så dette refereres også til som en- eller to byte-sampler. +Den plads der skal bruges til optagelsen kan beregnes på en meget simpel måde: Det er samplingraten ganget med antallet af kanaler ganget med antallet af byte pr sample ganget med antallet af sekunder der skal optages. +Beregning af størrelsen af et minut cd-kvalitetFor et minut (60 sekunder) lyd i cd-kvalitet (44100Hz, 16bit, stereo) er den nødvendige plads: 44100 * 2 * 2 * 60 = 1058400 Byte = 10335.938 Kilobyte. Det er omkring 10 MByte af data pr minut. +Brug altid den bedste kvalitet der er nødvendig. Reduktion af kvaliteten senere er altid muligt, men forbedring af kvaliteten er ikke muligt da det så er nødvendigt med mere data end tilgængeligt. +Det sidste punkt over knappen er et afkrydsningsfelt til brug af indtastede værdier som standarder for hver ny fil uden at vise denne dialog igen. +Idet den samme dialog også er tilgængelig i indstillingen til at vælge standardopsætningen, er der adgang til "Brug standard..."-afkrydsningsfeltet derfra for at få dialogen for hver fil tilbage. + + + +VU-Måler +Da komprimering formodentlig ikke er nødvendig for hver opgave er vu-måleren med dens indbyggede lydstyrkekontrol den vigtigste del af &krec; til optagelser. Den viser det faktiske niveau der bliver optaget til filen efter de effekter der bliver brugt og efter lydstyrken er sat med kontrollen. Hvis den er dybt rød det meste af tiden er optagelsen formodentlig klippet og lyder ikke godt. Hvis den flimrer omkring de nederste 2% er det formodentligt ikke meget du vil høre i din optagelse. +For gode optagelser skal niveauet være mellem -12dB og 0dB det meste af tiden. +Brug komprimeringen til at redigere dynamikken i dine optagelser. Se for mere info. + + +
+ + + + +Medvirkende og licens +&krec; +Program ophavsret 2002-2003 Arnold Krillearnold@arnoldarts.de +Dokumentation ophavsret 2002-2004 Arnold Krille arnold@arnoldarts.de +&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; + + +Installation + + +Hvordan får man fat på &krec; +&install.intro.documentation; + + +Krav +For at bruge &krec; 0.5.1 med heldigt resultat, har du brug for &kde; 3.3. +&krec; skulle være i tdemultimedia-pakken. Eftersom pakken kræver at &kde; og &arts; kører, skulle alting være i orden. + + + +Kompilering og installation +&install.compile.documentation; + + + +&documentation.index; +
+ + diff --git a/tde-i18n-da/docs/tdemultimedia/kscd/Makefile.am b/tde-i18n-da/docs/tdemultimedia/kscd/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kscd/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/kscd/Makefile.in b/tde-i18n-da/docs/tdemultimedia/kscd/Makefile.in new file mode 100644 index 00000000000..94610e8e2de --- /dev/null +++ b/tde-i18n-da/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 = da +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kscd/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kscd/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-da/docs/tdemultimedia/kscd/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/kscd/index.cache.bz2 new file mode 100644 index 00000000000..52b916ae554 Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/kscd/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/kscd/index.docbook b/tde-i18n-da/docs/tdemultimedia/kscd/index.docbook new file mode 100644 index 00000000000..418741ed14e --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/kscd/index.docbook @@ -0,0 +1,1612 @@ + + + + + +]> + + + + +&kscd;-håndbogen + + + +Mike McBride
&Mike.McBride.mail;
+
+ +Jonathan Singer
&Jonathan.Singer.mail;
+
+ +David White
a9403784@unet.univie.ac.at
+
+
+ +Bernd Johannes Wuebben
&Bernd.Johannes.Wuebben.mail;
+Udvikler +
+ +Dirk Forsterling
milliByte@gmx.net
+Udvikler +
+ +Dirk Foersterling
milliByte@gmx.net
+Udvikler +
+ +Lauri Watts
&Lauri.Watts.mail;
+Tester +
+&erik.kjaer.pedersen.role; +
+ + +20002004 +J Singer + + + + +2005-2006 +Mike McBride + +&FDLNotice; + + +2005-12-22 +1.5 + + +&kscd; er en lille hurtig, CDDB-følsom lyd-&CD;-afspiller for &UNIX;-platforme. + + + +KDE +tdemultimedia +kscd +musik +cd +lyd + + +
+ + +Indledning + +&kscd; er en lille hurtig, CDDB-følsom &CD;-afspiller for &UNIX;-platforme. &kscd; står for KDE-projektets lille/enkle &CD;-afspiller. + +Nyhed: Perlscriptet workman2cddb.pl som sørger for at forenkle overgangen for brugere af Workman. + +Jeg håber du vil nyde denne &CD;afspiller. + +&Bernd.Johannes.Wuebben; + +&Bernd.Johannes.Wuebben.mail; + + +Understøttede platforme + +&kscd; understøtter udtrykkelig følgende platforme: + + +&Linux; +FreeBSD +NetBSD +BSD386 +Sun +&Solaris; (inklusive cdda-støtte) +&HP-UX; +&SGI; Irix (inklusive cdda-støtte) +Sony NEWS +OSF/1 +Ultrix + + +og skulle kunne kompilere på mange flere med små ændringer. + + + + + + +Grundlæggende skærmhåndtering + + +Basal brug + + +&kscd;-grænsefladen + + + +&kscd;-grænsefladen + + + +Dette er &kscd;s hovedvindue. Du bør se noget som ligner dette når du starter &kscd;. Knapperne i dette vindue forklares nedenfor, i tilfældig rækkefølge. + + +Kontrolpanelet + + +Kontrolpanelet + + +Kontrolpanelet + + + +Dette er &kscd;s hovedkontrolpanel. Funktionen af disse knapper bør være kendt for alle som nogensinde har brugt en cd-afspiller. + +Den øverste knap i diagrammet ovenfor skifter mellem at spille og holde pause for &CD;'en, Den venstre knap i anden linje stopper afspilningen af &CD;'en. Den højre knap i anden linje skubber &CD;'en ud. De to knapper i tredje linje går fremad (højre) eller tilbage (venstre) til begyndelsen af næste eller forrige spor. Den venstre knap i den nederste række slår tilfældig spillerækkefølge til og fra; den højre knap i den nederste række slår afspilning i løkke til og fra, så &CD;'en vil starte med at spille igen fra begyndelsen når slutningen af det sidste lydspor er nået. + + + + +Statusvinduet + + +Statusvinduet + + +Statusvinduet + + + +Dette er statusvinduet. Begyndende øverst, fra højre til venstre, er hovedtidsvisningen (se nedenfor for en diskussion af de forskellige mulige tidsvisningstilstande), status for &CD-ROM;-enheden, den totale spilletid for lyd-&CD;'en, den nuværende lydstyrkeindstilling, og nuværende og største spornumre (nuværende/største). De to nederste linjer tekst viser kunstner og titel for &CD;'en, under forudsætning af at indgangen findes i den lokale eller netværkets CDDB (&CD;--database). + +Klik på tidsvisningen skifter mellem de mulige tilstande for visning af tid. Normalt viser &kscd; tilbageværende tid for nuværende spor, hvis &CD;'en spilles, eller enten ––:–– eller 00:00 hvis &CD;'en ikke spilles. Ved at trykke på denne knap skiftes i rækkefølge mellem tilbageværende tid for sporet, totalt gået tid, og total tilbageværende tid. + + + +<guibutton +>Indstillings</guibutton +>knappen + + +Ekstra-knappen + + +Ekstra-knappen + + + +Denne knap får en menu frem med et antal valgmuligheder. Du kan vælge at åbne &kscd;'s indstillingspanel eller at indstille genvejstaster. Disse tillader dig at indstille &kscd; til at virke nøjagtig efter din smag. Se afsnittet Indstil &kscd;, for detaljer om at indstille &kscd;. +Denne menu giver adskillige værktøjer til at hjælpe med at lede efter information om kunstnere på internettet. Du kan finde ud af datoer for optræden, indkøbsinformation,og skaffe anden information ved at trykke på denne knap og vælge passende punkter i menuen som kommer frem. +Denne menu tillader dig også at åbne dette hjælpedokument, rapportere fejl, lære mere om &kscd; og &kde; og at afslutte &kscd;. + + + +<guibutton +>CDDB</guibutton +>-knappen + + +CDDB-knappen + + +CDDB-knappen + + + +Denne knap åbner panelet for CDDB-indtastningseditor (Compact Disc Database). + +CDDB kan identificere din &CD;, og oftest hente en liste af spor for den, eller indlæse listen fra filsystemet. Se afsnittet &CD;-databaseeditor for flere detaljer om at bruge dette værktøj. + + + + + + +Lydstyrke-skyderen + + +Lydstyrke-skyderen + + +Lydstyrkeskyderen + + + +Denne skyder kontrollerer lydstyrken for &CD;'en. Til højre er højere, til venstre er lavere. Hvis du spiller &CD;'en gennem lydkortet, påvirker lydkortets mikser også afspilningslydstyrken. + + + + +Sporvalget + + +Sporvalget + + +Sporvalget + + + +Dette kombinationsfelt viser dig nuværende spornummer, sporets navn og tiden (i minutter og sekunder). Du kan bruge dette dropned-felt til direkte at vælge et hvilket som helst spor på cd'en. + + + + + + +Indstil &kscd; + +Det primære indstillingsvindue + +Du indstiller &kscd; ved at klikke på knappen Ekstra. Dette viser en menu, hvor du vælger Indstil &kscd;.... Dette åbner et nyt vindue. +Det primære indstillingsvindue for &kscd; er opdelt i to hovedafsnit. + + +Cd-spiller for at bestemme udseende og opførsel af &kscd;. +CDDB som bruges til at indstille &kscd;s funktion for opslag i CDDB. + + +Du kan skifte mellem disse to afsnit med ikonerne til venstre i dialogen. + + + +Dialogen <guilabel +>Cd-afspiller</guilabel +> + + +Dialogen Cd-afspiller + + +Dialogen KSCD-konfiguration + + + +Tekstfeltet LCD-skrifttype viser skrifttypen som for øjeblikket er valgt til at vise al information i &kscd;s statusvindue. Klik på knappen Vælg... for at ændre skrifttypen. + +Feltet LCD-farve: og Baggrundsfarve: viser farven som er valgt for forgrunden og baggrunden i statusvinduet. Tryk på farvebjælkerne for at ændre disse farver. + + + + +Markering af afkrydsningsfeltet som hedder Vis ikon i statusfeltet gør at en &kscd;-ikon vises i &kicker;-panelet. + +Markering af afkrydsningsfeltet som hedder Vis spormeddelelser gør at et lille informationsvindue vises ovenpå panelets vindue hver gang et cd-spor ændres. Vinduet forsvinder automatisk efter 5 sekunder. + + +Eksempel på spormeddelelse + + +Eksempel på spormeddelelse + + + + +Indstil feltet Skip-interval til det ønskede antal sekunder som springes frem eller tilbage når knapperne skip fremad eller skip tilbage i kontrolpanelet bruges. + +Spil automatisk når cd sættes ind gør at &kscd; begynder at spille cd'en når den sættes ind, uden at behøve at trykke på knappen Spil. + +Skub ud ved afslutning gør at &CD;'en skubbes ud automatisk når afspilningen slutter. + +Hold op med at spille cd ved afslutning gør at afspilning af &CD;'en stopper når &kscd; afsluttes. + +Feltet &CD-ROM;-enhed indeholder navnet på den &CD-ROM;-enhed som skal bruges til at spille lyd-&CD;'er. Standardværdien er /dev/cdrom. Rettighederne for denne enhed skal være indstillede så enheden kan åbnes for læsning. At ændre rettigheder for enheden kræver næsten altid systemadministratorsrettigheder og kan gøres fra kommandolinjen eller i &konqueror;s systemadministreringstilstand. + +Inden vi beskriver følgende tilvalg, er det vigtigt at forstå at der er to måder som personlige computere kan spille en cd. + +Den første metoden (som &kscd; refererer til som direkte digital afspilning), udføres ved at læse digitale data fra cd'en med digital lydekstraktion (DAE, Digital Audio Extraction). Denne data sendes til maskinens processor som konverterer digital data til lyd. Denne metode kræver en cd-enhed som er i stand til DAE (de fleste nye enheder er det) og den kræver en del processorkraft for at generere lyden du hører. + +Den anden metode bruger de interne kredse som er tilgængelige på de fleste cd-enheder til at læse data og oprette de lyde som du hør uden at bruge maskinens processor. Data sendes med et særligt kabel direkte til maskinens lydkort. Denne metode kræver mindre processorkraft, men den kræver at det særlige kabel er forbundet inde i maskinen. Ikke alle maskiner har denne forbindelse. + +Afkrydsningsfeltet som hedder Brug direkte digital afspilning afgør hvilken metode som &kscd; bruger til at læse lydsporene. Hvis afkrydsningsfeltet er markeret, bruges den første metode. Hvis afkrydsningsfeltet ikke er markeret, udnyttes den anden metode. + +Hvis du har valgt direkte digital afspilning, lader et dropned-felt som hedder Vælg lydbaggrundsprogram: dig vælge hvilket lydbaggrundsprogram den digitale information skal sendes til. Indholdet i dropned-feltet varierer afhængig af systemet. De fleste brugere bør vælge arts. Du kan også bruge enheden som lydbaggrundsprogrammet bruger, ved at indtaste enhedens sted i tekstfeltet som hedder Vælg lydenhed:. En fuldstændig beskrivelse af lydenheder og lydbaggrundsprogrammer går udover denne håndbogs omfang. + +Hvis afkrydsningsfeltet som hedder Tillad valg af tegnsæt er markeret, kan du vælge tegnsætte for resultatet af CDDB-forespørgsler. +Standarden beskriver CDDB-resultater som kun værende er Latin-1. Hvis du ikke har problemermed CDDB-information, så efterlad feltet uden markering. + + +Knappen Hjælp åbner indholdsfortegnelsen for &kscd;s håndbog. Knappen Standard genoprette standardværdier for alle tilvalg i dialogen. O.k. gemmer nuværende indstillinger og afslutter. Anvend gemmer nuværende indstillinger uden at afslutte. Annullér afslutter uden at gemme. + + + +Fanebladet <guilabel +>freedb-opslag</guilabel +> + +Fanebladet freedb-opslag i indstillingsdialogen + + +Fanebladet freedb-opslag i indstillingsdialogen + + + +Fanebladet freedb-opslag indstiller CDDB-funktionen i &kscd;. + +Tilstand afgør hvordan CDDB-opslag bliver udført. Indstillgen Kun cache betyder at kun information der allerede er på din computer vil blive brugt. Cache og ekstern vil slå information op du ikke allerede har mens Kun ekstern slår hver disk op over internettet. + + +Feltet CDDB-server afgør hvilket CDDB-spejlsted som bruges af &kscd; til at hente albuminformation. Du kan skrive et servernavn, portnummer og protokol ved at bruge tekstfelterne og kombinationsfelterne, eller klikke på knappen Vis liste over spejlsteder. At klikke på knappen viser et nyt vindue med en liste over CDDB-spejlsteder og deres plads. Vælg blot serveren du vil have i listen, og klikke på O.k. + +Feltet som hedder Cachesteder lader dig bestemme hvor &kscd; gemmer CDDB-information på maskinen. For at tilføje en mappe, skrives mappens sted i tekstfeltet længst oppe og så klikkes på Tilføj. Du kan også vælge en mappe ved at klikke på den blå filmappe til højre for tekstfeltet. For at fjerne et mappe, klikkes en gang på mappenavnet med venstre museknap og så klikkes på Fjern. Du kan ændre rækkefølgen som &kscd; gennemsøger mapperne ved at klikke på mappenavnet og klikke på knapperne Flyt opad og Flyt nedad. + +Knappen Hjælp åbner indholdsfortegnelsen for &kscd;s håndbog. Knappen Standard genoprette standardværdier for alle tilvalg i dialogen. O.k. gemmer nuværende indstillinger og afslutter. Anvend gemmer nuværende indstillinger uden at afslutte. Annullér afslutter uden at gemme. + + + + +Fanebladet <guilabel +>freedb-indsendelse</guilabel +> + + +freedb-indsendelsesfaneblad + + + + + +freedb-indsendelsesfanebladet indstiller forbindelsen til en e-mail-server til at indsende nye CDDB-indgange. Dette er nyttigt hvis du ikke har dit eget system indstillet som en server. + +Hvis du planlægger at indsende CDDB-information, skal du først bestemme om du vil sende ind med HTTP eller send informationen ind som e-mail (via SMTP). + +Det er nemmere at sende ny information ind ved at bruge &HTTP;. Visse brandmure blokerer denne trafik. Hvis din brandmur forhindrer dig i at indsende ny information ved at bruge &HTTP;, kan du bruge SMTP. + +Vælg først enten &HTTP; eller SMTP (e-mail) for at afgøre hvilken protokol som skal bruges. + + +Brug af &HTTP; til at sende CDDB-information +Du kan indtaste et servernavn eller portnummer i tekstfelterne som der bliver sørget for. Hvis du vil indsende informationen til de internationale servere behøver du ikke ændre noget. + + + +Brug SMTP (e-mail) til at sende CDDB-information +For at forberede dig på at indsende information via e-mail, skrives din e-mail-adresse i tekstfeltet som hedder Svar til:, din e-mail-server i tekstfeltet som hedder SMTP-server: og vælg portnummeret i dropned-feltet som hedder Port:. +Hvis du skal bruge et kodeord for at sende e-mail med e-mail-serveren, markeres afkrydsningsfeltet som hedder Serveren kræver godkendelseskontrol og skriv så dit brugernavn i tekstfeltet som hedder Brugernavn:. + +Knappen Hjælp åbner indholdsfortegnelsen for &kscd;s håndbog. Knappen Standard genoprette standardværdier for alle tilvalg i dialogen. O.k. gemmer nuværende indstillinger og afslutter. Anvend gemmer nuværende indstillinger uden at afslutte. Annullér afslutter uden at gemme. + + + + + + + +<guilabel +>Cd-databaseeditor</guilabel +> + + +&CD;-databaseeditor + + +&CD;-databaseeditor + + + +Cd-databaseeditoren lader dig ændre, hente, gemme, tilføje påtegninger og overføre CDDB-indgange (Compact Disc database). + +Hvis der er en indgang i dit lokale CDDB-træ (se afsnittet CDDB i kapitlet om indstilling) for &CD;'en i &CD-ROM;-enheden, eller hvis &CD;'en blev fundet i freedb, vises navnet og titlen på &CD;'en i felten Kunstner og Titel og en sporliste med sangtitler i dropned-feltet Spor. Ellers ser du en liste over spor og spilletider uden titler. + +Du kan tilføje en påtegning for hele disken med knappen Kommentar under feltet Titel, eller for et markeret spor i feltet Spor med knappen Kommentar ved siden af. Hvis du markerer et spor i feltet Spor, vises titlen, hvis den findes, i feltet Titel nedenfor. Du kan indtaste en titel for sporet i feltet, eller redigere titlen så du bliver tilfreds. Tryk på &Enter; på tastaturet, så dukker teksten op på den rigtige linje i dropned-feltet. + +Når alle spor har fået titler og Kunstner og Titel er udfyldt, kan du trykke på knappen Overfør for at sende dit bidrag til freedb med e-mail + +Du bliver bedt om at vælge en kategori for bidraget. Disk-id sektionen viser den 32-bits ID-kode som freedb bruger til at identificere en cd. Ovenfor ID-koden findes CDDB-indgangens kategori. Disse kategorier svarer til undermappetræet for mappen som vælges i Basismappe for freedb i fanebladet freedb i &kscd;'s indstillingsvindue. + +Længde: viser den totale spilletid for &CD;'en. + +Tryk på knappen Hent information for at henteCDDB-data. Tryk på knappen O.k. for at gemme ændringerne lokalt. Knappen Annullér kan bruges for at afslutte &CD;-databaseeditoren uden at gemme. + + + + +Brug &kscd; i &kde;'s panel + + +Brug &kscd; i &kde;'s panel + + +Brug &kscd; i &kde;'s panel + + + +Når feltet Vis ikon i statusfelt er markeret, vises også et lille miniprogram i &kicker;. Til forskel fra &kscd;'s hovedvindue, er dette miniprogram tilgængeligt på alle desktoppe. Højreklik på miniprogrammet for at vise en menu som styrer afspilning af &CD;'en. Et venstreklik på miniprogrammet skjuler &kscd;'s hovedvindue. Hvis hovedvinduet er skjult vises det igen med et nyt venstreklik på miniprogrammet. + +For at være præcis, så vises miniprogrammet i panelets statusfelt. Hvis intet miniprogram vises når &kscd; minimeres, har måske du fjernet statusfeltet. For at tilføje det igen, højreklikkes på et tomt sted i panelet og vælg Tilføj Miniprogram Statusfelt + + + + +<acronym +>CDDB</acronym +>-støtte + +freedb er en distribueret netværksdatabase, tilgængelig via internettet, som indeholder information om de fleste lyd-&CD;'er som er i cirkulation. Hvis du har adgang til internettet, behøver du formodentlig aldrig indtaste sporinformation manuelt for dine &CD;'er, hvis du har indstillet funktionen rigtigt. Se afsnittet Fanebladet freedb i kapitlet om at indstille &kscd; for detaljerede instruktioner om hvordan denne funktion skal indstilles, og afsnittet Cd-databaseeditor for instruktion om hvordan man redigerer CDDB-indgange. + +Brug af CDDB er gratis. Bidrag fra brugere opmuntres. + +Når du forbereder indgange til CDDB, så husk venligst følgende: + + +Brug almindelige tegn fra det latinske alfabet i indgangene. Visse specialtegn understøttes, men tegn fra det cyrillisk eller græske alfabet accepteres for eksempel ikke. +Brug kun et / tegn i feltet Kunstner / Titel i cd-databaseeditoren. + +For klassiske &CD;'er er det alment accepteret at angive komponistens navn i kunstnerdelen (inden skråstregen) og kunstnerens navn i titeldelen (efter skråstregen). +Hvis du indsender en indgang som allerede findes i databasen, kan eventuel yderligere information som du angiver tilføjes til den eksisterende indgang. + + + +Normalt installerer &kscd; CDDB-standardkategorier i $KDEDIR/share/apps/kscd/cddb. Du kan oprette så mange undermapper som du vil. Når du overfører vises dog kun de officielle CDDB-kategorier. Den forvalgte overførselsadresse er freedb-submit@freedb.org. For mere information, besøg hjemmesiden for freedb. + +Den lokale CDDB-indgang for en vis &CD;, opbevares i filen kategorinavn/disk-id under basismappen for CDDB. Disse filer kan redigeres med en hvilken som helst teksteditor, hvis du ikke har noget bedre at tage dig til på et ledig tidspunkt. + + + + +Fejlsøg cd-spilleren + +Dette afsnittet i håndbogen sørger for en skridtvis guide for at fejlsøge din cd-enhed hvis cd-spilleren ikke vil spille en lyd-cd + + +Begynd at fejlsøge +For at begynde, indsættes en lyd-cd i cd-enheden. Luk cd-enheden og klik på Spil i &kscd;s vindue. Kig på maskinens cd-enhed og vælg linket nedenfor som bedst beskriver problemet. +Da jeg trykkede på Spil: + +Kom en fejlmeddelses frem +Kom ingen fejlmeddelelse frem + + + +Jeg fik ingen fejlmeddelelse, men det kommer ingen lyd ud af mine højtalere +Først kontrollerer vi at lyden er skruet op i &kscd;. +Lydstyrkeskyderen er tæt på øverste højre hjørne i &kscd;s vindue. Lydstyrkeskyderen ser sådan her ud: + +Lydstyrke-skyderen + + +Lydstyrkeskyderen + + +Klik en gang på den lodrette markering og træk den hele vejen længst til højre på skyderen. +Hvis du kan høre musikken nu, er problemet løst. Hvis du stadigvæk ikke kan høre musikken, så klik her for at fortsætte. + + +Afgør om mikserlydstyrkeniveauerne er oppe +Næste skridt er at afgøre om lydstyrkeniveauerne i &kmix; er passende. +&kmix; er et lydmikserpanel som indgår i &kde;. Mikseren lader dig justere de relative lydstyrkeniveauer for mange lydkomponenter. +For at starte &kmix;, vælges K-menuen Lyd og video &kmix;. +Når &kmix; er startat, vises et nyt vindue med et antal lydstyrkeskydere. Afhængig af indstillingen, kan skyderen have etiketter, eller etiketterne kan være skjulte. Hvis du ikke ser nogle etiketter ved skyderen, bør du gøre etiketterne synlige inden du fortsætter. For at gøre etiketterne synlige, vælges Opsætning Indstil &kmix;... i &kmix; vindue. Det viser et lille vindue med nogle afkrydsningsfelter. For at vise etiketter, markeres afkrydsningsfeltet som hedder Vis etiketter og klik på O.k. +Hver skyder styrer lydstyrken hos forskellige lydenheder. Der er to dele for hver enhed som kan behøve at ændres. Hvis du kigger på en skyder, er der en grøn lysdiode ovenfor hver skyder. Hvis du klikker på lysdioden kan du veksle mellem lusegrøn og mørkegrøn. Hvis lysdioden er mørkegrøn, er lydenheden tavs og afgiver ingen lyd. Hvis lysdioden er lysegrøn, er enheden ikke tavs. Når du har kontrolleret at enheden ikke er tavs, øger du enhedens lydstyrke ved at trække markeringen opad på skyderen. Lydstyrken for en lydenhed mindskes ved at trække markeringen nedad langs skyderen. +Visse skydere har også en rød lysdiode. Denne lysdiode er ikke vigtig for afspilning af cd'er, så du kan ignorere dem for øjeblikket. +Klik på fanebladet som hedder Uddata. +Sørg for at skyderen ikke er tavs (stærk grøn lysdiode) og at markeringen er hele vejen længst oppe på skyderen for følgende lydenheder: + +Master +Master Mono +PC Speaker +PCM + + +Hvis du stadigvæk ikke hør cd'en, så klik på fanebladet som hedder Input +Sørg for om at skyderen markeret CD ikke er tavs (stærk grøn lysdiode) og at markeringen er hele veje længst oppe på skyderen. +Hvis du kan høre cd'en nu, kan du holde op med at fejlsøge. Hvis ikke, klik her for at fortsætte + + +Afgør om andre lyde er hørbare på maskinen +I dette afsnit skal vi prøve om andre typer af lyd er hørbare på maskinen. Vi gør dette ved at spille en lyd som er opbevaret på din harddisk via højtalerne. +Først skal vi finde en passende testfil. Dette gøres på kommandolinjen. +Vælg K-menuenSystem &konsole;. Et nyt vindue med en kommandolinje vises. Skriv følgende på den: +$ locate -n1 KDE_Window_Open.wav +Når du trykker på returtasten bliver der en pause, og en enkelt linje med en fil skrives ud under kommandoen du skrev ind. +$ locate -n1 KDE_Window_Open.wav +/usr/local/kde/share/sounds/KDE_Window_Open.wav + +Nu skal du bede &kde; om at afspille denne korte lydfil. Indtast teksten noatun fulgt af et mellemrum. Kopiér derefter det fuldstændige sted for filen som du netop lokaliserede med den foregående kommando. For eksempel: +$ noatun /usr/local/kde/share/sounds/KDE_Window_Open.wav +Hvis du hører en kort lyd, klik her. +Hvis du ikke hørte en kort lyd, er lydsystemet ikke rigtigt indstillet. Klik her for at fortsætte. + + + +Afspilning af testlyden mislykkedes +Hidtil har vi kontrolleret at lydstyrken i &kscd; og alle mikserniveauer i &kmix; er rigtigt indstillede. Vi har også spilet en testlyd, og du kunne ikke høre lyden afspilles. Dette tyder på at problemet ikke har med &kscd; at gøre, men i stedet med din lydkonfiguration. +Sørg for dig at cd'en stadigvæk spiller i cd-enheden. +Først skal vi sikre os at dine højtalere er sluttet til og at højtalernes lydstyrke er rigtigt indstillet. Hvis du bruger eksterne højtalere, kontrolleres følgende: + +Sørg for at højtalerne er rigtigt sluttet til maskinen (se brugermanualen om nødvendigt). +Hvis dine højtalere kræver batterier, erstat batterierne med nye. +Hvis dine eksterne højtalere skal være tilsluttet strøm, så sørg for at de er det, og at ledningen er sikkert forbundet på højtalernes bagside og at vægkontakten fungerer. +Hvis dine højtalere har en strømafbryder, så skal du sikre dig at strømmen er på. +Hvis dine højtalere har en lydstyrkeknap, så skal du sikre dig at lydstyrken er indstillet halvvejs mellem af og maksimal værdi. + + +Hvis dine højtalere indgår i computerens kasse, kontrolleres om de har en lydstyrkeknap. Hvis de har det, så sørg for at lydstyrken er indstillet halvvejs mellem af og maksimal værdi. + +Hvis du har kontrolleret alt dette, behøver du formodentlig detaljeret hjælp for at få lyd at fungere på maskinen. En fuldstændig beskrivelse af fejlsøgning af lydsystemet er udenfor denne håndbog omfatning, og brugeren henvises til andre ressourcer på Internet. Visse potentielle informationskilder er: + + +Linux Sound HOWTO. +Din distributørs hjemmeside har sikkert et brugerforum til at stille spørgsmål. +Send et spørgsmål en gruppe på Usenet såsom comp.os.linux +Anvend en søgetjeneste for at finde andre som har stødt på lignende problemer som dig. + + + + +Afspilning af testlyden lykkedes, men jeg kan ikke høre cd'en +Hidtil har vi kontrolleret at lydstyrken i &kscd; og alle mikserniveauer i &kmix; er rigtigt indstillede. Vi har også spillet en testlyd, og du kunne høre lyden blive spillet. Det tyder på at problemet er begrænset til &kscd; eller cd'en. +Kontrollér at cd'en virkelig er spilbar. Hvis det er en ny cd, put den ind i en anden cd-spiller (helst ikke i en computer) og se efter at cd'en kan afspilles i den enhed. Hvis den kan spilles i en anden enhed, fortsæt her. + + + +Forsøg at bruge direkte digital afspilning +Der er to måder som en personlig computer kan spille en cd. + +Den første metoden (som &kscd; refererer til som direkte digital afspilning), udføres ved at læse digitale data fra cd'en med digital lydekstraktion (DAE, Digital Audio Extraction). Denne data sendes til maskinens processor som konverterer digital data til lyd. Denne metode kræver en cd-enhed som er i stand til DAE (de fleste nye enheder er det) og den kræver en del processorkraft for at generere lyden du hører. + +Den anden metoden bruger de interne kredse som er tilgængelige på mange cd-enheder til at læse data og oprette de lyd som du hører uden at bruge maskinens processor. Data sendes med et særligt kabel direkte til maskinens lydkort. Denne metode kræver mindre processorkraft, men den kræver at det særlige kabel er forbundet inde i maskinen. Ikke alle maskiner har denne forbindelse. + +&kscd; bruger normalt den anden metode til afspilning. Næste skridt i at fejlsøge dine cd-problemer er at aktivere direkte digital afspilning. For at gøre dette, begynd med at klikke på knappen som hedder Stop i &kscd;s vindue. Det stopper indtil videre alle forsøg på at spille cd'en. + +Klik nu på knappen som hedder Ekstra. Det viser en lille menu. Vælg Indstil &kscd;.... Det åbner en ny dialog. +Klik på ikonen som hedder Cd-spiller til venstre i dialogen. +Markér afkrydsningsfeltet som hedder Brug direkte digital afspilning. +Klik på o.k. +Klik nu på Spil i &kscd;s vindue og se om cd'en begynder at spilles rigtigt. + +Hvis du stadigvæk ikke kan høre musikken på cd'en, kræver dit problem specifik kundskab om dit system og problemerne du støder på. Læseren henvises til mange gode ressourcer på internettet for denne information. Overvej at skaffe hjælp på en af følgende måder: + + +Din distributørs hjemmeside har sikkert et brugerforum til at stille spørgsmål. +Send et spørgsmål til en gruppe på Usenet, såsom comp.os.linux, eller en direktemeddelelseskanal for brugere af dit operativsystem +Anvend en søgetjeneste for at finde andre som har stødt på lignende problemer som dig. + + + + + + +En fejlmeddelelse blev vist +Formodentlig er fejlmeddelelsen som vises denne: + +Fejldialog + + +Fejldialog + + + +Information om hvordan denne dialog kan ordnes er tilgængelig i afsnittet Spørgsmål og svar i denne håndbog. + +Hvis du får en anden fejlmeddelelse, kan du sende teksten fra fejlmeddelelsen ind til et forum for din distribution eller indtaste teksten i en søgetjeneste såsom Google. + + + + +Spørgsmål of svar + + + +Denne dialog vises når jeg starter &kscd;. Hvad er forkert? + +Fejldialog + + +Fejldialog + + + +Dette betyder at &kscd; ikke kunne åbne din &CD-ROM;enhed. Navnet på enheden under &CD-ROM;-enhed i Kscd's indstillinger skal angive blokenheden som hører sammen med din &CD-ROM;-enhed. Dette er ofte et hårdt link til en tilsvarende IDE- (/dev/hdx) eller SCSI-enhed (/dev/sdx). + +Enhedsfilen tilhører normalt brugeren root i gruppen root, og tillader ikke at almindelige brugere direkte åbner den til læsning, skrivning eller kørsel. Dette har ingenting at gøre med SUID kommandoen mount (Set User ID program bruger funktionen setuid() i Unix standardbibliotek for at antage en anden brugeres identitet), som ikke har nogen problemer med rettigheder. &kscd; skal kunne få en filbeskriver med læserettigheder som repræsenterer enheden for at kunne styre den og læse rå data fra disken. + +Hvis du kender til root's kodeord, kan du rette dette hurtigt og enkelt: Log på som root og skriv chmod /dev/cdrom for at lade alle brugere på systemet læse fra /dev/cdrom. Hvis din &CD-ROM;-enhed kaldes noget andet, ændres navnet på den enhed med samme procedure. Hvis du ikke kender root's kodeord, så bed din systemadministrator om at få rettighed til at læse fra &CD-ROM;-enheden. + +Se også kapitlet Indstil KSCD + + + +Jeg kan ikke få CDDB til at virke. Kan jeg få mere detaljeret information om hvad som kan være gået galt? +Hvis du oplever problemer med CDDB-funktionen, prøv at starte &kscd; fra kommandolinjen med flaget og kontrollér fejlretningsudskrifterne. + + + + + +Medvirkende og licens + +&kscd; Ophavsret 1997,1998 &Bernd.Johannes.Wuebben; &Bernd.Johannes.Wuebben.mail; + +&kscd; indeholder kode fra: + +workman 1.4 beta 3 Ophavsret (c) Steven Grimm koreth@hyperion.com + + + +En særlig tak til Ti Kan og Steve Scherf, opfinderne af CDDB-databasebegrebet. Besøg http://ww.cddb.com for mere information om CDDB. + +En meget varm tak også til David White, som skrev den oprindelige &kscd;-hjælpedokumentation. Storartet job, David! + +Dokumentation opdateret for KDE 2.0, og ophavsret ved &Jonathan.Singer; &Jonathan.Singer.mail; + +Dokumentation opdateret for KDE 3.4, og ophavsret ved &Mike.McBride; &Mike.McBride.mail; + +&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; + + +Installation + + +Hvordan får man fat på &kscd; +&install.intro.documentation; + + +Krav + +For at kunne kompilere &kscd; med heldigt resultat, behøver du den seneste versionen af KDE-bibliotekerne samt &Qt; C++ biblioteker. Alle biblioteker som kræves samt &kscd; selv findes på &kde;'s &FTP;-sted, , &kde-ftp;. + + + + +Kompilering og installation &install.compile.documentation; Vær rar og informér den nuværende vedligeholder, Aaron Seigo, på &Aaron.J.Seigo.mail; om eventuelle ændringer som du blev tvunget til at lave for at få &kscd; til at kompilere på din platform. + + + + + +&documentation.index; +
+ diff --git a/tde-i18n-da/docs/tdemultimedia/noatun/Makefile.am b/tde-i18n-da/docs/tdemultimedia/noatun/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/noatun/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/tdemultimedia/noatun/Makefile.in b/tde-i18n-da/docs/tdemultimedia/noatun/Makefile.in new file mode 100644 index 00000000000..b9f7c1cf1c3 --- /dev/null +++ b/tde-i18n-da/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 = da +#>- 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-da/docs/tdemultimedia/noatun/index.cache.bz2 b/tde-i18n-da/docs/tdemultimedia/noatun/index.cache.bz2 new file mode 100644 index 00000000000..8e96074f75a Binary files /dev/null and b/tde-i18n-da/docs/tdemultimedia/noatun/index.cache.bz2 differ diff --git a/tde-i18n-da/docs/tdemultimedia/noatun/index.docbook b/tde-i18n-da/docs/tdemultimedia/noatun/index.docbook new file mode 100644 index 00000000000..530a7e7af07 --- /dev/null +++ b/tde-i18n-da/docs/tdemultimedia/noatun/index.docbook @@ -0,0 +1,624 @@ + + + + + +]> + + + +&noatun;-håndbogen + + +Charles Samuels
charles@kde.org
+
+
+&lars.schunk.role; +
+ + +20012002 +Charles Samuels + + +&FDLNotice; + +2002-03-01 +2.00.00 + + +&noatun; er en fuldt udstyret plugin-baseret medieafspiller for &kde;. + + + +KDE +Noatun +tdemultimedia +mp3 +musik +medie + +
+ + +Indledning + +&noatun; er en fuldt udstyret plugin-baseret medieafspiller for &kde;. + + +Egenskaber + +&noatun; er en fuldstændig forende til &arts; — the Analog Real-Time Synthesizer. For at tilføje spilleobjekter, gå til http://noatun.kde.org/plugins.phtml, eller http://mpeglib.sf.net. Som standard understøtter &arts; MP3 og MPEG-1. Vorbis er også understøttet hvis Vorbis-bibliotekerne var tilgængelige under kompileringen af &kde;. + + + + + +Brug af &noatun; + +&noatun; starter som normalt op med brugergrænsefladen 'Excellent'. Dette plugin blev valgt da det ligner andre KDE-programmer. + +&noatun; er unik idet der ikke findes to ens installationer, og der er ikke nogen standard-grænseflade, selv om der er valgt én på forhånd. Du må gerne mikse-og-matche dit udvalg af plugin, og indstille &noatun; indtil den er din ideelle medie-spiller! + + +Titelformat +&noatun;'s indstillingsvindue har et mærkeligt Titelformat tekstfelt. Du kan indtaste en formatstreng for at brugerindstille hvordan titler ser ud. + + +Al tekst ser normal ud, medmindre det er indenfor et $( ). +Teksten indenfor $( ) vil læse &noatun;-egenskaben for det givne punkt, og erstatte teksten med det. +Hvis der er citationstegn indenfor $( ), vil teksten indenfor citationstegnene blive vist normalt, men kun egenskaben for navnet eksisterer. +Citationstegnene kan enten være i begyndelsen af $( ), ved slutningen af den, eller både i begyndelsen og slutningen + + +For eksempel bliver $(bitrate) erstattet med filens bitrate, som den indlæses af dette Metatag-plugin. Hvis du imidlertid indsætter citationstegn i dette felt, vil teksten indenfor citationstegnene blive vist: $(bitrate"kbps") for eksempel vil vise filens bitrate, fulgt af tegnene "kbps". Ingen af delene vil blive vist hvis egenskaben bitrate ikke eksisterer. + + + + + +Brug af &noatun;-plugin + +Du kan vælge forskellige plugin ved at gå ind i menuen Opsætning og vælge Indstil &noatun;.... Klik på Plugin i listen til venstre. Du kan nu afkrydse de plugin, som du ønsker at aktivere ved at vælge afkrydsningsfeltet ved siden af deres navn. &noatun; behøver mindst et brugergrænseflade-plugin, og mindst et spilleliste-plugin. + + +Mælkechokolade + +Mælkechokolade er en lille og simpel brugergrænseflade. Knapperne fungerer stort set som på en cd-afspiller og 'skub ud'-knappen åbner en spilleliste. Knappen med et kryds på et papir fjerner det aktuelle spillelistepunkt, men sletter ikke filen fra disken, og pil-knappen aktiverer/deaktiverer løkkeafspilning. En menu er tilgængelig ved at klikke med højre museknap hvor som helst i vinduet. + + + + + +Young Hickory + +Young Hickory er et plugin til &kde;'s statusfelt, området som normalt befinder sig nær uret. + +Ved at klikke på ikonet med højre museknap, fremkommer en lille menu, og med venstre museknap kan du få &noatun;s grænsefladevinduer til at blive (u)synlige. Bemærk, at f.eks. spillelister ikke bliver betragtet som grænseflader. + + + + +<acronym +>HTML</acronym +> spilleliste-eksport + +Dette plugin vil placere din spilleliste i en flot HTML-tabel. Dets indstillingsside tillader dig at sætte farver, baggrundsbillede og aktivering af svævetilstand for ændring af farver, når markøren er over et link. + +Når du har sat de ønskede indstillinger, vil Handling-menuens Eksportér spilleliste åbne en fildialog, så du kan vælge hvor HTML-filen skal gemmes. + + + + +<application +>K-Jöfol</application +> Skins + +&noatun;s K-Jöfol forside-indlæser er en reimplementering af et &Windows;-program af samme navn. + +&noatun;s implementering har desværre nogle få begrænsninger. Forsiderne kan for eksempel ikke være komprimerede på disken hvis de skal kunne indlæses. + +For at installere en forside, (i &Windows; ZIP-format) kan du bruge forside-installatøren, der kan findes i &noatun;s indstillingsdialog. + +Idet nogle forsider ikke er pakket rigtigt og forside-installatøren ikke kan gætte alt, kan du stadig følge disse kommandoer, hvis installationen af en bestemt forside mislykkedes: + +% cd $KDEHOME/share/apps/noatun +% mkdir (om nødvendigt) +% cd +% mkdir ; cd new_skin +% unzip /path/to/new_skin.zip + +Du kan også lave dine egne forsider ved at følge vejledningen på http://www.angelfire.com/mo/nequiem/tutorial.html. + + + + +Den opdelte spilleliste + +Den opdelte spilleliste havde en simpel, klassisk-stil design. Dobbeltklik på en indgang vil spille den (hvilket valg af den efterfulgt af Enter også vil). Du kan også trække filer og &URL;er ind. + +Efter &kde; 3.0, vil den opdelte spilleliste (SPL) gemme sine data i &XML;-format, men den vil automatisk import m3u-listen hvis &XML;-filen ikke eksisterer. Det betyder at du kan skrive til m3u-filen, og slette &XML;-filen, for automatisk at generere spillelister. + +Navnet Opdelt spilleliste er egentlig forkert, da listen rent faktisk ikke er opdelt. Det skyldes at det oprindelige design (i de tidlige &noatun; dage) rent faktisk var opdelt. + + + +Winamp-forsider +Hvis du faktisk bruger Winamp-forsiden, burde den se velkendt ud for dig. Ved at klikke på tælleren, skifter den mellem tæl-ned- og tæl-op-tilstand. Du kan, ved at klikke på Scope-området under den, aktivere eller deaktivere Scope. Du kan også dobbeltklikke på titellinjen for at slå vinduesskygning til/fra. Et højreklik (eller et klik på ikonet i øverste venstre hjørne) åbner &noatun;s standardværktøjslinje. +Du kan installere nye forsider ved at oprette en mappe for dem i $KDEHOME/share/apps/noatun/skins/winamp, hvorefter du unzipper forsiden i mappen. Winamp-forsider med endelsen .wsz kan behandles som almindelige zip-filer. Du kan dog være nødt til at omdøbe dem først for at kunne unzippe dem. + + + +Metatag +Metatag er et plugin som indlæser information om en fil vha. KFile, den samme mekanisme der viser &konqueror;s værktøjsvink, når du lader musen hvile over en fil. Ud over at indlæse information, understøtter det også redigering af informationen via Handlinger-menuens underpunkt Mærkeredigering. Det understøtter redigering af ID3-mærker såvel som OggVorbis-mærker. Det kan også læse filers bitrate. + + + +Keyz +Carsten Pfeiffer besluttede sig for at bryde med den lange &noatun;-tradition om at navngive plugin så unøjagtigt som muligt, som bevist af både Mælkechokolade, Young Hickory og utallige andre. Hvor ligger det hensigtsmæssige i bare at ændre et S til et Z? Det lyder som noget amerikansk-engelsk-talende mennesker ville gøre! +Men selv om navnet er uoriginalt betyder det ikke at det ikke er et plugin som alle andre. Det lader dig nemlig binde nogle tastetryk til &noatun;-handlinger. Den store skønhed i dette ligger i den egenskab at disse tastetryk fungerer overalt, ikke kun i &noatun;. Så dette kan endelig gøre disse multimedietastaturer værdifulde. + + + +Infrarød kontrol +Hvis du har en fjernbetjening til din computer (som dem der findes på fjernsynskort med Brooktree-tunere), og din infrarøde fjernbetjening er understøttet af LIRC, skulle dette fungere. Som med Keyz, er navnet ikke særlig spændende, men dette plugin lader dig binde handlinger til tastetryk. +For at binde en handling til et tastetryk, indlæs dette plugin, gå til 'Infrarød kontrol'-siden i &noatun;s indstillingsvindue. Vælg tastetrykket i listen og vælg så hvilken handling der skal udføres i kombinationsfeltet nedenunder. Hvis du ønsker at en handling skal udføres gentagne gange, som f.eks. en lydstyrkekontrol, så klik i feltet og angiv intervallet mellem handlinger. +Hvis du har et TV-kort, er et praktisk trick at binde lyddæmperknappen til Pause, sådan at du kan slukke for lyden til dit TV-fremvisningsprogram, mens du sætter &noatun; i gang og vice versa. Dette er specielt nyttigt i tilfælde af reklamer. + + + + + +Spørgsmål, svar og tips + + +Ofte stillede spørgsmål + + +Musikken hakker meget, når jeg flytter vinduer. + + +Du kan have &arts; buffer mere som følger: + + +Start &kcontrol; +Gå til Lyd-gruppen +Gå til afsnittet Lydserver +Øg svartiden —384ms er sædvanligvis tilstrækkelig for de fleste computere. + + +Du kan også overveje at køre lydserveren med realtids prioritet hvis det at sætte svartiden ikke hjælper. Vær klar over at dette kan få dit system til at fryse. + + + + + +Jeg kan ikke fjerne en spilleliste eller en brugergrænseflade fra plugin-listen. + + +Da &noatun; kræver mindst én brugergrænseflade indlæst og præcis én spilleliste, er du nødt til at tilføje et nyt grænseflade-plugin inden du fjerner et gammelt et. Når du tilføjer en ny spilleliste, forsvinder den gamle automatisk. + + + + +Hvor kan jeg finde flere plugin? + + +Tredjepartsudviklere kan indsende deres egne plugin til &noatun;-hjemmesiden, hvorfra de kan downloades af brugerne. + + + + +Hvordan skriver jeg et &noatun;-plugin? + + +Dokumentation, en API-reference og et kildekode-eksempel er tilgængelig på &noatun;-hjemmesiden. Og i Open Source-softwarens ånd er kildekoden til &noatun; og alle standard-plugin tilgængelige. + + + + + + +Medvirkende og licens + +Program ophavsret 2000-2002 Charles Samuels charles@kde.org + +Dokumentation ophavsret 2002 Charles Samuels charles@kde.org + +&noatun; er gjort mulig af følgende mennesker: + + + +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 + + +&lars.schunk.credit; +&underFDL; &underBSDLicense; + + +Installation + + +Anskaffelse af &noatun; +&install.intro.documentation; + + +Systemkrav + +&noatun; kræver mindst en Pentium 200 med &Linux;, en PowerPC med &Linux; 2.4.1 eller senere, eller andre platforme. Understøttelse af flere platforme bliver mulig i senere versioner. + +For at en platform let kan understøttes, skal den have pthread-understøttelse og OSS-lydsystemet. ALSA er imidlertid understøttet i &Linux;. + + + + +Kompilering og installation +&install.compile.documentation; Hvis du løber ind i problemer, så rapportér dem venligst til forfatteren via charles@kde.org. + +Hvis du har denne dokumentation, så har du højst sandsynligt allerede kompileret &noatun;. + + + + + + +Glosar + + +Mælkechokolade +Mælkechokolade er et simpelt, minimalistisk brugerflade-plugin. + + +&arts; +&arts; er den Analoge RealTids-Synthesizer. En slagkraftig mediestruktur, som &noatun; anvender. + +K-Jöfol +Dette plugin indlæser forsider der oprindeligt bruges til en medieafspiller til &Windows; af samme navn. + + +Keyz +Keyz tillader dig at binde tastetryk til handlinger i &noatun;. + +Young Hickory +Young Hickory er et statusfelt-plugin. + +Noatun +Kaiman er et plugin der indlæser forsider fra medieafspilleren GQMPEG. Kaiman er også &noatun;s forgænger, som blev distribueret med &kde; for &kde; 2.0. Da &noatun; blev introduceret i &kde; 2.1, blev Kaimans forsideindlæser til et &noatun;-plugin. + + + +&documentation.index; +
+ -- cgit v1.2.1