diff options
Diffstat (limited to 'tde-i18n-da/docs/kdemultimedia')
59 files changed, 27446 insertions, 0 deletions
diff --git a/tde-i18n-da/docs/kdemultimedia/Makefile.am b/tde-i18n-da/docs/kdemultimedia/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = da +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-da/docs/kdemultimedia/Makefile.in b/tde-i18n-da/docs/kdemultimedia/Makefile.in new file mode 100644 index 00000000000..b613a40dcf4 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia +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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/artsbuilder/Makefile.am b/tde-i18n-da/docs/kdemultimedia/artsbuilder/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/artsbuilder/Makefile.in b/tde-i18n-da/docs/kdemultimedia/artsbuilder/Makefile.in new file mode 100644 index 00000000000..a672b541777 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/artsbuilder/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/artsbuilder/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/artsbuilder/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/artsbuilder/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/artsbuilder/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/artsbuilder/apis.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/apis.docbook new file mode 100644 index 00000000000..0c1cbf802b4 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/apis.docbook @@ -0,0 +1,424 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="arts-apis"> +<title +>&arts; programmeringsgrænseflade</title> + +<sect1 id="api-overview"> +<title +>Oversigt</title> +<para +>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. </para> + +<para +>Der er en vigtig distinktion som skal gøres: De fleste grænseflader er <emphasis +> sprog- og pladsuafhængige</emphasis +> eftersom de er specificerede som <emphasis +>mcopidl</emphasis +>. 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: </para> + + +<variablelist> +<varlistentry> +<term +>core.idl</term> + <listitem +><para +>Grundlæggende definitioner som danner kernen i MCOP-funktionen, såsom selve protokollen, definitioner af objekter, handleren, flowsystemet og så videre. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsflow.idl</term> + + <listitem +><para +>Disse indeholder flowsystemet som man bruger til at forbinde lydstrømmene, definitionen af <emphasis +>Arts::SynthModule</emphasis +> som er grundlaget for alle grænseflade som har strømme, og til slut nogle nyttige lydobjekter. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>kmedia2.idl</term> + + + <listitem +><para +>Her defineres <emphasis +>Arts::PlayObject</emphasis +>, 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. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>soundserver.idl</term> + + <listitem +><para +>Her defineres en grænseflade for systemets lydserver artsd. Grænsefladen benævnes <emphasis +>Arts::SoundServer</emphasis +>, 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). </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsbuilder.idl</term> + <listitem +><para +>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 <emphasis +>Arts::StructureDesc</emphasis +>, <emphasis +>Arts::ModuleDesc</emphasis +> og <emphasis +>Arts::PortDesc</emphasis +> 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. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsmidi.idl</term> + + <listitem +><para +>Dette modulet definerer grundlæggende midi-funktioner, såsom objekter som laver midi-begivenheder, hvad en midi-begivenhed er, og <emphasis +>Arts::MidiManager</emphasis +> til at forbinde producenter og konsumenter af midi-begivenheder, og så videre. Som altid er netværkstransparens underforstået. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsmodules.idl</term> + <listitem +><para +>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. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsgui.idl</term> + + <listitem +><para +>Denne tager sig af synlige objekter. Den definerer den grundlæggende type <emphasis +> Arts::Widget</emphasis +> 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. </para +></listitem> + +</varlistentry> + +</variablelist> +<para +>Hvor det er muligt implementeres aRts selv med IDL. På den anden side er der nogle <emphasis +>sprogspecifikke</emphasis +> 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: </para> + +<variablelist> + +<varlistentry> +<term +>KNotify, KAudioPlayer (indgår i libkdecore)</term> + + <listitem +><para +>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. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libartsc</term> + <listitem +><para +>Enkel C-grænseflade for lydserveren. Meget nyttig for at tilrette gamle programmer. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libmcop</term> + + <listitem +><para +>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. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libartsflow</term> + <listitem +><para +>Foruden implementeringen af artsflow.idl, nogle nyttige værktøjer for konvertering af samplingsrater. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libqiomanager</term> + + <listitem +><para +>Integration af MCOP i Qt's begivenhedsløkke, når man skriver Qt-programmer som bruger MCOP. </para +></listitem> + +</varlistentry> + +</variablelist> + + + +</sect1> +<sect1 id="knotify"> +<title +>knotify</title> +<para +>Endnu ikke skrevet </para> +</sect1> + +<sect1 id="kaudioplayer"> +<title +>kaudioplayer</title> +<para +>Endnu ikke skrevet </para> +</sect1> + +<sect1 id="libkmid"> +<title +>libkmid</title> +<para +>Endnu ikke skrevet </para> +</sect1> + +<sect1 id="kmedia2"> +<title +>kmedia2</title> +<para +>Endnu ikke skrevet </para> +</sect1> + +<sect1 id="soundserver"> +<title +>lydserver</title> +<para +>Endnu ikke skrevet </para> +</sect1> + +<sect1 id="artsflow"> +<title +>artsflow</title> +<para +>Endnu ikke skrevet </para> +</sect1> + +<sect1 id="capi"> +<title +>C <acronym +>API</acronym +></title> + +<sect2 id="capiintro"> +<title +>Indledning</title> + +<para +>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 <application +>artsd</application +>), 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;.</para> + +<para +>Jeg lavede to overførsler for at verificere idéen: <application +>mpg123</application +> og <application +>quake</application +>. Du kan skaffe programrettelserne <ulink url="http://space.twc.de/~stefan/kde/download/artsc-patches.tar.gz" +>herfra</ulink +>. 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.</para> + +</sect2> + +<sect2 id="capiwalkthru"> +<title +>Hurtig gennemgang</title> + +<para +>At sende lyd til lydserveren med grænsefladen er meget enkelt:</para> +<procedure> +<step +><para +>indsæt deklarationsfilen med <userinput +>#include <artsc.h></userinput +></para +></step> +<step +><para +>initiér grænsefladen med <function +>arts_init()</function +></para +></step> +<step +><para +>opret en strøm med <function +>arts_play_stream()</function +></para +></step> +<step +><para +>indstil særlige parametre med <function +>arts_stream_set()</function +></para +></step> +<step +><para +>skriv samplingsdata til strømmen med <function +>arts_write()</function +></para +></step> +<step +><para +>luk strømmen med <function +>arts_close_stream()</function +></para +></step> +<step +><para +>frigør grænsefladen med <function +>arts_free()</function +></para +></step> +</procedure> + +<para +>Her er et eksempel på et lille program som viser dette:</para> + +<programlisting +>#include <stdio.h> +#include <artsc.h> +int main() +{ + arts_stream_t stream; + char buffer[8192]; + int bytes; + int errorcode; + + errorcode = arts_init(); + if (errorcode < 0) + { + fprintf(stderr, "arts_init 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; +} +</programlisting> +</sect2> + +<sect2 id="capiartscconfig"> +<title +>Kompilere og linke: <application +>artsc-config</application +></title> + +<para +>For let at kunne kompilere og linke programmer med &arts; C-grænseflade, findes værktøjet <application +>artsc-config</application +> som kender til hvilke biblioteker som man skal linke med og hvor deklarationsfilerne findes. Det kaldes med</para> + +<screen +><userinput +><command +>artsc-config</command +> <option +>--libs</option +></userinput +> +</screen> + +<para +>for at finde ud af bibliotekerne og </para> + +<screen +><userinput +><command +>artsc-config</command +> <option +>--cflags</option +></userinput +> +</screen> + +<para +>for at finde ud af yderligere C-oversætterflag. Eksemplet ovenfor ville være kunnet kompileres med kommandolinjen:</para> + +<screen +><userinput +><command +>cc</command +> <option +>-o artsctest artsctest.c `artsc-config --cflags` `artsc-config --libs`</option +></userinput> + +<userinput +><command +>cc</command +> <option +>-o artsctest</option +> <option +>artsctest.c</option +> <option +>`artsc-config --cflags`</option +> <option +>`artsc-config --libs`</option +></userinput +> +</screen> + +</sect2> + +<sect2 id="c-api-reference"> +<title +>Biblioteksreference</title> + +<para +>[HUSK: opret dokumentation for artsc.h med kdoc] </para> + +</sect2> + +</sect1> +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/artsbuilder.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/artsbuilder.docbook new file mode 100644 index 00000000000..2e831719cd1 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/artsbuilder.docbook @@ -0,0 +1,917 @@ +<chapter id="artsbuilder"> +<title +>&arts-builder;</title> + +<sect1 id="overview"> +<title +>Oversigt</title> + +<para +>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 <menuchoice +><guilabel +>Lyd</guilabel +><guilabel +>Lydserver</guilabel +></menuchoice +>. </para> + +<para +>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 <guimenu +>Moduler</guimenu +>, og der klikkes et sted i den grøngrå plan. </para> + +<para +>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. </para> + +</sect1> + +<sect1 id="artsbuilder-tutorial"> +<title +>Gennemgang</title> + +<sect2 id="step-1"> +<title +>Trin 1</title> + +<para +>Start &arts-builder;. </para> + +<para +>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 <menuchoice +><guimenu +>Moduler</guimenu +> <guisubmenu +>Syntese</guisubmenu +> <guisubmenu +>Lyd-IO</guisubmenu +> <guisubmenu +>Synth_AMAN_PLAY</guisubmenu +></menuchoice +> og klikke på den tomme modulplads. Placér den cirka nedenfor den femte linje, eftersom vi vil tilføje en del ting ovenfor. </para> + +<para +>Modulet vil have en parameter <parameter +>title</parameter +> (porten længst til venstre), og <parameter +>autoRestoreID</parameter +> (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 <userinput +>gennemgang</userinput +> i redigeringsfeltet. Klik på <guibutton +>O.k.</guibutton +> for at anvende. </para> + +<para +>Vælg <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Kør struktur</guimenuitem +> </menuchoice +>. Du hører absolut ingenting. Afspilningsmodulet har også brug for noget inddata... ;) Hvis du har lyttet til tavsheden et stykke tyd, klik så på <guibutton +>Afslut</guibutton +> og gå til trin 2. </para> +</sect2> + +<sect2 id="step-2"> +<title +>Trin 2</title> + +<para +>Opret en Synth_WAVE_SIN-modul (fra <menuchoice +> <guimenu +>Moduler</guimenu +> <guimenuitem +>Syntese</guimenuitem +> <guimenuitem +>Bølgeformer</guimenuitem +></menuchoice +>) og placér den over Synth_AMAN_PLAY-modulet (lad en linjes mellemrum være mellem dem). </para> + +<para +>Som du ser, så producerer den noget uddata, men kræver <guilabel +>pos</guilabel +> som inddata. Lad os først sende uddata til højtalerne. Klik på porten <guilabel +>out</guilabel +> på Synth_WAVE_SIN og derefter på porten <guilabel +>left</guilabel +> på Synth_AMAN_PLAY. Voila, du har sammenkoblet to moduler. </para> + +<para +>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. </para> + +<para +>Opret en Synth_FREQUENCY-modul (fra <menuchoice +> <guimenu +>Moduler</guimenu +> <guimenuitem +>Syntese</guimenuitem +> <guimenuitem +>Oscillation & modulation</guimenuitem +></menuchoice +>) og forbind dets <quote +>pos</quote +> udgang til <quote +>pos</quote +> indgangen på Synth_WAVE_SIN. Sæt frekvensporten for frekvensgeneratoren til den konstante værdi 440. </para> + + +<para +>Vælg <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Kør struktur</guimenuitem +> </menuchoice +>. 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å <guibutton +>O.k.</guibutton +> og gå til trin 3. </para> + +</sect2> + +<sect2 id="step-3"> +<title +>Trin 3</title> + +<para +>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. </para> + +<para +>Opret et Synth_SEQUENCE-objekt (fra <menuchoice +><guimenu +>Moduler</guimenu +> <guisubmenu +>Syntese</guisubmenu +><guisubmenu +>Midi & sekvensering</guisubmenu +></menuchoice +>). 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. </para> + +<para +>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). </para> + +<para +>Gå nu til porten længst til højre (seq) på Synth_SEQUENCE og skriv <userinput +>A-3;C-4;E-4;C-4;</userinput +> som konstant værdi. Dette angiver en sekvens. Mere om dette i modulreferencen. </para> + +<note> +<para +>Synth_SEQUENCE <emphasis +>behøver</emphasis +> virkelig en sekvens og hastigheden. Uden disse får du måske hukommelsesdump. </para> +</note> + +<para +>Vælg <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Kør struktur</guimenuitem +> </menuchoice +>. Du vil høre en behagelig sekvens spille. Når du har nydt følelsen, så klik på <guibutton +>O.k.</guibutton +> og gå til trin 4. </para> +</sect2> + +<sect2 id="step-4"> +<title +>Trin 4</title> + +<para +>Opret et Synth_PSCALE-modul (fra <menuchoice +><guimenu +>Moduler</guimenu +> <guisubmenu +>Syntese</guisubmenu +> <guisubmenu +>Envelopper</guisubmenu +> </menuchoice +>). Afbryd forbindelsen fra udgangen for sinusbølgen ved at dobbeltklikke på den og vælg <guilabel +>ikke forbundet</guilabel +>. Forbind </para> + +<orderedlist +><listitem> +<para +>Udgangen SIN til indgangen på PSCALE</para> +</listitem> +<listitem> +<para +>PSCALE udgangen til AMAN_PLAY i venstre side</para> +</listitem> +<listitem> +<para +>PSCALE udgangen til AMAN_PLAY i højre side</para> +</listitem> +<listitem> +<para +>SEQUENCE pos til PSCALE pos</para> +</listitem> +</orderedlist> + +<para +>Til slut, sættes PSCALE top til en værdi, for eksempel 0.1. </para> + +<para +>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. </para> + + +<para +>Vælg <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Kør struktur</guimenuitem +> </menuchoice +>. Du vil høre en behagelig sekvens spille. Når du har nydt følelsen, klik på <guibutton +>O.k.</guibutton +> og gå til trin 5. </para> + +</sect2> + +<sect2 id="step-5-starting-to-beam-data-around"> +<title +>Trin 5: Begynder at sende data rundt ;)</title> + +<para +>Start endnu en &arts-builder;.</para> + +<para +>Placér en Synth_AMAN_PLAY i den, og indstil den til et rimeligt navn. Placér en Synth_BUS_DOWNLINK i den og:</para> + +<orderedlist> +<listitem> +<para +>Sæt Synth_BUS_DOWNLINK bus til lyd (det er kun et navn, kald den Peter hvis du har lyst) </para> +</listitem> +<listitem> +<para +>Forbind Synth_BUS_DOWNLINK left (venstre) til Synth_AMAN_PLAY left. </para> +</listitem> +<listitem> +<para +>Forbind Synth_BUS_DOWNLINK right (højre) til Synth_AMAN_PLAY right. </para> +</listitem> +</orderedlist> + +<para +>Begynd at køre strukturen. Som ventet hører du ingenting, ... ikke endnu. </para> + +<para +>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 <menuchoice +><guimenu +>Redigér</guimenu +> <guimenuitem +>slet</guimenuitem +></menuchoice +> fra menuen (eller trykke på tasten <keycap +>Del</keycap +>). </para> + +<para +>Vælg <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Kør struktur</guimenuitem +> </menuchoice +>. Du vil høre sekvensen med skalerede toner, transporteret over bussen. </para> + +<para +>Hvis du vil finde ud af hvorfor noget sådant her kan være nyttigt, så klik på <guibutton +>O.k.</guibutton +> (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. </para> +</sect2> + +<sect2 id="step-6-beaming-for-advanced-users"> +<title +>Trin 6: Send data for avancerede brugere</title> + +<para +>Vælg <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Omdøb struktur</guimenuitem +></menuchoice +> fra menuen i den aRts-bygger som indeholder Synth_SEQUENCE tingene, og kald den gennemgang. Tryk på <guibutton +>O.k.</guibutton +>. </para> + +<para +>Vælg <menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Gem</guimenuitem +> </menuchoice +>. </para> + +<para +>Start yderligere en &arts-builder; og vælg <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Åbn</guimenuitem +> </menuchoice +>, og indlæs gennemgangen igen. </para> + +<para +>Nu kan du vælge <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Kør struktur</guimenuitem +> </menuchoice +> 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. </para> + +<para +>En anden ting som det kan være godt at gøre på dette tidspunkt er at starte &noatun;, og spille en <literal role="extension" +>mp3</literal +>-fil. Start derefter &artscontrol;. Gå til <menuchoice +><guimenu +>Vis</guimenu +><guimenuitem +>Vis lydhåndtering</guimenuitem +></menuchoice +>. Det du ser er &noatun; og din struktur <quote +>gennemgang</quote +> 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. </para> +</sect2> + +<sect2 id="step-7-midi-synthesis"> +<title +>Trin 7: Midisyntese</title> + +<para +>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å. </para> + +<para +>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 <menuchoice +><guimenu +>Porte</guimenu +> <guisubmenu +>Opret IN-lydsignal</guisubmenu +></menuchoice +>, og tre gange til <menuchoice +><guimenu +>Porte</guimenu +> <guisubmenu +>Opret UT-lydsignal</guisubmenu +></menuchoice +>. Placér portene et sted. </para> + +<para +>Gå til <menuchoice +><guimenu +>Porte</guimenu +> <guilabel +>Ændr positioner og navne</guilabel +></menuchoice +> og døb portene frequency, velocity, pressed, left, right, done. </para> + +<para +>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?</para +> <para +>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) </para> + +<para +>Dette betyder også at Synth_PSCALE-objektet skal udskiftes nu. Kobl en Synth_ENVELOPE_ADSR ind i stedet (fra <menuchoice +><guimenu +>Moduler</guimenu +> <guisubmenu +>Syntese</guisubmenu +> <guisubmenu +>Envelopper</guisubmenu +> </menuchoice +>). Forbind: </para> + +<orderedlist> +<listitem> +<para +>Strukturen pressed indgang til ADSR active</para> +</listitem> +<listitem> +<para +>SIN udgangen til ADSR indgangen</para> +</listitem> +<listitem> +<para +>ADSR udgangen til den venstre strukturudgang</para> +</listitem +><listitem> +<para +>ADSR udgangen til den højre strukturudgang</para> +</listitem> +</orderedlist> + +<para +>Sæt parametrene attack til 0.1, decay til 0.2, sustain til 0.7, release til 0.1. </para> + +<para +>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. </para> + +<para +>Dette angives ved at sætte udgangen done til 1. Så forbind denne til strukturens udgang. Strukturen fjernes så snart done bliver 1. </para> + +<para +>Omdøb din struktur til instrument_gennemgang (fra <menuchoice +><guimenu +> Fil</guimenu +> <guimenuitem +>Omdøb struktur</guimenuitem +></menuchoice +>. Gem den derefter med Gem som (det standardnavn som nu angives skal være instrument_gennemgang).</para +><para +>Start artscontrol, og gå til <menuchoice +><guimenu +>Vis</guimenu +><guimenuitem +>Vis midihåndtering</guimenuitem +></menuchoice +>, og vælg <menuchoice +><guimenu +>Tilføj</guimenu +><guimenuitem +>aRts syntese midi uddata</guimenuitem +></menuchoice +>. Tilsidst skal du kunne vælge dit instrument (gennemgang) her. </para> + +<para +>Åbn en terminal og skriv <userinput +><command +>midisend</command +></userinput +>. Du vil se at <command +>midisend</command +> og instrumentet nu er på listen i &arts; &MIDI;-håndtering. Efter at have valgt begge to og trykket på <guibutton +>forbind</guibutton +>, er vi til sidst klare. Tag dit keyboard og begynd at spille (det skal naturligvis være forbundet til din maskine). </para> +</sect2> + +<sect2 id="suggestions"> +<title +>Forslag</title> + +<para +>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: </para> + +<itemizedlist> +<listitem> +<para +>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). </para> +</listitem> +<listitem> +<para +>Forsøg at bruge mere end en oscillator. Synth_XFADE kan bruges til at overtone (blande) to signaler, Synth_ADD til at addere dem. </para> +</listitem> +<listitem> +<para +>Forsøg at sætte frekvenserne for oscillatorerne til nogle forskellige værdier, det giver behagelige oscillationer. </para> +</listitem> +<listitem> +<para +>Eksperimentér med mere end en envelope. </para> +</listitem> +<listitem> +<para +>Forsøg at syntetisere instrumenter med forskellig lyd til venstre og højre. </para> +</listitem> +<listitem> +<para +>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. </para> +</listitem> +<listitem> +<para +>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). </para> +</listitem> +<listitem> +<para +>...</para> +</listitem> +</itemizedlist> + +<para +>Hvis du har lavet noget storartet, så overvej gerne at give det til &arts;' netside, eller til at indgå i næste udgave. </para> +</sect2> + +</sect1> + +<sect1 id="artsbuilder-examples"> +<title +>Eksempel</title> + +<para +>&arts-builder; levereres med flere eksempler, som kan åbnes med <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Åbn eksempel...</guimenuitem +> </menuchoice +>. 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. </para> +<para +>Eksemplerne kan inddeles i flere kategorier: </para> + +<itemizedlist> +<listitem> +<para +>Selvstændige eksempler som illustrerer hvordan hvert af de indbyggede aRts-moduler bruges (som hedder <filename +>example_*.arts</filename +>). Disse sender typisk noget uddata til et lydkort. </para> +</listitem> + +<listitem> +<para +>Instrumenter som bygges fra aRts-moduler på lavere niveau (som hedder <filename +>instrument_*.arts</filename +>). Disse følger en standardkonvention for ind- og udporte så de kan bruges af &MIDI;-håndteringen i &artscontrol;. </para> +</listitem> + +<listitem> +<para +>Skabeloner til at oprette nye moduler (som hedder <filename +>template_*.arts</filename +>). </para> +</listitem> + +<listitem> +<para +>Effekter som kan bruges som genbrugelige byggeblokke (som hedder <filename +>effect_*.arts</filename +>) [ alle i todo ] </para> +</listitem> + +<listitem> +<para +>Mikserelementer som bruges til at oprette miksere, inklusive grafiske styremoduler (som hedder <filename +>mixer_element_*.arts</filename +>). [ alle i todo ] </para> +</listitem> + +<listitem> +<para +>Diverse moduler som ikke passer ind i nogen af de ovenstående kategorier. </para> +</listitem> +</itemizedlist> + +<variablelist> +<title +>Detaljeret beskrivelse af hvert modul:</title> +<varlistentry> +<term +><filename +>example_stereo_beep.arts</filename +></term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_sine.arts</filename +></term> +<listitem> +<para +>Laver en 440 Hz sinusbølge. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pulse.arts</filename +></term> +<listitem> +<para +>Laver en 440 Hz pulsbølge med 20% aktivitet. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_softsaw.arts</filename +></term> +<listitem> +<para +>Laver en 440 Hz savtandsbølge. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_square.arts</filename +></term> +<listitem> +<para +>Laver en 440 Hz firkantbølge. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_tri.arts</filename +></term> +<listitem> +<para +>Laver en 440 Hz trekantbølge. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_noise.arts</filename +></term> +<listitem> +<para +>Laver hvid støj. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_dtmf1.arts</filename +></term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_atan_saturate.arts</filename +></term> +<listitem> +<para +>Kører en trekantbølge gennem et atan-mætningsfilter. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_autopanner.arts</filename +></term> +<listitem> +<para +>Bruger autopanorering til at panorere en 400 Hz sinusbølge mellem venstre og højre højtaler med en hastighed på 2 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_brickwall.arts</filename +></term> +<listitem> +<para +>Skalerer en sinusbølge med en faktor 5 og kører den derefter gennem ved en murstensvægsbegrænser. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_bus.arts</filename +></term> +<listitem> +<para +>Linker ned fra en bus som hedder <quote +>Bus</quote +> og linker op til bussen <quote +>out_soundcard</quote +> med venstre og højre kanal byttet om. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_cdelay.arts</filename +></term> +<listitem> +<para +>Linker ned fra en bus som hedder <quote +>Delay</quote +> 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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_delay.arts</filename +></term> +<listitem> +<para +>Dette er det samme som <filename +>example_cdelay.arts</filename +> men bruger forsinkelseseffekten. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_capture_wav.arts</filename +></term> +<listitem> +<para +>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 <filename class="directory" +>/tmp</filename +>. Du kan afspille filen med en mediaspiller såsom <application +>kaiman</application +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_data.arts</filename +></term> +<listitem> +<para +>Dette bruger Data-modulet til at oprette en konstant strøm af værdien <quote +>3</quote +> 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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_adsr.arts</filename +></term> +<listitem> +<para +>Viser hvordan en enkelt instrumentlyd kan laves med envelope ADSR-modulet, som udløses repetitivt af en firkantbølge. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_fm.arts</filename +></term> +<listitem> +<para +>Dette bruger FM Source-modulet til at lave en 440 Hz sinusbølge som frekvensmoduleres med en 5 Hz hastighed. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_freeverb.arts</filename +></term> +<listitem> +<para +>Dette forbinder Freeverb-effekten fra et busnedlink til et busoplink. Du kan bruge artscontrol til at forbinde effekten til lydafspilning og observere resultatet. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_flanger.arts</filename +></term> +<listitem> +<para +>Dette implementerer en enkel flangereffekt (det synes dog ikke at virke endnu). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_moog.arts</filename +></term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pitch_shift.arts</filename +></term> +<listitem> +<para +>Denne struktur sender venstrekanalens lyddata gennem en tonehøjdeændringseffekt. Justér hastighedsparameteren for at variere effekten. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_rc.arts</filename +></term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_sequence.arts</filename +></term> +<listitem> +<para +>Dette demonstrerer Sequence-modulet ved at spille en sekvens af toner. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_shelve_cutoff.arts</filename +></term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_equalizer.arts</filename +></term> +<listitem> +<para +>Dette demonstrerer modulet Std_Equalizer. Det forstærker de lave og høje frekvenser med 6 dB. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_tremolo.arts</filename +></term> +<listitem> +<para +>Dette demonstrerer tremoloeffekten. Det modulerer venstre og højre kanal med en 10 Hz tremolo. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_xfade.arts</filename +></term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pscale.arts</filename +></term> +<listitem> +<para +>Dette illustrerer Pscale-modulet (jeg er ikke sikker på at det er et meningsfuldt eksempel). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_play_wav.arts</filename +></term> +<listitem> +<para +>Dette illustrerer modulet Play Wave. Du skal angive hele søgestien til en <literal role="extension" +>.wav</literal +>-fil som filnavneparameter. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>example_multi_add.arts</term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/detail.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/detail.docbook new file mode 100644 index 00000000000..7faa7718db4 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/detail.docbook @@ -0,0 +1,1383 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="arts-in-detail"> +<title +>&arts; i detalje</title> + +<sect1 id="architecture"> +<title +>Arkitektur</title> + +<mediaobject> +<imageobject> +<imagedata fileref="arts-structure.png" format="PNG"/> +</imageobject> +<textobject +><phrase +>&arts;-strukturer.</phrase +></textobject> +</mediaobject> +</sect1> + +<sect1 id="modules-ports"> +<title +>Moduler & porte</title> + +<para +>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. </para> + +<para +>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. </para> + +</sect1> + +<sect1 id="structures"> +<title +>Strukturer</title> + +<para +>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. </para> + +<para +>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. </para> + +<para +>Derefter hører du formodlig noget lyd, hvis du har gjort alt på den rigtige måde. </para> +</sect1> + +<!-- TODO + +<sect1 id="streams"> +<title +>Streams</title> + +</sect1> + +--> + +<sect1 id="latency"> +<title +>Latens</title> + +<sect2 id="what-islatency"> +<title +>Hvad er latens?</title> + +<para +>Antag at du har et program som hedder <quote +>musepling</quote +> (som skal afgive en <quote +>pling</quote +>-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. </para> + +</sect2> + +<sect2 id="latenbcy-simple"> +<title +>Latens i enkle programmer</title> + +<para +>I dette enkle program opstår latensen på følgende steder: </para> + +<itemizedlist> + +<listitem> +<para +>Tiden til kernen har meddelt X11-serveren at museknappen er trykket ned. </para> +</listitem> + +<listitem> +<para +>Tiden til X11-serveren har meddelt dit program at museknappen er trykket ned. </para> +</listitem> + +<listitem> +<para +>Tiden til musepling-programmet har bestemt at denne knap var værd at få et pling afspillet. </para> +</listitem> + +<listitem> +<para +>Tiden det tager for musepling-programmet at fortælle lydserveren at den skal afspille et pling. </para> +</listitem> + +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>Tiden det tager for pling-lyden at gå fra højtalerne til dine ører. </para> +</listitem> +</itemizedlist> + +<para +>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. </para> + +<para +>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å <literal role="extension" +>wav</literal +>-filen som skal afspilles) skulle dette ikke være et problem. </para> + +<para +>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. </para> + +<para +>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 <quote +>musepling</quote +>-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. </para> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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. </para> + +<para +>Disse værdier kan indstilles efter dine behov. <acronym +>CPU</acronym +>-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. </para> + +<para +>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; <acronym +>CPU</acronym +>-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). </para> + +<para +>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. </para> + +</sect2> + +<sect2 id="latency-streaming"> +<title +>Latenstid i programmer med lydstrømme</title> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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: </para> + +<itemizedlist> +<listitem> +<para +>Tiden til kernen har meddelt X11-serveren at en knap er trykket ned. </para> +</listitem> + +<listitem> +<para +>Tiden til X11-serveren har meddelt spillet at en knap er trykket ned. </para> +</listitem> + +<listitem> +<para +>Tiden til spillet har bestemt at denne knap var værd at få et bang afspillet. </para> +</listitem> + +<listitem> +<para +>Tiden til lydpakken som afspilles er begyndt at putte bang-lyden ind når lydserveren. </para> +</listitem> + +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>Tiden det tager for bang-lyden fra højtalerne at nå dine ører. </para> +</listitem> + +</itemizedlist> + +<para +>De eksterne latenstider er, som ovenfor, udenfor dette dokuments rækkevidde. </para> + +<para +>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)). </para> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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 <acronym +>CPU</acronym +>-forbrug til strømning. </para> + +<para +>Latenstider på serversiden kan du beregne præcis som ovenfor. </para> + +</sect2> + +<sect2 id="cpu-usage"> +<title +>Nogle <acronym +>CPU</acronym +>-forbrugshensyn</title> + +<para +>Der er mange faktorer som påvirker <acronym +>CPU</acronym +>-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å: </para> + +<itemizedlist> +<listitem> +<para +>Rå <acronym +>CPU</acronym +>-forbrug for de nødvendige beregninger. </para> +</listitem> + +<listitem> +<para +>&arts; interne skemalægningsomkostning - hvordan &arts; bestemmer hvornår hvilket modul skal beregne hvad. </para> +</listitem> + +<listitem> +<para +>Omkostning til konvertering af heltal til decimaltal. </para> +</listitem> + +<listitem> +<para +>&MCOP; protokolomkostning. </para> +</listitem> + +<listitem> +<para +>Kernens proces/sammenhængsskift. </para> +</listitem> + +<listitem> +<para +>Kernens kommunikationsomkostning. </para> +</listitem> +</itemizedlist> + +<para +>For beregning af rå <acronym +>CPU</acronym +>-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 <acronym +>CPU</acronym +>-cykler pr addition, på en 350 MHz processor er dette 44100 * 2 * 4 / 350000000 = 0,1 % <acronym +>CPU</acronym +>-forbrug. </para> + +<para +>&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. </para> + +<para +>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. </para> + +<para +>Her er værdier for en Celeron, cirka klokcykler pr sampling, med -O2 og egcs 2.91.66 (målt af Eugene Smith <email +>hamster@null.ru</email +>). Dette er naturligvis yderst processorafhængigt: </para> + +<programlisting +>convert_mono_8_float: 14 +convert_stereo_i8_2float: 28 +convert_mono_16le_float: 40 +interpolate_mono_16le_float: 200 +convert_stereo_i16le_2float: 80 +convert_mono_float_16le: 80 +</programlisting> + +<para +>Så dette betyder 1 % <acronym +>CPU</acronym +>-forbrug for konvertering og 5 % for interpolation på denne 350 MHz processor. </para> + +<para +>&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. </para> + +<para +>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é. </para> + +<para +>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 % <acronym +>CPU</acronym +>-forbrug på grund af strømningen med 1024 byte pakker. </para> + +<para +>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 % <acronym +>CPU</acronym +>-forbrug som 44100 * 4 / 9000 = 19,6 samplinger, og på den måde få hurtigformlen: </para> + +<para +><acronym +>CPU</acronym +>-forbrug for en strøm i procent = 1960 / (din pakkestørrelse) </para> + +<para +>som giver os 0,5 % <acronym +>CPU</acronym +>-forbrug med en strøm af 4096 byte pakker. </para> + +<para +>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. </para> + +<para +>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). </para> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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 % <acronym +>CPU</acronym +>-forbrug for &artsd; og <application +>artscat</application +> (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. </para> + +</sect2> + +<sect2 id="hard-numbers"> +<title +>Nogle hårde værdier</title> + +<para +>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. </para> + +<para +>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): </para> + +<programlisting +>4974 stefan 20 0 2360 2360 1784 S 0 17.7 1.8 0:21 artsd + 5016 stefan 20 0 2208 2208 1684 S 0 7.2 1.7 0:02 streamsound + 5002 stefan 20 0 2208 2208 1684 S 0 6.8 1.7 0:07 streamsound + 4997 stefan 20 0 2208 2208 1684 S 0 6.6 1.7 0:07 streamsound +</programlisting> + +<para +>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. </para> + +<para +>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. </para> + +<para +>Men dette koster en enorm mængde <acronym +>CPU</acronym +>. 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;. </para> + +<para +>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: </para> + +<programlisting +>5548 stefan 12 0 2364 2364 1752 R 0 4.9 1.8 0:03 artsd + 5554 stefan 3 0 752 752 572 R 0 0.7 0.5 0:00 top + 5550 stefan 2 0 2280 2280 1696 S 0 0.5 1.7 0:00 artscat +</programlisting> + +</sect2> +</sect1> + +<!-- TODO + +<sect1 id="dynamic-instantiation"> +<title +>Dynamic Instantiation</title> + +</sect1> + +--> + +<sect1 id="busses"> +<title +>Busser</title> + +<para +>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. </para> + +<para +>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. <quote +>lyd</quote +> eller <quote +>trommer</quote +>). Send derefter helt enkelt data derind. </para> + +<para +>Derefter skal du oprette et eller flere Synth_BUS_DOWNLINK-objekter, og fortælle dem om busnavnet (<quote +>lyd</quote +> eller <quote +>trommer</quote +>... hvis det passer sammen, kommer data igennem), og den blandede lyd kommer ud igen. </para> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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. </para> +</sect1> + +<!-- TODO +<sect1 id="network-ransparency"> +<title +>Network Transparency</title> + +</sect1> + +<sect1 id="security"> +<title +>Security</title> + +</sect1> + + +<sect1 id="effects"> +<title +>Effects and Effect Stacks</title> + +</sect1> + +--> +<sect1 id="trader"> +<title +>Handleren</title> + +<para +>&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. </para> + +<para +>For at dette skal virke, kræves der dog to ting: </para> + +<itemizedlist> + +<listitem> +<para +>Komponenter skal fortælle at de findes - de skal beskrive hvilke storartede ting de tilbyder, så programmerne kan bruge dem. </para> +</listitem> + +<listitem> +<para +>Programmer skal aktivt lede efter komponenter som de ville kunne bruge, i stedet for altid at bruge samme komponenter til en vis opgave. </para> +</listitem> + +</itemizedlist> + +<para +>Kombinationen af dette: komponenter som siger <quote +>her er jeg, jeg er smart, brug mig</quote +>, 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. </para> + +<para +>I &arts; beskriver komponenter sig selv ved at angive værdier som de <quote +>understøtter</quote +> 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 <literal role="extension" +>wav</literal +>, <literal role="extension" +>aiff</literal +> eller <literal role="extension" +>mp3</literal +>. </para> + +<para +>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 <literal role="extension" +>wav</literal +> og <literal role="extension" +>aiff</literal +>-filer, ved at angive at den understøtter disse værdier for egenskaben <quote +>Endelse</quote +>. </para> + +<para +>For at gøre dette, skal en komponent placere en <literal role="extension" +>.mcopclass</literal +>-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 <filename +><replaceable +>komponentmappen</replaceable +>/Arts/WavPlayObject.mcopclass</filename +>): </para> + +<programlisting +>Interface=Arts::WavPlayObject,Arts::PlayObject,Arts::SynthModule,Arts::Object +Author="Stefan Westerfeld <stefan@space.twc.de>" +URL="http://www.arts-project.org" +Extension=wav,aiff +MimeType=audio/x-wav,audio/x-aiff +</programlisting> + +<para +>Det er vigtigt at filnavnet på <literal role="extension" +>.mcopclass</literal +>-filen også angiver hvad komponentens grænseflade hedder. Handleren kigger ikke på indholdet overhovedet, hvis filen (som her) hedder <filename +>Arts/WavPlayObject.mcopclass</filename +>, og komponentgrænsefladen hedder <interfacename +>Arts::WavPlayObject</interfacename +> (moduler hører sammen med mapper). </para> + +<para +>For at lede efter komponenter er der to grænseflader (som er definerede i <filename +>core.idl</filename +>, så de er tilgængelige i hvert program), som hedder <interfacename +>Arts::TraderQuery</interfacename +> og <interfacename +>Arts::TraderOffer</interfacename +>. Du går på en <quote +>indkøbsrunde</quote +> efter komponenter sådan her: </para> + +<orderedlist> +<listitem> +<para +>Opret et forespørgselsobjekt: </para> +<programlisting +>Arts::TraderQuery query; +</programlisting> +</listitem> + +<listitem> +<para +>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: </para> + +<programlisting +>query.supports("Interface","Arts::PlayObject"); + query.supports("Extension","wav"); +</programlisting> +</listitem> + +<listitem> +<para +>Tilsidst udføres forespørgslen med metoden query. Derefter får du (forhåbentlig) nogle tilbud: </para> + +<programlisting +>vector<Arts::TraderOffer> *offers = query.query(); +</programlisting> +</listitem> + +<listitem> +<para +>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: </para> +<programlisting +>vector<Arts::TraderOffer>::iterator i; + for(i = offers->begin(); i != offers->end(); i++) + cout << i->interfaceName() << endl; + delete offers; +</programlisting> +</listitem> +</orderedlist> + +<para +>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. </para> + +<para +>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. </para> + +<para +>Buildable (type boolean, anbefales): Bygbar. Dette angiver om komponenten er brugbar med <acronym +>RAD</acronym +>-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 <acronym +>RAD</acronym +>-lignende måde, men ikke for interne objekter som for eksempel <interfacename +>Arts::InterfaceRepo</interfacename +>. </para> + +<para +>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 <quote +>.</quote +> her, så noget som <userinput +>wav</userinput +> skulle virke udmærket. </para> + +<para +>Interface (type streng, kræves): Grænseflade. Dette skal omfatte hele listen af (nyttige) grænseflader som din komponent understøtter, formodentlig inklusive <interfacename +>Arts::Object</interfacename +> og hvis anvendeligt <interfacename +>Arts::SynthModule</interfacename +>. </para> + +<para +>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 <userinput +>C++</userinput +>, som betyder at komponenten er skrevet med den normale C++ programmeringsgrænseflade. Hvis du angiver dette, skal du også angive egenskaben <quote +>Library</quote +> nedenfor. </para> + +<para +>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 (<literal role="extension" +>.la</literal +>) modul. Her kan du angive navnet på <literal role="extension" +>.la</literal +>-filen som indeholder din komponent. Husk at bruge REGISTER_IMPLEMENTATION (som altid). </para> + +<para +>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 <userinput +>audio/x-wav</userinput +>. </para> + +<para +>&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. </para> + +</sect1> + +<!-- TODO +<sect1 id="midi-synthesis"> +<title +><acronym +>MIDI</acronym +> Synthesis</title> + +</sect1> + +<sect1 id="instruments"> +<title +>Instruments</title> + +</sect1> + +<sect1 id="session-management"> +<title +>Session Management</title> + +</sect1> + +<sect1 id="full-duplex"> +<title +>Full duplex Audio</title> + +</sect1> +--> + +<sect1 id="namespaces"> +<title +>Navnerum i &arts;</title> + +<sect2 id="namespaces-intro"> +<title +>Indledning</title> + +<para +>Hver navnerumsdeklaration hører sammen med en deklaration af en <quote +>modul</quote +> i &MCOP; &IDL;. </para> + +<programlisting +>// mcop idl + +module M { + interface A + { + } +}; + +interface B; +</programlisting> + +<para +>I dette tilfælde ville den genererede C++ kode for &IDL;-fragmentet se sådan her ud: </para> + +<programlisting +>// 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 { + /* [...] */ +}; +</programlisting> + +<para +>Så når du henviser til klasserne fra eksemplet ovenfor i din C++ kode, skal du skrive <classname +>M::A</classname +>, men kun B. Du kan imidlertid bruge <quote +>using M</quote +> et sted, som med alle navnerum i C++. </para> + +</sect2> + +<sect2 id="namespaces-how"> +<title +>Hvordan &arts; bruger navnerum</title> + +<para +>Der er et globalt navnerum som kaldes <quote +>Arts</quote +>, 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 <classname +>Arts::</classname +> for hver klasse du bruger, sådan her: </para> + +<programlisting +>int main(int argc, char **argv) +{ + Arts::Dispatcher dispatcher; + Arts::SimpleSoundServer server(Arts::Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/nogen_fil.wav"); +</programlisting> + +<para +>Det andet alternativ er at skrive "using" en gang, sådan her: </para> + +<programlisting +>using namespace Arts; + +int main(int argc, char **argv) +{ + Dispatcher dispatcher; + SimpleSoundServer server(Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/nogen_fil.wav"); + [...] +</programlisting> + +<para +>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;. </para> + +<programlisting +>// 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; + }; +}; +</programlisting> + +<para +>Hvis du skriver kode som ikke hører til selve &arts;, skal du ikke putte den i navnerummet <quote +>Arts</quote +>. 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. </para> + +<programlisting +>// 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; + }; +}; +</programlisting> + +</sect2> + +<sect2 id="namespaces-implementation"> +<title +>Interne funktioner: hvordan implementeringen virker</title> + +<para +>&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 <quote +>M::A</quote +> og <quote +>B</quote +>, ifølge eksemplerne ovenfor. </para> + +<para +>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 <interfacename +>A</interfacename +> var beregnet til at bruge. </para> + +</sect2> +</sect1> + +<sect1 id="threads"> +<title +>Tråde i &arts;</title> + +<sect2 id="threads-basics"> +<title +>Det basale</title> + +<para +>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. </para> + +<para +>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 <function +>select()</function +>. </para> + +<para +>&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 <literal role="extension" +>mp3</literal +>-afspiller, og koden forventer at <literal role="extension" +>mp3</literal +>-afkoderen skal køres i en separat tråd, er det oftest lettest at beholde denne konstruktion. </para> + +<para +>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: </para> + +<itemizedlist> +<listitem +><para +>Afsenderobjektet som laver &MCOP;-kommunikation </para> +</listitem> + +<listitem> +<para +>Referenceregningen (Smartwrappers). </para> +</listitem> + +<listitem> +<para +>I/O-håndteringen som håndterer tidsgrænser og fd-tidsmåling. </para> +</listitem> + +<listitem> +<para +>Objekthåndteringen som laver objekter og indlæser plugin dynamisk. </para> +</listitem> + +<listitem> +<para +>Flydesystemet som kalder calculateBlock i passende tilfælde. </para> +</listitem> +</itemizedlist> + +<para +>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: </para> + +<itemizedlist> +<listitem> +<para +>Kræv at den som kalder hvilken som helst funktion i objektet skaffer sig en lås inden den bruges. </para> +</listitem> + +<listitem> +<para +>Gør objekterne virkeligt trådsikre og/eller opret instanser af dem for hver tråd. </para> +</listitem> +</itemizedlist> + +<para +>&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å <ulink url="http://space.twc.de/~stefan/kde/download/arts-mt.tar.gz" +> http://space.twc.de/~stefan/kde/download/arts-mt.tar.gz</ulink +>, men for øjeblikket virker en minimal måde formodentlig bedre, og forårsager mindre problemer med eksisterende programmer. </para> + +</sect2> +<sect2 id="threads-locking"> +<title +>Hvornår/hvordan skal låsning ske?</title> + +<para +>Du kan få/slippe låsen med de to funktioner: </para> + +<itemizedlist> +<listitem> +<para> +<ulink +url="http://space.twc.de/~stefan/kde/arts-mcop-doc/arts-reference/headers/Arts__Dispatcher.html#lock" +><function +>Arts::Dispatcher::lock()</function +></ulink> +</para> +</listitem> +<listitem> +<para> +<ulink +url="http://space.twc.de/~stefan/kde/arts-mcop-doc/arts-reference/headers/Arts__Dispatcher.html#unlock" +><function +>Arts::Dispatcher::unlock()</function +></ulink> +</para> +</listitem> +</itemizedlist> + +<para +>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: </para> + +<itemizedlist> +<listitem> +<para +>Du tager imod et tilbagekald fra I/O-håndteringen (tidsgrænse eller fd). </para> +</listitem> + +<listitem> +<para +>Du kaldes på grund af nogle &MCOP;-forespørgsler. </para> +</listitem> + +<listitem> +<para +>Du kaldes fra NotificationManager. </para> +</listitem> + +<listitem> +<para +>Du kaldes fra flydesystemet (calculateBlock) </para> +</listitem> +</itemizedlist> + +<para +>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: </para> + +<itemizedlist> +<listitem> +<para +>Opret og fjern afsenderen eller I/O-håndteringen. </para> +</listitem> + +<listitem> +<para +><methodname +>Dispatcher::run()</methodname +> / <methodname +>IOManager::run()</methodname +> </para> +</listitem> + +<listitem> +<para +><methodname +>IOManager::processOneEvent()</methodname +></para> +</listitem> +</itemizedlist> + +<para +>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: </para> + +<programlisting +>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); + } + } +} +</programlisting> + + +</sect2> + +<sect2 id="threads-classes"> +<title +>Trådrelaterede klasser</title> + +<para +>Følgende trådrelaterede klasser er tilgængelige for øjeblikket: </para> + +<itemizedlist> +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__Thread.html" +><classname +> Arts::Thread</classname +></ulink +> - som indkapsler en tråd. </para> +</listitem> + +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__Mutex.html" +> <classname +>Arts::Mutex</classname +></ulink +> - som indkapsler en mutex. </para> +</listitem> + +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__ThreadCondition.html" +> <classname +>Arts::ThreadCondition</classname +></ulink +> - som giver støtte for at vække tråde som venter på at en vis betingelse skal blive sand. </para> +</listitem> + +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__SystemThreads.html" +><classname +>Arts::SystemThreads</classname +></ulink +> - som indkapsler operativsystemets trådningslager (og giver nogle hjælpefunktioner for anvendelsesprogrammører). </para> +</listitem> +</itemizedlist> + +<para +>Se linkene for dokumentationen. </para> + +</sect2> +</sect1> + +<sect1 id="references-errors"> +<title +>Referencer og fejlhåndtering</title> + +<para +>&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). </para> + +<sect2 id="references-properties"> +<title +>Grundlæggende egenskaber for referencer</title> + +<itemizedlist> +<listitem> +<para +>En &MCOP; reference er ikke et objekt, men en reference til et objekt: Selv om følgende deklaration <programlisting> + Arts::Synth_PLAY p; +</programlisting +> 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. </para> +</listitem> + +<listitem> +<para +>Du kan oprette en NULL-reference ved eksplicit at tildele den. </para> +<programlisting +>Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); +</programlisting> +</listitem> + +<listitem> +<para +>At kalde objekter med en NULL-reference forårsager et hukommelsesdump </para> +<programlisting +>Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); + string s = p.toString(); +</programlisting> +<para +>forårsager et hukommelsesdump. Hvis man sammenligner dette med en peger, er det stort set det samme som <programlisting> + QWindow* w = 0; + w->show(); +</programlisting +> hvilket enhver C++ programmør ved at man skal undgå. </para> +</listitem> + +<listitem> +<para +>Uinitierede objekter forsøger at oprette sig selv når de først bruges </para> + +<programlisting +>Arts::Synth_PLAY p; + string s = p.toString(); +</programlisting> +<para +>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). </para> + +<para +>Den tilsvarende C++ terminologi ville være <programlisting> + QWidget* w; + w->show(); +</programlisting +> 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. </para> + +<para +>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 <programlisting> + Arts::PlayObject po; + po.play(); +</programlisting +> 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. </para> +</listitem> + +<listitem> +<para +>Referencer kan pege på samme objekt </para> + +<programlisting +>Arts::SimpleSoundServer s = Arts::Reference("global:Arts_SimpleSoundServer"); + Arts::SimpleSoundServer s2 = s; +</programlisting> + +<para +>laver to referencer som angiver samme objekt. Det kopierer ikke nogen værdi, og laver ikke to objekter. </para> +</listitem> + +<listitem> +<para +>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 <programlisting> + Arts::Synth_PLAY p; + p.start(); + [...] + p = Arts::Synth_PLAY::null(); +</programlisting +> 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. </para> +</listitem> +</itemizedlist> + +</sect2> + +<sect2 id="references-failure"> +<title +>Tilfældet hvor det mislykkes</title> + +<para +>Eftersom referencer kan pege på fjernobjekter, kan serverne som indeholder disse objekter bryde sammen. Hvad sker så? </para> + +<itemizedlist> + +<listitem> +<para +>Et sammenbrud ændrer ikke om en reference er en null-reference. Dette betyder at hvis <function +>foo.isNull()</function +> var <returnvalue +>true</returnvalue +> inden et serversammenbrud er den også <returnvalue +>true</returnvalue +> efter et serversammenbrud (hvilket er indlysende). Det betyder også at hvis <function +>foo.isNull()</function +> var <returnvalue +>false</returnvalue +> inden et serversammenbrud (foo angav et objekt) er den også <returnvalue +>false</returnvalue +> efter serversammenbruddet. </para> +</listitem> + +<listitem> +<para +>At kalde metoder med en gyldig reference forbliver sikkert. Antag at serveren som indeholder objektet calc brød sammen. Kald til objekter såsom <programlisting> + int k = calc.subtract(i,j) +</programlisting +> 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 <quote +>neutralt</quote +> som resultat, såsom 0.0, en null-reference for objekter eller tomme strenge, når objektet ikke længere findes. </para> +</listitem> + +<listitem> +<para +>Kontrol med <function +>error()</function +> afslører om noget virkede. </para> + +<para +>I ovenstående tilfælde, ville <programlisting> + int k = calc.subtract(i,j) + if(k.error()) { + printf("k er ikke i-j!\n"); + } +</programlisting +> udskrive <computeroutput +>k er ikke i-j</computeroutput +> når fjernkaldet ikke virkede. Ellers er <varname +>k</varname +> 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 <function +>.error()</function +> er <returnvalue +>false</returnvalue +>. Men hvis <function +>.error()</function +> er <returnvalue +>true</returnvalue +>, er der to muligheder: </para> + +<itemizedlist> +<listitem> +<para +>Filen blev slettet, og serveren brød sammen præcis efter den blev slette, men inden resultatet overførtes. </para> +</listitem> + +<listitem> +<para +>Serveren brød sammen inden den kunne fjerne filen. </para> +</listitem> +</itemizedlist> +</listitem> + +<listitem> +<para +>Brug af indlejrede kald er farligt i et program som skal være sikkert mod sammenbrud. </para> + +<para +>Brug af noget i retning af <programlisting> + window.titlebar().setTitle("foo"); +</programlisting +> er ikke en god idé. Antag at du ved at vinduet indeholder en gyldig vinduesreference. Antag at du ved at <function +>window.titlebar()</function +> returnerer en reference til navnelisten eftersom vinduesobjektet er rigtigt implementeret. Sætningen ovenfor er imidlertid alligevel ikke sikker. </para> + +<para +>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. </para> + +<para +>Så en sikker variant af dette ville være <programlisting> + Titlebar titlebar = window.titlebar(); + if(!window.error()) + titlebar.setTitle("foo"); +</programlisting +> og tilføj den rigtige fejlhåndtering hvis du vil. Hvis du ikke stoler på implementeringen af Window, kan du lige så godt bruge <programlisting> + Titlebar titlebar = window.titlebar(); + if(!titlebar.isNull()) + titlebar.setTitle("foo"); +</programlisting +> som begge er sikre. </para> +</listitem> +</itemizedlist> + +<para +>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. </para> + +<para +>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 <quote +>hvis serveren bryder sammen, skal vi fejlsøge den til den aldrig bryder sammen igen</quote +>, som ville betyde at du ikke behøver bryde dig om alle disse problemer. </para> + +</sect2> + +<sect2 id="references-internals"> +<title +>Interne funktioner: distribueret referenceregning</title> + +<para +>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 <function +>_copy()</function +>, som forøger en reference tæller, og en ejer fjernes ved at kalde <function +>_release()</function +>. Så snart referencetælleren når nul, så slettes objektet. </para> + +<para +>Som en variation på temaet, angives fjernbrug med <function +>_useRemote()</function +>, og opløses med <function +>_releaseRemote()</function +>. 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 <function +>_disconnectRemote()</function +>. </para> + +<para +>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 <quote +>mangler ejere</quote +>. </para> + +<para +>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. </para> + +<para +>Måden som &MCOP; gør dette er ved at <quote +>mærke</quote +> objekter som er ved at blive kopieret over netværket. Inden en sådan kopiering begynder, kaldes <function +>_copyRemote</function +>. Dette forhindrer at objektet fjernes et stykke tid (5 sekunder). Så snart modtageren kalder <function +>_useRemote()</function +>, fjernes mærket igen. Så alle objekter som sendes over netværket, mærkes inden overførslen. </para> + +<para +>Hvis modtageren modtager et objekt som findes på samme server, så bruges <function +>_useRemote()</function +> naturligvis ikke. I dette specialtilfælde, findes funktionen <function +>_cancelCopyRemote()</function +> 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 <classname +>ReferenceClean</classname +>. </para> + +</sect2> + +</sect1> + +<sect1 id="detail-gui-elements"> +<title +>&GUI;-elementer</title> + +<para +>&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. </para> + +<para +>&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). </para> + +<para +>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 <acronym +>ADSR</acronym +> enveloppen for det aktive &MIDI;-instrument. Noget andet ville kunne være at angive filnavnet for et samplingsbaseret instrument. </para +> + +<para +>På den anden side, kunne brugeren ville overvåge hvad syntheziseren gør. Der kunne være oscilloskoper, spektrumanalysatorer, lydstyrkemålere og <quote +>eksperimenter</quote +> som for eksempel regner frekvensoverførselskurven ud for et given filtermodul. </para> + +<para +>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. </para> + +<para +>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. </para> + +<para +>Teknisk set er idéen at have en &IDL;-basisklasse for alle grafiske komponenter (<classname +>Arts::Widget</classname +>), og aflede et antal almindelige komponenter fra den (såsom <classname +>Arts::Poti</classname +>, <classname +>Arts::Panel</classname +>, <classname +>Arts::Window</classname +>, ...). </para> + +<para +>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 <classname +>Arts::Poti</classname +>-tingester og et <classname +>Arts::Window</classname +>. 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). </para> + +<para +>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 <quote +>oprette grafisk grænseflader fra en beskrivelse</quote +>, 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. </para> + +<para +>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. </para> + +</sect1> + +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/digitalaudio.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/digitalaudio.docbook new file mode 100644 index 00000000000..fb8305b53f4 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/digitalaudio.docbook @@ -0,0 +1,16 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<appendix id="intro-digital-audio"> +<title +>Indledning til digital lyd</title> + +<para +>Digital sampling, filtre, lydeffekter, &etc;.</para> + +</appendix> + + + diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/faq.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/faq.docbook new file mode 100644 index 00000000000..74f060962b3 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/faq.docbook @@ -0,0 +1,1307 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> +<chapter id="faq"> +<title +>Spørgsmål og svar</title> + +<para +>Dette afsnit besvarer nogle spørgsmål som ofte stilles om &arts;. </para> + +<qandaset id="faq-general"> +<title +>Generelle spørgsmål</title> + +<qandaentry> +<question> +<para +>Støtter &kde; mit lydkort for lydafspilning? </para> +</question> + +<answer> +<para +>&kde; bruger &arts; til at afspille lyd, og &arts; bruger driverne kernen for &Linux;, enten <acronym +>OSS</acronym +> eller <acronym +>ALSA</acronym +> (med emulering af <acronym +>OSS</acronym +>). Hvis dit lydkort enten understøttes af <acronym +>ALSA</acronym +> eller <acronym +>OSS</acronym +> 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 <link linkend="faq-hardware-specific" +>afsnittet om hardwarespecifikke problemer</link +> hvis du har problemer med artsd på din maskine. </para> +<para +>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. </para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry +>&arts; metode for lyd-I/O</entry> +<entry +>Kommentar</entry> +</row> +</thead> + +<tbody> +<row> +<entry +>paud</entry> +<entry +>Støtte for AIX personlige lydenhed (Personal Audio Device)</entry> +</row> + +<row> +<entry +>alsa</entry> +<entry +>Linux ALSA-0.5 og ALSA-0.9 drivere</entry> +</row> + +<row> +<entry +>libaudioio</entry> +<entry +>Støtte for det generelle LibAudioIO-bibliotek som virker på Solaris</entry> +</row> + +<row> +<entry +>nas</entry> +<entry +>NAS lydserver, nyttig for X-terminaler med NAS-støtte</entry> +</row> + +<row> +<entry +>null</entry> +<entry +>Lydenheden null, kasserer lyden uden at noget høres</entry> +</row> + +<row> +<entry +>oss</entry> +<entry +>OSS (Open Sound System) støtte (virker på Linux, forskellige BSD-versioner og andre platforme med OSS-drivere installerede)</entry> +</row> + +<row> +<entry +>toss</entry> +<entry +>Trådet OSS-støtte, som virker bedre i visse tilfælde når den almindelige OSS-støtte ikke virker godt</entry> +</row> + +<row> +<entry +>sgi</entry> +<entry +>Støtte for SGI Direct Media for IRIX</entry> +</row> + +<row> +<entry +>sun</entry> +<entry +>Solaris-støtte</entry> +</row> + +</tbody> +</tgroup> +</informaltable> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jeg kan ikke spille <literal role="extension" +>wav</literal +>-filer med &artsd;! </para> +</question> + +<answer> +<para +>Tjek at &artsd; er linket til <filename +>libaudiofile</filename +> (<userinput +><command +>ldd</command +> <parameter +>artsd</parameter +></userinput +>). Hvis den ikke er det, så hent kdesupport, kompilér alt, og det vil virke. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jeg hører lyd når jeg er logget på som <systemitem class="username" +>root</systemitem +>, men ingen andre brugere har lyd! </para> +</question> + +<answer> +<para +>Tilladelserne for filen <filename class="devicefile" +>/dev/dsp</filename +> påvirker hvilke brugere der har lyd. For at lade alle bruge den, gør sådan her: </para> + +<procedure> +<step> +<para +>Log ind som <systemitem class="username" +>root</systemitem +>. </para> +</step> + +<step> +<para +>Åbn et &konqueror;-vindue. </para> +</step> + +<step> +<para +>Gå til mappen <filename class="directory" +>/dev</filename +>. </para> +</step> + +<step> +<para +>Klik på filen <filename +>dsp</filename +> med <mousebutton +>højre</mousebutton +> museknap, og vælg egenskaber. </para> +</step> + +<step> +<para +>Klik på fanebladet <guilabel +>Tilladelser</guilabel +>. </para> +</step> + +<step> +<para +>Markér <guilabel +>Læs</guilabel +> og <guilabel +>Skriv</guilabel +> i alle afsnit. </para> +</step> + +<step> +<para +>Klik på <guibutton +>O.k.</guibutton +>. </para> +</step> +</procedure> + +<para +>Du kan opnå samme virkning i et terminalvindue med kommandoen <userinput +><command +>chmod</command +> <option +>666</option +> <parameter +>/dev/dsp</parameter +></userinput +>. </para> + +<para +>For at begrænse adgangen af lyd til særlige brugere kan du bruge gruppetilladelser. For visse &Linux;-distributioner, for eksempel Debian/Potato, ejes <filename class="devicefile" +>/dev/dsp</filename +> allerede af en gruppe som hedder <systemitem class="groupname" +>audio</systemitem +>, så alt du behøver gøre er at tilføje brugerne til denne gruppe. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Dette hjælper for &artsd;, men hvad med for &kmix;, &kmid;, &kscd;? </para> +</question> +<answer> + +<para +>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 <filename class="devicefile" +>midi0</filename +>, <filename class="devicefile" +>midi1</filename +>..., så er 0-versionen kun med): </para> + +<itemizedlist> +<listitem> +<para> +<filename class="devicefile" +>/dev/admmidi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/adsp0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/amidi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/amixer0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/audio</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/audio0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/cdrom</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/dmfm0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/dmmidi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/dsp</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/dsp0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/midi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/midi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/midi00</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/midi00</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/mixer</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/mixer0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/mpu401data</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/mpu401stat</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/music</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/rmidi0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/rtc</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/sequencer</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/smpte0</filename> +</para> +</listitem> +<listitem> +<para> +<filename class="devicefile" +>/dev/sndstat</filename> +</para> +</listitem> +</itemizedlist> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Hvad kan jeg gøre hvis artsd ikke starter eller bryder sammen når den kører?</para> +</question> + +<answer> +<para +>Forsøg først at bruge standardindstillingerne i &kcontrol; (eller hvis du starter manuelt, angive ingen ekstra flag bortset fra eventuelt <userinput +><option +>-F</option +><parameter +>10</parameter +> <option +>-S</option +><parameter +>4096</parameter +></userinput +> for latenstid). Særlig <emphasis +>fuld dupleks virker formodentlig ikke</emphasis +> med diverse drivere, så forsøg at deaktivere det. </para> + +<para +>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: </para> + +<screen width="40" +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-F</option +><parameter +>10</parameter +> <option +>-S</option +><parameter +>4096</parameter +> +></userinput +></screen> + +<para +>Du kan også tilføje flaget <option +>-l0</option +>, som udskriver mere information om hvad der sker, sådan her: </para> +<screen width="40" +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-l0</option +> <option +>-F</option +><parameter +>10</parameter +> <option +>-S</option +><parameter +>4096</parameter +></userinput +></screen> + +<para +>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 <quote +>hvordan</quote +> den bryder sammen. Hvis du vil rapportere en fejl, kan et backtrace oprettet med <command +>gdb</command +> og/eller en <command +>strace</command +> hjælpe med til at finde problemet. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Kan jeg flytte &artsd; (flytte kompilerede filer til en anden mappe)?</para> +</question> + +<answer> +<para +>Du kan ikke flytte &arts; helt perfekt. Problemet er at &artswrapper; har stedet for &artsd; indkompileret af sikkerhedsgrunde. Du kan imidlertid bruge <filename +>.mcoprc</filename +>-filen (TraderPath/ExtensionPath indgangene) til i det mindste at få en flyttet &artsd; til at finde sine komponenter. Se <link linkend="the-mcoprc-file" +>kapitlet om <filename +>.mcoprc</filename +>-filen</link +> for detaljer om hvordan man gør dette. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Kan jeg kompilere &arts; med gcc-3.0?</para> +</question> + +<answer> +<para +>Et kort svar: nej, &arts; virker ikke hvis du kompilerer den med gcc-3.0. </para> + +<para +>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. </para> +<para +>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. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Hvilke programmer kører med &arts;?</para> +</question> +<answer> + +<para +>Selvfølgelig så virker alle programmer som indgår i &kde; med &arts;. Dette omfatter: </para> + +<itemizedlist> +<listitem +><para +>&noatun;</para +></listitem> +<listitem +><para +>&arts-builder;</para +></listitem> +<listitem +><para +>&aktion;</para +></listitem> +<listitem +><para +>&kmid;</para +></listitem> +<listitem +><para +>&kmidi;</para +></listitem> +<listitem +><para +>&kmix;</para +></listitem> +<listitem +><para +>&kscd;</para +></listitem> +<listitem +><para +>&kde;-spil såsom &kpoker; og &ktuberling;</para +></listitem> +</itemizedlist> + +<para +>Visse &kde;-programmer som endnu ikke indgår i &kde;-udgaver (f.eks. i kdenonbeta) understøtter også &arts;, inklusive: </para> + +<itemizedlist> +<listitem +><para +>&brahms;</para +></listitem> +<listitem +><para +><application +>Kaboodle</application +></para +></listitem> +<listitem +><para +><application +>Kdao</application +></para +></listitem> +</itemizedlist> + +<para +>Følgende programmer som ikke hører til -&kde; er kendte for at virke med &arts;: </para> + +<itemizedlist> +<listitem +><para +><application +>xmms</application +> (med &arts;-plugin)</para +></listitem> +<listitem +><para +>Real Networks <application +>RealPlayer</application +> 8.0 (virker med &artsdsp;; indbygget &arts;-støtte overvejes)</para +></listitem> +</itemizedlist> + +<para +>Følgende programmer er kendte for <emphasis +>ikke</emphasis +> at virke med &arts;: </para> + +<itemizedlist> +<listitem +><para +>ingen</para +></listitem> +</itemizedlist> + +<para +>Se også svarene på spørgsmålene i afsnittet om <link linkend="faq-non-arts" +>programmer som ikke understøtter &arts;</link +>. </para> + +<para +>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. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-non-arts"> +<title +>Programmer som ikke understøtter &arts;</title> + +<qandaentry> +<question> +<para +>Så snart &kde; kører, så kan ingen andre programmer få adgang til mit lydkort! </para> +</question> +<answer> +<para +>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. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Du sagde at den går i autosuspension efter 60 sekunder, det gør den ikke for mig! </para> +</question> +<answer> +<para +>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. </para> +<para +>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. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Hvordan kan jeg køre gamle programmer som ikke understøtter &arts;? </para> +</question> + +<answer> +<para +>Kør dem med &artsdsp;. Hvis du for eksempel normalt ville køre: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>mpg123</command +> <option +>foo.mp3</option +></userinput +></screen> + +<para +>så brug i stedet:</para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>mpg123 foo.mp3</option +></userinput +></screen> + +<para +>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. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jeg kan ikke køre &artsdsp; med noget program. Den bryder altid sammen! </para> +</question> +<answer> +<para +>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). </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Er der teoretiske begrænsninger med visse programmer som forhindrer at de nogensinde kan virke med &artsdsp;? </para> +</question> +<answer> +<para +>Nej. Brugen &artsdsp; kan resultere i noget højere latenstider og <acronym +>CPU</acronym +>-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 <emphasis +>hvert</emphasis +> program at virke med den (inklusive store programmer såsom <application +>Quake</application +> 3). </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Hvad kan jeg gøre hvis et program ikke virker med &artsdsp;? </para> +</question> +<answer> +<para +>Du kan vente på at &artsd; går i autosuspension eller bruge kommandoen <userinput +><command +>artsshell</command +> <option +>suspend</option +></userinput +> 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. </para> + +<para +>Hvis serveren er optaget ser en grov men effektivt måde at slippe af med den sådan her ud: </para> + + +<screen +><prompt +>%</prompt +> <userinput +><command +>killall</command +> <option +>artsd</option +> ; <command +>killall</command +> <option +>artswrapper</option +></userinput> +<lineannotation +>Start nu dit eget program.</lineannotation> +<prompt +>%</prompt +> <userinput +><command +>kcminit</command +> <option +>arts</option +></userinput +> +</screen> + +<para +>Alle &arts;-programmer som kører lige nu kan bryde sammen, når du afslutter serveren. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Hvad gælder for programmer skrevet for &kde; 1.x? </para> +</question> +<answer> +<para +>Hvis du kører &kde; 1.x programmer, som afspiller lyd via lydserveren i &kde; 1, skal du køre <application +>kaudioserver</application +> for at det skal virke. Du kan starte <application +>kaudioserver</application +> på samme måde som andre programmer som ikke understøtter &arts;: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>kaudioserver</option +></userinput +> +</screen> + +<para +>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. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Hvad gælder for programmer som bruger Enlightened Sound Daemon, <acronym +>ESD</acronym +>? </para> +</question> +<answer> +<para +>Dette problem ligner tilfældet med <application +>kaudioserver</application +>. Sådanne programmer kræver en esd-server som kører. Du kan starte <command +>esd</command +> via &artsdsp;, og alle programmer som understøtter <acronym +>ESD</acronym +> vil så virke godt, sådan her: </para> +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>esd</option +></userinput +> +</screen> +<para +>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 </para> +<screen +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-a esd</option +></userinput +> +</screen> +<para +>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. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-latency"> +<title +>Latenstid</title> + +<qandaentry> +<question> +<para +>Ind imellem hører jeg korte pauser når jeg lytter til musik. Er dette en fejl? </para> +</question> +<answer> +<para +>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 <guilabel +>250 ms</guilabel +> eller <guilabel +>så stor som muligt</guilabel +>), hvilket bør forbedre situationen. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Hvad er effekten af svarstidsindstillingen? </para> +</question> +<answer> +<para +>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 <acronym +>CPU</acronym +>-ressourcer og det vil være mere sandsynligt med pauser i lyden.</para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Er der noget andet jeg kan gøre for at undgå pauser? </para> +</question> +<answer> +<para +>For brugere af <acronym +>IDE</acronym +>-enheder, kan man bruge kommandoen <command +>hdparm</command +> til at indstille din <acronym +>IDE</acronym +>-enhed til at bruge <acronym +>DMA</acronym +>-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 <command +>hdparm</command +> for flere detaljer. Jeg har brugt følgende kommando med heldigt resultat: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>hdparm</command +> <option +>-c1</option +> <option +>-d1</option +> <option +>-k1</option +> <option +>-K1</option +> <parameter +>/dev/hda</parameter +></userinput +> +</screen> + +<para +>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 <filename +>/etc/rc.boot</filename +>). </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Realtidsprioritet synes ikke at have nogen virkning for mig? </para> +</question> +<answer> +<para +>Kontrollér at artswrapper virkelig er installeret suid <systemitem class="username" +>root</systemitem +>, 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: <screen> +<prompt +>%</prompt +> <userinput +><command +>ls</command +> <option +>-l</option +> <parameter +>$(which artswrapper)</parameter +></userinput> +-rwsr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper +</screen +> Dårligt: <screen> +<prompt +>%</prompt +> <userinput +><command +>ls</command +> <option +>-l</option +> <parameter +>$(which artswrapper)</parameter +></userinput> +-rwxr-xr-x 1 root root 4556 Sep 24 18:05 /opt/kde2/bin/artswrapper +</screen +> Hvis du ikke har s'et med, kan du få det med: <screen +><prompt +>%</prompt +> <userinput +><command +>chown</command +> <option +>root</option +> <parameter +>$(which artswrapper)</parameter +></userinput> +<prompt +>%</prompt +> <userinput +><command +>chmod</command +> <option +>4755</option +> <parameter +>$(which artswrapper)</parameter +></userinput +> +</screen> +</para> + +<para +>Hvis du gør &artswrapper; SUID <systemitem class="username" +>root</systemitem +>, 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 <quote +>produktiv</quote +> måde.</para> + +</answer> +</qandaentry> + + +<qandaentry> +<question> +<para +>Hvorfor tager &artsd; så meget <acronym +>CPU</acronym +>-tid? </para> +</question> +<answer> +<para +>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. </para> +</answer> +</qandaentry> +</qandaset> + +<qandaset id="faq-network"> +<title +>Netværkstransparens</title> + +<qandaentry> +<question> +<para +>Hvad skal jeg gøre for at få netværkstransparens? </para> +</question> +<answer> +<para +>Aktivér det i kontrolcentrets indstillinger for <guilabel +>Lydserver</guilabel +> (<guilabel +>Aktivér sikkerheds- og referenceinformation for X11-serveren</guilabel +> og <guilabel +>Aktivér netværkstransparens</guilabel +>). Kopiér derefter din <filename +>.mcoprc</filename +>-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 <filename +>/etc/hosts</filename +>). </para> + +<para +>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: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-n</option +> <option +>-F</option +> <parameter +>5</parameter +> <option +>-S</option +> <parameter +>8192</parameter +></userinput +> +</screen> + +<para +>Flaget <option +>-n</option +> angiver netværkstransparens, mens de øvrige indstiller latenstider. </para> + +<para +>Din <filename +>.mcoprc</filename +>-fil skal indeholde denne linje: </para> + +<screen +><userinput +>GlobalComm=Arts::X11GlobalComm</userinput +> +</screen> + +<para +>for alle maskiner som er involverede, for at netværkstransparens skal virke. Det er dette som aktiveres af indstillingen <guilabel +>Aktivér sikkerheds- og referenceinformation over X11-serveren</guilabel +> i kontrolcentret. </para> + +<para +>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 <systemitem class="systemname" +><replaceable +>værtsmaskinenavn</replaceable +>.<replaceable +>domænenavn</replaceable +></systemitem +>. Hvis domænenavnet er tomt, forsøger de at forbinde til <systemitem class="systemname" +><replaceable +>værtsmaskinenavn</replaceable +></systemitem +>. (læg mærke til det ekstra punktum). At tilføje en post som ser sådan her ud i <filename +>/etc/hosts</filename +> (dvs. <userinput +>orion.</userinput +> hvis værtsmaskinenavnet er <systemitem class="systemname" +>orion</systemitem +>) gør at man undgår problemet. </para> +</answer> +</qandaentry> + + +<qandaentry> +<question> +<para +>Hvordan fejlretter jeg netværkstransparens hvis det ikke virker? </para> +</question> +<answer> +<para +>Hvis du har &kde;'s kildekode, gå til <filename class="directory" +>kdelibs/arts/examples</filename +>, og kør <userinput +><command +>make</command +> <option +>check</option +></userinput +> for at kompilere nogle programmer, inklusive <application +>referenceinfo</application +>. Kør derefter </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>./referenceinfo</command +> <option +>global:Arts_SimpleSoundServer</option +></userinput +> +</screen> + +<para +>Udskriften angiver værtsmaskinenavnet og porten som bruges af &arts;. For eksempel, <computeroutput +>tcp:orion:1698</computeroutput +> ville betyde at alle klienter som forsøger at bruge netværkstransparens skal vide hvordan værtsmaskinen <systemitem class="systemname" +>orion</systemitem +> kan nås. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-hardware-specific"> +<title +>Hardware-specifikke spørgsmål</title> + +<qandaentry> +<question> +<para +>Hvilken hardware virker artsd ikke godt sammen med? </para> +</question> +<answer> +<para +>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. <informaltable +> <tgroup cols="4"> +<thead> +<row> +<entry +>Linux-driver/lydkort</entry> +<entry +>Virker ikke med</entry> +<entry +>Virker med</entry> +<entry +>Bemærkninger</entry> +</row> +</thead> + +<tbody> +<row> +<entry +>i810-driver (Intel 810 + AC97 Audio)</entry> +<entry +>2.4.9</entry> +<entry +>2.4.18, 2.2.20, kommerciel OSS-driver, alsa-0.5.12a med OSS-emulering</entry> +<entry +>driver forårsager for stor CPU-belastning (se nedenfor)</entry> +</row> + +<row> +<entry +>maestro 3/4-kredse</entry> +<entry +>2.4.9</entry> +<entry +>?</entry> +<entry +>driver forårsager ind imellem overbelastning af processoren (se nedenfor)</entry> +</row> + +<row> +<entry +>aureal8820, aureal8830-drivere fra sourceforge</entry> +<entry +>2.4.17</entry> +<entry +>?</entry> +<entry +>driver forårsager fejlmeddelelse / for meget CPU-belastning (se nedenfor)</entry> +</row> + +<row> +<entry +>OSS kommerciel 3.9.4g med Aureal Vortex</entry> +<entry +>?</entry> +<entry +>?</entry> +<entry +>systemet låses</entry> +</row> + +<row> +<entry +>ymfpci</entry> +<entry +>2.4.0, 2.4.12</entry> +<entry +>2.4.17</entry> +<entry +>driver forårsager fejlmeddelelse (se nedenfor)</entry> +</row> + + + +</tbody> +</tgroup> +</informaltable> +</para> +</answer> +</qandaentry> + + + +<qandaentry> +<question> +<para +>Hvorfor er der hardware-specifikke problemer, og hvordan ser jeg dem? </para> +</question> +<answer> +<para +>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. </para> +<para +>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;. </para> +<para +>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å <emphasis +>stopper</emphasis +> artsd med et fejlmeddelelse som: <screen +>artsd: audiosubsys.cc:458: void Arts::AudioSubSystem::handleIO(int): +Assertion `len == can_write' failed. +Aborted +</screen> +</para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Hvad er forkert i driveren hvis jeg får problemet med for stor CPU-belastning? </para> +</question> +<answer> +<para +>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. </para> +<para +>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. </para> +<para +>For at rette dette, skal driveren kun vække artsd hvis et helt fragment kan skrives. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Hvad er forkert i driveren hvis jag får denne fejlmeddelelse? </para> +</question> +<answer> +<para +>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. </para> +<para +>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. </para> +</answer> +</qandaentry> +</qandaset> + +<qandaset id="faq-other"> +<title +>Andre problemer</title> + +<qandaentry> +<question> +<para +>Jeg kan ikke bruge &arts-builder;. Den bryder sammen når jeg kører et modul! </para> +</question> +<answer> +<para +>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 <errorname +>[artsd] Synth_PLAY: lydsystemet bruges allerede.</errorname +> </para> + +<para +>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å <keycap +>F1</keycap +> i &arts-builder;). </para> + +<para +>Nyere udgaver af &arts-builder; (&kde; 2.1 beta 1 og senere) levereres med et antal eksempler som du kan bruge. </para> +</answer> +</qandaentry> + +</qandaset> + +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/future.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/future.docbook new file mode 100644 index 00000000000..f8d9923ad7d --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/future.docbook @@ -0,0 +1,399 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant +V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="future-work"> +<title +>Fremtidigt arbejde</title> + +<para +>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 <link linkend="mailing-lists" +>e-mail-listerne</link +> for at holde styr på hvilke nye funktioner der er planlagt. Deltag gerne i ny konstruktion og implementation. </para> + +<para +>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: </para> + +<itemizedlist> +<listitem +><para +>Hvordan grænseflader virker.</para +></listitem> +<listitem +><para +>Afkodere - afkodning af mp3 eller wav-strømme til en form som gør at de kan bruges som data.</para +></listitem> +<listitem +><para +>Video.</para +></listitem> +<listitem +><para +>Trådning.</para +></listitem> +<listitem +><para +>Synkronisering.</para +></listitem> +<listitem +><para +>Dynamisk udvidelse/maskering.</para +></listitem> +<listitem +><para +>Dynamisk sammensætning.</para +></listitem> +<listitem +><para +>&GUI;</para +></listitem> +<listitem +><para +>&MIDI;</para +></listitem> +</itemizedlist> + +<para +>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. </para> + +<para +>Ting som vil bruge &arts;-teknologi (så vær venlig og koordinér anstrengelserne): </para> + +<itemizedlist> +<listitem> +<para +><application +>K-telefon</application +> (tale via <acronym +>IP</acronym +>) </para> +</listitem> + +<listitem> +<para +>&noatun; (videoafspiller / lydafspiller) </para> +</listitem> + +<listitem> +<para +>&artscontrol; (styreprogram for lydserveren, og for målere) </para> +</listitem> + +<listitem> +<para +><application +>Brahms</application +> (musiksequencer) </para> +</listitem> + +<listitem> +<para +><application +>Kaiman</application +> (&kde;2 medieafspiller - kmedia2-kompliant) </para> +</listitem> + +<listitem> +<para +><application +>mpglib</application +>/<application +>kmpg</application +> (<acronym +>mpg</acronym +> lyd- og videoafspilningsteknologi) </para> +</listitem> + +<listitem> +<para +><application +>SDL</application +> (direkte medialag for spil, som endnu ikke er påbegyndt men som kan være behageligt) </para> +</listitem> + +<listitem> +<para +><application +>Elektriske ører</application +> (ophavsmanden kontaktede mig - status ukendt) </para> +</listitem> +</itemizedlist> + +<sect1 id="interfaces-how"> +<title +>Hvordan grænseflader virker</title> + +<!-- I think this is now obsolete and documented elsewhere ? --> + +<para +>&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: </para> + +<itemizedlist> +<listitem +><para +>Synkrone strømme</para +></listitem> +<listitem +><para +>Asynkrone strømme</para +></listitem> +<listitem +><para +>Metoder</para +></listitem> +<listitem +><para +>Egenskaber</para +></listitem> +</itemizedlist> + +<para +>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. </para> + +<para +>Grænseflader specificeres i <literal role="extension" +>.idl</literal +>-kode og køres gennem <command +>mcopidl</command +>-oversætteren. Man afleder <classname +><replaceable +>Grænsefladensnavn</replaceable +>_impl</classname +> klassen for at implementere dem, og bruger <function +>REGISTER_IMPLEMENTATION (Grænsefladensnavn_impl)</function +> til at indsætte en objektimplementering i &MCOP;'s objektsystem. </para> + +</sect1> + +<sect1 id="codecs"> +<title +>Codec'er, dataafkodning</title> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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;: </para> + +<programlisting +>interface Codec { + in async byte stream indata; + out async byte stream outdata; +}; +</programlisting> + + +<para +>Afkodere kan naturligvis også angive egenskaber for at udsende yderligere data, som formatinformation. </para> + +<programlisting +>interface ByteAudioCodec { + in async byte stream indata; + out async byte stream outdata; + readonly attribute samplingRate, bits, channels; +}; +</programlisting> + +<para +>Denne <interfacename +>ByteAudioCodec</interfacename +> kan for eksempel forbindes til et <interfacename +>ByteStreamToAudio</interfacename +>-objekt, for at oprette rigtigt flydende lyd. </para> + +<para +>Andre typer af afkodere kan naturligvis involvere at sende videodata direkte ud, som </para> + +<programlisting +>interface VideoCodec { + in async byte stream indata; + out video stream outdata; /* bemærk: videostrømme findes ikke endnu */ +}; +</programlisting> + +<para +>Sandsynligvis bør et afkodningsbegreb bruges i stedet for måden <quote +>du ved hvordan det spilles med det gør jeg ikke</quote +> som for eksempel <interfacename +>WavPlayObject</interfacename +> bruger for øjeblikket. Nogen skal dog sætte sig ned og eksperimentere lidt inden en programmeringsgrænseflade kan defineres. </para> + +</sect1> + +<sect1 id="video"> +<title +>Video</title> + +<para +>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. </para> + +<para +>Der er nogle ting som det er vigtigt ikke at udelade: </para> + +<itemizedlist> +<listitem> +<para +>Der er <acronym +>RGB</acronym +> og <acronym +>YUV</acronym +> farverum. </para> +</listitem> +<listitem> +<para +>Formatet bør markeres i strømmen på en måde. </para> +</listitem> +<listitem> +<para +>Synkronisering er vigtig. </para> +</listitem> +</itemizedlist> + +<para +>Min idé er at lade muligheden for at ændre implementeringen af <classname +>VideoFrame</classname +>-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. </para> + +<para +>For video er den almindelige situation dog at alle ting er i samme proces, fra afkodningen til visningen. </para> + +<para +>Jeg har lavet en prototypeimplementering af videostrømme, som kan hentes <ulink url="http://space.twc.de/~stefan/kde/download/video-quickdraw.tar.gz" +>herfra</ulink +>. Dette skal integreres med &MCOP; efter nogle eksperimenter. </para> + +<para +>En visningskomponent som understøtter XMITSHM (med <acronym +>RGB</acronym +> og <acronym +>YUV</acronym +>) bør der sørges for. Martin Vogt fortalte mig at han arbejder på en sådan. </para> + +</sect1> + +<sect1 id="threading"> +<title +>Trådning</title> + +<para +>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: </para> + + +<itemizedlist> +<listitem +><para +>SmartWrappers - de er ikke trådsikre på grund af usikker referenceregning og lignende. </para> +</listitem> +<listitem> +<para +>Afsenderen / I/O - heller ikke trådsikre. </para> +</listitem> +</itemizedlist> + +<para +>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. </para> + +<para +>Hvordan det ville virke: </para> + + +<itemizedlist> +<listitem> +<para +>Flowsystemet bestemmer hvilke moduler der skal beregne hvad, dvs: </para> + <itemizedlist> + <listitem +><para +>videobilleder (med metoden process_indata)</para +></listitem> + <listitem +><para +>synkrone lydstrømme (calculateBlock)</para +></listitem> + <listitem +><para +>andre asynkrone strømme, i hovedsagen datastrømme</para +></listitem> + </itemizedlist> +</listitem> +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>Moduler må ikke bruge &MCOP;-funktioner (som fjernkaldes) mens trådede operationer er i gang. </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="synchronization"> +<title +>Synkronisering</title> + +<para +>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. </para> + +<para +>Lyd skal have underforståede tidsstempler, eftersom det er synkront. </para> + +</sect1> + +<sect1 id="dynamic-composition"> +<title +>Dynamisk sammensætning</title> + +<para +>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. </para> + +<para +>Dette kræves for &arts-builder;. </para> + +</sect1> + +<sect1 id="gui"> +<title +>&GUI;</title> + +<para +>Alle komponenter i den grafiske grænseflade vil være &MCOP;-moduler. De bør have egenskaber som størrelse, etiket, farve, ... En <acronym +>RAD</acronym +>-bygger (&arts-builder;) bør kunne sammensætte dem visuelt. </para> + +<para +>Den grafiske grænseflade bør det være muligt at gemme ved at gemme egenskaberne. </para> + +</sect1> + +<sect1 id="midi-stuff"> +<title +>&MIDI;</title> + +<para +>&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. </para> + +<para +>Jeg tror at normale strukturer vil slå til, dvs noget som: </para> + +<programlisting +>struct MidiEvent { + byte b1,b2,b3; + sequence<byte> sysex; +} +</programlisting> + +<para +>Asynkrone strømme bør understøtte egne strømningstyper. </para> + +</sect1> + +</chapter> + + diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/glossary.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/glossary.docbook new file mode 100644 index 00000000000..352e57f6654 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/glossary.docbook @@ -0,0 +1,173 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE glossary PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<glossary id="glossary"> + +<glossentry id="gloss-alsa"> +<glossterm +><acronym +>ALSA</acronym +></glossterm> +<glossdef> +<para +>Advanced &Linux; Sound Architecture. En lydkortsdriver for &Linux; som for øjeblikket ikke indgår som standard i kildekoden for kernen. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-arts"> +<glossterm +>&arts;</glossterm> +<glossdef> +<para +>Analog realtidssynthesizer. Navnet på den multimediaarkitektur/bibliotek/værktøjskasse som bruges af &kde;-projektet (bemærk de store bogstaver) </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-bsd"> +<glossterm +><acronym +>BSD</acronym +></glossterm> +<glossdef> +<para +>Berkeley Software Distribution. Refererer her til et af flere forskellige &UNIX;-kompatible operativsystemer som har deres oprindelse i <acronym +>BSD</acronym +> &UNIX;. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-corba"> +<glossterm +><acronym +>CORBA</acronym +></glossterm> +<glossdef> +<para +>Common Object Request Broker Architecture. En standard for at implementere objektorienteret fjernkørsel. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-cvs"> +<glossterm +><acronym +>CVS</acronym +></glossterm> +<glossdef> +<para +>Concurrent Versions System. Et konfigurationshåndteringssystem for programmel som bruges af mange programmelprojekter inklusive &kde; og &arts;. </para> +</glossdef> +</glossentry> + +<glossentry id="glos-fft"> +<glossterm +><acronym +>FFT</acronym +></glossterm> +<glossdef> +<para +>Fast Fourier Transform. En algoritme til at konvertere data fra tids- til frekvensdomæne, som ofte bruges i signalbehandling. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-full-duplex"> +<glossterm +>Full duplex</glossterm> +<glossdef> +<para +>Muligheden for et lydkort til samtidigt at indspille og afspille lyd. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-gpl"> +<glossterm +><acronym +>GPL</acronym +></glossterm> +<glossdef> +<para +><acronym +>GNU</acronym +> General Public License. En programmellicens som blev lavet af Free Software Foundation, som definerer betingelserne for at udgive frit programmel. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-gui"> +<glossterm +>&GUI;</glossterm> +<glossdef> +<para +>Grafisk brugergrænseflade </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-idl"> +<glossterm +><acronym +>IDL</acronym +></glossterm> +<glossdef> +<para +>Interface Definition Language. Et format uafhængigt af programmeringssprog til at definere grænseflader (metoder og data). </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-kde"> +<glossterm +>&kde;</glossterm> +<glossdef> +<para +>K-desktopmiljø. Et projekt for at udvikle et frit grafisk desktopmiljø for &UNIX;-kompatible systemer. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-lgpl"> +<glossterm +><acronym +>LGPL</acronym +></glossterm> +<glossdef> +<para +><acronym +>GNU</acronym +> 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 <acronym +>GPL</acronym +> som ofte bruges til programmelbiblioteker. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-mcop"> +<glossterm +>&MCOP;</glossterm> +<glossdef> +<para +>Multimedia COmmunication Protocol. Protokollen som bruges til kommunikation mellem &arts; programmoduler, som har ligheder med <acronym +>CORBA</acronym +> men er enklere og optimeret for multimedia. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-midi"> +<glossterm +>&MIDI;</glossterm> +<glossdef> +<para +>Musical Instrument Digital Interface. En standardprotokol for kommunikation mellem elektroniske musikinstrumenter, angiver også ofte filformatet som bruges til at opbevare &MIDI;-kommandoer. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-oss"> +<glossterm +><acronym +>OSS</acronym +></glossterm> +<glossdef> +<para +>Open Sound System. Lyddriverne som indgår i &Linux;' kerne (sommetider kaldet <acronym +>OSS</acronym +>/Free) eller en kommerciel version som sælges af 4Front Technologies. </para> +</glossdef> +</glossentry> + +</glossary> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/gui.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/gui.docbook new file mode 100644 index 00000000000..b769c161b6b --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/gui.docbook @@ -0,0 +1,29 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<!-- +<chapter id="gui-elements"> +<title +>&GUI; Elements</title> + +<sect1 id="gui-introduction"> +<title +>Introduction</title> + +</sect1> + +<sect1 id="parents"> +<title +>Parents</title> + +</sect1> + +<sect1 id="mixers"> +<title +>Mixers</title> + +</sect1> +</chapter> +--> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/helping.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/helping.docbook new file mode 100644 index 00000000000..629b9c497d0 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/helping.docbook @@ -0,0 +1,237 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="contributing"> +<title +>Hjælp til med &arts;</title> + +<sect1 id="how-to-help"> +<title +>Hvordan du kan hjælpe til</title> + +<para +>&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 <application +>artsbuilder</application +> moduler), musikere til at lave &arts;-moduleksempler, og forfattere til at skrive eller gennemse dokumentation. </para> +</sect1> + +<sect1 id="mailing-lists"> +<title +>E-mail-lister</title> + +<para +>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. </para> + +<para +>&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å <ulink url="http://www.kde.org/mailinglists.html" +> http://www.kde.org/mailinglists.html</ulink +> eller sende e-mail med emnet <userinput +>subscribe <replaceable +>din-e-mail-adresse</replaceable +></userinput +> til <email +>kde-multimedia-request@kde.org</email +>. Listen findes også arkiveret på <ulink url="http://lists.kde.org" +> http://lists.kde.org</ulink +>. </para> + +<para +>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 <email +>arts-request@space.twc.de</email +> med meddelelsesteksten <userinput +>subscribe <replaceable +>din-epostadresse</replaceable +></userinput +>. Listen arkiveres på <ulink url="http://space.twc.de/~stefan/arts-archive" +> http://space.twc.de/~stefan/arts-archive</ulink +>. </para> + +</sect1> + +<sect1 id="coding-standards"> +<title +>Kodningsstandarder</title> + +<para +>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. </para> + +<variablelist> +<varlistentry> +<term +>Navngivning af medlemsfunktioner</term> +<listitem> +<para +>&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. </para> +<para +>Dette betyder for eksempel:</para> + +<programlisting +>createStructureDesc() + updateWidget(); + start(); </programlisting> + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Klassemedlemmer</term> +<listitem> +<para +>Klassemedlemmer har ikke store bogstaver, som for eksempel menubar eller button. </para> + +<para +>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 <function +>foo</function +>, som ikke skal være synlig, så laves: </para> + +<programlisting +>foo(long new_value); + long foo(); </programlisting> + +<para +>funktioner for at hente eller sætte en værdi. I dette tilfælde, skal den rigtige værdi for <function +>foo</function +> opbevares i <returnvalue +>_foo</returnvalue +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Klassenavne</term> +<listitem> +<para +>Alle klasser skal have store bogstaver for hvert ord, hvilket betyder <classname +>ModuleView</classname +>, <classname +>SynthModule</classname +>. Alle klasser som hører til biblioteker skal bruge &arts;-navnerummet, såsom <classname +>Arts::Soundserver</classname +>. </para> +<para +>Implementeringer af &MCOP;-klasser skal døbes <classname +>Class_impl</classname +>, som for eksempel <classname +>SoundServer_impl</classname +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Parametre</term> +<listitem> +<para +>Parametre har altid små bogstaver. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Lokale variabler</term> +<listitem> +<para +>Lokale variabler har altid små bogstaver, og kan have navne såsom <varname +>i</varname +>, <varname +>p</varname +>, <varname +>x</varname +> osv. hvis det passer. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Tabulatorbredde (skiftbredde)</term> +<listitem> +<para +>Et tabulatortegn er lige så meget som fire blanke tegn. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Mellemrum i udtryk</term> +<listitem> +<para +>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. </para> +<para +>Følgende eksempel demonstrerer god brug af mellemrum: </para> +<programlisting +>{ + int a,b; + int c, d, e; + int f = 4; + + a=b=c=d+e+f; + a = b = c = d + e + f; + + if(a == 4) { + a = b = c = (d+e)/2; + } + + while(b<3) + c--; + + arts_debug("%d\n", c); +} +</programlisting> +<para +>Følgende eksempel demonstrerer hvordan man <emphasis +>ikke</emphasis +> skal bruge mellemrum. For funktionskald, efter if, while, for, switch og så videre, skrives intet mellemrum. </para> +<programlisting +>{ + // 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 (); +} +</programlisting> +</listitem> +</varlistentry> + + +<varlistentry> +<term +>Navngivning af kildekodefiler</term> +<listitem> +<para +>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 <literal role="extension" +>.cc</literal +> hvis de indeholder &Qt;- og grafikuafhængig kode, og <literal role="extension" +>.cpp</literal +> hvis de indeholder &Qt;- og grafikafhængig kode. Implementeringsfiler for grænseflader skal benævnes <filename +><replaceable +>foo</replaceable +>_impl</filename +>, hvis Foo er grænsefladens navn. </para> + +<para +>&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. </para> +</listitem> +</varlistentry> +</variablelist> +</sect1> + +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/artsbuilder/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..edffad9020b --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/index.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/index.docbook new file mode 100644 index 00000000000..894c20b4d80 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/index.docbook @@ -0,0 +1,397 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&arts;"> + <!ENTITY tools SYSTEM "tools.docbook"> + <!ENTITY artsbuilder-doc SYSTEM "artsbuilder.docbook" +> + <!ENTITY detail SYSTEM "detail.docbook"> + <!ENTITY arts-midi SYSTEM "midi.docbook"> + <!ENTITY gui SYSTEM "gui.docbook"> + <!ENTITY mcop-ref SYSTEM "mcop.docbook"> + <!ENTITY arts-mcop SYSTEM "mcop.docbook"> + <!ENTITY apis SYSTEM "apis.docbook"> + <!ENTITY modules SYSTEM "modules.docbook"> + <!ENTITY porting SYSTEM "porting.docbook"> + <!ENTITY helping SYSTEM "helping.docbook"> + <!ENTITY future SYSTEM "future.docbook"> + <!ENTITY references SYSTEM "references.docbook"> + <!ENTITY arts-faq SYSTEM "faq.docbook"> + <!ENTITY arts-glossary SYSTEM "glossary.docbook"> + <!ENTITY digitalaudio SYSTEM "digitalaudio.docbook"> + <!ENTITY midiintro SYSTEM "midiintro.docbook"> + <!ENTITY MCOP "<acronym +>MCOP</acronym +>"> + <!ENTITY DCOP "<acronym +>DCOP</acronym +>"> + <!ENTITY MIDI "<acronym +>MIDI</acronym +>"> + <!ENTITY mcopidl "<application +>mcopidl</application +>"> + <!ENTITY IDL "<acronym +>IDL</acronym +>"> + <!ENTITY % Danish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>&arts;-håndbogen</title> +<authorgroup> + +<author +><firstname +>Stefan</firstname +> <surname +>Westerfeld</surname +> <affiliation +> <address +><email +>stefan@space.twc.de</email +></address> +</affiliation> +</author> + +<author +><firstname +>Jeff</firstname +> <surname +>Tranter</surname +> <affiliation +> <address +><email +>tranter@kde.org</email +></address> +</affiliation> +</author> + +&erik.kjaer.pedersen.role; +</authorgroup> + +<copyright> +<year +>1999-2001</year> +<holder +>Stefan Westerfeld & Jeff Tranter</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2001-06-10</date> +<releaseinfo +>1.00.09</releaseinfo> + +<abstract +><para +>Denne håndbog beskriver &arts;, den analoge realtidssynthesizer.</para> + +</abstract> + +<keywordset> +<keyword +>aRts</keyword> +<keyword +>artsbuilder</keyword> +<keyword +>synthesizer</keyword> +<keyword +>multimedie</keyword> +<keyword +>struktur</keyword> +<keyword +>musik</keyword> +<keyword +>lyd</keyword> +<keyword +>KDE</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Indledning</title> + +<sect1 id="what-is-arts"> +<title +>Hvad er &arts;?</title> + +<para +>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.</para> + +<para +>Lydserveren &artsd; blander lyd fra forskellige kilder i realtid, hvilket lader flere lydprogrammer få transparent delt adgang til lydkortet.</para> + +<para +>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;.</para> + +</sect1> + +<sect1 id="using-this-manual"> +<title +>Brug af denne håndbog</title> + +<para +>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.</para> + +<para +>Vi foreslår at du først læser kapitlet <link linkend="installation" +>Hent og byg &arts;</link +> 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.</para> + +<para +>Derefter bør du læse afsnittene i kapitlet <link linkend="arts-tools" +>&arts; værktøjer</link +>, især &artsd;, artscontrol;, &artsshell;, og &artsdsp;. Dette hjælper dig til at bruge &arts; på den mest effektive måde.</para> + +<para +>Hvis du er interesseret i at trænge yderligere ind i &arts;' funktion, så læs kapitlet om <link linkend="artsbuilder" +>&arts-builder;</link +> 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.</para> + +<para +>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 <link linkend="arts-in-detail" +>&arts; i detalje</link +>. Dette bør give dig en forståelse for alle begreber som kræves for &arts;-programmeludvikling.</para> + +<para +>Hvis du er særligt interesseret i <acronym +>MIDI</acronym +>-funktionerne i &arts;, bør du læse kapitlet om <link linkend="midi" +>&MIDI;</link +>.</para> + +<!-- TODO +<para +>To learn more about the &arts; graphical elements, either as an advanced +user of artsbuilder or to create new elements, read the section on <link +linkend="gui-elements" +><acronym +>GUI</acronym +> Elements</link +>.</para> +--> + +<para +>Hvis du vil udvikle multimedieprogrammer som bruger &arts;, beskrives de forskellige programmelgrænseflader (<acronym +>API</acronym +>) detaljeret i kapitlet <link linkend="arts-apis" +>&arts;-API</link +>.</para> + +<para +>Hvis du vil udvide &arts; ved at oprette nye moduler, læs kapitlet <link linkend="arts-modules" +>&arts;-moduler</link +>.</para> + +<para +>Hvis du ændrer et eksisterende program til at køre sammen med &arts;, så læs kapitlet <link linkend="porting" +>Overførsel af programmer til at passe sammen med &arts;</link +>.</para> + +<para +>Du kan også finde ud af hvordan du kan hjælpe med og bidrage til &arts;-projektet i kapitlet <link linkend="contributing" +>Bidrag til &arts;</link +>, læs om kommende udvikling af &arts; i kapitlet <link linkend="future-work" +>Fremtidigt arbejde</link +>, og finde link til mere information i afsnittet <link linkend="references" +>Referencer</link +>.</para> + +<para +>Vi har også afrundet håndbogen med en del yderligere materiale, inklusive <link linkend="faq" +>svar på almindelige spørgsmål</link +>, en <link linkend="contributors" +>liste over bidragydere</link +>, detaljer om &arts; <link linkend="copyright-and-licenses" +>ophavsret og licenser</link +>, og en del baggrundsmateriale om <link linkend="intro-digital-audio" +>digitallyd</link +> og <link linkend="midi-introduction" +>&MIDI;</link +>. En <link linkend="glossary" +>ordforklaring</link +> indgår også.</para> + +<note> +<para +>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 <email +>tranter@kde.org</email +> eller Stefan Westerfeld <email +>stefan@space.twc.de</email +> for at undgå dobbeltarbejde. </para> +</note> + +</sect1> + +<sect1 id="history"> +<title +>Historien</title> + +<para +>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. </para> + + +<para +>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 <application +>ksynth</application +>, omdøbtes til &arts; og udviklingstakten øgedes. På dette tidspunkt var projektet næsten komplet, med en <acronym +>CORBA</acronym +>-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.</para> + +<para +>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 <acronym +>CORBA</acronym +>-koden med et helt nyt undersystem, &MCOP;, optimeret for multimedie. Version 0.4 af &arts; indgik i udgave 2.0 af &kde;.</para> + +<para +>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.</para> + +</sect1> + +</chapter> + +&tools; +&artsbuilder-doc; +&detail; +&arts-midi; +&gui; +&mcop-ref; +&apis; +&modules; +&porting; +&helping; +&future; +&references; +&arts-faq; + +<chapter id="copyright-and-licenses"> + +<title +>&arts; Ophavsret og licens</title> + +<para +>&arts; programmel ophavsret 1998-2001 Stefan Westerfeld <email +>stefan@space.twc.de</email +></para> + +<para +><anchor id="contributors"/> Dokumentation ophavsret 1999-2001 Stefan Westerfeld <email +>stefan@space.twc.de</email +> og Jeff Tranter <email +>tranter@kde.org</email +>. </para> +&erik.kjaer.pedersen.credit; +&underFDL; <para +>Alle biblioteker som indgår i &arts; udgives under betingelseren i <acronym +>GNU</acronym +> Lesser General Public licensen. En overvældende majoritet af koden i &arts; findes i biblioteker, inklusive hele <acronym +>MCOP</acronym +> og ArtsFlow. Dette tillader at bibliotekerne bruges af programmer som ikke er fri eller åbne hvis det ønskes sådan. </para> + +<para +>Det er et fåtal af programmer (såsom <application +>artsd</application +>), som udgives under betingelseren i <acronym +>GNU</acronym +> General Public License. Eftersom der har været forskellige meninger om det er tilladt eller ej at linke <acronym +>GPL</acronym +>-programmer med &Qt;, har jeg også tilføjet en udtrykkelig anmærkning som tillader dette, som en tilføjelse til <acronym +>GPL</acronym +>: 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.</para> + +</chapter> + +<appendix id="installation"> +<title +>Installering af &arts;</title> + +<para +>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. </para> + +<sect1 id="binary-install"> +<title +>Installér en færdigkompileret binær udgave</title> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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. </para> + +</sect1> + +<sect1 id="source-install"> +<title +>Byg fra kildekode</title> + +<para +>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. </para> + +<para +>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 <acronym +>CVS</acronym +>-arkiv. De fleste brugere som ikke udvikler med &arts; bør bruge den stabile version. Du kan hente den fra <ulink url="ftp://ftp.kde.org" +>ftp://ftp.kde.org</ulink +> eller et af de mange spejle. Hvis du allerede udvikler aktivt med &arts; vil du formodentlig bruge <acronym +>CVS</acronym +>-versionen. Hvis du vil bruge aRts uden KDE, kan du hente en selvstændig udviklingsversion fra <ulink url="http://space.twc.de/~stefan/kde/arts-snapshot-doc.html" +> http://space.twc.de/~stefan/kde/arts-snapshot-doc.html</ulink +>. </para> + +<para +>Bemærk at hvis du bygger fra <acronym +>CVS</acronym +>, vil visse komponenter i &arts; (dvs. de grundlæggende centrale komponenter inklusive lydserveren) være i <acronym +>CVS</acronym +>-modulet kdelibs, mens yderligere komponenter (f.eks. <application +>artsbuilder</application +>) indgår i kdemultimedia. 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. </para> + +<para +>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 <acronym +>OSS</acronym +>/Free driver i kernen, <acronym +>OSS</acronym +>-driveren fra 4Front Technologies, eller en <acronym +>ALSA</acronym +>-driver med <acronym +>OSS</acronym +>-støtte). </para> + +<para +>Mere information om at hente og installere &kde; (inklusive &arts;) findes i <ulink url="http://www.kde.org/documentation/faq/index.html" +>&kde;'s &FAQ;</ulink +>.</para> + +</sect1> + +</appendix> + +&digitalaudio; +&midiintro; +&arts-glossary; + +</book> +<!-- +Local Variables: +mode: sgml +sgml-omittag:nil +sgml-shorttag:t +sgml-namecase-general:t +sgml-general-insert-case:lower +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:0 +sgml-indent-data:nil +End: +--> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/mcop.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/mcop.docbook new file mode 100644 index 00000000000..6f309400327 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/mcop.docbook @@ -0,0 +1,1972 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="mcop"> +<title +>&MCOP;: objektmodel og strømme</title> + +<sect1 id="mcop-overview"> + +<title +>Oversigt</title> + +<para +>&MCOP; er standarden som &arts; anvender til: </para> + +<itemizedlist> +<listitem> +<para +>Kommunikation mellem objekter. </para> +</listitem> + +<listitem> +<para +>Netværkstransparens. </para> +</listitem> + +<listitem> +<para +>Beskrivelse af objektgrænseflader. </para> +</listitem> + +<listitem> +<para +>Sproguafhængighed. </para> +</listitem> +</itemizedlist> + +<para +>En vigtig del af &MCOP; er <emphasis +>grænsefladesbeskrivelsessproget</emphasis +>, &IDL;, som bruges til at definere mange af &arts; programmeringsgrænseflader og andre grænseflader på en sproguafhængig måde. </para> + +<para +>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. </para> + +<para +>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. </para> + +</sect1> + +<sect1 id="interfaces"> + +<title +>Grænseflade og &IDL;</title> + +<para +>Meget af den service som varetages af &arts;, såsom modulerne og lydserveren defineres i form af <acronym +>grænseflader</acronym +>. Grænseflader specificeres i et programsprogsuafhængig format: &IDL;. </para> + +<para +>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++). </para> + +<para +>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. </para> + +<para +>Det &IDL; som bruges af &arts; ligner det som bruges af <acronym +>CORBA</acronym +> og <acronym +>DCOM</acronym +>. </para> + +<para +>&IDL;-filer kan indholde: </para> + +<itemizedlist> +<listitem> +<para +>C-stil #include-direktiv for andre &IDL;-filer. </para> +</listitem> + +<listitem> +<para +>Definitioner af nummereringstyper og struct-typer, som i C/C++. </para> +</listitem> + +<listitem> +<para +>Definitioner af grænseflade. </para> +</listitem> +</itemizedlist> + +<para +>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. </para> + +<sect2 id="streams"> + +<title +>Strømme</title> + +<para +>Strømme definerer multimediadata, en af de vigtigste komponenter i et modul. Strømme defineres med følgende format: </para> + +<para +>[ async ] in|out [ multi ] <replaceable +>typ</replaceable +> stream <replaceable +>navn</replaceable +> [ , <replaceable +>navn</replaceable +> ] ; </para> + +<para +>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. </para> + +<para +>Strømme er normalt synkrone, hvilket betyder at de er kontinuerlige dataflows med en konstant hastighed, såsom <acronym +>PCM</acronym +>-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. </para> + +<para +>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. </para> + +</sect2> +<sect2 id="attributes"> + +<title +>Attributter</title> + +<para +>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. </para> + +</sect2> +<sect2 id="methods"> + +<title +>Metoder</title> + +<para +>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. </para> + +</sect2> + +<sect2 id="standardinterfaces"> + +<title +>Standardgrænseflader</title> + +<para +>Flere grænseflader for standardmoduler er allerede definerede for dig i &arts;, såsom <interfacename +>StereoEffect</interfacename +>, og <interfacename +>SimpleSoundServer</interfacename +>. </para> + +</sect2> + +<sect2 id="example"> +<title +>Eksempel</title> + +<para +>Et enkelt eksempel på et modul taget fra &arts; er modulet med konstant forsinkelse, som findes i filen <filename +>kdemultimedia/arts/modules/artsmodules.idl</filename +>. Grænsefladedefinitionen angives nedenfor: </para> + +<programlisting +>interface Synth_CDELAY : SynthModule { + attribute float time; + in audio stream invalue; + out audio stream outvalue; +}; +</programlisting> + +<para +>Modulet arver <interfacename +>SynthModule</interfacename +>. Den grænseflade, som findes i <filename +>artsflow.idl</filename +>, definerer alle standardmetoder som implementeres i alle syntesemoduler. </para> + +<para +>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. </para> + +</sect2> + +</sect1> + +<sect1 id="more-about-streams"> +<title +>Mere om strømme</title> + +<para +>Dette afsnit dækker en del yderligere emneområder som hører sammen med strømme. </para> + +<sect2 id="stream-types"> +<title +>Strømtyper</title> + +<para +>Der er forskellige krav for hvordan et modul kan håndtere strømningen. For at illustrere dette, betragt følgende eksempel: </para> + +<itemizedlist> +<listitem> +<para +>Skalering af et signal med en faktor to. </para> +</listitem> + +<listitem> +<para +>Udfører frekvenskonvertering af samplinger. </para> +</listitem> + +<listitem> +<para +>Dekomprimering af et runlength-kodet signal. </para> +</listitem> + +<listitem> +<para +>Læs &MIDI;-begivenheder fra <filename class="devicefile" +>/dev/midi00</filename +> og indsæt dem i en strøm. </para> +</listitem +> +</itemizedlist> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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...). </para> + +<para +>Det sidste tilfælde er et modul som aktiveres af sig selv, og sommetider laver data. </para> + +<para +>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. </para> + +<para +>Synkrone strømme har følgende egenskaber: </para> + +<itemizedlist> +<listitem> +<para +>Moduler skal kunne beregne data af en hvilken som helst længde, givet tilstrækkelig meget inddata. </para> +</listitem> + +<listitem> +<para +>Alle strømme har samme samplingsrate. </para> +</listitem> + +<listitem> +<para +>Funktionen <function +>calculateBlock()</function +> kaldes når tilstrækkeligt med data er tilgængelig, og modulet kan stole på at pegerne angiver data. </para> +</listitem +> + +<listitem> +<para +>Der er ingen allokering eller afallokering der skal gøres. </para> +</listitem> +</itemizedlist> + +<para +>Asynkrone strømme, på den anden side, opfører sig sådan her: </para> + +<itemizedlist> +<listitem> +<para +>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 <quote +>skal kunne håndtere forespørgsler af en hvilken som helst størrelse</quote +>. </para> +</listitem> + +<listitem> +<para +>Asynkrone strømme for et modul kan have helt forskellige samplingsrater. </para> +</listitem> + +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>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). </para> +</listitem> +</itemizedlist> + +<para +>Når strømme deklareres, bruges nøgleordet <quote +>async</quote +> 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: </para> + +<programlisting +>interface ByteStreamToAudio : SynthModule { + async in byte stream inddata; // den asynkrone inddatasampling + + out audio stream left,right; // de synkrone uddatasamplinger +}; +</programlisting> + +</sect2> + +<sect2 id="async-streams"> +<title +>Brug af asynkrone strømme</title> + +<para +>Antag at du har bestemt dig for at skrive et modul som laver asynkron lyd. Dens grænseflade kunne se sådan her ud: </para> + +<programlisting +>interface SomeModule : SynthModule +{ + async out byte stream outdata; +}; +</programlisting> + +<para +>Hvordan sender man data? Den første metode kaldes <quote +>trykleverance</quote +>. 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. </para> + +<para +>Her følger det i form af kode. Først allokerer vi en pakke: </para> + +<programlisting +>DataPacket<mcopbyte> *packet = outdata.allocPacket(100); +</programlisting> + +<para +>Så fylder vi den: </para> + +<programlisting +>// 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; +</programlisting> + +<para +>Nu sender vi den: </para> + +<programlisting +>packet->send(); +</programlisting> + +<para +>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 <quote +>trækleverance</quote +>. 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. </para> + +<para +>Du starter det ved at kalde setPull. For eksempel: </para> + +<programlisting +>outdata.setPull(8, 1024); +</programlisting> + +<para +>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. </para> + +<para +>Derefter behøver du at implementere en metode som fylder pakken, som kunne se sådan her ud: </para> + +<programlisting +>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(); +} +</programlisting> + +<para +>Det er alt. Når du ikke har flere data, kan du begynde at sende pakker med størrelsen nul, som stopper trækleverancerne. </para> + +<para +>Bemærk at det er væsentligt at give metoden nøjagtigt navnet <methodname +>request_<replaceable +>strømnavn</replaceable +></methodname +>. </para> + +<para +>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å: </para> + +<programlisting +>interface ToLower { + async in byte stream inddata; + async out byte stream uddata; +}; +</programlisting> + +<para +>Dette er virkeligt enkelt at implementere. Her er hele implementationen: </para> + +<programlisting +>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); +</programlisting> + +<para +>Igen er det væsentligt at give metoden navnet <methodname +>process_<replaceable +>strømnavn</replaceable +></methodname +>. </para> + +<para +>Som du kan se, så får du et kald til en funktion for hver pakke som ankommer (<function +>process_indata</function +> i vort tilfælde). Du skal kalde metoden <methodname +>processed()</methodname +> for en pakke for at angive at du har behandlet den. </para> + +<para +>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. </para> + +<para +>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. </para> + +</sect2> + +<sect2 id="default-streams"> +<title +>Standardstrømme</title> + +<para +>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. </para> + +<para +>Antag nu at de to objekter ovenfor kan håndtere stereo, og begge har en <quote +>venstre</quote +> og <quote +>højre</quote +> 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. </para> + +<para +>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. </para> + +<para +>Syntaksen er den følgende: I &IDL; kan du bruge nøgleordet default i strømdeklarationen, eller på en enkelt linje. For eksempel: </para> + +<programlisting +>interface TwoToOneMixer { + default in audio stream input1, input2; + out audio stream output; +}; +</programlisting> + +<para +>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: </para> + +<programlisting +>interface DualNoiseGenerator { + out audio stream bzzt, couic; + default couic, bzzt; +}; +</programlisting> + +<para +>laver automatisk en forbindelse fra <quote +>couic</quote +> til <quote +>input1</quote +>, og <quote +>bzzt</quote +> til <quote +>input2</quote +> 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. </para> + +<para +>Der er nogle regler som følges når arv bruges: </para> + +<itemizedlist> +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>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 <quote +>virtual public</quote +> ved standardens første plads i listen. </para> +</listitem> + +<listitem> +<para +>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. </para> +</listitem> +</itemizedlist> + +</sect2> + +</sect1> +<sect1 id="attribute-change-notify"> +<title +>Ændringsmeddelelser for attributter</title> + +<!-- TODO: This should be embedded better into the context - I mean: the + context should be written ;-). --> + +<para +>Æ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. </para> + +<para +>&MCOP; håndterer dette ved at kunne give meddelelser når attributter ændres. Alt som deklareres som <quote +>attribute</quote +> i &IDL; kan afgive sådanne ændringsmeddelelser, og skal gøre det, nårsomhelst de ændres. Alt som deklareres som <quote +>attribute</quote +> kan også modtage sådanne ændringsmeddelelser. Så hvis du for eksempel har to &IDL;-grænseflader såsom disse her: </para> + +<programlisting +>interface Slider { + attribute long min,max; + attribute long position; + }; + interface VolumeControl : Arts::StereoEffect { + attribute long volume; // 0..100 + }; +</programlisting> + +<para +>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 </para> + +<programlisting +>#include <connect.h> +using namespace Arts; +[...] +connect(slider,"position_changed",volumeControl,"volume"); +</programlisting> + +<para +>Som du kan se, tilbyder hver egenskab to forskellige strømme, en for at sende ændringsmeddelelser, som hedder <function +><replaceable +>attributnavn</replaceable +>_changed</function +>, og en til at modtage ændringsmeddelelser, som hedder <function +>attributnavn</function +>. </para> + +<para +>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 <emphasis +>ikke er synkrone</emphasis +>, hvilket betyder at det kan tage tid inden de virkelig modtages efter at du har sendt dem. </para> + +<sect2 id="sending-change-notifications"> + +<title +>Send ændringsmeddelelser</title> + +<para +>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: </para> + +<programlisting +>void KPoti_impl::value(float newValue) + { + if(newValue != _value) + { + _value = newValue; + value_changed(newValue); // <- send ændringsmeddelelse + } + } +</programlisting> + +<para +>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. </para> + +</sect2> + +<sect2 id="change-notifications-apps"> +<title +>Anvendelser af ændringsmeddelelser</title> + +<para +>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 <filename class="directory" +>kdelibs/arts/tests</filename +>, og i den eksperimentelle artsgui-implementation, som du finder i <filename class="directory" +>kdemultimedia/arts/gui</filename +>. </para> + +<!-- TODO: can I markup links into the source code - if yes, how? --> + +<!-- LW: Linking into the source is problematic - we can't assume people are +reading this on a machine with the sources available, or that they aren't +reading it from a website. We're working on it! --> + +</sect2> +</sect1> + +<sect1 id="the-mcoprc-file"> + +<title +>Filen <literal role="extension" +>.mcoprc</literal +></title> + +<para +>Filen <literal role="extension" +>.mcoprc</literal +> (i hver brugers hjemmemappe) kan bruges til at indstille &MCOP; på nogle måder. For øjeblikket er følgende muligt: </para> + +<variablelist> + +<varlistentry> +<term +>GlobalComm</term> +<listitem> +<para +>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 <quote +>Arts::TmpGlobalComm</quote +> for at kommunikere via mappen <filename class="directory" +>/tmp/mcop-<replaceable +>brugernavn</replaceable +></filename +> (som kun virker på den lokale maskine) og <quote +>Arts::X11GlobalComm</quote +> for at kommunikere via rootvinduesegenskaberne på X11-serveren. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>TraderPath</term> + +<listitem> +<para +>Angiver hvor handlerinformation skal findes. Du kan angive mere end en mappe her, og adskille dem med kommategn. </para> +</listitem> + +</varlistentry> + +<varlistentry> +<term +>ExtensionPath</term> + +<listitem> +<para +>Angiver fra hvilke mapper udvidelser (i form af delte biblioteker) indlæses. Flere værdier kan adskilles med kommategn. </para> +</listitem> + +</varlistentry> +</variablelist> + +<para +>Et eksempel som bruger alt det ovenstående er: </para> + +<programlisting +># $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" +</programlisting> + +</sect1> + +<sect1 id="mcop-for-corba-users"> +<title +>&MCOP; for <acronym +>CORBA</acronym +>-brugere</title> + +<para +>Hvis du har brugt <acronym +>CORBA</acronym +> tidligere, vil du kunne mærke at &MCOP; er meget lig. I virkeligheden så brugte &arts; <acronym +>CORBA</acronym +> inden version 0.4. </para> + +<para +>Den grundlæggende idé med <acronym +>CORBA</acronym +> 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 <acronym +>CORBA</acronym +>-&IDL;. Der er kun et fåtal af forskelle. </para> + +<sect2 id="corba-missing"> +<title +><acronym +>CORBA</acronym +>-funktioner som mangles i &MCOP;</title> + +<para +>I &MCOP; er der ingen <quote +>in</quote +> og <quote +>out</quote +> parametre for metodekald. Parametre er altid indgående, og returværdien er altid udgående, hvilket betyder at grænsefladen: </para> + +<programlisting +>// CORBA idl +interface Account { + void deposit( in long amount ); + void withdraw( in long amount ); + long balance(); +}; +</programlisting> + +<para +>skrives som </para> + +<programlisting +>// MCOP idl +interface Account { + void deposit( long amount ); + void withdraw( long amount ); + long balance(); +}; +</programlisting> + +<para +>i &MCOP;. </para> + +<para +>Der er ingen støtte for undtagelser. &MCOP; har ikke undtagelser, den bruger noget andet til fejlhåndtering. </para> + +<para +>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. </para> + +<para +>Der er ingen understøttelse for at sende grænseflader eller objektreferencer </para> + +</sect2> + +<sect2 id="corba-different"> +<title +><acronym +>CORBA</acronym +>-funktioner som er anderledes i &MCOP;</title> + +<para +>Du deklarerer sekvenser som <quote +>sequence<replaceable +>typ</replaceable +></quote +> i &MCOP;. Der er intet behov for en typedefinition. For eksempel, i stedet for: </para> + +<programlisting +>// CORBA idl +struct Line { + long x1,y1,x2,y2; +}; +typedef sequence<Line> LineSeq; +interface Plotter { + void draw(in LineSeq lines); +}; +</programlisting> + +<para +>ville du skrive </para> + +<programlisting +>// MCOP idl +struct Line { + long x1,y1,x2,y2; +}; +interface Plotter { + void draw(sequence<Line> lines); +}; +</programlisting> + +</sect2> + +<sect2 id="no-in-corba"> +<title +>&MCOP;-funktioner som ikke findes i <acronym +>CORBA</acronym +></title> + +<para +>Du kan deklarere strømme, som senere behandles af &arts;' skelet. Strømme deklareres på en måde som ligner egenskaber. For eksempel: </para> + +<programlisting +>// MCOP idl +interface Synth_ADD : SynthModule { + in audio stream signal1,signal2; + out audio stream outvalue; +}; +</programlisting> + +<para +>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. </para> + +</sect2> + +<sect2 id="mcop-binding"> +<title +>&MCOP;-bindingen til C++ sproget</title> + +<para +>Dette adskiller sig fra <acronym +>CORBA</acronym +> i hovedsagen hvad angår: </para> + +<itemizedlist> +<listitem> +<para +>Strenge bruger C++ <acronym +>STL</acronym +>-klassen <classname +>string</classname +>. Når de opbevares i sekvenser, opbevares de <quote +>enkelt</quote +>, hvilket betyder at de anses for at være en primitiv type. Derfor behøver de at blive kopieret. </para> +</listitem> + +<listitem> +<para +>long er enkle long (forventes at være 32 bit). </para> +</listitem> + +<listitem> +<para +>Sekvenser bruger C++ <acronym +>STL</acronym +>-klassen <classname +>vector</classname +>. </para> +</listitem> + +<listitem> +<para +>Strukturer afledes alle fra &MCOP; klassen <classname +>Type</classname +>, og genereres af &MCOP; &IDL;-oversætteren. Når de opbevares i sekvenser, opbevares de ikke <quote +>enkelt</quote +>, men som pegere, eftersom der ellers ville opstå for meget kopiering. </para> +</listitem> +</itemizedlist> +</sect2> + +<sect2 id="implementing-objects"> +<title +>Implementering af &MCOP;-objekter</title> + +<para +>Efter at have sendt dem gennem &IDL;-oversætteren, skal du aflede fra klassen <classname +>_skel</classname +>. Antag for eksempel at du har defineret grænsefladen sådan her: </para> + +<programlisting +>// MCOP idl: hello.idl +interface Hello { + void hello(string s); + string concat(string s1, string s2); + long sum2(long a, long b); +}; +</programlisting> + +<para +>Du sender det gennem &IDL;-oversætteren ved at kalde <userinput +><command +>mcopidl</command +> <parameter +>hello.idl</parameter +></userinput +>, som derefter laver <filename +>hello.cc</filename +> og <filename +>hello.h</filename +>. For at implementere dette, behøver du en C++ klasse som arver skelettet: </para> + +<programlisting +>// 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); +}; +</programlisting> + +<para +>Til sidst skal du implementere metoderne som almindelig C++. </para> + +<programlisting +>// 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; +} +</programlisting> + +<para +>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): </para> + +<programlisting +>Hello_impl server; +</programlisting> + +<para +>Og så snart du giver nogen referencen </para> + +<programlisting +>string reference = server._toString(); + printf("%s\n",reference.c_str()); +</programlisting> + +<para +>og gå til &MCOP;:s venteløkke </para> + +<programlisting +>Dispatcher::the()->run(); +</programlisting> + +<para +>har alle adgang til objektet med </para> + +<programlisting +>// 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]); +</programlisting> + +<para +>og kalde-metoder: </para> + +<programlisting +>if(h) + h->hello("test"); + else + printf("Adgang mislykkedes?\n"); +</programlisting> + +</sect2> +</sect1> + +<sect1 id="mcop-security"> +<title +>Sikkerhedshensyn for &MCOP;</title> + +<para +>Eftersom en &MCOP;-server lytter på en <acronym +>TCP</acronym +>-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. </para> + +<para +>Protokollen md5-auth gør følgende for at sikre at kun udvalgte (pålidelige) klienter kan forbinde til en server: </para> + +<itemizedlist> +<listitem> +<para +>Den antager at du kan give hver klient en hemmelig cookie. </para> +</listitem> + +<listitem> +<para +>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). </para> +</listitem> + +</itemizedlist> + +<para +>For at give hver klient den hemmelige cookie, putter &MCOP; den (normalt) i <filename class="directory" +>mcop</filename +> mappen (i <filename class="directory" +>/tmp/mcop-<envar +>USER</envar +>/secret-cookie</filename +>). Du kan naturligvis kopiere den til andre maskiner. Men hvis du gør det, så brug en sikker overførselsmekanisme, såsom <command +>scp</command +> (fra <application +>ssh</application +>). </para> + +<para +>Godkendelsen af klienter anvender følgende skridt: </para> + +<procedure> +<step> +<para +>[SERVER] opret en ny (tilfældig) cookie R </para> +</step> + +<step> +<para +>[SERVER] send den til klienten </para> +</step> + +<step> +<para +>[KLIENT] læs den "hemmelige cookie" S fra en fil </para> +</step> + +<step> +<para +>[KLIENT] bland cookierne R og S for at oprette en blandet cookie M med MD5-algoritmen </para> +</step> + +<step> +<para +>[KLIENT] send M til serveren </para> +</step> + +<step> +<para +>[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. </para> +</step> + +</procedure> + +<para +>Denne algoritme skulle være sikker, under forudsætning af at </para> + +<orderedlist> +<listitem> +<para +>De hemmelige og tilfældige cookier er <quote +>tilfældige nok</quote +> og </para> +</listitem> + +<listitem> +<para +>MD5-algoritmen ikke tillader at <quote +>originalteksten</quote +> 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. </para> +</listitem> +</orderedlist> + +<para +>&MCOP;-protokollen starter hver ny forbindelse med en godkendelsesprocess. Basalt ser den sådan her ud: </para> + +<procedure> + +<step> +<para +>Serveren sender meddelelsen ServerHello, som beskriver de kendte godkendelsesprotokoller. </para> +</step> + +<step> +<para +>Klienten sender meddelelsen ClientHello, som indeholder godkendelsesinformation. </para> +</step> + +<step> +<para +>Serveren sender meddelelsen AuthAccept. </para> +</step> +</procedure> + +<para +>For at se at sikkerheden virkelig virker, bør vi kigge på hvordan meddelelser behandles for ikke godkendte forbindelser: </para> + +<itemizedlist> +<listitem> +<para +>Inden godkendelsen er lykkedes, tager serveren ikke imod andre meddelelser fra forbindelsen. I stedet, hvis serveren for eksempel forventer sig meddelelsen <quote +>ClientHello</quote +>, og får meddelelsen mcopInvocation, så lukker den ned for forbindelsen. </para> +</listitem> + +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>Hvis klienten sender en fejlagtig ClientHello meddelelse (en hvor afkodningen mislykkes), så lukkes der for forbindelsen. </para> +</listitem> + +<listitem> +<para +>Hvis klienten ikke sender noget i det hele taget, skal en tidsgrænse overskrides (endnu ikke implementeret). </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="mcop-protocol"> +<title +>&MCOP; protokolspecifikation</title> + +<sect2 id="mcop-protocol-intro"> +<title +>Indledning</title> + +<para +>Den har begrebsmæssige ligheder med <acronym +>CORBA</acronym +>, men er beregnet til at kunne udvides på alle måder som kræves for multimediaoperationer i realtid. </para> + +<para +>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. </para> + +<para +>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 <acronym +>CORBA</acronym +>-implementationer ville gå i knæ. </para> + +<para +>Grænsefladedefinitionerne kan håndtere følgende selv: </para> + +<itemizedlist> +<listitem> +<para +>Kontinuerlige datastrømme (såsom lyddata). </para> +</listitem> + +<listitem> +<para +>Begivenhedsstrømme af data (såsom &MIDI;-begivenheder). </para> +</listitem> + +<listitem> +<para +>Rigtig referenceregning. </para> +</listitem> +</itemizedlist> + +<para +>og de vigtigste <acronym +>CORBA</acronym +>-kneb, såsom </para> + +<itemizedlist> +<listitem> +<para +>Synkrone metodekald. </para> +</listitem> + +<listitem> +<para +>Asynkrone metodekald. </para> +</listitem> + +<listitem> +<para +>Konstruere brugerdefinerede datatyper. </para> +</listitem> + +<listitem> +<para +>Multipel arv. </para> +</listitem> + +<listitem> +<para +>Sende objektreferencer. </para> +</listitem> +</itemizedlist> + +</sect2> + +<sect2 id="mcop-protocol-marshalling"> +<title +>&MCOP;'s meddelelseskodning</title> + +<para +>Konstruktionsmål/idéer: </para> + +<itemizedlist> + +<listitem> +<para +>Kodning skal være enkelt at implementere. </para> +</listitem> + +<listitem> +<para +>Afkodning kræver at modtageren véd hvilken type som skal afkodes. </para> +</listitem> + +<listitem> +<para +>Modtageren forventes at bruge al information, så mulighed for at hoppe over data findes kun i protokollen i det omfang at: </para> + +<itemizedlist> +<listitem> +<para +>Hvis man ved at en blok af data bliver modtaget, behøver man ikke kigge på hver del efter en slutmarkør. </para> +</listitem> + +<listitem> +<para +>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, </para> +</listitem> + +<listitem> +<para +>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. </para> +</listitem> +</itemizedlist> + +</listitem> + +<listitem> +<para +>Så lidt ekstra omkostning som muligt. </para> +</listitem> +</itemizedlist> + +<!-- TODO: Make this a table --> + +<para +>Kodningen af de forskellige typer vises i tabellen nedenfor: </para> + +<informaltable> +<tgroup cols="3"> +<thead> +<row> +<entry +>Type</entry> +<entry +>Kodningsproces</entry> +<entry +>Resultat</entry> +</row> +</thead> + +<tbody> +<row> +<entry +><type +>void</type +></entry> +<entry +>typen <type +>void</type +> kodes ved at udelade den, så ingenting skrives til strømmen for den.</entry> +<entry +></entry> +</row> + +<row> +<entry +><type +>long</type +></entry> +<entry +>kodes som fire byte, med den mest signifikante først, så tallet 10001025 (som er 0x989a81) vil blive kodet som:</entry> +<entry +><literal +>0x00 0x98 0x9a 0x81</literal +></entry> +</row> + +<row> +<entry +><type +>nummereringstyper</type +></entry> +<entry +><para +>kodes som <type +>long</type +></para +></entry> +<entry +></entry> +</row> + +<row> +<entry +><type +>byte</type +></entry> +<entry +><para +>kodes som en enkelt byte, så 0x42 vil blive kodet som:</para +></entry> +<entry +><literal +>0x42</literal +></entry> +</row> + +<row> +<entry +><type +>streng</type +></entry> +<entry +><para +>kodes som en <type +>long</type +>, 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).</para> +<important> +<para +>inklusive den sidste 0 byte i længderegningen!</para> +</important> +<para +><quote +>hello</quote +> ville blive kodet som:</para +></entry> +<entry +><literal +>0x00 0x00 0x00 0x06 0x68 0x65 0x6c 0x6c 0x6f 0x00</literal +></entry> +</row> + +<row> +<entry +><type +>boolean</type +></entry> +<entry +><para +>kodes som en byte, som indeholder 0 hvis <returnvalue +>false</returnvalue +> eller 1 hvis <returnvalue +>true</returnvalue +>, så at den booleske værdi <returnvalue +>true</returnvalue +> kodes som:</para +></entry> +<entry +><literal +>0x01</literal +></entry> +</row> + +<row> +<entry +><type +>float</type +></entry> +<entry +><para +>kodes med fire-byte IEEE754 repræsentationen, detaljeret dokumentation om hvordan IEEE fungerer findes her: <ulink url="http://twister.ou.edu/workshop.docs/common-tools/numerical_comp_guide/ncg_math.doc.html" +>http://twister.ou.edu/workshop.docs/ common-tools/ numerical_comp_guide/ ncg_math.doc.html</ulink +> og her: <ulink url="http://java.sun.com/docs/books/vmspec/2nd-edition/html/Overview.doc.html" +>http://java.sun.com/docs/books/ vmspec/ 2nd-edition/ html/ Overview.doc.html</ulink +>. Så værdien 2,15 ville blive kodet som:</para +></entry> +<entry +><literal +>0x9a 0x99 0x09 0x40</literal +></entry> +</row> + +<row> +<entry +><type +>struct</type +></entry> +<entry +><para +>En struktur kodes ved at kode dens indhold. Der kræves ingen yderligere præfiks eller suffiks, så strukturen </para> +<programlisting +>struct test { + string name; // som er "hello" + long value; // som er 10001025 (0x989a81) +}; +</programlisting> +<para +>ville blive kodet som:</para +></entry> +<entry> +<literallayout +>0x00 0x00 0x00 0x06 0x68 0x65 0x6c 0x6c +0x6f 0x00 0x00 0x98 0x9a 0x81 +</literallayout +></entry> +</row> + +<row> +<entry +><type +>sekvens</type +></entry> +<entry +><para +>En sekvens kodes ved at lave en liste over antallet af elementer som følger, og derefter kode elementerne en efter en.</para> +<para +>Så en sekvens med tre "long a", med a[0] = 0x12345678, a[1] = 0x01 og a[2] = 0x42 ville blive kodet som</para +></entry> +<entry> +<literallayout +>0x00 0x00 0x00 0x03 0x12 0x34 0x56 0x78 +0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x42 +</literallayout> +</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +<para +>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 *<replaceable +>normal type</replaceable +>, så en sekvens af long er <quote +>*long</quote +> og en sekvens af Header struct'er er <quote +>*Header</quote +>. </para> + +</sect2> + +<sect2 id="mcop-protocol-messages"> +<title +>Meddelelser</title> + +<para +>Formatet på &MCOP;'s meddelelseshovede defineres af denne struktur: </para> + +<programlisting +>struct Header { + long magic; // værdien 0x4d434f50, som kodes som MCOP + long messageLength; + long messageType; +}; +</programlisting> + +<para +>De mulige meddelelsetyper er for øjeblikket </para> + +<programlisting +>mcopServerHello = 1 + mcopClientHello = 2 + mcopAuthAccept = 3 + mcopInvocation = 4 + mcopReturn = 5 + mcopOnewayInvocation = 6 +</programlisting> + +<para +>Lidt information om &MCOP;'s meddelelseshåndtering: </para> + + +<itemizedlist> +<listitem> +<para +>Hver meddelelse begynder med et hoved. </para> +</listitem> + +<listitem> +<para +>Visse meddelelsestyper skal ignoreres af serveren, indtil godkendelsen er færdig. </para> +</listitem> + +<listitem> +<para +>Efter at hovedet er modtaget, kan protokolhåndteringen (forbindelsen) tage imod meddelelsen i sin helhed, uden at kigge på indholdet. </para> +</listitem> +</itemizedlist> + +<para +>Meddelelseslængden i hovedet er naturligvis sommetider redundant, hvilket gør at metoden ikke altid er minimal med hensyn til antal byte. </para> + +<para +>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. </para> + +<para +>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). </para> + +</sect2> + +<sect2 id="mcop-protocol-invocations"> +<title +>Kald</title> + +<para +>For at kalde en fjernmetode, skal man sende følgende struktur i en &MCOP;-meddelelse med messageType = 1 (mcopInvocation): </para> + +<programlisting +>struct Invocation { + long objectID; + long methodID; + long requestID; +}; +</programlisting> + +<para +>derefter sendes parametrene som en struktur, f.eks. hvis man kalder metoden "string concat(string s1, string s2)", sendes strukturen </para> + +<programlisting +>struct InvocationBody { + string s1; + string s2; +}; +</programlisting> + + +<para +>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). </para> + +<programlisting +>struct ReturnCode { + long requestID; + <resulttype> result; +}; +</programlisting> + + +<para +>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. </para> + +<para +>Så vor "string concat(string s1, string s2)" ville give en returkode som </para> + +<programlisting +>struct ReturnCode { + long requestID; + string result; +}; +</programlisting> + +</sect2> + +<sect2 id="mcop-protocol-inspecting"> +<title +>Inspektér grænseflader</title> + +<para +>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 </para> + +<programlisting +>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 +</programlisting> + +<para +>for at læse dette, behøver du naturligvis også </para> + +<programlisting +>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; +}; +</programlisting> + +<para +>parameterfeltet indeholder typekomponenter som angiver typerne for parametrene. Typen for returkoden angives i typefeltet for MethodDef. </para> + +<para +>Hvis man skal være streng, er det kun metoderne <methodname +>_lookupMethod()</methodname +> og <methodname +>_interfaceName()</methodname +> som varierer fra objekt til objekt, mens <methodname +>_queryInterface()</methodname +> og <methodname +>_queryType()</methodname +> altid er ens. </para> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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. </para> +</sect2> + +<sect2 id="mcop-protocol-typedefs"> +<title +>Typedefinitioner</title> + +<para +>Brugerdefinerede datatyper beskrives med strukturen <structname +>TypeDef</structname +>: </para> + +<programlisting +>struct TypeComponent { + string type; + string name; +}; + +struct TypeDef { + string name; + + sequence<TypeComponent> contents; +}; +</programlisting> + +</sect2> +</sect1> + +<sect1 id="why-not-dcop"> +<title +>Hvorfor &arts; ikke bruger &DCOP;</title> + +<para +>Eftersom &kde; droppede <acronym +>CORBA</acronym +> 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 <classname +>KApplication</classname +>, er godt vedligeholdt, forventes at integreres udmærket med libICE, og alt muligt andet. </para> + +<para +>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 <quote +>&DCOP; er dårlig</quote +>. Jeg forsøger kun at sige at <quote +>&DCOP; ikke er den rette løsning for &arts;</quote +> (mens det er en god løsning for andre ting). </para> + +<para +>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 <quote +>letvægts</quote +> kommunikationsprotokol. I særdeleshed udelod implementationen alt som kunne indebære kompleksitet, for eksempel et fuldstændigt begreb om hvordan datatyper skal kodes. </para> + +<para +>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). </para> + +<para +>Så &DCOP; er en minimal protokol som gør det helt muligt for &kde;-programmer at sende enkle meddelelser såsom <quote +>åbn et vindue som peger på http://www.kde.org</quote +> eller <quote +>dine indstillinger er ændrede</quote +>. Inde i &arts; fokuseres imidlertid på andre ting. </para> + +<para +>Idéen er at små plugin i &arts; skal kommunikere med sådanne datastrukturer som <quote +>midi-begivenheder</quote +> og <quote +>sangpositionspegere</quote +> og <quote +>flydegrafer</quote +>. </para> + +<para +>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). </para> + +<para +>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. </para> + +<para +>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 <quote +>hvilke egenskaber har dette objekt</quote +>, ville det mislykkes. </para> + + +<para +>Selvom Matthias fortalte mig at man har en speciel funktion <quote +>functions</quote +> for hvert objekt som informerer om hvilke metoder som objektet understøtter, udelader dette ting såsom egenskaber, strømme og arvrelationer. </para> + +<para +>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 <application +>moc</application +> og lignende), heller ikke være noget som <acronym +>CORBA</acronym +>, men sørge for kommunikation mellem programmer. </para> + +<para +>Å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. <acronym +>CORBA</acronym +>-versionen af &arts; var tvunget til at introducere en besværlig opdeling mellem <quote +>SynthModule-objekt</quote +>, som var de interne arbejdsmoduler som oprettede strømme, og <quote +><acronym +>CORBA</acronym +>-grænseflade</quote +>, som var noget eksternt. </para> + +<para +>Meget kode bekymrede sig om at opnå at vekselvirkningen mellem <quote +>SynthModule-objekt</quote +> og <quote +><acronym +>CORBA</acronym +>-grænsefladen</quote +> så naturlig ud, men den gjorde det aldrig, eftersom <acronym +>CORBA</acronym +> ikke kendte til noget om strømme overhovedet. &MCOP; gør det. Kig på koden (noget i stil med <filename +>simplesoundserver_impl.cc</filename +>). Adskilligt bedre! Strømme kan deklareres i modulernes grænseflade, og implementeres på en måde som ser naturlig ud. </para> + +<para +>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). </para> + + +<para +>Et kald i &MCOP; vil have et hoved med seks <quote +>long</quote +>. Det vil sige: </para> + +<itemizedlist> +<listitem +><para +>magisk værdi <quote +>MCOP</quote +></para +></listitem> +<listitem +><para +>meddelelsetype (kald)</para +></listitem> +<listitem +><para +>størrelse på forespørgsler i byte</para +></listitem> +<listitem +><para +>ID for forespørgsler</para +></listitem> +<listitem +><para +>ID for målobjektet</para +></listitem> +<listitem +><para +>ID for målmetoden</para +></listitem> +</itemizedlist> + +<para +>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]. </para> + +<para +>Hvis dette sammenlignes med &DCOP;, ser du at der er i det mindste </para> + +<itemizedlist> +<listitem +><para +>en streng for målobjektet - noget i stil med <quote +>myCalculator</quote +></para +></listitem +> +<listitem +><para +>en streng som ligner <quote +>addNumber(int,int)</quote +> for at angive metoden</para +></listitem> +<listitem +><para +>yderligere protokolinformation tilføjet af libICE, og andre DCOP-specifikke ting som jeg ikke kender til</para +></listitem> +</itemizedlist> + +<para +>Disse er meget sværere at afkode, eftersom man skal tolke strengen, lede efter funktionen, osv. </para> + +<para +>Med &DCOP; sendes alle kald gennem en server (<application +>DCOPServer</application +>). Det betyder at håndteringen af et synkront kald ser sådan her ud: </para> + +<itemizedlist> +<listitem> +<para +>Klientprocessen sender kald. </para> +</listitem> + +<listitem> +<para +><application +>DCOPserver</application +> (manden i midten) tager imod kaldet og ser efter hvor det skal hen, og sender det til den <quote +>rigtige</quote +> server. </para> +</listitem +> + +<listitem> +<para +>Serverprocessen tager imod kaldet, udfører forespørgsler og sender resultatet. </para> +</listitem> + +<listitem> +<para +><application +>DCOPserver</application +> (manden i midten) tager imod resultatet og ... sender det til klienten. </para> +</listitem> + +<listitem> +<para +>Klienten afkoder svaret. </para> +</listitem> +</itemizedlist> + +<para +>I &MCOP; ser samme kald ud sådan her ud: </para> + +<itemizedlist> +<listitem> +<para +>Klientprocessen sender kald. </para> +</listitem> + +<listitem> +<para +>Serverprocessen tager imod kaldet, udfører forespørgsler og sender resultatet. </para> +</listitem> + +<listitem> +<para +>Klienten afkoder svaret. </para> +</listitem> +</itemizedlist> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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 <application +>dcopserver</application +>-processen ikke forbundet til andre programmer, og det er måske sådan at hvis mange programmer er forbundne så mindskes overføringsydelsen. </para> + +<para +>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: <acronym +>CORBA</acronym +>, med mico-implementationen, klarer noget mellem 1000 og 1500 kald pr sekund). </para> + +<para +>Hvis du vil have <quote +>rigtigere</quote +> data, så overvej at skrive et lille måleprogram for &DCOP; og send det til mig. </para> + +<para +><acronym +>CORBA</acronym +> havde den behagelige funktion at man kunne bruge objekter som man havde implementeret, som <quote +>separat serverproces</quote +>, eller som <quote +>bibliotek</quote +>. Man kunne bruge samme kode for at gøre det, og <acronym +>CORBA</acronym +> bestemte transparent hvad der skulle gøres. Med &DCOP;, er det ikke rigtigt meningen, og så vidt jeg ved ikke egentlig muligt. </para> + +<para +>&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. </para> + +<para +>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). </para> + +<para +>Selvom &MCOP; ikke gør det for øjeblikket, er mulighederne åbne for at implementere servicekvalitetsfunktioner. Noget i stil med at <quote +>den &MIDI;-begivenhed er virkelig rigtigt vigtig, sammenlignet med dette kald</quote +>. Eller noget som <quote +>skal være der til tiden</quote +>. </para> + +<para +>På den anden siden kan strømoverførsler integreres i &MCOP;-protokollen på en behagelig måde, og kombineres med <acronym +>QoS</acronym +>-ting. Under forudsætning af at protokollen kan ændres, bør &MCOP; strømoverførsler ikke blive virkelig langsommere end en konventionel <acronym +>TCP</acronym +>-strøm, men de vil være enklere og mere konsekvente at bruge. </para> + +<para +>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. </para> + +<para +>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 <classname +>QString</classname +>, <classname +>QRect</classname +>, <classname +>QPixmap</classname +>, <classname +>QCString</classname +>, .... 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 <classname +>QString</classname +>,... 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. </para> + +<para +>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). </para> + +<para +>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). </para> + +<para +>Jeg indser at brug af to <acronym +>IPC</acronym +>-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 <acronym +>IIOP</acronym +>, når skulle vi have en <acronym +>CORBA</acronym +> <acronym +>ORB</acronym +> ;). </para> + +<para +>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 </para> + +<para +>Nogle mulige løsninger ville være: </para> + +<itemizedlist> +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>Integrér alt det &DCOP;-brugere forventer sig i &MCOP;, og forsøg kun at bruge &MCOP; - man skulle også kunne tilføje en <quote +>mand i midten</quote +> mulighed i &MCOP;) </para> +</listitem> + +<listitem> +<para +>Basér &DCOP; på &MCOP; i stedet for libICE, og begynd langsomt at integrere tingene tættere sammen. </para> +</listitem> +</itemizedlist> + +<para +>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. </para> + +</sect1> +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/midi.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/midi.docbook new file mode 100644 index 00000000000..77a7fe72308 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/midi.docbook @@ -0,0 +1,524 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="midi"> +<title +>&MIDI;</title> + +<sect1 id="midi-overview"> +<title +>Oversigt</title> + +<!-- what-to-say-here: aRts has three roles + * moving midi events around between applications + * abstracting the hardware + * synthesizer --> + +<para +>&MIDI;-understøttelsen i &arts; kan gøre et antal forskellige ting. For det første, tillader den <emphasis +>kommunikation</emphasis +> 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. </para> + +<para +>På den anden side kan &arts; også hjælpe programmer til at <emphasis +>vekselvirke med maskinellet</emphasis +>. Hvis en programmeldel (for eksempel samplingen) virker sammen med &arts;, kan den desuden tage imod &MIDI;-begivenheder fra et eksternt &MIDI;-keyboard. </para> + +<para +>Til slut, så udgør &arts; en udmærket <emphasis +>modulær synthesizer</emphasis +>. 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. </para> +</sect1> + +<sect1 id="midi-manager"> +<title +>&MIDI;-håndteringen</title> +<!-- what-to-say-here: + * how to use artscontrol - view midimanager + * what does autorestore do? (not yet implemented - so not yet documented) --> + +<para +>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 <menuchoice +><guilabel +>Vis</guilabel +><guilabel +>Vis midihåndtering</guilabel +> </menuchoice +> i menuen. </para> + +<para +>Til venstre ser man <guilabel +>Midi-inddata</guilabel +>. 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 <guilabel +>Midi-udskrift</guilabel +>. 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. </para> + +<para +>Du kan tilslutte indgange og udgange hvis du markerer en indgang i listen til venstre og en udgang til højre, og vælger <guilabel +>Forbind</guilabel +> med knappen nedenfor. <guilabel +>Afbryd forbindelse</guilabel +> 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). </para> + +<para +>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 <guilabel +>Tilføj</guilabel +>. </para> + +<variablelist> +<varlistentry> +<term +><guimenuitem +>System midi port (OSS)</guimenuitem +></term> +<listitem> +<para +>Dette laver et nyt &arts;-objekt som kommunikerer med en ekstern midi-port. </para> + +<para +>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 <acronym +>OSS</acronym +>-driver (eller <acronym +>OSS</acronym +>/Free, som følger med &Linux;-kernen) eller en <acronym +>ALSA</acronym +>-driver installeret for dit lydkort, for at dette skal virke. Du bliver spurgt om enhedens navn. Dette er oftest <filename class="devicefile" +>/dev/midi</filename +> eller <filename class="devicefile" +>/dev/midi00</filename +>. </para> + +<para +>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 <menuchoice +><guilabel +>Information</guilabel +> <guilabel +>Lyd</guilabel +></menuchoice +> vælges. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>aRts syntese midi-uddata</guimenuitem +></term> +<listitem> +<para +>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 <literal role="extension" +>.arts</literal +>-filer med et navn som begynder med <filename +>instrument_</filename +> vises her. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="brahms"> +<title +>Brug af &arts; & Brahms</title> + +<para +>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 <literal +>kmusic</literal +> <acronym +>CVS</acronym +>-modulet. Der er også information om hvordan man får fat på &brahms; på <ulink url="http://www.arts-project.org/" +>aRts' hjemmeside</ulink +> i afsnittet om download. </para> + +<para +>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 <menuchoice +><guilabel +>Tilføj</guilabel +><guilabel +>aRts syntese midi uddata</guilabel +></menuchoice +>. </para> + +<para +>Vælg et instrument (for eksempel <guilabel +>organ2</guilabel +>). Forbind dem ved brug af knappen <guilabel +>Forbind</guilabel +>. Derefter kan du begynde at komponere i &brahms;, og resultatet syntetiseres med &arts;. </para> + +<para +>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 ;-). </para> + +<!-- TODO: how to do more than one instrument in Brahms (hm, not implemented + yet, not documented yet), how to use samples, mapping and so on. These + things need to be implemented, too. --> + +</sect1> + +<sect1 id="midisend"> +<title +>midisend</title> + +<para +><command +>midisend</command +> 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 <screen +><prompt +>%</prompt +> <userinput +><command +>midisend</command +> <option +>-f</option +> <parameter +><replaceable +>/dev/midi00</replaceable +></parameter +></userinput +> </screen +> hvilket opnår cirka det samme som at tilføje en &MIDI;-port til &artscontrol;. (Ikke helt, fordi <command +>midisend</command +> kun sender begivenheder). Forskellen er at det er for eksempel er let at starte <command +>midisend</command +> på forskellige computere (og på den måde bruge netværkstransparens). </para> + +<para +>Det er også muligt at lade <command +>midisend</command +> sende data fra <filename class="devicefile" +>stdin</filename +>, hvilket du kan bruge til at sende data fra programmer som ikke understøtter &arts;, sådan her: <screen +><prompt +>%</prompt +> <userinput +><command +><replaceable +>program_som_sender_MIDI_begivenheder_til_standarduddata</replaceable +></command +> | <command +>midisend</command +> <option +>-f</option +> <option +><replaceable +>-</replaceable +></option +></userinput +></screen> +<!-- TODO: document all options --> +</para> + +</sect1> + +<sect1 id="midi-creating-instruments"> +<title +>Opret instrumenter</title> + +<para +>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). </para> + +<para +>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. </para> + +<para +>For at oprette og bruge en sådan struktur, skal du gøre følgende: </para> + +<itemizedlist> +<listitem> +<para +>For at komme i gang er den behageligste måde at åbne <filename +>template_Instrument.arts</filename +> i &arts-builder;. </para> + +<para +>Dette kan opnås ved at bruge <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Åbn eksempel...</guimenuitem +></menuchoice +> og vælge <guimenuitem +>template_Instrument</guimenuitem +> i fildialogen. Dette laver en tom struktur med de nødvendige parametre, som du kun behøver <quote +>udfylde</quote +>. </para> +</listitem> + +<listitem> +<para +>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. </para> +</listitem> + +<listitem> +<para +>Strukturen skal indikere hvornår den ikke behøves længere med uddata <quote +>done</quote +>. Hvis done er <returnvalue +>1</returnvalue +>, 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. </para> +</listitem> + +<listitem> +<para +>Du bør omdøbe din struktur til et navn som begynder med <filename +>instrument_</filename +>, såsom <filename +>instrument_piano.arts</filename +> - du bør gemme filen under samme navn i mappen <filename class="directory" +>$<envar +>HOME</envar +>/arts/structures</filename +> (hvor artsbuilder normalt gemmer filer). </para> +</listitem> + +<listitem> +<para +>Til sidst, når du har gemt den, kan du bruge den med &artscontrol; i &MIDI;-håndteringen.</para> +</listitem> + +<listitem> +<para +>Å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). </para> +</listitem> +</itemizedlist> + +<para +>En god måde at lære sig hvordan man laver instrumenter er at åbne et eksisterende instrument med <menuchoice +><guilabel +>Fil</guilabel +><guilabel +>Åbn eksempel</guilabel +> </menuchoice +> og se hvordan det virker ;) </para> +</sect1> + +<sect1 id="mapped-instruments"> +<title +>Instrumentkort</title> + +<para +>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. </para> + +<para +>Man kan også bygge et trommekort, som spiller en særlig trommesampling for hver tast. </para> + +<para +>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. </para> + +<para +>Et godt eksempel på dette er <filename +>arts_all</filename +>, som helt enkelt kombinerer alle instrumenter som levereres med &arts; i et kort. På denne måde behøver man kun angive at dette <quote +>instrument</quote +> 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. </para> + +<para +>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: </para> + +<programlisting +>ON <replaceable +>[ betingelser ...]</replaceable +> DO structure=<replaceable +>en_struktur</replaceable +>.arts +</programlisting> + +<para +>Betingelserne kan være en eller flere af følgende: </para> + +<variablelist> + +<varlistentry> +<term +><option +>pitch</option +></term> + +<listitem> +<para +>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 <userinput +><option +>pitch</option +>=<parameter +>62</parameter +></userinput +> eller et interval af tonehøjder, såsom <userinput +><option +>pitch</option +>=<parameter +>60</parameter +>-<parameter +>72</parameter +></userinput +>. De mulige tonehøjder går mellem <parameter +>0</parameter +> og <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>program</option +></term> +<listitem> +<para +>Programmet som er aktivt på kanalen som tonen afspilles i. Oftest lader sequenceren dig vælge <quote +>instrument</quote +> via programindstillingen. Enkle programmer eller intervaller er tilladte, dvs. <userinput +><option +>program</option +>=<parameter +>3</parameter +></userinput +> eller <userinput +><option +>program</option +>=<parameter +>3</parameter +>-<parameter +>6</parameter +></userinput +>. Mulige programmer går mellem <parameter +>0</parameter +> og <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>channel</option +></term> +<listitem> +<para +>Kanalen som tonen sendes på. Enkle kanaler eller intervaller er tilladte, dvs. <userinput +><option +>channel</option +>=<parameter +>0</parameter +></userinput +> eller <userinput +><option +>channel</option +>=<parameter +>0</parameter +>-<parameter +>8</parameter +></userinput +>. Mulige kanaler går mellem <parameter +>0</parameter +> og <parameter +>15</parameter +>. </para> +</listitem> + +</varlistentry> +<varlistentry> +<term +><option +>velocity</option +></term> +<listitem> +<para +>Hastigheden (lydstyrken) som tonen har. Enkle hastigheder (hvem skulle ville bruge det?) eller intervaller er tilladte, dvs. <userinput +><option +>velocity</option +>=<parameter +>127</parameter +></userinput +> eller <userinput +><option +>velocity</option +>=<parameter +>64</parameter +>-<parameter +>127</parameter +></userinput +>. Mulige hastigheder går mellem <parameter +>0</parameter +> og <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Et fuldstændigt eksempel for et kort kan være (dette kommer fra den nuværende <filename +>instrument_arts_all.arts-map</filename +>): </para> + +<programlisting +>ON program=0 DO structure=instrument_tri.arts +ON program=1 DO structure=instrument_organ2.arts +ON program=2 DO structure=instrument_slide1.arts +ON program=3 DO structure=instrument_square.arts +ON program=4 DO structure=instrument_neworgan.arts +ON program=5 DO structure=instrument_nokind.arts +ON program=6 DO structure=instrument_full_square.arts +ON program=7 DO structure=instrument_simple_sin.arts +ON program=8 DO structure=instrument_simple_square.arts +ON program=9 DO structure=instrument_simple_tri.arts +ON program=10 DO structure=instrument_slide.arts +ON program=11 pitch=60 DO structure=instrument_deepdrum.arts +ON program=11 pitch=61 DO structure=instrument_chirpdrum.arts +</programlisting> + +<para +>Som du ser, vælges strukturen afhængig af programmet. For program 11, ses et <quote +>trommekort</quote +> (med to indgange), som vil spille en <quote +>deepdrum</quote +> med C-5 (tonehøjde = 60), og en <quote +>chirpdrum</quote +> med C#5 (tonehøjde = 61). </para> + +<para +>For at kortfiler automatisk skal ses i &artscontrol; som et valg for instrumenterne, skal de hedde <filename +>instrument_<replaceable +>noget</replaceable +>.arts-map</filename +> og enten være i din hjemmemappe i <filename class="directory" +>$<envar +>HOME</envar +>/arts/structures</filename +>, eller i &kde;-mappen i <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/artsbuilder/examples</filename +>. Strukturer som bruges af kortene kan enten angives med en absolut søgesti, eller relativt til mappen som kortfilen findes i. </para> + +<para +>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;. </para> +</sect1> + +<!-- TODO: Maybe helpful + * using an external keyboard + * loopback midi device + +<sect1 id="quick-start"> +<title +>Quick Start</title> + +</sect1> +<sect1 id="internal-details"> +<title +>More Internal Details</title> + +</sect1> + +<sect1 id="other-considerations"> +<title +>Other Considerations</title> + +</sect1> +--> + +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/midiintro.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/midiintro.docbook new file mode 100644 index 00000000000..eb3caf8ed84 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/midiintro.docbook @@ -0,0 +1,16 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<appendix id="midi-introduction"> + +<title +>Introduktion til <acronym +>MIDI</acronym +></title> + +<para +>Ikke skrevet endnu </para> + +</appendix> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/modules.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/modules.docbook new file mode 100644 index 00000000000..a49f27641ac --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/modules.docbook @@ -0,0 +1,1333 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="arts-modules"> +<title +>&arts;-moduler</title> + + <sect1 id="modules-introduction"> +<title +>Indledning</title> + +<para +>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. </para> + +<para +>Moduler opdeles i to kategorier. Syntesemoduler bruges til at implementere <quote +>rørlægningen</quote +> 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. </para> + +</sect1> + +<sect1 id="synth-modules-reference"> +<title +>Reference til syntesemoduler</title> + + +<sect2 id="mcat-synth-arithmetic-mixing"> +<title +>Aritmetik + miksning</title> + + + +<sect3 id="mref-synth-add-sect"> +<title +>Synth_ADD</title> +<anchor id="mref-synth-add"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_ADD.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_ADD</phrase +></textobject> +</mediaobject> + +<para +>Denne adderer to signaler. </para> + +</sect3> + +<sect3 id="mref-synth-mul-sect"> +<title +>Synth_MUL</title> +<anchor id="mref-synth-mul"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_MUL.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MUL</phrase +></textobject> +</mediaobject> + +<para +>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). </para> + +</sect3> + +<sect3 id="mref-synth-div-sect"> +<title +>Synth_DIV</title> +<anchor id="mref-synth-div"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_DIV.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_DIV</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +</sect3> + +<sect3 id="mref-synth-multi-add-sect"> +<title +>Synth_MULTI_ADD</title> +<anchor id="mref-synth-multi-add"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_MULTI_ADD.png" + format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MULTI_ADD</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +</sect3> + +<sect3 id="mref-synth-xfade-sect"> +<title +>Synth_XFADE</title> +<anchor id="mref-synth-xfade"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_XFADE.png" format="PNG"/> +</imageobject> +<textobject +><phrase +>Synth_XFADE</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<para +>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. </para> +</sect3> + +<sect3 id="mref-synth-autopanner-sect"> +<title +>Synth_AUTOPANNER</title> +<anchor id="mref-synth-autopanner"/> + +<para +>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. </para> + +<para +>Forbind en <acronym +>LFO</acronym +>, 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 (<acronym +>FX</acronym +>). </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-busses"> +<title +>Busser</title> + +<sect3 id="mref-synth-bus-uplink-sect"> +<title +>Synth_BUS_UPLINK</title> +<anchor id="mref-synth-bus-uplink"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_BUS_UPLINK.png" + format="PNG"/> +</imageobject> +<textobject +><phrase +>Synth_BUS_UPLINK</phrase +></textobject> +</mediaobject> + +<para +>Et oplink til en bus. Angiv signaler til venstre og højre, og navnet på bussen som data skal sendes til på <quote +>bus</quote +>-porten. Det kombinerede signal fra alle oplink med dette navn havner på hvert nedlink på denne <quote +>bus</quote +>. </para> +</sect3> + +<sect3 id="mref-synth-bus-downlink-sect"> +<title +>Synth_BUS_DOWNLINK</title> +<anchor id="mref-synth-bus-downlink"/> + +<mediaobject> +<imageobject> +<imagedata fileref="images/Synth_BUS_DOWNLINK.png" + format="PNG"/></imageobject> +<textobject +><phrase +>Synth_BUS_DOWNLINK</phrase +></textobject> +</mediaobject> + +<para +>Henter (summen af) alle data som sendes på en vis bus (med navnet du angiver på <quote +>bus</quote +>-porten). </para> +</sect3> + +</sect2> + +<!-- TODO AFTER KDE2.1: move freeverb into delays, and rename category to + Delays & reverbs --> + +<sect2 id="mcat-synth-delays"> +<title +>Forsinkelser</title> + + + +<sect3 id="mref-synth-delay-sect"> +<title +>Synth_DELAY</title> +<anchor id="mref-synth-delay"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_DELAY.png" + format="PNG"/></imageobject +></mediaobject> + +<para +>Denne forsinker inddata-signalet en vis tid. Tidsangivelsen skal være mellem 0 og maxdelay for en forsinkelse mellem 0 og maxdelay sekunder. </para> + +<para +>Denne slags forsinkelse <emphasis +>kan ikke bruges</emphasis +> 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. </para> + +<para +>Brug CDELAY'er i sådanne situationer, eller kombinér en kort konstant forsinkelse (på 0,001 sekunder) med en variabel forsinkelse. </para> + +<para +>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. </para> + +</sect3> + +<sect3 id="mref-synth-cdelay-sect"> +<title +>Synth_CDELAY</title> +<anchor id="mref-synth-cdelay"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_CDELAY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_CDELAY</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<para +>Dette sparer beregningstid eftersom ingen interpolation gøres, og er nyttigt til rekursive strukturer. Se beskrivelsen ovenfor (Synth_DELAY). </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-envelopes"> +<title +>Enveloper</title> + + + +<sect3 id="mref-synth-envelope-adsr-sect"> +<title +>Synth_ENVELOPE_ADSR</title> +<anchor id="mref-synth-envelope-adsr"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_ENVELOPE_ADSR.png" + format="PNG"/></imageobject> +<textobject +><phrase +>Synth_ENVELOPE_ADSR</phrase +></textobject> +</mediaobject> + +<para +>Dette er en klassisk <acronym +>ADSR</acronym +>-envelop, som betyder at du angiver: </para> + +<variablelist> +<varlistentry> +<term +>active</term> +<listitem> +<para +>Hvis brugeren holder tasten nede lige nu. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>invalue</term> +<listitem> +<para +>Inddatasignalet. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>attack</term> +<listitem> +<para +>Tiden som skal gå fra brugerens tryk på tasten og til signalet når sin maksimale amplitude (i sekunder). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>decay</term> +<listitem> +<para +>Tiden som skal gå fra signalet har nået sin maksimale amplitude til signalet går tilbage til et konstant niveau (i sekunder). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>sustain</term> +<listitem> +<para +>Det konstante niveau som holdes for signalet bagefter, til brugeren slipper tasten. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>release</term> +<listitem> +<para +>Tiden som skal gå fra brugeren har sluppet tasten til signalet går ned til nul (i sekunder). </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Du får det behandlede signal som uddata-værdi. Når <acronym +>ASDR</acronym +>-envelopen er klar, sætter den done til 1. Du kan bruge dette til at sørge for uddata <quote +>done</quote +> for et instrument (som gør at instrumentstrukturen fjernes fra &MIDI;-relæobjektet når lyden er hørt op). </para> + +</sect3> + +<sect3 id="mref-synth-pscale-sect"> +<title +>Synth_PSCALE</title> +<anchor id="mref-synth-pscale"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_PSCALE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_PSCALE</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<para +>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. </para> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-effects"> +<title +>Effekter</title> + +<sect3 id="mref-synth-freeverb-sect"> +<title +>Synth_FREEVERB</title> +<anchor id="mref-synth-freeverb"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_FREEVERB.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_FREEVERB</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<note> +<para +>Dette betyder at den også kan bruges inde i en StereoEffectStack. </para> +</note> + +<para +>Inddata-signalet skal forbindes til (inleft, inright), og uddata-signalet bliver (outleft, outright). </para> + +<para +>Parametrene som du kan indstille er: </para> + +<variablelist> +<varlistentry> +<term +>roomsize</term> +<listitem> +<para +>Størrelsen af rummet som efterklangseffekten simulerer (område: 0 .. 1, hvor 1 er det største mulige rum). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>damp</term> +<listitem> +<para +>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). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>wet</term> +<listitem> +<para +>Størrelsen af efterklangsignalet (dvs. den del af signalet som skal ændres af filtret, og forårsage en <quote +>vådt</quote +> lyd, dvs. en <quote +>efterklangslyd</quote +>). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>dry</term> +<listitem> +<para +>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). </para> +<!-- TODO: do some measurements to show that this documentation -is- correct, +I am not sure if it is echo, or really pure (non-delayed), or multiple delay +or whatever --> +</listitem> +</varlistentry> + +<varlistentry> +<term +>width</term> +<listitem> +<para +>Størrelsen af udvidet stereoeffekt som efterklangsalgoritmen tilføjer til efterklangseffekten, for at gøre efterklangslyden bredere i stereolydbilledet (område 0 .. 1). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mode</term> +<listitem> +<para +>[HUSK: Jeg tror at hvis mode er 1, beholder efterklangen det nuværende lydbillede for lyden, mens 0 er normal behandling] </para> +</listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3 id="mref-synth-tremolo-sect"> +<title +>Synth_TREMOLO</title> +<anchor id="mref-synth-tremolo"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_TREMOLO.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_TREMOLO</phrase +></textobject> +</mediaobject> + +<para +>Tremolomodulet modulerer amplituden ifølge en <acronym +>LFO</acronym +>-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. </para> + +<para +>[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 ;). ] </para> + +</sect3> +<sect3 id="mref-synth-fx-cflanger-sect"> +<title +>Synth_FX_CFLANGER</title> +<anchor id="mref-synth-fx-cflanger"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_FX_CFLANGER.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_FX_CFLANGER</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<para +>Den har følgende porte:</para> + +<variablelist> +<varlistentry> +<term +>invalue</term> +<listitem> +<para +>Signalet som du vil behandle. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>lfo</term> +<listitem> +<para +>Helst en sinusbølge som modulerer forsinkelsestiden inde i flangeren (-1 .. 1). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mintime</term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>maxtime</term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>outvalue</term> +<listitem> +<para +>Uddatasignalet. Det er vigtigt at du blander dette med originalsignalet (uden flanger) for at få den ønskede effekt. </para> +</listitem> +</varlistentry> +</variablelist> + +<tip> +<para +>Du kan bruge dette som en basis for koreffekter. </para> +</tip> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-filters"> +<title +>Filtre</title> + +<sect3 id="mref-synth-pitch-shift-sect"> +<title +>Synth_PITCH_SHIFT</title> +<anchor id="mref-synth-pitch-shift"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_PITCH_SHIFT.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_PITCH_SHIFT</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<para +>Parameteren <emphasis +>speed</emphasis +> 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). </para> + +<para +>Parameteren <emphasis +>frequency</emphasis +> 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. </para> + +</sect3> + +<sect3 id="mref-synth-shelve-cutoff-sect"> +<title +>Synth_SHELVE_CUTOFF</title> +<anchor id="mref-synth-shelve-cutoff"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_SHELVE_CUTOFF.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_SHELVE_CUTOFF</phrase +></textobject> +</mediaobject> + +<para +>Filtrerer alle frekvenser væk over afskæringsfrekvensen. </para> + +</sect3> + +<sect3 id="mref-synth-brickwall-limiter-sect"> +<title +>Synth_BRICKWALL_LIMITER</title> +<anchor id="mref-synth-brickwall-limiter"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_BRICKWALL_LIMITER.png" + format="PNG"/></imageobject> +<textobject +><phrase +>Synth_BRICKWALL_LIMITER</phrase +></textobject> +</mediaobject> + +<para +>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. </para> +</sect3> + +<sect3 id="mref-synth-std-equalizer-sect"> +<title +>Synth_STD_EQUALIZER</title> +<anchor id="mref-synth-std-equalizer"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_STD_EQUALIZER.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_STD_EQUALIZER</phrase +></textobject> +</mediaobject> + +<para +>Dette er en god byggeblok for en parametriserbar tonekontrol. Dens parametre er: </para> + +<variablelist> +<varlistentry> +<term +>Indværdi, udværdi</term> +<listitem> +<para +>Signalet som filtreres af tonekontrollen. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>low</term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mid</term> +<listitem> +<para +>Hvordan middelfrekvenser skal ændres af tonekontrollen i dB (se low). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>high</term> +<listitem> +<para +>Hvordan høje frekvenser skal ændres af tonekontrollen i dB (se low). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>frekvens</term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>q</term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3 id="mref-synth-rc-sect"> +<title +>Synth_RC</title> +<anchor id="mref-synth-rc"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_RC.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_RC</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<para +>Forsøg med noget som ligner b=5, f=5 or b=10, f=10 or b=15, f=15 i alle tilfælde. </para> + +</sect3> + +<sect3 id="mref-synth-moog-vcf-sect"> +<title +>Synth_MOOG_VCF</title> +<anchor id="mref-synth-moog-vcf"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_MOOG_VCF.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MOOG_VCF</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-midi-sequencing"> +<title +>Midi + sekvensering</title> + +<sect3 id="mref-synth-midi-test-sect"> +<title +>Synth_MIDI_TEST</title> +<anchor id="mref-synth-midi-test"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_MIDI_TEST.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MIDI_TEST</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<note> +<para +>Du kan indstille noget sådant her på en behageligere måde i &artscontrol; i stedet for manuelt i &arts-builder;. </para> +</note> + +</sect3> + +<sect3 id="mref-synth-sequence-sect"> +<title +>Synth_SEQUENCE</title> +<anchor id="mref-synth-sequence"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_SEQUENCE.png" +format="PNG"/></imageobject +></mediaobject> + +<para +>Afspiller en sekvens af toner om og om igen. Tonerne angives i spornotation, og adskilles af semikolon. Et eksempel er <literal +>A-3;C-4;E-4;C-4;</literal +>. 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. </para> + +<para +>Du kan give hver tone en længde i forhold til hastigheden ved at bruge et kolon efter tonen fulgt af længden. <literal +>A-3:2;C-4:0.5;D-4:0.5;E-4;</literal +> viser dette. Som du kan se, tenderer midi-tonesætningsprogrammer til at tilbyde større bekvemmelighed ;) </para> + +<para +>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). </para> +</sect3> + +<sect3 id="mref-synth-sequence-freq-sect"> +<title +>Synth_SEQUENCE_FREQ</title> +<anchor id="mref-synth-sequence-freq"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_SEQUENCE_FREQ.png" +format="PNG"/></imageobject +></mediaobject> + +<para +>Dette modul virker præcis som Synth_SEQUENCE, med den eneste forskel at du ikke indskriver nodenavne men frekvenser. </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-samples"> +<title +>Samplinger</title> + +<sect3 id="mref-synth-play-wav-sect"> +<title +>Synth_PLAY_WAV</title> +<anchor id="mref-synth-play-wav"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_PLAY_WAV.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_PLAY_WAV</phrase +></textobject> +</mediaobject> + +<para +>Dette afspiller en <literal role="extension" +>wav</literal +>-fil. Den er kun tilstede hvis du har libaudiofile på computeren. Bølgeformsfilen afspilles så snart modulet laves. </para> + +<para +>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. </para> +<!-- TODO: KDE2.2: check that this really works together in instruments with +the done parameter things ;) --> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-soundio"> +<title +>Lyd-I/O</title> + +<sect3 id="mref-synth-play-sect"> +<title +>Synth_PLAY</title> +<anchor id="mref-synth-play"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_PLAY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_PLAY</phrase +></textobject> +</mediaobject> + +<important> +<para +>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. </para> +</important> + +<para +>Modulet Synth_PLAY giver lydsignalet som uddata til lydkortet. Venstre og højre kanal skal indeholde <emphasis +>normaliseret</emphasis +> inddata for kanalerne. Hvis inddata ikke er mellem -1 og 1, får man klipning. </para> + +<para +>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;. </para> + +<para +>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. </para> + +</sect3> + +<sect3 id="mref-synth-record-sect"> +<title +>Synth_RECORD</title> +<anchor id="mref-synth-record"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_RECORD.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_RECORD</phrase +></textobject> +</mediaobject> + +<important> +<para +>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. </para> +</important> + +<para +>Modulet Synth_RECORD indspiller et signal fra lydkortet. Venstre og højre kanal indeholder inddata for kanalerne (mellem -1 og 1). </para> + +<para +>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 <emphasis +>med full dupleks aktiveret</emphasis +>. </para> +</sect3> + +<sect3 id="mref-synth-aman-play-sect"> +<title +>Synth_AMAN_PLAY</title> +<anchor id="mref-synth-aman-play"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_AMAN_PLAY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_AMAN_PLAY</phrase +></textobject> +</mediaobject> + +<para +>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). </para> + +<para +>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 <emphasis +>title</emphasis +>. 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 <emphasis +>autoRestoreID</emphasis +>. </para> +</sect3> + +<sect3 id="mref-synth-aman-record-sect"> +<title +>Synth_AMAN_RECORD</title> +<anchor id="mref-synth-aman-record"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_AMAN_RECORD.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_AMAN_RECORD</phrase +></textobject> +</mediaobject> + +<para +>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). </para> + +<para +>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 <emphasis +>title</emphasis +>. 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 <emphasis +>autoRestoreID</emphasis +>. </para> +</sect3> + +<sect3 id="mref-synth-capture-sect"> +<title +>Synth_CAPTURE</title> +<anchor id="mref-synth-capture"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_CAPTURE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_CAPTURE</phrase +></textobject> +</mediaobject> + +<para +>Modulet Synth_CAPTURE skriver et lydsignal til en bølgeformsfil på harddisken. Filen hedder altid <filename +>/tmp/mcop-<replaceable +>brugernavn</replaceable +>/capture.wav</filename +> </para> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-tests"> +<title +>Tester</title> + +<sect3 id="mref-synth-nil-sect"> +<title +>Synth_NIL</title> +<anchor id="mref-synth-nil"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_NIL.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_NIL</phrase +></textobject> +</mediaobject> + +<para +>Dette gør ingenting. Det er meget nyttigt i testsituationer. </para> + +</sect3> + +<sect3 id="mref-synth-debug-sect"> +<title +>Synth_DEBUG</title> +<anchor id="mref-synth-debug"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_DEBUG.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_DEBUG</phrase +></textobject> +</mediaobject> + +<para +>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. </para> +</sect3> + +<sect3 id="mref-synth-midi-debug-sect"> +<title +>Synth_MIDI_DEBUG</title> +<anchor id="mref-synth-midi-debug"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_MIDI_DEBUG.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_MIDI_DEBUG</phrase +></textobject> +</mediaobject> + +<para +>Man kan bruge dette til at fejlsøge hvordan &MIDI;-begivenheder virkelig kommer ind i &arts;. </para> + +<para +>Når en MIDI_DEBUG kører, udskriver &artsserver; linjer såsom: </para> + +<screen +><computeroutput +>201 100753.837585 on 0 42 127</computeroutput +></screen> + +<screen +><computeroutput +>202 101323.128355 off 0 42</computeroutput +></screen> + +<para +>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]. </para> +</sect3> + +<sect3 id="mref-synth-data-sect"> +<title +>Synth_DATA</title> +<anchor id="mref-synth-data"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_DATA.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_DATA</phrase +></textobject> +</mediaobject> + +<para +>Dette laver et signal med en konstant værdi. </para> +<!-- TODO: this doesn't really belong in test, does it? --> +</sect3> +</sect2> + +<sect2 id="mcat-synth-osc-mod"> +<title +>Oscillation & Modulation</title> + +<sect3 id="mref-synth-frequency-sect"> +<title +>Synth_FREQUENCY</title> +<anchor id="mref-synth-frequency"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_FREQUENCY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_FREQUENCY</phrase +></textobject> +</mediaobject> + +<para +>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. </para> +</sect3> + +<sect3 id="mref-synth-fm-source-sect"> +<title +>Synth_FM_SOURCE</title> +<anchor id="mref-synth-fm-source"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_FM_SOURCE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_FM_SOURCE</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +<para +>Virker godt sammen med Synth_WAVE_SIN oscillatorer. </para> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-waveforms"> +<title +>Bølgeformer</title> + +<sect3 id="mref-synth-wave-sin-sect"> +<title +>Synth_WAVE_SIN</title> +<anchor id="mref-synth-wave-sin"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_WAVE_SIN.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_SIN</phrase +></textobject> +</mediaobject> + +<para +>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. </para> + +</sect3> + +<sect3 id="mref-synth-wave-tri-sect"> +<title +>Synth_WAVE_TRI</title> +<anchor id="mref-synth-wave-tri"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_WAVE_TRI.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_TRI</phrase +></textobject> +</mediaobject> + +<para +>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 <emphasis +>skal</emphasis +> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para> +</sect3> + +<sect3 id="mref-synth-noise-sect"> +<title +>Synth_NOISE</title> +<anchor id="mref-synth-noise"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_NOISE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_NOISE</phrase +></textobject> +</mediaobject> + +<para +>Støjgenerator. Denne laver et tilfældigt signal mellem -1 og 1. </para> + +</sect3> + +<sect3 id="mref-synth-wave-square-sect"> +<title +>Synth_WAVE_SQUARE</title> +<anchor id="mref-synth-wave-square"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_WAVE_SQUARE.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_SQUARE</phrase +></textobject> +</mediaobject> + +<para +>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 <emphasis +>skal</emphasis +> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para> +</sect3> + +<sect3 id="mref-synth-wave-softsaw-sect"> +<title +>Synth_WAVE_SOFTSAW</title> +<anchor id="mref-synth-wave-softsaw"/> + +<mediaobject +><imageobject +><imagedata +fileref="images/Synth_WAVE_SOFTSAW.png" format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_SOFTSAW</phrase +></textobject> +</mediaobject> + +<para +>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 <emphasis +>skal</emphasis +> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para> +</sect3> + +<sect3 id="mref-synth-wave-pulse-sect"> +<title +>Synth_WAVE_PULSE</title> +<anchor id="mref-synth-wave-pulse"/> + +<mediaobject +><imageobject +><imagedata fileref="images/Synth_WAVE_PULSE.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_WAVE_PULSE</phrase +></textobject> +</mediaobject> + +<para +>Pulsoscillator. Dette modul ligner den rektangulære oscillator (Synth_WAVE_RECT), men det sørger for et indstilleligt op/ned-forhold, ved parameteren <emphasis +>dutycycle</emphasis +>. 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 <emphasis +>skal</emphasis +> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para> +</sect3> +</sect2> +<sect2 id="mcat-synth-misc"> +<title +>Diverse</title> + +<sect3 id="mref-synth-compressor-sect"> +<title +>Synth_COMPRESSOR</title> +<anchor id="mref-synth-compressor"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_COMPRESSOR.png" + format="PNG"/></imageobject +></mediaobject> + +<para +>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. </para> + +<para +>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. </para> + +<para +>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. </para> + +</sect3> +</sect2> +</sect1> + +<sect1 id="visual-modules-reference"> +<title +>Reference til visuelle moduler</title> + +<para +>HUSK når visuelle moduler er "færdige". </para> +</sect1> + +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/porting.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/porting.docbook new file mode 100644 index 00000000000..89f1d0789e4 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/porting.docbook @@ -0,0 +1,50 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="porting"> +<title +>Overfør programmer til at passe sammen med &arts;</title> + +<sect1 id="using-artsdsp"> +<title +>Brug af &artsdsp;</title> + +<para +>Værktøjet &artsdsp;, <link linkend="artsdsp" +>tidligere beskrevet</link +>, 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 (<application +>esd</application +>) virker også i de fleste tilfælde ved at køre <application +>esd</application +> med &artsdsp;. </para> + +<para +>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. </para> + +<para +>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. </para> + +</sect1> + +<sect1 id="adding-native-arts-support"> +<title +>Tilføjelse af indbygget støtte for &arts;</title> + +<para +>Når du bruger &arts;, er der et antal forskellige <link linkend="arts-apis" +>programmeringsgrænseflader</link +> (<acronym +>API</acronym +>) 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. </para> + +<para +>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-<acronym +>API</acronym +> å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;. </para> + +</sect1> + +</chapter> + diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/references.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/references.docbook new file mode 100644 index 00000000000..7e1dd77a275 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/references.docbook @@ -0,0 +1,61 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="references"> +<title +>Referencer</title> + +<variablelist> + +<varlistentry> +<term +><ulink +url="http://multimedia.kde.org" +>http://multimedia.kde.org</ulink +></term> +<listitem> +<para +>Dette er den hoved-hjemmesiden for &kde;-relateret multimedieinformation. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><ulink +url="http://www.arts-project.org" +>http://www.arts-project.org</ulink +></term> +<listitem> +<para +>Dette er &arts;-projektets hjemmeside. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>&kde; 2.0 udvikling</term> +<listitem> +<para +>Kapitel 14 i denne offentliggjorte bog dækker multimedie, inklusive &arts;. Den er tilgængelig på tryk eller på nettet med kommentarer på <ulink url="http://www.andamooka.org/" +>http://www.andamooka.org</ulink +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term> +<ulink +url="http://sound.condorow.net" +>http://sound.condorow.net</ulink +></term> +<listitem> +<para +>Dette sted har en udtømmende liste over lyd- og &MIDI;-programmer for &Linux;. </para> +</listitem> +</varlistentry> + +</variablelist> + +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/artsbuilder/tools.docbook b/tde-i18n-da/docs/kdemultimedia/artsbuilder/tools.docbook new file mode 100644 index 00000000000..d5ec657d4b5 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/artsbuilder/tools.docbook @@ -0,0 +1,1003 @@ +<!-- +<?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> + +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="arts-tools"> +<title +>&arts;-værktøjer</title> + +<para +>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. </para> + +<sect1 id="kde-control-center"> +<title +>&kcontrol;</title> + +<para +>Når man kør &arts; under &kde;, sørger &kcontrolcenter; for en gruppe af indstillinger i kategorien <guilabel +>Lyd</guilabel +>. Visse af disse bruges af &arts;. Man kan også tilknytte lyd til forskellige vinduehåndterings- og &kde;-begivenheder med dialogen <menuchoice +><guilabel +>Lyd</guilabel +><guilabel +>Systembekendtgørelser</guilabel +></menuchoice +>. Se håndbogen for &kcontrol; for mere information om hvordan dialogens indstillinger bruges. </para> + +</sect1> + +<sect1 id="artsd"> +<title +>&artsd;</title> + +<para +>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. </para> + +<para +>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 <guilabel +>Lydserver</guilabel +>-modul. </para> + +<para +>Programmet accepterer følgende flag:</para> + +<!-- LW: FIX THIS --> + +<cmdsynopsis +><command +>artsd</command +> <group choice="opt" +> <option +>-n</option +> <option +>-p</option +> <option +>-N</option +> <option +>-W <replaceable +>n</replaceable +></option +> </group +> <group choice="opt" +> <option +>-a <replaceable +>lydmetode</replaceable +></option +> <option +>-r <replaceable +>samplingrate</replaceable +></option +> <option +>-b <replaceable +>bit</replaceable +></option +> <option +>-d</option +> <option +>-D <replaceable +>enhedsnavn</replaceable +></option +> <option +>-F <replaceable +>fragmenter</replaceable +></option +> <option +>-S <replaceable +>størrelse</replaceable +></option +> <option +>-s <replaceable +>sekunder</replaceable +></option +> <option +>-m <replaceable +>programnavn</replaceable +></option +> </group +> <group choice="opt" +> <option +>-h</option +> <option +>-A</option +> <option +>-v</option +> <option +>-l <replaceable +>niveau</replaceable +></option +> </group +> </cmdsynopsis> + +<variablelist +><varlistentry> +<term +><option +>-r <replaceable +>samplingrate</replaceable +></option +></term> +<listitem> +<para +>Indstil samplingrate som skal bruges.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Vis kommandobrug.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-n</option +></term> +<listitem> +<para +>Aktivér netværkstransparens.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-p <replaceable +>port</replaceable +></option> +</term> +<listitem> +<para +>Sæt <acronym +>TCP</acronym +>-port som skal bruges (forudsætter <option +>-n</option +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-u</option +></term> +<listitem> +<para +>Offentlig, ingen godkendelse (farligt).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-d</option +></term> +<listitem> +<para +>Aktivér fuld duplex.</para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-D <replaceable +>enhedsnavn</replaceable +></option +></term> +<listitem> +<para +>Angiv lydenhed (almindeligvis <filename +>/dev/dsp</filename +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-F <replaceable +>fragmenter</replaceable +></option +></term> +<listitem> +<para +>Sæt antal fragmenter.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-S <replaceable +>størrelse</replaceable +></option +></term> +<listitem> +<para +>Sæt fragmentstørrelse i byte.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-s <replaceable +>sekunder</replaceable +></option +></term> +<listitem> +<para +>Indstil forsinkelsen før autosuspendér aktiveres i sekunder. Værdien nul lukker af for autosuspendér.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-m <replaceable +>programnavn</replaceable +></option +></term> +<listitem> +<para +>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 <application +>artsmessage</application +> til dette.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-N</option +></term> +<listitem> +<para +>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). </para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-w <replaceable +>n</replaceable +></option +></term> +<listitem> +<para +>Når <application +>artsd</application +> 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 <replaceable +>n</replaceable +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-l <replaceable +>niveau</replaceable +></option +></term> +<listitem> +<para +>Indstil informationsniveau: 3 (tavs), 2 (advarsler), 1 (info), 0 (fejlsøgning).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-v</option +></term> +<listitem> +<para +>Vis versionsniveau.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>I de fleste tilfælde er det nok kun at køre &artsd;. </para> +</sect1> + +<sect1 id="artswrapper"> +<title +>&artswrapper;</title> + +<para +>For at give gode realtidsegenskaber køres &artsd; oftest som en realtidsproces (på platforme hvor realtidsprioriteter understøttes). Dette kræver <systemitem class="username" +>root</systemitem +>-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 <systemitem class="username" +>root</systemitem +>) og derefter starter &artsd; som en anden bruger end <systemitem class="username" +>root</systemitem +>. </para> + +<para +>Hvis du gør &artswrapper; SUID <systemitem class="username" +>root</systemitem +>, 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 <quote +>produktiv</quote +> måde.</para> + +</sect1> + +<sect1 id="artsshell"> +<title +>&artsshell;</title> + +<para +>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). </para> + +<para +>Kommandoen accepterer følgende format: </para> + +<!-- LW: FIX THIS --> + +<cmdsynopsis +><command +>artsshell</command +> <group +> <arg +>suspend</arg +><arg +>status</arg +> <arg +>terminate</arg +> <arg +>autosuspend <replaceable +>secs</replaceable +></arg +> <arg +>networkbuffers <replaceable +>n</replaceable +></arg +> <arg +>volume [<replaceable +>volume</replaceable +>]</arg +> <arg +>stereoeffect <replaceable +>options</replaceable +></arg +> </group +> <group +> <option +>-h</option +> <option +>-q</option +> </group +> </cmdsynopsis> + +<para +>artsshell [flag] <replaceable +>kommando</replaceable +> [<replaceable +>kommandotilvalg</replaceable +>] </para> + +<para +>Følgende flag understøttes: </para> + +<variablelist> + +<varlistentry> +<term +><option +>-q</option +></term> +<listitem> +<para +>Undertryk al udskrift.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Vis kommandobrug.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>Følgende kommandoer understøttes:</para> + +<variablelist> + +<varlistentry> +<term +><option +>suspend</option +></term> +<listitem> +<para +>Suspendér lydserveren. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>status</option +></term> +<listitem> +<para +>Vis statusinformation for lydserveren.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>terminate</option +></term> +<listitem> +<para +>Afslut lydserveren. Dette kan forvirre og/eller forårsage sammenbrud for programmer som for øjeblikket bruger den. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>autosuspend</option +> <parameter +>sekunder</parameter +></term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>networkbuffers</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Indstiller størrelsen af netværksbufferne til en faktor <parameter +>n</parameter +> gange standardstørrelsen. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>volume</option +> [<replaceable +>volume</replaceable +>]</term> +<listitem> +<para +>Indstiller lydstyrkeskalering for lydserverens lyduddata. Parameteren <replaceable +>volume</replaceable +> er et decimaltal. Uden parameter vises den nuværende lydstyrke. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect liste</option +></term> +<listitem> +<para +>Vis alle tilgængelige stereoeffektmoduler.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect insert [top|bottom]</option +> <replaceable +>navn</replaceable +></term> +<listitem> +<para +>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).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect remove</option +> <replaceable +>id</replaceable +></term> +<listitem> +<para +>Fjerner stereoeffekten med identifikatoren <replaceable +>id</replaceable +> fra effektstakken.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="artsplay"> +<title +><application +>artsplay</application +></title> + +<para +>Programmet <application +>artsplay</application +> 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 <literal role="extension" +>wav</literal +> eller <literal role="extension" +>au</literal +>. 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.</para> + +</sect1> + +<sect1 id="artsdsp"> +<title +><application +>artsdsp</application +></title> + +<para +>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. </para> + +<para +>Når et program køres med &artsdsp; fanges alle forsøg på at komme til lydenheden <filename class="devicefile" +>/dev/dsp</filename +> 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. </para> + +<para +>Kommandoen &artsdsp; følger formatet: </para> + +<!-- LW: FIX THIS --> +<para +>artsdsp [<replaceable +>flag</replaceable +>] <replaceable +>programargumenter</replaceable +> </para> + +<para +>Følgende flag genkendes: </para> + +<variablelist> + +<varlistentry> +<term +><option +>-h</option +>, <option +>--help</option +></term> +<listitem> +<para +>Vis kortfattet hjælp.</para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-n</option +> <option +>--name</option +> = <replaceable +>navn</replaceable +></term> +<listitem> +<para +>Brug <replaceable +>navn</replaceable +> til at identificere en afspiller for <command +>artsd</command +>.</para> + +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-m</option +> <option +>--mmap</option +></term> +<listitem> +<para +>Emulér hukommelsesafbildning (f.eks for <application +>Quake</application +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-v</option +> <option +>--verbose</option +></term> +<listitem> +<para +>Vis parametre.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>Et typisk kald er: </para> + +<para> +<userinput +><command +>artsdsp</command +> <option +>-v</option +> <option +>-m</option +> <parameter +>realplay <replaceable +>song.mp3</replaceable +></parameter +></userinput> +</para> + +<para +>Visse programmer virker bedre med flaget <option +>--mmap</option +>. 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. </para> + +</sect1> + +<sect1 id="artscat"> +<title +><application +>artscat</application +></title> + +<para +>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: </para> + +<!-- LW: FIX THIS --> + +<para +>artscat [ <replaceable +>flag</replaceable +> ] [ <replaceable +>filnavn</replaceable +> ] </para> + +<para +>Hvis intet filnavn angives læser programmet fra standardinddata. Følgende flag understøttes: </para> + +<variablelist> +<varlistentry> +<term +><option +>-r</option +> <parameter +>samplingsfrekvens</parameter +></term> +<listitem> +<para +>Sæt den samplingsfrekvens som bruges. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-b</option +> <parameter +>bit</parameter +></term> +<listitem> +<para +>Sæt samplingsstørrelse som bruges (8 eller 16). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-c</option +> <parameter +>kanaler</parameter +></term> +<listitem> +<para +>Sæt antal kanaler (1 eller 2). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Vis kommandobrug og afslut. </para> +</listitem> +</varlistentry> + +</variablelist> +</sect1> + +<sect1 id="artscontrol"> +<title +>&artscontrol;</title> + +<para +>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 <guimenu +>Vis</guimenu +> kan du vælge andre funktioner: </para> + +<variablelist> + +<varlistentry> +<term +><guimenuitem +>FFT-omfang</guimenuitem +></term> +<listitem> +<para +>Åbner et vindue som viser en skærm med en realtidsspektrumanalysator. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Lydhåndtering</guimenuitem +></term> +<listitem> +<para +>Viser aktive lydkilder og lader dig forbinde dem til alle tilgængelige busser. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>aRts status</guimenuitem +></term> +<listitem> +<para +>Viser om lydserveren kører og om realtidsskemalægning bruges. Angiver når serveren vil autosuspendere og tillader dig at suspendere med det samme. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Midihåndtering</guimenuitem +></term> +<listitem> +<para +>Viser aktive &MIDI; ind- og udgange og tillader dig at lave forbindelser [HUSK: virker dette endnu? Behøver flere detaljer]. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>FreeVerb</guimenuitem +></term> +<listitem> +<para +>Tilslutter en FreeVerb efterklangseffekt til stakken af &arts; udskriftseffekter og lader dig kontrollere lydeffektindstillingerne grafisk. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Led-lignende lydstyrkevisning</guimenuitem +></term> +<listitem> +<para +>Ændrer lydstyrkeindikatorerne i hovedvinduet til at bruge et visningsformat med farvede lysdioder i stedet for bjælker. </para> +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="artsc-config"> +<title +><application +>artsc-config</application +></title> + +<para +>Dette værktøj er der for at hjælpe udviklere som bruger C-<acronym +>API</acronym +> 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: </para> + +<variablelist> +<varlistentry> +<term +><option +>--cflags</option +></term> +<listitem> +<para +>Viser oversætterflag som behøves når man kompilerer med &arts; C-<acronym +>API</acronym +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>--libs</option +></term> +<listitem> +<para +>Viser linkerflag som behøves når man linker med &arts; C-<acronym +>API</acronym +>. </para> +</listitem> +</varlistentry> +<varlistentry> +<term +><acronym +>---version</acronym +></term> +<listitem> +<para +>Viser versionen af kommandoen <command +>artsc-config</command +>. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Typisk udskrift fra kommandoen vises nedenfor:</para> + +<screen width="40" +><prompt +>%</prompt +> <userinput +><command +>artsc-config</command +> <option +>--cflags</option +></userinput> +<computeroutput +>-I/usr/local/kde2/include/artsc</computeroutput> +<prompt +>%</prompt +> <userinput +><command +>artsc-config</command +> <option +>--libs</option +></userinput> +<computeroutput +>-L/usr/local/kde2/lib -ldl -lartsc -DPIC -fPIC -lpthread</computeroutput> +<prompt +>%</prompt +> <userinput +><command +>artsc-config</command +> <option +>--version</option +></userinput> +<computeroutput +>0.9.5</computeroutput +> +</screen> + +<para +>Man skal kunne bruge dette værktøj i en make-fil med en regel såsom: </para> + +<programlisting +>artsc: artsc.c + gcc `artsc-config --cflags` -o artsc artsc.c `artsc-config --libs` +</programlisting> + +</sect1> + +<sect1 id="mcopidl"> +<title +>&mcopidl;</title> + +<para +>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: </para> + +<!-- LW: FIX THIS --> + +<para +>mcopidl [ <replaceable +>flag</replaceable +> ] <replaceable +>filnavn</replaceable +> </para> + +<para +>Gyldige flag er:</para> +<variablelist> +<varlistentry> +<term +><option +>-I</option +> <parameter +>mappe</parameter +></term> +<listitem> +<para +>Søg i <parameter +>mappe</parameter +> efter deklarationsfiler. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-e</option +> <parameter +>navn</parameter +></term> +<listitem> +<para +>Spring over en struct, grænseflade eller nummereringstypen <parameter +>navn</parameter +> ved kodegenerering. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-t</option +></term> +<listitem> +<para +>Opret også <literal role="extension" +>.mcoptype</literal +>/<literal role="extension" +>.mcopclass</literal +> filer som indeholder typeinformation for &IDL;-filen. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Mere information om &MCOP; og &IDL; findes i afsnittet <link linkend="interfaces" +>Grænseflader og &IDL;</link +>. </para> + +</sect1> + +</chapter> diff --git a/tde-i18n-da/docs/kdemultimedia/juk/Makefile.am b/tde-i18n-da/docs/kdemultimedia/juk/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/juk/Makefile.in b/tde-i18n-da/docs/kdemultimedia/juk/Makefile.in new file mode 100644 index 00000000000..4646f10061a --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/juk/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/juk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/juk/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/juk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/juk/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/juk/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/juk/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..a698baa1f74 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/juk/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/juk/index.docbook b/tde-i18n-da/docs/kdemultimedia/juk/index.docbook new file mode 100644 index 00000000000..30448b2111f --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/juk/index.docbook @@ -0,0 +1,2395 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY package "kdemultimedia"> + <!ENTITY kappname "&juk;"> + <!ENTITY juk "<application +>JuK</application +>"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Danish "INCLUDE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>&juk;-håndbogen</title> + +<authorgroup> +<author +>&Lauri.Watts; &Lauri.Watts.mail;</author> +<author +><firstname +>Michael</firstname +> <surname +>Pyne</surname +> <affiliation +> <address +><email +>michael.pyne@kdemail.net</email +></address> +</affiliation> +</author> + +<othercredit role="developer" +><firstname +>Scott</firstname +> <surname +>Wheeler</surname +> <affiliation +> <address +>&Scott.Wheeler.mail;</address> +</affiliation> +</othercredit> + +&erik.kjaer.pedersen.role; + +</authorgroup> + +<copyright> +<year +>2001</year> +<year +>2002</year> +<year +>2004</year> +<holder +>&Scott.Wheeler;</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2004-05-06</date> +<releaseinfo +>2.1</releaseinfo> + +<abstract> +<para +>&juk; er en jukebox, mærke- og musiksamlingshåndtering. </para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>kdemultimedia</keyword> +<keyword +>lyd</keyword> +<keyword +>mærker</keyword> +<keyword +>afspiller</keyword> +<keyword +>jukebox</keyword> +<keyword +>JuK</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Indledning</title> + +<para +>&juk; er, lige nøjagtigt, en jukebox. Ligesom mange andre jukeboxprogrammer, gør &juk; det muligt at redigere dine lydfilers <quote +>mærker</quote +>, og håndtere samlinger og spillelister. </para> +</chapter> + +<chapter id="using-juk"> +<title +>Brug af &juk;</title> + +<para> +<screenshot> +<screeninfo +>Her er et skærmaftryk af &juk;</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-main.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmaftryk af &juk; i gang.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>&juk; håndterer en liste med alle kendte filer. Den kaldes <guilabel +>samlingslisten</guilabel +>. Samlingslisten tilhører kun &juk;, og deles ikke med andre programmer.</para> + +<para +>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 <application +>xmms</application +>), og du kan håndtere spillelister som er lavet af disse programmer inde i &juk;.</para> + +<para +>Du kan tilføje individuelle filer til samlingslisten, med <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Åbn fil...</guimenuitem +></menuchoice +> og vælge dem med en almindelig &kde; fildialog. Du kan tilføje hele mapper med <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Åbn mappe...</guimenuitem +></menuchoice +>. 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 <guilabel +>Samlingsliste</guilabel +> , og vælge <guimenuitem +>Genindlæs</guimenuitem +>.</para> + +<para +>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.</para> + +<para +>Du kan hurtigt oprette en spilleliste af hele samlingslisten, ved at højreklikke på ikonen <guilabel +>Samlingsliste</guilabel +>, og vælge <guimenuitem +>Duplikér</guimenuitem +>. Spillelisten som laves er en normal spilleliste, og redigering i den påvirker ikke <guilabel +>samlingslisten</guilabel +>.</para> + +<para +>Du kan tilføje individuelle spillelistefiler som er lavet udenfor &juk; ved at vælge dem med <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Åbn fil...</guimenuitem +></menuchoice +>. Alle spillelistefiler som findes i mapper du tilføjer med <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Åbn mappe...</guimenuitem +></menuchoice +> tilføjes også automatisk.</para> + +<para +>Du kan oprette en ny spilleliste ved at vælge <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Ny</guimenuitem +></menuchoice +>, eller ikonen <guiicon +>Ny</guiicon +> 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 <guiicon +>Gem</guiicon +> eller <menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Gem</guimenuitem +></menuchoice +> for at gemme spillelisten når som helst.</para> + +<sect1 id="collection-list-gui"> +<title +>Sanglisten</title> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>Højreklik på en fil giver dig flere valgmuligheder:</para> + +<variablelist> +<varlistentry> +<term +><guimenuitem +>Spil den næste</guimenuitem +></term> +<listitem> +<para +>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å <guiicon +>Spil</guiicon +>-knappen. Hvis du allerede har valgt Spil den næste for en anden, så vil denne fil sætte det valg ud af kraft.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Klip</guimenuitem +></term> +<term +><guimenuitem +>Kopiér</guimenuitem +></term> +<term +><guimenuitem +>Indsæt</guimenuitem +></term> +<listitem> +<para +>...</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Ryd</guimenuitem +></term> +<listitem> +<para +>Hvis du bruger samlingslisten, fjernes filen fra listen med <guimenuitem +>Ryd</guimenuitem +>, 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.</para> +<para +>Hvis du kigger i en spilleliste, så vil <guimenuitem +>Ryd</guimenuitem +> helt enkelt fjerne sangen fra spillelisten.</para> + +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Redigér</guimenuitem +></term> +<listitem> +<para +>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.</para> +<para +>Æ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.</para> +<para +>Dette menupunkt vil blive deaktiveret hvis &juk; detekterer at sporet du har valgt kun er læsbart.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Genopfrisk punkter</guimenuitem +></term> +<listitem> +<para +>Dette vil genindlæse mærke-information for de valgte filer, i tilfælde af at filerne er blevet ændret mens &juk; kørte.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Fjern fra disk</guimenuitem +></term> +<listitem> +<para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guisubmenu +>Gæt mærke-information</guisubmenu +></term> +<listitem> +<para +>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: <variablelist> + + <varlistentry +><term +><guimenuitem +>Fra filnavn:</guimenuitem +></term> + <listitem +><para +>&juk; vil forsøge at gætte mærterne for sangen baseret på dens filnavn. For eksempel, hvis en sangs navn er <filename +>Roxette - You've Got the Look.mp3</filename +> 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 <menuchoice +><guimenu +>Opsætning </guimenu +><guimenuitem +>Mærkegætter...</guimenuitem +></menuchoice +>, hvilket vil åbne <link linkend="juk-tag-guesser-configuration" +>Mærkegætterdialogen</link +>. &juk; vil ikke erstatte de mærker som den ikke gættede ud fra filnavnet.</para> + </listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Fra internettet</guimenuitem +></term> + <listitem +><para +>&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. </para> + </listitem> + </varlistentry> + + </variablelist> +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Omdøb fil</guimenuitem +></term> +<listitem> +<para +>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 <menuchoice +> <guimenu +>Opsætning</guimenu +><guimenuitem +>Fil-omdøber...</guimenuitem +></menuchoice +>. Det resulterende navn på hver fil er baseret på dens metadata-mærker. For eksempel ville Ogg Vorbis sangen <quote +>The Theme (Metroid)</quote +> af Stemage blive til <filename +>/usr/share/music/Stemage/The Theme (Metroid).ogg</filename +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Opret spilleliste ud fra valgte punkter</guimenuitem +></term> +<listitem> +<para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Tilføj udvalgte punkter til K3b-projekt</guimenuitem +></term> +<listitem> +<para +>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.</para> + +<para +>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. </para> + +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="juk-playlists"> +<title +>&juk;'s spillelister</title> +<para +>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. </para> + +<variablelist> + +<varlistentry> +<term id="juk-normal-playlists" +>Normale spillelister.</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="normal-playlist.png"/></imageobject +></inlinemediaobject +> Dette er den mest almindelige slags spilleliste. Det er en spilleliste der består af filer, ligesom smalingslisten.</para +></listitem> +</varlistentry> + +<varlistentry> +<term id="juk-history-playlists" +>Historikspilleliste</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="history-playlist.png"/></imageobject +></inlinemediaobject +> Hvid du aktiverer denne spilleliste (ved at aktivere <menuchoice +><guimenu +>Vis</guimenu +><guimenuitem +>Vis historik</guimenuitem +></menuchoice +>, vil denne spilleliste huske hver sang som &juk; afspiller. Spilleliste vil have en ekstra søjle, <guilabel +>Tid</guilabel +>, som husker det nøjagtige tidspunkt og datoen sangen blev spillet. Spillelisten starter imidlertid ikke med at spore historikken før den er aktiveret. </para +></listitem> +</varlistentry> + +<varlistentry> +<term id="juk-search-playlists" +>Søgespillelister.</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="search-playlist.png"/></imageobject +></inlinemediaobject +> Dette er en spilleliste som er baseret på en søgning. Du kan lave en sådan spilleliste ved at klikke på <menuchoice +> <guimenu +>Fil</guimenu +><guisubmenu +>Ny</guisubmenu +><guimenuitem +>Søgespilleliste</guimenuitem +></menuchoice +>, eller ved at klikke på knappen <link linkend="juk-advanced-search-dialog" +>Avanceret søgning</link +> i <link linkend="search-bar" +>Søgelinjen</link +>.</para> +<para +>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.</para +></listitem> +</varlistentry> + +</variablelist> + +<para +>Spillelister er organiserede i <guilabel +>Spillelisteruden</guilabel +>, 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 <guimenu +>Vis</guimenu +><guisubmenu +>Visningstilstande</guisubmenu +>. <variablelist> + +<varlistentry> +<term id="juk-viewmode-default" +>Standard-visningstilstand</term> +<listitem> +<para +>Dette er standard-visningstilstanden. I denne tilstand, bliver alle spillelisterne vist som store ikoner, en ovenover den anden i visningstilstanden. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="juk-viewmode-compact" +>Kompakt visningstilstand</term> +<listitem> +<para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="juk-viewmode-tree" +>Trævisningstilstand</term> +<listitem> +<para +>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.</para> +<para +>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. </para> +</listitem> +</varlistentry> + +</variablelist> + +</para> + +</sect1> + +<sect1 id="juk-tagger"> +<title +>&juk;s mærkeeditor</title> + +<para +>Det er praktisk at bruge filnavnet til at beskrive filens indhold, for mange filformater. <quote +><filename +>Rapport til styrelsen - Juni 2003.doc</filename +></quote +>, 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: <quote +><filename +>Type O Negative - The Glorious Liberation Of The Peoples Technocratic Republic Of Vinnland By The Combined Forces Of The United Territories Of Europa.mp3</filename +></quote +> eller <quote +><filename +>Various Kunstners_15_The Smithsonian Collection of Classic Jazz Volume II_Jimmie Lunceford & His Orchestra - Organ Grinder's Swing.mp3</filename +></quote +>. 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.</para> + +<para +>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.</para> + +<para +>&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;.</para> + +<sect2 id="tagging-a-single-file"> +<title +>Redigér mærker i en enkelt fil</title> + +<para +>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 <menuchoice +><guimenu +>Vis</guimenu +><guimenuitem +>Vis mærkeeditor</guimenuitem +></menuchoice +>. Mærkeeditoren ses længst nede i listevisningen.</para> + +<para +>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.</para> + +<para +>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.</para> + +<variablelist> +<title +>Mærkeeditorenes felter</title> +<varlistentry> +<term +><guilabel +>Kunstnernavn:</guilabel +></term> +<listitem> +<para +>Navn på kunstneren eller kunstnerne som udgav sangen.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Sportitel:</guilabel +></term> +<listitem> +<para +>Sangens navn.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Albumnavn:</guilabel +></term> +<listitem> +<para +>Navnet på albumet hvor sangen blev udgivet.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Genre:</guilabel +></term> +<listitem> +<para +>Musikkens <quote +>stil</quote +>. &juk; sørger for en liste som cirka svarer til den uformelle ID3-standard, men du kan frit indtaste egne værdier i listen.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Filnavn:</guilabel +></term> +<listitem> +<para +>Filnavnet på den egentlige fil på disken. Du kan direkte redigere dette, og når du gemmer så skifter filen navn.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Spor:</guilabel +></term> +<listitem> +<para +>Stedet for sporet på originalindspilningen.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>År:</guilabel +></term> +<listitem> +<para +>Året sangen blev udgivet.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Længde:</guilabel +></term> +<listitem> +<para +>Dette kan ikke redigeres, det bliver blot vist som information.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Bitrate:</guilabel +></term> +<listitem> +<para +>Dette kan ikke redigeres, det bliver blot vist som information.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Kommentar:</guilabel +></term> +<listitem> +<para +>Du kan tilføje egne frie tekstkommentarer her, med yderligere påtegninger osv.</para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Du kan udtrykkelig og umiddelbart gemme dine ændringer når som helst, med menupunktet <menuchoice +><guimenu +>Mærker</guimenu +><guimenuitem +>Gem</guimenuitem +></menuchoice +> eller ved at trykke på <keycombo action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +>.</para> + +</sect2> + +<sect2 id="tagging-multiple-files"> +<title +>Redigér mærker i flere filer</title> + +<para +>Du kan vælge flere filer i listevinduet, og redigere et eller flere felter i mærkerne for alle filer på en gang.</para> + +<para +>Brug <keycap +>Shift</keycap +> 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.</para> + +<para +>Hvis mærkeeditoren ikke er synlig, kan du aktivere den ved at vælge <menuchoice +><guimenu +>Vis</guimenu +><guimenuitem +>Vis mærkeeditor</guimenuitem +></menuchoice +>. Mærkeeditoren vises længst nede i listevisningen.</para> + +<para +>Mærkeeditoren opfører sig noget anderledes når du har valgt flere filer.</para> + +<para +>Hvert felt i mærkeeditoren har nu et afkrydsningsfelt som hedder <guilabel +>Aktivér</guilabel +> 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 <guilabel +>Aktivér</guilabel +> markeret.</para> + +<!-- put screeny here --> + +<para +>Alle felter som ikke har samme indhold i alle markerede filer kan ikke redigeres fra begyndelsen, og viser ikke noget indhold over hovedet.</para> + +<para +>For at ændre indhold i et felt, markeres afkrydsningsfeltet <guilabel +>Aktivér</guilabel +> hvis den ikke allerede er det, og feltet redigeres på almindelig måde.</para> + +<para +>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.</para> + +<para +>Du kan udtrykkelig og umiddelbart gemme dine ændringer når som helst, med menupunktet <menuchoice +><guimenu +>Mærker</guimenu +><guimenuitem +>Gem</guimenuitem +></menuchoice +> eller ved at trykke på <keycombo action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +>.</para> + +</sect2> + +</sect1> + +<sect1 id="juk-rename-dialog"> +<title +>Fildialogen omdøb</title> +<para> +<screenshot> +<screeninfo +>Dialogen Omdøb fil</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-file-renamer.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmaftryk af Fildialogen omdøb.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>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 <guilabel +>Filnavnesystemet</guilabel +>. </para> + +<para +>Den vigtigste del af dialogen er afsnittet <guilabel +>Filnavnesystem</guilabel +>. 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. </para> + +<para +><variablelist> +<varlistentry> +<term +>%t</term> +<listitem +><para +>Dette bliver erstattet med Titel-symbolet ved evaluering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%a</term> +<listitem +><para +>Dette bliver erstattet med Kunstner-symbolet ved evaluering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%A</term> +<listitem +><para +>Dette bliver erstattet med Album-symbolet ved evaluering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%T</term> +<listitem +><para +>Dette bliver erstattet med Spor-symbolet ved evaluering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%c</term> +<listitem +><para +>Dette bliver erstattet med Kommentar-symbolet ved evaluering.</para> +</listitem> +</varlistentry> + +</variablelist> +</para> + +<para +>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 <guilabel +>Filnavnesystemet</guilabel +>.</para> + +<para +>Brug af symboler tillader os imidlertid fuldstændigt at ignorere mærker der er tomme. Hvis du markerer feltet <guilabel +>Behøver værdi</guilabel +>, 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 <replaceable +>har-kommentar/%s</replaceable +> i editoren <guilabel +>Kommentar-symbol</guilabel +>.</para> + +<para +>Du kan teste dit filnavnesystem ved at bruge editoren <guilabel +>Nuværende filnavn</guilabel +> for neden i dialogen. Indskriv et filnavn på en musik-fil, så vil området <guilabel +>Nyt filnavn</guilabel +> vise hvordan &juk; ville omdøbe filen, givet de nuværende indstillinger. </para> +</sect1> + +<sect1 id="juk-tag-guesser-configuration"> +<title +>Indstillingsdialogen til mærkegætning</title> +<para> +<screenshot> +<screeninfo +>Dialog til indstilling af mærkegætter</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-tag-guesser.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmaftryk af mærkegætterens indstillingsdialog.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>Mærkegætterens indstillingsdialog bruges til at indstille kommandoen Gæt ud fra filnavn.</para> + +<para +>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å <guibutton +>Tilføj</guibutton +>-knappen, og indskriv dit system og klik på <guibutton +>O.k.</guibutton +>. Du kan bruge de samme procent-symboler som defineret i <link linkend="juk-rename-dialog" +>Dialogen indstilling af Omdøb</link +>. </para> + +<para +>&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. </para> + +<para +>Du kan også redigere eller fjerne et system fra listen. Vælg blot systemet på listen, og brug <guibutton +>Ændr</guibutton +>-knappen til at ændre systemet, eller <guibutton +>Fjern</guibutton +>-knappen til at fjerne systemet fra listen. </para> +</sect1> + +<sect1 id="juk-advanced-search-dialog"> +<title +>Den avancerede søgedialog</title> +<para> +<screenshot> +<screeninfo +>Avanceret søgedialog</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-adv-search.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmaftryk af den avancerede søgedialog.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>Den avancerede søgedialog bruges til at lave <link linkend="juk-search-playlists" +>Søgespillelister</link +>. den tillader dig at lave en finkornet søgning mellem alle de forskellige mærker i din samling af sange.</para> + +<para +>For oven i dialogen, kan du indskrive navnet på din søgespilleliste. Derpå kan du definere dine søgekriterier i gruppen <guilabel +>Søgekriterier</guilabel +>. </para> + +<para +>For oven i gruppen <guilabel +>Søgekriterier</guilabel +> er der to radioknapper, <guilabel +>Match nogen af følgende</guilabel +> og <guilabel +>Match alle de følgende</guilabel +>. Hvis du vælger <guilabel +>Match enhver af de følgende</guilabel +>, 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. </para> + +<para +>Under radioknapperne er betingelsesdefinitionerne. Du kan tilføje flere betingelser ved at bruge <guibutton +>Mere</guibutton +>-knappen, og fjerne betingelser ved brug af <guibutton +>Færre</guibutton +>-knappen. Enhver betingelse du efterlader blank bliver ignoreret, så du behøver ikke at bruge <guibutton +>Færre</guibutton +> for at eliminere tomme betingelser. </para> + +<para +>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. </para> + +<para +>Matchstillisten lader &juk; vide hvilken søgningsmetode der skal bruges. Søgemetoderne du kan bruge er som følger: <variablelist> +<varlistentry> +<term +>Normal matchning</term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +>Versalfølsom</term> +<listitem +><para +>Denne søgning er ligesom Normal, bortset fra at søgningen skal matche den nøjagtige versaltype af teksten.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +>Mønster-matchning</term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> + +</variablelist> + +</para> + +<para +>Vælg blot de betingelser du ønsker at inkludere i din søgning, og klik på <guibutton +>O.k.</guibutton +> for at lave din søgespilleliste. </para> +</sect1> + +<sect1 id="juk-cover-manager"> + +<title +>&juk;'s omslagshåndtering</title> + +<para +>&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.</para> + +<sect2 id="covers-in-juk-2.2"> +<title +>Hvordan omslag fungerede i &juk; 2.2</title> + +<para +>I &juk; 2.2 var et spors omslag hårdt knyttet til informationen om dets <guilabel +>kunstner</guilabel +> og <guilabel +>album</guilabel +>. 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 <guilabel +>kunstner</guilabel +> eller <guilabel +>album</guilabel +>, 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.</para> + +</sect2> + +<sect2 id="covers-in-juk-2.3"> + +<title +>Hvordan omslag fungerer i &juk; 2.3</title> + +<para +>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.</para> + +<sect3 id="examples-adding-covers"> + +<title +>Eksempel på at tilføje omslag</title> + +<para +>Som et eksempel, lad os antage at du ville angive et omslag for spor som du netop har rippet fra en cd. Vi bruger <quote +>Alabama - Greatest Hits III</quote +> 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 <menuchoice +><guimenu +>Mærkning</guimenu +> <guisubmenu +>Omslagshåndtering</guisubmenu +> <guimenuitem +>Hent omslag fra internettet </guimenuitem +></menuchoice +>. Som en bivirkning af hvordan &juk; virkede , blev omslaget med det samme brugt til <emphasis +>alle</emphasis +> sporene på <quote +>Alabama - Greatest Hits III</quote +>, <emphasis +> det være sig om du havde lyst eller ej</emphasis +>.</para> + +<para +>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å <quote +>Alabama - Greatest Hits III</quote +> inden du bruger kommandoen <menuchoice +><guimenuitem +>Hente omslag fra internettet</guimenuitem +></menuchoice +>. Eller vis du kun vil angive et omslagsbillede for halvdelen af sporene, skal du kun markere halvdelen af sporene inden du udfører kommandoen <menuchoice +><guimenuitem +>Hent omslag fra internettet</guimenuitem +></menuchoice +>. Bekymr dig heller ikke om at duplikere omslag: &juk; er smart nok at genbruge samme billede, så du får ikke 14 duplikerede <literal role="extension" +>.png</literal +>-billeder som roder rundt omkring på harddisken.</para> +</sect3> + +<sect3 id="reusing-old-covers"> + +<title +>Genbrug gamle omslag</title> + +<para +>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.</para> + +<para +>Der er to måder at gøre dette:</para> + +<para +>1. Åbn dialogen <guilabel +>Omslagshåndtering</guilabel +> med menuen <guimenu +>Mærkning</guimenu +> (<menuchoice +><guimenu +>Mærkning</guimenu +> <guisubmenu +>Omslagshåndtering</guisubmenu +> <guimenuitem +>Vis omslagshåndtering</guimenuitem +></menuchoice +>). 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.</para> + +<para +>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 <interface +>Spiller nu</interface +>, og du kan trække og slippe omslaget på sporet som du vil ændre lige som du ville have gjort med omslagshåndteringen.</para> + +</sect3> + +<sect3 id="dragging-covers"> + +<title +>Træk omslag til mere end et spor af gangen</title> + +<para +>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.</para> +</sect3> + +<sect3 id="old-covers"> + +<title +>Hvad sker der med mine gamle omslag?</title> + +<para +>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.</para> + +<para +>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.</para> + +</sect3> +<sect3 id="removing-covers"> + +<title +>Fjern omslag</title> + +<para +>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 <guilabel +>kunstner </guilabel +> og <guilabel +>album</guilabel +>.</para> + +<para +>I &juk; 2.3 tager kommandoen for fjernelse af omslag kun omslagene væk fra de markerede spor. </para> + +</sect3> +<sect3 id="suggested-use"> + +<title +>Forslag til brug:</title> + +<para +>1. Du kan nu bruge samme omslag for spor med albummer som har <quote +>Disk 1</quote +>, <quote +>Disk 2</quote +>, osv. hvilket du ikke kunne gøre i &juk; 2.2 uden at duplikere omslaget.</para> + +<para +>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.</para> + +</sect3> +</sect2> +</sect1> + +</chapter> + +<chapter id="toolbar-reference"> +<title +>Værktøjslinjen i &juk;</title> + +<sect1 id="main-toolbar"> +<title +>Hovedværktøjslinjen</title> + +<screenshot> +<screeninfo +>Værktøjslinjen i &juk;</screeninfo> +<mediaobject> +<imageobject> +<imagedata format="PNG" fileref="toolbar.png"/> +</imageobject> +<textobject> +<phrase +>Værktøjslinjen i &juk;</phrase> +</textobject> +<caption +><para +>Værktøjslinjen i &juk;</para +></caption> +</mediaobject> +</screenshot> + +<para +>Fra venstre til højre i skærmaftrykket ovenfor, er ikonerne i standardværktøjslinjen følgende:</para> + +<variablelist> +<varlistentry> +<term +><guiicon +>Ny</guiicon +></term> +<listitem +><para +>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. </para> + <variablelist> + <varlistentry +><term +><guimenuitem +>Tom spilleliste...</guimenuitem +></term> + <listitem +><para +>Dette beder dig om et spillelistenavn, og indsætter det så i spillelistevisningen. Spillelisten starter med at være fuldstændig tom.</para +></listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Spilleliste ud fra mappe...</guimenuitem +></term> + <listitem +><para +>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.</para +></listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Søgespilleliste...</guimenuitem +></term> + <listitem +><para +>Dette får den avancerede søgedialog frem, og tillader dig at lave en <quote +>virtuel spilleliste</quote +>. 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. </para +></listitem> + </varlistentry> + + </variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Åbn</guiicon +></term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Gem</guiicon +></term> +<listitem +><para +>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å <keycombo action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +>.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Klip</guiicon +></term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Kopiér</guiicon +></term> +<listitem +><para +>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.</para> +<para +>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.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Indsæt</guiicon +></term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Vis søgelinje</guiicon +></term> +<listitem +><para +>Vis eller skjul <link linkend="search-bar" +>søgelinjen</link +>.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Vis mærkeeditor</guiicon +></term> +<listitem +><para +>Vis eller skjul <link linkend="tagging-a-single-file" +>mærkeeditoren</link +>.</para +></listitem> +</varlistentry> + +<varlistentry id="play-toolbar"> +<term +>Afspilningsknapper</term> +<listitem> +<para +>De virker som for alle almindelige mediespillere som du måtte være stødt på. Knapperne er <guiicon +>Spil</guiicon +>, <guiicon +>Pause</guiicon +>, <guiicon +>Stop</guiicon +>, <guiicon +>Gå tilbage</guiicon +> til foregående sang og <guiicon +>Gå fremad</guiicon +> til næste sang.</para> +<para +>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.</para> +<para +>Endelig er der en lydstyrkekontrol. Som man kunne forvent, øger og sænker den lydstyrken. <quote +>Højt</quote +> er til højre, og <quote +>lavt</quote +> til venstre.</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="search-bar"> +<title +>Søgelinjen</title> + +<para +>Søgelinjen lader dig lede efter en sang i samlingslisten eller en spilleliste hurtigt.</para> + +<para +>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å <keycap +>Enter</keycap +> vil starte afspilning af den første der matcher i spillelistens visning.</para> + +<para +>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.</para> + +<para +>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.</para> + +</sect1> + +</chapter> + +<chapter id="menu-and-command-reference"> +<title +>Menu og kommandoreference</title> + +<sect1 id="menus"> +<title +>Menuer</title> + +<sect2 id="menu-file"> +<title +><guimenu +>Fil</guimenu +>menu</title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +> </shortcut +> <guimenu +>Fil</guimenu +><guisubmenu +>Ny</guisubmenu +><guimenuitem +>Tom spilleliste..</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Opret en ny spilleliste</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Fil</guimenu +><guisubmenu +>Ny</guisubmenu +><guimenuitem +>Spilleliste ud fra mappe...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Fil</guimenu +><guisubmenu +>Ny</guisubmenu +><guimenuitem +>Søgespilleliste...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Laver en ny <link linkend="juk-search-playlists" +>søgespilleliste</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>Fil</guimenu +> <guimenuitem +>Åbn...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Tilføj mappe...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Vælg en mappe (eller mapper) som skal tilføjes til samlingslisten. Mapperne gennemsøges så snart &juk; startes, eller punktet <menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Genindlæs</guimenuitem +></menuchoice +> vælges.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Omdøb...</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Omdøb en spilleliste.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Duplikér...</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Opret en duplikeret spilleliste ud fra den markerede spilleliste, og bed efter et nyt navn. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Genindlæs</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Genindlæser mærkeinformation for hver fil i den valgte spilleliste. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Fjern</guimenuitem +></menuchoice +></term> +<listitem +><para +>Fjern den markerede spilleliste.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Fil</guimenu +><guimenuitem +>Gem</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Gem den markerede spilleliste.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +><guimenuitem +>Gem som...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Gem den markerede spilleliste med et nyt navn.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-edit"> +<title +><guimenu +>Redigér</guimenu +>-menuen</title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Redigér</guimenu +> <guimenuitem +>Ryd</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Fjerner de markerede sange fra spillelisten.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-view"> +<title +><guimenu +>Vis</guimenu +>-menuen</title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Vis</guimenu +> <guimenuitem +>Vis søgelinje</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Dette er en handling der skifter mellem om <link linkend="search-bar" +>Søgelinjen</link +> vises eller ej.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Vis</guimenu +> <guimenuitem +>Vis mærkeeditor</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Dette er en handling der skifter mellem om <interface +>Mærkeeditoren</interface +> vises eller ej.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Vis</guimenu +> <guimenuitem +>Vis historik</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Dette er en handling der skifter mellem om <link linkend="juk-history-playlists" +>Historikspilleliste</link +> vises eller ej.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Vis</guimenu +><guisubmenu +>Visningstilstande</guisubmenu +><guimenuitem +>Standard</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Skifter til <link linkend="juk-viewmode-default" +>Standard visningstilstand</link +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Vis</guimenu +><guisubmenu +>Visningstilstande</guisubmenu +><guimenuitem +>Kompakt</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Skifter til <link linkend="juk-viewmode-compact" +>Kompakt visningstilstand</link +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Visning</guimenu +><guisubmenu +>Visningstilstande</guisubmenu +><guimenuitem +>Træ</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Skifter til <link linkend="juk-viewmode-tree" +>Trævisningstilstand</link +>. </para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-player"> +<title +><guimenu +>Afspiller</guimenu +>-menu</title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Afspiller</guimenu +><guimenuitem +>Tilfældig afspilning</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Afspiller</guimenu +><guimenuitem +>Spilleliste i løkke</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Afspiller</guimenu +><guimenuitem +>Spil</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando starter afspilning af den sang der er valgt nu, eller genoptager afspilning af sangen hvis den holdt pause.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Afspiller</guimenu +><guimenuitem +>Pause</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando holder pause i den sang der afspilles nu. Brug Spil-kommandoen for at genoptage afspilningen.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Afspiller</guimenu +><guimenuitem +>Stop</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando stopper afspilning af den sang der spilles nu. Du kan ikke genoptage afspilning fra dens nuværende position efter det.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Afspiller</guimenu +><guimenuitem +>Forrige spor</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando afspiller sangen der spillede lige før den sang der spilles nu.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Afspiller</guimenu +><guimenuitem +>Næste spor</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando springer videre til den næste sang på spillelisten.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-tagger"> +<title +><guimenu +>Mærker</guimenu +>-menu</title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>T</keycap +></keycombo +></shortcut +> <guimenu +>Mærker</guimenu +><guimenuitem +>Gem</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Mærker</guimenu +><guimenuitem +>Slet</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>F</keycap +></keycombo +></shortcut +> <guimenu +>Mærker</guimenu +><guisubmenu +>Gæt mærkeinformation</guisubmenu +><guimenuitem +>Fra filnavn</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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 <menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Mærkegætter...</guimenuitem +></menuchoice +>, hvilket åbner for <link linkend="juk-tag-guesser-configuration" +>Mærkegætterens indstillingsdialog</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>I</keycap +></keycombo +></shortcut +> <guimenu +>Mærker</guimenu +><guisubmenu +>Gæt mærkeinformation</guisubmenu +><guimenuitem +>Fra internet</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando forsøger at gætte mærkerne for de valgte filer ved at bruge <application +>trm</application +> som kommer med <ulink url="http://www.musicbrainz.org/" +>MusicBrainz</ulink +>.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect2> + +<sect2 id="menu-settings"> +<title +><guimenu +>Opsætnings</guimenu +>menu</title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +><guisubmenu +>Værktøjslinje</guisubmenu +> <guimenuitem +>Vis hovedværktøjslinje</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommand viser eller skjuler <link linkend="main-toolbar" +>Hovedværktøjslinjen</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +><guisubmenu +>Værktøjslinjer</guisubmenu +> <guimenuitem +>Vis spilleværktøjslinje</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando viser eller skjuler <link linkend="play-toolbar" +>Spilleværktøjslinjen</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Vis opstartsskærm ved Opstart</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Dette er et skiftevalg. Hvis det er aktivt vil &juk; vise en informationsskærm ved opstart mens denindlæser din musiksamling.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Dok i statusfelt</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Forbliv i statusfelt ved lukning</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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 <menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Afslut</guimenuitem +></menuchoice +> fra hovedvinduet, eller <guimenuitem +>Afslut</guimenuitem +>-kommandoen fra statusfeltets sammenhængsafhængige menu.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Pop sporannoncering op</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Mærkegætter...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando får <link linkend="juk-tag-guesser-configuration" +>Mærkegætterens indstillingsdialog</link +> frem, hvor du kan ændre de mønstre der bruges til at gætte mærkeinformation ud fra filnavne.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Fileomdøber...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Denne kommando får <link linkend="juk-rename-dialog" +>Filomdøberens indstillingsdialog</link +>frem, hvor du kan ændre den måde &juk; omdøber filer for dig.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Indstil genveje...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>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.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect2> + +</sect1> + +<sect1 id="keybindings"> +<title +>Tastebindingsreference</title> + +<!-- +ctrl-a select all +ctrl-c copy +ctrl-r rename file +ctrl-i guess tag entries from internet +ctrl-f guess tag entries based on filename +ctrl-f new search playlist +ctrl-n new empty playlist +ctrl-d new playlist from folder +ctrl-o open file (add to the collection or a playlist) +ctrl-q quit +ctrl-s save +ctrl-t save edited tag information +ctrl-v paste +ctrl-x cut +f1 Show manual +shift-f1 what's this help + +--> +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry +>Tastekombination</entry> +<entry +>Handling</entry> +</row> +</thead> +<tbody> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>A</keycap +></keycombo +></entry> +<entry +>Markér alle</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>C</keycap +></keycombo +></entry> +<entry +>Kopiér</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>R</keycap +></keycombo +></entry> +<entry +>Omdøb filer</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>I</keycap +></keycombo +></entry> +<entry +>Gæt mærker ud fra internettet.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +></entry> +<entry +>Gæt mærke ud fra filnavn.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +></entry> +<entry +>Ny <link linkend="juk-search-playlists" +>søgespilleliste</link +>.</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +></entry> +<entry +>Gæt mærkeværdier baseret på filnavn</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +></entry> +<entry +>Ny tom spilleliste</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +></entry> +<entry +>Ny spilleliste ud fra mappe.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +></entry> +<entry +>Gem ændringer af redigerede mærker.</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +</sect1> +</chapter> + +<chapter id="credits-and-licenses"> +<title +>Medvirkende og licens</title> + +<para +>&juk; ophavsret © 2002, 2003, 2004 &Scott.Wheeler;.</para> + +<para +>&juk; udvikles og vedligeholdes af &Scott.Wheeler; &Scott.Wheeler.mail;..</para> + +<para +>Mange tak til følgende personer som har bidraget til &juk;:</para> + +<itemizedlist> +<listitem +><para +>&Daniel.Molkentin; &Daniel.Molkentin.mail; for dokning i statusfeltet, mærkeeditering <quote +>indlejret</quote +>, fejlretninger, missionering, moralsk støtte.</para> +</listitem> +<listitem +><para +>Tim Jansen <email +>tim@tjansen.de</email +> for overførsel til <application +>GStreamer</application +></para> +</listitem> + +<listitem +><para +>Stefan Asserhäll <email +>stefan.asserhall@telia.com</email +> for global støtte af tastegenveje.</para> +</listitem> + +<listitem +><para +>Stephen Douglas <email +>stephen_douglas@yahoo.com</email +> for sporannoncerings popopper.</para> +</listitem> + +<listitem +><para +>&Frerich.Raabe; &Frerich.Raabe.mail; for automagisk gætning af spordata og fejlrettelser.</para> +</listitem> + +<listitem +><para +>Zack Rusin <email +>zack@kde.org</email +> for flere automagiske ting, inklusive støtte for MusicBrainz.</para> +</listitem> + +<listitem +><para +>Adam Treat <email +>manyoso@yahoo.com</email +> for medstuderen af MusicBrainz.</para> +</listitem> + +<listitem +><para +>Matthias Kretz <email +>kretz@kde.org</email +> for at være naboskabets venlige &arts;-guru.</para> +</listitem> + +<listitem +><para +>Maks Orlovich <email +>maksim@kde.org</email +> for at gøre &juk; venligere overfor folk med terabytes af musik.</para> +</listitem> + +<listitem +><para +>Antonio Larrosa Jimenez <email +>larrosa@kde.org</email +> for &DCOP;-grænsefladen.</para> +</listitem> + +</itemizedlist> + +<para +>Dokumentation ophavsret © 2003, ved &Lauri.Watts;, og ophavsret © 2004 ved Michael Pyne.</para> + +&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; </chapter> + +&documentation.index; + +</book> +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:0 +sgml-indent-data:nil +End: +--> diff --git a/tde-i18n-da/docs/kdemultimedia/kaboodle/Makefile.am b/tde-i18n-da/docs/kdemultimedia/kaboodle/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/kaboodle/Makefile.in b/tde-i18n-da/docs/kdemultimedia/kaboodle/Makefile.in new file mode 100644 index 00000000000..3b9345e4347 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/kaboodle/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/kaboodle/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kaboodle/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kaboodle/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kaboodle/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kaboodle/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/kaboodle/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..56a3e380d9a --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kaboodle/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/kaboodle/index.docbook b/tde-i18n-da/docs/kdemultimedia/kaboodle/index.docbook new file mode 100644 index 00000000000..a7a67e3ae13 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kaboodle/index.docbook @@ -0,0 +1,96 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "<application +>kaboodle</application +>"> + <!ENTITY package "kdemultimedia"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Danish "INCLUDE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>&kappname;-håndbogen</title> + +<authorgroup> +<author +><firstname +></firstname +> <othername +></othername +> <surname +></surname +> <affiliation +> <address +><email +></email +></address> +</affiliation> +</author> +&erik.kjaer.pedersen.role; +</authorgroup> + +<legalnotice +>&FDLNotice;</legalnotice> + +<!-- Date and version information of the documentation +Don't forget to include this last date and this last revision number, we +need them for translation coordination ! +Please respect the format of the date (YYYY-MM-DD) and of the version +(Major.minor.lesser), it could be used by automation scripts --> + +<date +>2000-09-02</date> +<releaseinfo +>0.00.00</releaseinfo> + +<!-- Abstract about this handbook --> + +<abstract> +<para +>&kaboodle; er &kde;'s hurtigmedieafspiller til at afspille en enkelt fil. </para> +</abstract> + + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>Kapp</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction" +> <title +>Indledning</title +> <para +>Desværre, dokumentationen til &kappname; var ikke færdiggjort da &kde; blev installeret på denne computer.</para +> <para +>Hvis du har brug for hjælp, så se efter opdateringer på <ulink url="http://www.kde.org" +>&kde;'s hjemmeside</ulink +> eller send dit spørgsmål til <ulink url="mailto:kde@kde.org" +>&kde;-brugerpostlisten</ulink +>.</para +> <para +><emphasis +>&kde;-holdet</emphasis +></para +> &underFDL; </chapter> + +&documentation.index; +</book> + +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:0 +sgml-indent-data:nil +End: + +// vim:ts=2:sw=2:tw=78:noet +--> diff --git a/tde-i18n-da/docs/kdemultimedia/kaudiocreator/Makefile.am b/tde-i18n-da/docs/kdemultimedia/kaudiocreator/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/kaudiocreator/Makefile.in b/tde-i18n-da/docs/kdemultimedia/kaudiocreator/Makefile.in new file mode 100644 index 00000000000..cd9f306dd77 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/kaudiocreator/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/kaudiocreator/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kaudiocreator/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kaudiocreator/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kaudiocreator/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kaudiocreator/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/kaudiocreator/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..67e21592c3a --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kaudiocreator/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/kaudiocreator/index.docbook b/tde-i18n-da/docs/kdemultimedia/kaudiocreator/index.docbook new file mode 100644 index 00000000000..e5060f0706d --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kaudiocreator/index.docbook @@ -0,0 +1,1674 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kaudiocreator "<application +>kaudiocreator 1.12</application +>"> + <!ENTITY kappname "&kaudiocreator;" +><!-- Do *not* replace kappname--> + <!ENTITY package "kdemultimedia" +><!-- kdebase, kdeadmin, etc --> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Danish "INCLUDE" +><!-- change language only here --> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>&kaudiocreator;-håndbogen</title> + +<authorgroup> +<author> +<surname +>alan</surname> +<affiliation> +<address +><email +>desværre@ingen.e-mail</email +>ingen e-mail, desværre.</address> +</affiliation> +</author> +&erik.kjaer.pedersen.role; +</authorgroup> + +<copyright> +<year +>1999</year> +<year +>2007</year> +<holder +>alan</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + +<!-- Date and version information of the documentation +Don't forget to include this last date and this last revision number, we +need them for translation coordination ! +Please respect the format of the date (YYYY-MM-DD) and of the version +(V.MM.LL), it could be used by automation scripts. +Do NOT change these in the translation. --> + +<date +>2007-01-15</date> +<releaseinfo +>1.13</releaseinfo> + +<abstract> +<para +>&kaudiocreator; er et rippeprogram af lyd-cd'er for &kde;. </para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>kaudiocreator</keyword> +<keyword +>cd</keyword> +<keyword +>ripper</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Indledning</title> + +<para +>&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.</para> + +<para +>&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).</para> + +<para +>I almindelighed er ripning af en lyd-cd en proces som består af to skridt: <itemizedlist> + <listitem +><para +>først rippes cd-sporene eller sangene til computeren som wav-filer (tabsfrit, uden komprimering) og derefter</para +></listitem> + <listitem +><para +>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.</para +></listitem> + </itemizedlist> +</para> + +<para +>&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.</para> + +<para +>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.</para> + +<para +>Hvilket indkodningsprogram eller filformat skal man bruge? Kapitlet <link linkend="what_encoder" +>Hvilken indkodning skal man bruge</link +> giver en kort introduktion om indkodning, lydkvalitet og komprimeringsfaktorer.</para> + +<para +>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!</para> + +<para +>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)?</para> + +<para +>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 <link linkend="Example" +>et fuldstændigt skridtvis eksempel</link +>. 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 :-)).</para> +<para +>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.</para> + +<para +>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 <command +>man programnavn</command +>, <command +>programnavn -help</command +>, <command +>programnavn --help</command +> eller <command +>programnavn -h</command +>.</para> + +<para +>Og nu: mor dig bare...</para> +</chapter> + +<chapter id="using-kaudiocreator"> +<title +>Brugen af &kaudiocreator;</title> + +<para +>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: </para> +<para> + +<screenshot> +<screeninfo +>Her er et skærmaftryk af &kaudiocreator;</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="kaudiocreatormainwindow800.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af hovedvinduet i &kaudiocreator;</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> +<para +>Hovedvinduet efter programmet er startet. </para> + +<sect1 id="kaudiocreator-features"> +<title +>En kort liste med funktionerne i &kaudiocreator;</title> + +<itemizedlist> + <listitem +><para +>Kan indkode mange formater, afhængig af hvilke indkodningsprogrammer som du har installeret (mp3, ogg, flac, &etc;)</para +></listitem> + <listitem +><para +>Kan hente cd-information fra freedb via internettet, eller du kan arbejde helt afkoblet, og indtaste alt i hånden</para +></listitem> + <listitem +><para +>Kan tilføje mærker til filerne som laves, afhængig af hvilket format du indkoder til</para +></listitem> + <listitem +><para +>Angiv mappenavn og sangnavn ifølge frit indstillelige kombinationer af cd-information</para +></listitem> +</itemizedlist> + +</sect1> +</chapter> + +<chapter id="commands"> +<title +>Kommandoreference</title> + +<para +>Dette er kun en kortfattet liste med kommandoer i hovedvinduet. Se <link linkend="Example" +>det fuldstændige skridtvise eksempel</link +> for flere detaljer om hvordan programmet bruges, og skærmaftryk med beskrivelser af programmets indstillingsfaneblade.</para> + +<sect1 id="kaudiocreator-mainwindow"> +<title +>Hovedvinduet i &kaudiocreator;</title> + +<sect2> +<title +>Menuen <guimenu +>Fil</guimenu +></title> +<para> +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Skub cd ud</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Åbner drevet og skubber cd'en ud.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>CDDB-opslag</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Starter CDDB-opslag af cd-data ifølge indstillingerne under fanebladet <guilabel +>Opslag</guilabel +> i fanebladet <guilabel +>CDDB</guilabel +>. (Kan være lokal eller online. I det senere tilfælde skal du først forbinde til internettet.)</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Redigér album...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Åbner albumredigeringsvinduet.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Markér alle spor</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Markerer alle spor til behandling (ripning, og hvis indstillet, indkodning).</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Afmarkér alle spor</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Afmarkerer alle spor til behandling.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Rip markerede</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Begynder at rippe, og hvis et kodningsprogram er valgt under fanebladet <guilabel +>Kodningsindstilling</guilabel +> i indstillingsdialogen, kodningen.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Fil</guimenu +> <guisubmenu +>Rip markerede</guisubmenu +> </menuchoice +></term> +<listitem +><para +><action +>Å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 <guilabel +>Kodningsindstilling</guilabel +> i indstillingsdialogen.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Fjern færdige job</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Fjerner færdige job fra jobvinduet.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Indkod fil...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Å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.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Q</keycap +></keycombo +> </shortcut +> <guimenu +>Fil</guimenu +> <guimenuitem +>Afslut</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Afslutter &kaudiocreator;.</action +></para +></listitem> +</varlistentry> +</variablelist> +</para> + +</sect2> + +<sect2> +<title +>Menuen <guimenu +>Opsætning</guimenu +></title> +<para> +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Vis/Skjul værktøjslinje</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Viser eller skjuler værktøjslinjen.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Vis/Skjul statuslinje</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Viser eller skjuler statuslinjen.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Indstil genveje...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Åbner indstillingsvinduet for at indstille genveje (tastekoder) for menukommandoer.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Indstil værktøjslinjer...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Åbner indstillingsvinduet for at indstille værktøjslinjen.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Indstil meddelelser...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Åbner indstillingsvinduet for at indstille meddelelsestypen (såsom log, bip) for programbegivenheder (såsom færdig med cd-ripning).</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Indstil &kaudiocreator;</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Å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!</action +></para +></listitem> +</varlistentry> +</variablelist> +</para> + +</sect2> + +<sect2> +<title +><guimenu +>Hjælpe</guimenu +>menuen</title> +&help.menu.documentation; </sect2> + +</sect1> +</chapter> + +<chapter id="what_encoder"> +<title +>Hvilket indkodningsprogram og filformat man skal bruge: Om lydkvalitet, indkodningsprogrammer og komprimeringsgrader</title> + +<para +>Hvilken indkodning skal man bruge?</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>I korthed:</para> + +<para +>flac <itemizedlist> + <listitem +><para +>+ tabsfri komprimering</para +></listitem> + <listitem +><para +>+ fri</para +></listitem> + <listitem +><para +>+ meget god lydkvalitet (uden tab)</para +></listitem> + <listitem +><para +>- lav komprimeringsgrad (formodentlig kun omkring 2,x)</para +></listitem> + <listitem +><para +>- understøttelse i musikafspillere mangler (så vidt jeg ved)</para +></listitem> + </itemizedlist> +</para> + +<para +>ogg <itemizedlist> + <listitem +><para +>- tab af lydinformation (hvor meget afhænger af endelig bithastighed)</para +></listitem> + <listitem +><para +>+ fri</para +></listitem> + <listitem +><para +>+ god til meget god lydkvalitet (ved høje bithastigheder)</para +></listitem> + <listitem +><para +>+ høj komprimeringsgrad (afhængig af resultatets lydkvalitet)</para +></listitem> + <listitem +><para +>- dårlig understøttelse i musikafspillere</para +></listitem> + </itemizedlist> +</para> + +<para +>mp3 <itemizedlist> + <listitem +><para +>- tab af lydinformation (hvor meget afhænger af endelig bithastighed)</para +></listitem> + <listitem +><para +>'ikke særlig' fri, lame levereres frit med de fleste distributioner, men der er licensproblemer</para +></listitem> + <listitem +><para +>+ god til meget god lydkvalitet (ved høje bithastigheder), men dog noget dårligere ved lave bithastigheder sammenlignet med ogg</para +></listitem> + <listitem +><para +>+ høj komprimeringsgrad (afhængig af resultatets lydkvalitet)</para +></listitem> + <listitem +><para +>+ god understøttelse i musikafspillere</para +></listitem> + </itemizedlist> +</para> + +<para +>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.</para> + +<para +>Hvis du ikke er en absolut fanatiker vælger du formodentlig mellem ogg og mp3. Vælg:</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>En kort liste med lydkvalitetsparametre og resulterende komprimeringsgrad for lame (mp3) (tjek lame --help for flere): <itemizedlist> + <listitem +><para +>'--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!</para +></listitem> + <listitem +><para +>'--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.</para +></listitem> + <listitem +><para +>'-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.</para +></listitem> + </itemizedlist> +</para> + +</chapter> + + +<chapter id="parameters"> +<title +>&CD;-Informationsparametre</title> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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} ...' .</para> + +<para +>Her er en opsummering af parametrene i &kaudiocreator; som du kan bruge (= navnet på knappen i guiden):</para> +<itemizedlist> + <listitem +><para +>%{albumartist} - albummets kunstner (Kunstner)</para +></listitem> + <listitem +><para +>%{albumtitle} - albummets titel (Album)</para +></listitem> + <listitem +><para +>%{artist} - sangens kunstner (Sporets kunstner)</para +></listitem> + <listitem +><para +>%{albumcomment} - kommentar om albummet (Kommentar)</para +></listitem> + <listitem +><para +>%{comment} - kommentar om sang (Sporkommentar)</para +></listitem> + <listitem +><para +>%{extension} - filendelse såsom mp3 eller ogg (Filendelse)</para +></listitem> + <listitem +><para +>%{genre} - musikgenre (Genre)</para +></listitem> + <listitem +><para +>%{title} - nuværende spors sangtitel (Sportitel)</para +></listitem> + <listitem +><para +>%{number} - nuværende spors nummer (Spornummer)</para +></listitem> + <listitem +><para +>%{~} - sædvanlig genvej til brugerens hjemmemappe i Linux (Hjemmemappe)</para +></listitem> +</itemizedlist> + +</chapter> + + +<chapter id="freedb"> +<title +>Hvad er freedb?</title> + +<para +>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.</para> + +<para +>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.</para> + +<para +>Er det lovligt og sikkert at bruge?</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.)</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>Jaså, hvordan virker det?</para> + +<para +>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.</para> + +</chapter> + + +<chapter id="faq"> +<title +>Spørgsmål og svar</title> +&reporting.bugs; &updating.documentation; <qandaset id="faqlist"> +<qandaentry> +<question> +<para +>Hvilket rippeprogram bruges til at rippe sangene fra cd'en som wav-filer på computeren?</para> +</question> +<answer> +<para +>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.</para> +<para +>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.</para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Hvilke indkodere og filformater understøttes? Kan jeg lave mp3- eller ogg-filer?</para> +</question> +<answer> +<para +>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.</para> +<para +>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 <link linkend="what_encoder" +>Hvilken indkodning</link +> for mere information om indkodningsprogrammer.</para> +<para +>Efter installation af et indkodningsprogram kan du få mere information om dets flag ved at skrive noget i retning af <command +>lame -help</command +> eller <command +>lame --help</command +> i en terminal (fx konsole), hvor <command +>lame</command +> skal erstattes af navnet på indkodningsprogrammet som du har installeret.</para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Der er ikke meget som virker her, eller hvad?</para> +</question> +<answer> +<para +>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.</para> +<para +>Å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.</para> +<para +>Der er et kapitel med <link linkend="Example" +>et fuldstændigt skridtvis eksempel</link +>. Selvom du vil bruge andre indstillinger, kan det give dig vink om hvordan du kan fortsætte.</para> +</answer> +</qandaentry> +</qandaset> +</chapter> + + +<chapter id="Example"> + +<title +>Eksempel fra første start over basale indstillinger til ripning af den første cd</title> + +<para +>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.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>Strukturen som vi bruger til at organisere musikken på harddisken er: <itemizedlist> + <listitem +><para +>Hovedmappenavn for alle cd'er: /usr/share/cd</para +></listitem> + <listitem +><para +>I den en undermappe for hver cd som hedder: cdkunstner - cdtitel - år</para +></listitem> + <listitem +><para +>I undermappen sangnavne: spornummer - sportitel</para +></listitem> + </itemizedlist> +</para> +<para +>Sammenfattende: /usr/share/cd/cdkunstner - cdtitel - år/spornummer - sportitel</para> +<para +>Sørg for at mappen <filename +>/usr/share/cd</filename +> findes og at du har skriverettigheder til den (forsøg f.eks. at kopiere noget til den med Konqueror).</para> + +<para +>Eksemplet er opdelt i to afsnit: <itemizedlist> + <listitem +><para +>Det første dækker grundlæggende indstilling af &kaudiocreator;, noget som du måske kun gør en gang, og</para +></listitem> + <listitem +><para +>Det andet beskriver processen at lave selve ripningen af en cd, som du skal gentage for hver cd du ripper.</para +></listitem> + </itemizedlist> +</para> + +<para +>Nu går vi i gang...</para> + +<sect1 id="Basic-Setup"> + <title +>E 1 Grundlæggende indstilling</title> + + <para +>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.</para> + + <para +>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.</para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.1 Skridt 01: Indstil enhedsidentifikation for cd- eller dvd-drev/brænder</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>I hovedvinduet:</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kaudiocreatormainwindow800.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af hovedvinduet i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>indstil <guilabel +>Enhed:</guilabel +> til <filename +>/dev/cdrom</filename +></para> + <para +>Enhedsidentifikationen tolkes for rippeprogrammet så det kan læse data og sange fra cd'en.</para> + <para +>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.</para> + <para +>Ingenting der, uheldigt?</para> + <para +>Hvis du kører version 2.6 af kernen:</para> + <para +>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.</para> + <para +>Hvis du kører version 2.4 af kernen:</para> + <para +>Adgang til cd- og dvd-drev sker via SCSI, så enhederne begynder med /dev/sda.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.2 Skridt 02: Indstillingsfanebladet Generelt</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Opsætning -> Indstil Kaudiocreator... -> Generelt</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="generalconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af indstillingsfanebladet Generelt i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Indstillingsfanebladet <guilabel +>Generelt</guilabel +>. 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. </para> + <para +>Markér blot <guilabel +>Spørg hvis information ikke er fuldstændig</guilabel +> så du bliver informeret om noget information om at oprette mærker ikke er tilgængelig.</para +></listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.3 Skridt 03: Indstillingsfanebladet Cd</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Opsætning -> Indstil Kaudiocreator... -> &CD;</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="cdconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af indstillingsfanebladet Cd i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Indstillingsfanebladet <guilabel +>Cd</guilabel +>. Markér blot begge indgange. Vi er dovne og ønsker at cd-data hentes automatisk via internettet fra en freedb-server.</para> + <para +>Bemærk at du skal være online når du ripper cd'en for at kunne komme til freedb-serveren.</para> + <para +>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.</para> + <para +>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.</para +></listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.4 Skridt 04: Indstillingsfanebladet CDDB Opslag</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Opsætning -> Indstil Kaudiocreator... -> CDDB -> Opslag</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="cddbconfigurationlookup.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af indstillingsfanebladet CDDB Opslag i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>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 <link linkend="freedb" +>afsnittet om freedb</link +>. Indstil kun alting som på skærmaftrykket.</para> + <para +>Kort forklaring:</para> + <para +>Tilstand: Vi har ikke hentet databasen, så vi vil kun arbejde med fjernserveren på internettet.</para> + <para +>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...</para> + <para +>Port og overførsel: Der er to kombinationer, som selv spejlsteder skulle forstå.</para> + <itemizedlist> + <listitem +><para +>Port=80 og Overførsel=&HTTP;</para +></listitem> + <listitem +><para +>Port=8880 og Overførsel=CDDB</para +></listitem> + </itemizedlist> + <para +>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.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.5 Skridt 05: Indstillingsfanebladet CDDB Indsend</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Opsætning -> Indstil Kaudiocreator... -> CDDB -> Indsend</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="cddbconfigurationsubmit.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af indstillingsfanebladet CDDB Send ind med &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>I dette eksempel vil vi ikke sende cd-data til freedb-serveren. Afmarkér det første felt, og det skulle være alt.</para> + <para +>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 <link linkend="freedb" +>afsnittet om freedb</link +>. 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.</para +></listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.6 Skridt 06: Indstillingsfanebladet Rip</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Opsætning -> Indstil &kaudiocreator;... -> Rip</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="ripperconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af indstillingsfanebladet Rip i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Overtag blot indstillingerne fra skærmaftrykket. (Sørg for at mappen <filename +>/tmp</filename +> findes på dit system!)</para> + <para +><guilabel +>Lydsignal efter hver ripning er færdig</guilabel +>: markér dette for at få en hørbar tilbagemelding af fremgangen.</para> + <para +><guilabel +>Antal spor som skal opbevares på en gang</guilabel +>: 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.</para> + <para +><guilabel +>Skub automatisk ud cd efter sidste sang er rippet</guilabel +>: Nå ja, så at du ved at det er færdigt. Gør som du vil.</para> + <para +><guilabel +>Standard midlertidig mappe</guilabel +>: 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.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.7 Skridt 07: Indstillingsfanebladet Indkoder</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Opsætning -> Indstil Kaudiocreator... -> Indkoder</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="encoderconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af indstillingsfanebladet Indkoder i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Endelig indstillingen af indkodningsprogrammet. Vi bruger lame. Her har vi lidt mere at gøre:</para> + <para +>Klik på <guilabel +>Lame</guilabel +></para> + <para +>Klik på knappen <guibutton +>Indstil...</guibutton +></para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="lameconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af Lame-indstilling i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Puha, skriv alting ligesom på skærmaftrykket. Kommandolinjen er ganske lang, så du kan behøve at panorere lidt til højre.</para> + <para +>Opsætningen er mere eller mindre selvforklarlig. Der er et mellemrum mellem '--preset' og 'extreme'.</para> + <para +>'--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?</para> + <para +>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 .</para> + <para +>Klik på <guibutton +>O.k.</guibutton +> for at lukke dialogen og anvende ændringerne.</para> + <para +><guilabel +>Indkodet fils sted</guilabel +>: Tilbage under indstillingsfanebladet <guilabel +>Kodningsindstilling</guilabel +>, 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:</para> + <para +>'/usr/share/cd/%{albumartist} - %{albumtitle} - %{year}/%{number} - %{title}.%{extension}'</para> + <para +>Indstil resten som på skærmaftrykket. Nogle kommentarer om fremtidig brug udenfor selve dette eksempel:</para> + <para +><guilabel +>Antal wav-filer som skal kodes samtidigt</guilabel +>: 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.</para> + <para +><guilabel +>Kodningsprioritet</guilabel +>: For fanatikere, leg med den hvis du føler for det. Højere er hurtigere, antager jeg!</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para +>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.</para> + +</sect1> + +<sect1 id="Ripping-a-CD"> + <title +>E 2 Rip en cd</title> + + <para +>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.</para> + <para +>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.</para> + <para +>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...</para> + <para +>Nu går vi i gang...</para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 2.1 Skridt 01: Rip en cd.</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Hovedvinduet med en lyd-cd i drevet:</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="cdinserted.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af hovedvinduet i &kaudiocreator; med indsat cd</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Hvis du ikke allerede har gjort det, så sæt cd'en ind i drevet med enhedsidentifikationen som du angav her i hovedvinduet.</para> + <para +>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.</para> + <para +>Hvis det ikke sker, så kig i afsnittet <link linkend="faq" +>Spørgsmål og svar</link +> for hjælp, eller gå tilbage til foregående afsnit som dækker den grundlæggende indstilling.</para> + <para +>Bemærk: Hvis cd'en kunne hentes fra freedb, er alle sangtitler allerede udfyldte og over sporlisten vises kunstner og albumnavn.</para> + <para +>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.</para> + <para +>Hvis du ikke har markeret feltet for automatisk at spørge freedb (<guilabel +>Cd-indstilling</guilabel +>), 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.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.2 Skridt 02: Albumeditoren - Indtast albumdata og den første sangtitel</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Dobbeltklik hvor som helst i den første blå markerede linje (spor 1):</action> + </para> + <para +>Albumeditorens vindue dukker op.</para> + <para> + <screenshot> + <mediaobject> + <imageobject +><imagedata fileref="startalbumeditor.png" format="PNG"/></imageobject> + <textobject +><phrase +>Skærmbillede af albumeditoren i &kaudiocreator;</phrase +></textobject> + </mediaobject> + </screenshot> + </para> + <para +>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.</para> + <para +>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.</para> + <para +>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.</para> + <para +>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.</para> + <para> + <screenshot> + <mediaobject> + <imageobject +><imagedata fileref="entersong1.png" format="PNG"/></imageobject> + <textobject +><phrase +>Skærmbillede af indskrivning af titel for sang 1 og albumdata i &kaudiocreator;</phrase +></textobject> + </mediaobject> + </screenshot> + </para> + <para +>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.</para> + <para +>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.</para> + <para +>Mærker understøttes måske ikke af alle indkodningsprogrammer og filformater. Kig i indkodningsprogrammets hjælp for mere information om dette.</para> + + <para +>Efter at have klikket på <guibutton +>O.k.</guibutton +>, dukker en bekræftelsesmeddelelse op:</para> + <para> + <screenshot> + <mediaobject> + <imageobject +><imagedata fileref="confirmartistcarryover.png" format="PNG"/></imageobject> + <textobject +><phrase +>Skærmbillede af bekræftelse ved ændring af albumdata i &kaudiocreator;</phrase +></textobject> + </mediaobject> + </screenshot> + </para> + <para +>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.</para> + <para +>Bemærk: Meddelelsesvinduet vises ikke hvis du for eksempel ændrer albumnavn i albumfeltet. Imidlertid er ændringen også gyldig for de andre sange.</para> + + <para +>Og et andet meddelelsesvindue:</para> + <para> + <screenshot> + <mediaobject> + <imageobject +><imagedata fileref="setalbumcategory.png" format="PNG"/></imageobject> + <textobject +><phrase +>Skærmbillede af indstilling af albumkategori i &kaudiocreator;</phrase +></textobject> + </mediaobject> + </screenshot> + </para> + <para +>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.</para> + <para +>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.</para> + <para +>Efter du har klikket på O.k. kommer du tilbage til hovedvinduet igen. Dobbeltklik blot på det andet spors linje.</para> + <para +>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.</para> + <para +>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.</para> + <para +>Bemærk: Dette meddelelsesvindue vises ikke hvis du har hentet data fra freedb. Det blev allerede sorteret ind i en af kategorierne i databasen.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 2.3 Skridt 03: Begynd at rippe</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Klik på knappen <guibutton +>Rip markerede</guibutton +> som vises på skærmaftrykket</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="readytorip.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede når rippeprocessen påbegyndes i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Det er den tredje knap i værktøjslinjen. Bemærk at kunstner og album vises over sporlisten.</para> + <para +>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 <guibutton +>Markér alle spor</guibutton +> længst nede på skærmen (vises ikke på skærmaftrykket) for at markere alle spor på en gang.</para> + + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="jobshavestarted.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af meddelelse om at job er startet i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Når du har startet rippeprocessen ved at klikke på knappen <guibutton +>Rip markerede</guibutton +>, 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.</para> + + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 2.4 Skridt 04: Følg forløbet i jobvinduet</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Klik på fanebladet <guilabel +>Job</guilabel +> for at skifte til jobvinduet. Det er længst oppe til venstre på skærmen, lige under værktøjslinjen med knapperne.</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="jobcontrol.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af jobstyringsvinduet i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>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.</para> + + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="encodernotfound.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede når indkoder ikke findes i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Å, 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.</para> + <para +>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?</para> + <para +>Lad os gøre det igen...</para> + + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="rippingandencoding.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af ripning og indkodning i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Hmm, nu kan man forstå hvorfor fejlen opstod lige da ripningen af den første sang var færdig.</para> + <para +>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.</para> + <para +>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.</para> + + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="rippingandencoding2.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skærmbillede af ripning og indkodning i &kaudiocreator; 2</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>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.</para> + <para +>Det er alt. Klar til næste cd. Nyt at lytte til din musik...</para> + </listitem> + </varlistentry> + </variablelist> + </para> + +</sect1> + +</chapter> + + +<chapter id="credits"> + +<title +>Medvirkende og licens</title> + +<para +>&kaudiocreator; </para> +<para +>Program ophavsret 2003-2007 Benjamin Meyer <email +>ben+kaudiocreator@meyerhome.net</email +> </para> +<para +>Bidragydere: <itemizedlist +> <listitem +><para +>Hidtil et enmandsshow! <email +>nej@ingen.e-mail</email +></para +></listitem> +</itemizedlist> +</para> + +<para +>Dokumentation ophavsret 2005-2007 alan <email +>desværre@ingen.e-mail</email +> </para> +<para +>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. </para> + +&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="getting-kaudiocreator"> +<title +>Hvordan får man fat i &kaudiocreator;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>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.</para> + +<para +>&kaudiocreator; vedligeholdes i dag i KDE's CVS-arkiv som en del af pakken kdemultimedia. 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 kdemultimedia fra din distribution. Hvis du læser dette, har du formodentlig allerede fundet det ... </para> + +</sect1> + +<sect1 id="compilation"> +<title +>Kompilering og installation</title> + +<para +>Mærkeligt, hvis det lykkedes at tjekke kildekoden ud fra KDE's SVN-arkiv behøver du ikke disse informationer, men ...</para> +&install.compile.documentation; </sect1> + +<sect1 id="configuration"> +<title +>Indstilling</title> + +<para +>Nå, dette afsnit er formodentlig beregnet for dem som bygger fra kildekode og ikke brugere som bruger forkompilerede pakker fra en distribution.</para> + +<para +>Desværre er der for øjeblikket ingen hjælp med indstillingstilvalg inden kildekoden kompileres.</para> + +<para +>Hvis du kigger efter hjælp til at indstille programmet efter dine behov når det kører, er det følgende for dig:</para> + +<para +>Eftersom dette er et program som kan kalde mange forskellige andre programmer er der meget at indstille. Det er bedst at læse <link linkend="Example" +>det fuldstændige skridtvise eksempel</link +> 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.</para> + +</sect1> + +</appendix> + +&documentation.index; +</book> + +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:0 +sgml-indent-data:nil +End: + +vim:tabstop=2:shiftwidth=2:expandtab +--> + diff --git a/tde-i18n-da/docs/kdemultimedia/kio_audiocd/Makefile.am b/tde-i18n-da/docs/kdemultimedia/kio_audiocd/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/kio_audiocd/Makefile.in b/tde-i18n-da/docs/kdemultimedia/kio_audiocd/Makefile.in new file mode 100644 index 00000000000..fbcafddb7ca --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/kio_audiocd/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/kio_audiocd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kio_audiocd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kio_audiocd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kio_audiocd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kioslave/Makefile.am b/tde-i18n-da/docs/kdemultimedia/kioslave/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/kioslave/Makefile.in b/tde-i18n-da/docs/kdemultimedia/kioslave/Makefile.in new file mode 100644 index 00000000000..9f7202549f2 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/kioslave/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/kioslave/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kioslave/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kioslave/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kioslave/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kioslave/audiocd.docbook b/tde-i18n-da/docs/kdemultimedia/kioslave/audiocd.docbook new file mode 100644 index 00000000000..c8f0e6147fc --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kioslave/audiocd.docbook @@ -0,0 +1,313 @@ +<article lang="&language;" id="audiocd"> +<title +>audiocd</title> +<articleinfo> +<authorgroup> +<author +>&Rik.Hemsley; &Rik.Hemsley.mail;</author> +<author +><personname +><firstname +>Benjamin</firstname +><surname +>Meyer</surname +></personname +></author> +&erik.kjaer.pedersen.role; +</authorgroup> + +<date +>2004-09-16</date> +<releaseinfo +>2.30.00</releaseinfo> + +</articleinfo> + +<para +>Tillader at behandle lyd-<acronym +>CD</acronym +>'er ligesom et <quote +>rigtigt</quote +> filsystem, hvor spor repræsenteres som filer og, når de kopieres fra mappen, bliver trukket digitalt ud fra <acronym +>CD</acronym +>'en. Dette sikrer en perfekt kopi af lyddata.</para> + +<para +>For at se hvordan denne slave virker, indsættes en lyd-<acronym +>CD</acronym +> i dit &CD-ROM;-drev og du skriver så <userinput +>audiocd:/</userinput +> i &konqueror;. I løbet af nogle få sekunder skulle du så se en liste af spor og nogle mapper.</para> + +<para +>Lyd-<acronym +>CD</acronym +>'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.</para> + +<para +>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 <acronym +>CD</acronym +>'en.</para> + +<para +>Hvis du trækker et spor fra <filename class="directory" +>Ogg Vorbis</filename +>-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 <acronym +>CD</acronym +>'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.</para> + +<para +>Mekanismen bag dette er ganske simpel. Når audiocd-slaven bliver bedt om at hente spor fra <filename class="directory" +>Ogg Vorbis</filename +>-mappen, begynder denmed at trække de digitale lyddata ud fra <acronym +>CD</acronym +>'en. Mens den sender data over til filen i din hjemmemappe, indkoder den samtidigt i Ogg Vorbis-formatet (<acronym +>CD</acronym +>-lyd er ikke et komprimeret format til at begynde med).</para> + +<para +>Du kunne også prøve at trække en fil der ender på <literal role="extension" +>.wav</literal +> 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 <literal role="extension" +>.cda</literal +>-filerne i mappen på topniveau repræsenterer) til <quote +>RIFF WAV</quote +> format, et ikke-komprimeret format som de fleste medieafspillere forstår.</para> + +<para +>&noatun; skulle nu gladeligt afspille <literal role="extension" +>.wav</literal +>-filen, men hvis der er problemer, kan du overveje at bruge <option +>paranoia_level</option +>-tilvalget der er forklaret nedenfor.</para> + +<variablelist> +<title +>Tilvalg</title> + +<varlistentry> +<term +><option +>enhed</option +></term> +<listitem> +<para +>Sæt stien til <acronym +>CD</acronym +>-lydenheden, ⪚ <userinput +>audiocd:/<option +>?device</option +>=<parameter +>/dev/sdc</parameter +></userinput +>. Normalt vil slaven forsøge at finde et <acronym +>CD</acronym +>-drev med en lyd-<acronym +>CD</acronym +> indsat, men hvis det mislykkes eller du har mere end et <acronym +>CD</acronym +>-drev, kan du forsøge dig med dette tilvalg. Bemærk at indstillingsdialogen tillader dig at sætte en standardværdi for dette tilvalg.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>fileNameTemplate</option +></term> +<listitem> +<para +>Sæt filnavn-skabelon, ⪚ <userinput +>audiocd:/<option +>?fileNameTemplate</option +>=<parameter +>Track %{number}</parameter +></userinput +>. 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.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>albumNameTemplate</option +></term> +<listitem> +<para +>Sæt albummets navneskabelon, ⪚ <userinput +>audiocd:/<option +>?albumNameTemplate</option +>=<parameter +>%{albumartist} %{albumtitle}</parameter +></userinput +>. Bemærk at indstillingsdialogen tillader dig at sætte en standardværdi for dette tilvalg. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>niceLevel</option +></term> +<listitem> +<para +>Sætter processens nice-niveau for indkodere, ⪚ <userinput +>audiocd:/<option +>?albumNameTemplate</option +>=<parameter +>niceLevel=10</parameter +></userinput +>. Bemærk at indstillingsdialogen tillader dig at sætte en standardværdi for dette tilvalg. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>paranoia_level</option +></term> +<listitem> +<para +>Sæt mængden af fejldetektion og korrektion der bruges når data trækkes ud.</para> + +<variablelist> +<varlistentry> +<term +>Niveau 0</term> +<listitem> +<para +>Ingen detektion eller korrektion. Kun brugbart hvis du har et perfekt <acronym +>CD</acronym +>-drev (usandsynligt).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Niveau 1</term> +<listitem> +<para +>Aktivér basal fejltjek og korrektion.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Niveau 2</term> +<listitem> +<para +>Standard. Angiver at kun perfekt udtrækning vil blive accepteret.</para> +</listitem> +</varlistentry> +</variablelist> + +<para +>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 <acronym +>CD</acronym +>-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 <acronym +>CD</acronym +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>cddbChoice</option +></term> +<listitem> + +<para +>Angiv hvilken <acronym +>CD</acronym +>-database på internettet der skal bruges. Lyd-<acronym +>CD</acronym +>'er har ikke navne på sporene, men <acronym +>CD</acronym +>-databaser på internettet er et smart system, som bruger en speciel entydig identifikator genereret ud fra antallet og længden af spor på hver <acronym +>CD</acronym +> 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.</para> + +<para +>Du kan indsende dine egne lister af spor ved brug af &kscd;, &kde;'s <acronym +>CD</acronym +>-afspiller.</para> + +<para +>Som standard forsøger audiocd at vælge den bedste.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title +>Eksempler</title> +<varlistentry> +<term +><userinput +>audiocd:/?device=/dev/scd0&paranoia_level=0&cddbChoice=0</userinput +></term> +<listitem> +<para +>Giver en liste af sporene på den lyd-<acronym +>CD</acronym +> der er indsat i <filename class="devicefile" +>/dev/scd0</filename +>, hvilket på &Linux; angiver den første <acronym +>SCSI</acronym +> &CD-ROM;-enhed. Hvis du kopierer spor fra <acronym +>CD</acronym +>'en, digitalt vil udtrækning blive udført uden fejlkorrektion eller -detektion. <acronym +>CDDB</acronym +>-database indgang 0 vil blive brugt.</para> +</listitem> +</varlistentry> +</variablelist> + +<qandaset> +<title +>Ofte stillede spørgsmål</title> +<qandaentry> +<question> +<para +>Jeg får <errorname +>Filen eller mappen / eksisterer ikke</errorname +>. Hvordan ordner jeg det? Jeg har en lyd-<acronym +>CD</acronym +> i mit drev!</para> +</question> + +<answer> +<para +>Prøv at køre <userinput +><command +>cdparanoia</command +> <option +>-vsQ</option +></userinput +> som digselv (ikke <systemitem class="username" +>root</systemitem +>). Ser du en liste af spor? Hvis ikke så sørg for at du har adgangstilladelse til <acronym +>CD</acronym +>-enheden. Hvis du bruger <acronym +>SCSI</acronym +>-emulering (muligt hvis du har en <acronym +>IDE</acronym +> <acronym +>CD</acronym +>-brænder) så sørg for at du hær læse- og skrivetilladelse til den generiske <acronym +>SCSI</acronym +>-enhed, som formodentlig er <filename class="devicefile" +>/dev/sg0</filename +>, <filename class="devicefile" +>/dev/sg1</filename +>, &etc;. Hvis det stadig ikke virker, så prøv at skrive <userinput +>audiocd:/?device=/dev/sg0</userinput +> (eller lignende) for at fortælle kio_audiocd hvilken enhed din &CD-ROM; er.</para +> +</answer> +</qandaentry> +</qandaset> + + +</article> diff --git a/tde-i18n-da/docs/kdemultimedia/kmid/Makefile.am b/tde-i18n-da/docs/kdemultimedia/kmid/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/kmid/Makefile.in b/tde-i18n-da/docs/kdemultimedia/kmid/Makefile.in new file mode 100644 index 00000000000..e75d392f710 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/kmid/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/kmid/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kmid/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kmid/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kmid/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kmid/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/kmid/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..486c33d8a33 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kmid/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/kmid/index.docbook b/tde-i18n-da/docs/kdemultimedia/kmid/index.docbook new file mode 100644 index 00000000000..9f08478dc1d --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kmid/index.docbook @@ -0,0 +1,1384 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kmid;"> + <!ENTITY package "kdemultimedia"> + <!ENTITY % Danish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>&kmid;-håndbogen</title> +<authorgroup> +<author +><firstname +>Antonio</firstname +> <surname +>Larrosa Jiménez</surname +> <affiliation +> <address +><email +>larrosa@kde.org</email +></address> +</affiliation> +</author> +&erik.kjaer.pedersen.role; +</authorgroup> + +<copyright> +<year +>1999</year +><year +>2001</year> +<holder +>Antonio Larrosa Jiménez</holder> +</copyright> + +<date +>2002-02-05</date> +<releaseinfo +>2.00.00</releaseinfo> + +<abstract> +<para +>&kmid; er en midi/karaoke multimedie-spiller </para> +</abstract> + +<keywordset> +<keyword +>KMid</keyword> +<keyword +>midi</keyword> +<keyword +>karaoke</keyword> +<keyword +>multimedie</keyword> +<keyword +>mid</keyword> +<keyword +>kar</keyword> +<keyword +>afspiller</keyword> +<keyword +>musik</keyword> +<keyword +>lyd</keyword> +<keyword +>fm</keyword> +<keyword +>awe</keyword> +<keyword +>gus</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Indledning</title> + +<para +>&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. </para> + +<para +>Det er rapporteret at &kmid; kører på operativsystemerne &Linux; og FreeBSD. Den bruger <acronym +>OSS</acronym +>-lyddriveren, så den bør køre på alle systemer hvor &kde; og <acronym +>OSS</acronym +> kan kompileres. &kmid; understøtter også &Linux; Ultrasound Project Driver, som kræves for at få lyd med <acronym +>GUS</acronym +>-kort. Jeg planlægger understøttelse for <acronym +>ALSA</acronym +>-driveren så snart den understøtter en sequencer-enhed. </para> + +<para +>&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. </para> + +<para +>Håber at du synes at &kmid; er lige så sjov at bruge som jeg syntes det var at udvikle den. </para> + +<para +>Antonio Larrosa Jiménez <email +>larrosa@kde.org</email +> </para> + +<sect1 id="kmids-features"> +<title +>&kmid;s funktioner</title> + +<para +>Dette er nogle af &kmid;s vigtigste funktioner: </para> + +<itemizedlist> +<listitem> +<para +>Den har en meget <emphasis +>brugervenlig grænseflade</emphasis +> til at vise Karaoke med markering af sangtekst <emphasis +>i realtid</emphasis +>. </para> +</listitem> +<listitem> +<para +>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. </para> +</listitem> +<listitem> +<para +>Den kraftfuldeste <emphasis +>håndtering af Midi-kort</emphasis +> som findes for noget operativsystem. </para> +</listitem> +<listitem> +<para +><emphasis +>Træk & slip</emphasis +> så du kan slippe en vilkårlig midi-fil i &kde; fra et &konqueror;-vindue. </para> +</listitem> +<listitem> +<para +>Du kan <emphasis +>ændre tempo</emphasis +> på sange for at spille dem langsommere eller hurtigere som du vil. </para> +</listitem> +<listitem> +<para +>Den viser lamper som følger sangens rytme. </para> +</listitem> +<listitem> +<para +><emphasis +>Brugerindstillelige skrifttyper</emphasis +> for Karaoke-teksten som skal vises. </para> +</listitem> +<listitem> +<para +>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). </para> +</listitem> +<listitem> +<para +>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å. </para> +</listitem> +<listitem> +<para +><emphasis +>Justérbar lydstyrke</emphasis +> i realtid. </para> +</listitem> +<listitem> +<para +>Den kan spille brudte midi-filer som får andre afspillere til at lave kerne-dump! </para> +</listitem> +<listitem> +<para +>Den kan åbne <emphasis +>komprimerede MIDI/Karaoke-filer</emphasis +> præcis som en hvilken som helst anden fil. </para> +</listitem> +<listitem> +<para +>Forbruger cirka <emphasis +>0,1 %</emphasis +> af min <acronym +>CPU</acronym +> (afhængig på sangens kompleksitet). </para> +</listitem> +<listitem> +<para +>Støtter ekstern midi-syntese, <acronym +>AWE</acronym +>-, <acronym +>FM</acronym +>- og <acronym +>GUS</acronym +>-kort (for det sidstnævnte må du installere <acronym +>LUP</acronym +>-driveren og gusd). </para> +</listitem> +<listitem> +<para +>Kører på &Linux; og FreeBSD (og måske også på andre Unix-systemer...). </para> +</listitem> +</itemizedlist> + +</sect1> +</chapter> + +<chapter id="general-usage"> +<title +>Almen brug</title> + +<sect1 id="opening-songs"> +<title +>Åbn sange</title> + +<para +>Du kan åbne en sang på flere forskellige måder. </para> + +<para +>Først kan du vælge <guimenuitem +>Åbn...</guimenuitem +> i menuen <guimenu +>Fil</guimenu +>, så vises en standarddialog til at åbne filer, hvor du kan vælge sangen som du vil åbne. </para> + +<para +>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. </para> + +<para +>Hvis du angiver en sang på kommandolinjen når du starter &kmid;, bliver den også åbnet. </para> + +<para +>Og den sidste måde er at vælge sangen fra listen over sange i den nuværende samling. </para> + +</sect1> + +<sect1 id="playing-songs"> +<title +>Afspil sange</title> + +<para +>For at spille en sang, åbnes den først, og derefter trykkes på knappen <guiicon +>Spil</guiicon +> i værktøjslinjen, vælg <guimenuitem +>Spil</guimenuitem +> i menuen <guimenu +>Sang</guimenu +>, eller tryk på tasten <keycap +>mellemrum</keycap +>. </para> + +<para +>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). </para> + +<para +>Når &kmid; spiller en sang, kan du flytte skyderen for at gå til en angiven position, ved at trykke med musens midterste knap. </para> + +<para +>Hvis en sang spilles for hurtigt eller for langsomt for dig, kan du trykke på knapperne på hver sider af tempo-<acronym +>LCD</acronym +>'en og få den til at spilles hurtigere eller langsommere. For at nulstille til standardtempo, dobbeltklikkes på tempo-<acronym +>LCD</acronym +>'en. </para> + +<para +>Tasten <keycap +>mellemrum</keycap +> bruges til to ting. Når musik spilles og du trykker på <keycap +>mellemrum</keycap +>, virker den som om du trykkede på knappen <guiicon +>Pause</guiicon +> eller valgte <guimenuitem +>Pause</guimenuitem +> i menuen <guimenu +>Sang</guimenu +>, dvs. den stopper musikken. Hvis du trykker på <keycap +>mellemrum</keycap +> når musik ikke spilles, begynder &kmid; at spille. </para> + +</sect1> + +<sect1 id="displaying-lyrics"> +<title +>Vis sangtekster</title> + +<para +>Det er to måder at opbevare sangtekst i en sang, ved at bruge <guimenuitem +>Tekstbegivenheder</guimenuitem +> eller <guimenuitem +>Sangtekstbegivenheder</guimenuitem +>, visse sange bruger den første måde, andre den anden, visse bruger begge, og en del indeholder ikke sangtekst overhovedet :-) </para> + +<para +>&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 <guimenuitem +>Automatisk Tekstvælger</guimenuitem +> i menuen <guimenu +>Opsætning</guimenu +>, vælges Karaoke-teksten automatisk, men du kan stadigvæk ændre indstillingen hvis du vil se den anden slags. </para> + +<para +>For at vælge hvilken slags der vises, kan du bruge et passande valg i menuen <guimenu +>Opsætning</guimenu +>, eller blot trykke på tasterne <keycap +>1</keycap +> eller <keycap +>2</keycap +> på tastaturet for at vise <guimenuitem +>Tekstbegivenheder</guimenuitem +> eller <guimenuitem +>Sangtekstbegivenheder</guimenuitem +>. </para> + +</sect1> + +</chapter> + +<chapter id="collections"> +<title +>Samlinger</title> + +<para +>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. </para> + +<sect1 id="creating-a-collection"> +<title +>Opret en samling</title> + +<para +>For at oprette en samling, åbnes først dialogen <guilabel +>Samlingshåndtering</guilabel +>, ved at vælge <guimenuitem +>Organisér...</guimenuitem +> i menuen <guimenu +>Samlinger</guimenu +>. Klik derefter på knappen <guibutton +>Ny</guibutton +>, og indskriv navnet du ønsker at samlingen skal have. </para> + +<para +>Du kan også kopiere en fuldstændig samling ved at vælge den og siden tryk på knappen <guibutton +>Kopiér</guibutton +>, som spørger om navnet på den nye samling. Fra begyndelsen kommer den nye samling til at have samme sange som den oprindelige. </para> + +<para +>Når du har mere end en samling, kan du ændre den aktive samling fra <guilabel +>Samlingshåndteringen</guilabel +>, ved at markere den. </para> + +</sect1> +<sect1 id="the-temporary-collection"> +<title +>Temporary Collection</title> + +<para +>Samlingen "Temporary Collection" er en samling som bruges til at opbevare sange som du vil spille, men ikke vil tilføje i nogen samling. </para> + +<para +>Denne samling <emphasis +>gemmes ikke</emphasis +> når du afslutter programmet, så husk det hvis du tilføjer mange sange til den. </para> + +<para +>Fortsæt med at læse dette afsnit for at forstå "Temporary Collection" bedre. </para> + +</sect1> + +<sect1 id="adding-songs-to-a-collection"> +<title +>Tilføj sange til en samling</title> +<subtitle +>Brug <guimenuitem +>Tilføj automatisk til en samling</guimenuitem +></subtitle> + +<para +>Der er et antal forskellige måder at tilføje en sang til en samling. </para> + +<para +>Du skal først af alt have samlingen markeret, du vil tilføje sange til i <guilabel +>Samlingshåndteringen</guilabel +> for hver måde. Derefter kan du trykke på knappen <guibutton +>Tilføj</guibutton +> 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. </para> + +<para +>Øvrige måder at tilføje en sang afhænger på tilstanden af tilvalget <guimenuitem +>Tilføj automatisk til samling</guimenuitem +>. </para> + +<para +>Hvis <guimenuitem +>Tilføj automatisk til samling</guimenuitem +> er aktiveret, og du åbner en sang (med <menuchoice +><guimenu +>Fil</guimenu +> <guimenuitem +>Åbn...</guimenuitem +></menuchoice +> eller træk & slip) tilføjes den (de) til den aktive samling uden påvirkning fra brugeren. </para> + +<para +>Hvis <guimenuitem +>Tilføj automatisk til samling</guimenuitem +> ikke er aktivt, og du åbner en sang så vælges og ryddes "Temporary Collection", og de åbnede sange tilføjes til den. </para> + +</sect1> + +<sect1 id="removing-songs-from-collections"> +<title +>Fjern sange fra samlinger</title> + +<para +>For at fjerne en sang fra en samling, åbnes blot <guilabel +>Samlingshåndteringen</guilabel +>, samlingen markeres, og sangen som du vil fjerne, så klikkes på knappen <guibutton +>Fjern</guibutton +>. </para> + +</sect1> + +<sect1 id="playing-order"> +<title +>Spil i rækkefølge eller tilfældigt</title> + +<para +>Du kan vælge rækkefølgen som sange spilles. Når du vælger tilstanden <guimenuitem +>I rækkefølge</guimenuitem +> fra undermenuen <guisubmenu +>Spilrækkefølge</guisubmenu +> i menuen <guimenu +>Samlinger</guimenu +>, spilles sange i samme rækkefølge som de er tilføjet til samlingen. </para> + +<para +>Når du vælger tilstanden <guimenuitem +>Bland</guimenuitem +>, 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 <guibutton +>Foregående sang</guibutton +>, ikke sandt? :-) ). </para> + +<para +>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 <guimenuitem +>Bland</guimenuitem +> i menuen. </para> + +</sect1> + +<sect1 id="selecting-from-a-collection"> +<title +>Vælg en sang fra en samling</title> + +<para +>Du kan vælge en sang at spille i <guilabel +>Samlingshåndteringen</guilabel +>, eller ved at bruge dropned-feltet ovenfor Karaoke-teksten. </para> + +<para +>Du kan også skifte til næste sang ved at bruge <literal +>Næste sang</literal +> i menuen <literal +>Sang</literal +>, knappen <literal +>Næste sang</literal +> i værktøjslinjen, eller ved at trykke på tasten <literal +>højrepil</literal +>. </para> + +<para +>For at skifte til foregående sang, bruges <literal +>Foregående sang</literal +> i menuen <literal +>Sang</literal +>, knappen <literal +>Foregående sang</literal +> i værktøjslinjen, eller der trykkes på tasten <literal +>venstrepil</literal +> på tastaturet. </para> + +</sect1> + +<sect1 id="deleting-a-collection"> +<title +>Fjern en samling</title> + +<para +>For at fjerne en samling, åbnes helt enkelt <guilabel +>Samlingshåndteringen</guilabel +>, samlingen markeres som du vil fjerne, og der klikkes på <guibutton +>Fjern</guibutton +>. Enkelt, ikke sandt? </para> + +<para +>Husk at du ikke kan fjerne "Temporary Collection", men det spiller ikke nogen rolle eftersom den ikke gemmes når du afslutter &kmid;. </para> + +</sect1> + +</chapter> + +<chapter id="midi-maps"> +<title +>Midi-kort</title> + +<sect1 id="what-is-a-midimap"> +<title +>Hvad er et midi-kort?</title> + +<para +>Et midi-kort er noget som oversætter midi-begivenheder til andre midi-begivenheder. </para> + +<para +>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. </para> + +<para +>Du kan for eksempel oprette et midi-kort som ændrer alle begivenheder <literal +>Ændr patch til piano</literal +>, til <literal +>Ændr patch til trompet</literal +>, så når en sang forsøger at spille en piano, så spilles en trompet i stedet. </para> + +<para +>Dette kan lyde mærkeligt (hvorfor spille en trompet når sangen er lavet til at spille et piano?), men det er meget nyttigt. <acronym +>GM</acronym +>-standarden angiver at et midi-keyboard skal skifte til <literal +>flygel</literal +> når det modtager en begivenhed til at skifte patch til <literal +>0</literal +>, men en ældre synthesizer ændrer for eksempel til en <literal +>elektrisk guitar</literal +> når den modtager <literal +>0</literal +>. Dette ældre keyboard behøver at modtage <literal +>3</literal +> (for eksempel) for at skifte til et <literal +>piano</literal +>. Her træder midi-kort ind og skifter alle <literal +>ændr patch til 0</literal +> til <literal +>ændr patch til 3</literal +> og på denne måde spilles virkelig det rigtige instrument når det skal. </para> + +</sect1> + +<sect1 id="do-i-need-a-midi-map"> +<title +>Behøver jeg et midi-kort?</title> + +<para +>I korthed, hvis du ikke har en ekstern synth, <emphasis +>nej</emphasis +>! </para> + +<para +>Hvis du kun har et lydkort, behøves midi-kort ikke eftersom alle lydkort understøtter <acronym +>GM</acronym +> (dette omfatter AWE-kort, <acronym +>GUS</acronym +>-kort, <acronym +>FM</acronym +>-enheder og så videre). </para> + +<para +>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 <acronym +>GM</acronym +>, og ikke har så mange instrumenter som en <acronym +>GM</acronym +>-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 <acronym +>GM</acronym +>). </para> + +</sect1> + +<sect1 id="creating-a-midi-map"> +<title +>Opret et midi-kort</title> + +<para +>Der er ikke noget program til at oprette midi-kort, så du skal redigere en fil i hånden (med din foretrukne teksteditor). </para> + +<para +>Et midi-kort er en tekstfil som indeholder alle nødvendige oversættelser som laves når musikken spilles. </para> + +<para +>Den består af fire dele: <literal +>PATCHMAP</literal +>, <literal +>KEYMAP</literal +>, <literal +>CHANNELMAP</literal +> og <literal +>OPTIONS</literal +>. </para> + +<para +>Hver del må kun forekomme en gang, bortset fra afsnittet <literal +>KEYMAP</literal +>som 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). </para> + +<para +>Den generelle struktur for en kortfil er: </para> + +<screen +>DEFINE PATCHMAP +... +END + +DEFINE KEYMAP "Navn på tastekort" +... +END + +DEFINE KEYMAP "Et andet tastekort" +... +END + +DEFINE CHANNELMAP +... +END + +OPTIONS +... +END +</screen> + +<para +>Du kan se at nøgleordet <literal +>DEFINE</literal +> bruges til at angive hvilket afsnit der bliver startet (bortset fra at <literal +>OPTIONS</literal +>), og <literal +>END</literal +> skrives ved slutningen af hvert afsnit. </para> + +<para +>Du kan angive kommentarer ved at indlede linjen med et <literal +>#</literal +>-tegn. </para> + +<para +>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. </para> + +<sect2 id="the-patchmap-section"> +<title +>Afsnittet <literal +>PATCHMAP</literal +></title> + +<para +>Dette afsnit bruges til at angive hvordan patcher skal oversættes fra GM til specifikationen for dit keyboard. Den generelle brug er: </para> + +<screen +>(Navn på GM-patch)=(<replaceable +>N</replaceable +>) [AllKeysTo M] +</screen> + +<para +>Hvor <replaceable +>N</replaceable +> er tallet som dit keyboard behøver at tage imod for at ændre patchen til det samme som GM-standarden bruger. </para> + +<para +>Bemærk at venstresiden af lighedstegnet ignoreres, så <acronym +>GM</acronym +>-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. </para> + +<para +>Det valgfrie <literal +>AllKeysTo M</literal +> bruges til at oversætte alle toner som bruger det instrumentet til tasten <literal +>M</literal +>. 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 <literal +>PATCHMAP</literal +>: </para> + +<screen +>Pistolskud =100 AllKeysTo 60</screen> + + +<para +>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). </para> + +<para +>Bemærk at når jeg bruger udtrykket <quote +>Slagværkspatch</quote +>, 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. </para> + +</sect2> + +<sect2 id="The-keymap-section"> +<title +>Afsnittet <literal +>KEYMAP</literal +></title> + +<para +>Afsnittet <literal +>KEYMAP</literal +> bruges til at angive hvordan taster oversættes, for en given kanal eller instrument. Det bruges sådan her: </para> + +<screen +>DEFINE KEYMAP "Navn på tastekortet" +C 0 =0 +C#0 =1 +D 0 =2 +... +END +</screen> + +<para +>Som for afsnittet <literal +>PATCHMAP</literal +>, er linjernes rækkefølge meget vigtig, og at alle er der (128 taster). </para> + +<para +>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. </para> + +<para +>Tastekort bruges hovedsageligt til at oversætte taster for slagværkskanalen. Kig i de medfølgende kort for at se nogle eksempler. </para> + +</sect2> + +<sect2 id="the-channelmap-section"> +<title +>Afsnittet <literal +>CHANNELMAP</literal +></title> + +<para +>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 <literal +>CHANNELMAP</literal +>. </para> + +<para +>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). </para> + +<para +>Bemærk at midi-enheder bruger 16 kanaler, så afsnittet <literal +>CHANNELMAP</literal +>har 16 linjer, fra 0 til 15, som denne her: </para> + +<screen +>(N) = (M) [Keymap "Navn"] [ForcePatch x] +</screen> + +<para +>Hvor <literal +>N</literal +> er kanalen som oversættes til kanalen <literal +>M</literal +>. Hvis tilvalget <literal +>Keymap</literal +> angives, kommer tastekortet med navnet <literal +>Navn</literal +>til at bruges for denne kanal (dette tastekort skal angives tidligere i kortfilen!). Hvis tilvalget <literal +>ForcePatch</literal +> angives, kommer alle begivenheder som forsøger at ændre patchen som bruges for denne kanal, til at blive ignoreret, og patchen <literal +>x</literal +> bruges i stedet. </para> + +<para +>Tilvalget <literal +>ForcePatch</literal +> kan være nyttigt til for eksempel altid at bruge slagværkspatchen på slagværkskanalen. </para> + +</sect2> + +<sect2 id="the-options-section"> +<title +>Afsnittet <literal +>OPTIONS</literal +></title> + +<para +>Afsnittet <literal +>OPTIONS</literal +> har en del generelle valgmuligheder som kan være meget nyttige: </para> + +<screen +>OPTIONS +PitchBenderRatio = r +MapExpressionToVolumeEvents +END +</screen> + +<para +>Du kan angive begge valgmuligheder, kun en, eller ingen af dem. </para> + +<para +>Værdien <literal +>PitchBenderRatio r</literal +>, 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 <literal +>n</literal +>, kommer den rigtige værdi som sendes til at være <literal +>n*(r/4096)</literal +> (værdien <literal +>4096</literal +> er der for ikke at behøve at angive decimalkommaer i kortfilen). </para> + +<para +>Dette bruges fordi <acronym +>GM</acronym +>-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. </para> + +<para +>Når tilvalget <literal +>MapExpressionToVolumeEvents</literal +> 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. </para> + +</sect2> + +</sect1> + +<sect1 id="using-midimaps"> +<title +>Brug af midi-kort</title> + +<para +>For at bruge et midi-kort, åbnes helt enkelt dialogen <guilabel +>Indstil midi-enheder</guilabel +> ved at vælge <guimenuitem +>Opsætning for midi...</guimenuitem +> i menuen <guimenu +>Opsætning</guimenu +>. </para> + +<para +>Klik derefter på <guilabel +>Gennemsøg...</guilabel +>, vælg kortfilen i dialogen og nyd musikken! :-) </para> +</sect1> +</chapter> + +<chapter id="advanced-features"> +<title +>Avancerede funktioner</title> + +<sect1 id="the-channel-view"> +<title +>Kanalviseren</title> + +<para +>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. </para> + +<sect2 id="changing-instruments"> +<title +>Skift instrument</title> + +<para +>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. </para> + +<para +>Hvis du vil vælge standard-instrumentet igen, så klik på den røde knap, så vælges det automatisk. </para> + +</sect2> + +<sect2 id="changing-the-look"> +<title +>Skift udseende-tilstand</title> + +<para +>Kanalvisningen har to forskellige måder at vise spillede toner (for øjeblikket), som du kan vælge fra <guimenuitem +>Kanalvisningsindstillinger...</guimenuitem +> i <guimenu +>Opsætnings</guimenu +>menuen. </para> + +<para +>Du kan vælge en tilstand hvor spillede taster trykkes ned, som om det var et almindeligt piano (<guilabel +>3D-udseende</guilabel +>), eller en tilstand hvor taster også udfyldes med rød farve, så nedtrykkede taster let genkendes (<guilabel +>3D - fyldte</guilabel +>). 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). </para> + +</sect2> + +</sect1> + +<sect1 id="the-tempo-lcd"> +<title +>Tempo <acronym +>LCD</acronym +></title> + +<para +>Dette viser tempoet som en sang spilles med, dvs. sangens hastighed. Jo højere dette tal er, desto hurtigere spilles sangen. </para> + +<para +>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 <acronym +>LCD</acronym +>'en til at ændre tempo. </para> + +<para +>Når du har ændret tempo, kan du få standardtempoet tilbage ved at dobbeltklikke på <acronym +>LCD</acronym +>'en. </para> + +</sect1> + +</chapter> + +<chapter id="key-bindings"> +<title +>Tastebindinger</title> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry +>Tast</entry> +<entry +>Handling</entry> +</row> +</thead> +<tbody> +<row> +<entry +><keycap +>Mellemrum</keycap +></entry> +<entry +>Spil sangen som er indlæst hvis den ikke spilles, eller hold pause hvis den allerede spilles.</entry> +</row> +<row> +<entry +><keycap +>Backspace</keycap +></entry> +<entry +>Stop med at spille</entry> +</row> +<row> +<entry +><keycap +>Højre pil</keycap +></entry> +<entry +>Næste sang i den nuværende samling</entry> +</row> +<row> +<entry +><keycap +>Venstre pil</keycap +></entry> +<entry +>Foregående sang i den nuværende samling</entry> +</row> +<row> +<entry +><keycap +>Opad pil</keycap +></entry> +<entry +>Rul sangteksten en linje opad</entry> +</row> +<row> +<entry +><keycap +>Nedad pil</keycap +></entry> +<entry +>Rul sangteksten en linje nedad</entry> +</row> +<row> +<entry +><keycap +>Page Up</keycap +></entry> +<entry +>Rul sangteksten en side opad</entry> +</row> +<row> +<entry +><keycap +>Page Down</keycap +></entry> +<entry +>Rul sangteksten en side nedad</entry> +</row> +<row> +<entry +><keycap +>1</keycap +></entry> +<entry +>Vis tekstbegivenheder</entry> +</row> +<row> +<entry +><keycap +>2</keycap +></entry> +<entry +>Vis sangtekstbegivenheder</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +></entry> +<entry +>Åbn en sang</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>Q</keycap +></keycombo +></entry> +<entry +>Afslut &kmid;</entry> +</row> +<row> +<entry +><keycap +>F1</keycap +></entry> +<entry +>Åbn dette dokument</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +</chapter> + +<chapter id="frequently-asked-questions"> +<title +>Ofte stillede spørgsmål(OSS)</title> + +<qandaset> +<qandaentry> +<question> +<para +>Nøjagtigt hvad er en midi-fil? </para> +</question> + +<answer> +<para +>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. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jeg kan få bedre lyd med en mp3/wav-spiller, hvorfor skulle jeg så bruge &kmid;? </para> +</question> +<answer> +<para +>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. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jeg kan ikke få mit AWE-kort til at virke med KMid, hvad kan jeg gøre? </para> +</question> +<answer> +<para +>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 <ulink url="http://www.arrakis.es/~rlarrosa/kmid.html" +>&kmid;s hjemmeside</ulink +>) </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jeg vil tilføje en hel mappe til en samling, men at skulle tilføje midi-filerne en af gangen er ikke morsomt. </para> +</question> + +<answer> +<para +>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;. </para> +<para +>Sørg for at tilvalget <guimenuitem +>Tilføj automatisk til samling</guimenuitem +> er aktiveret, så filerne tilføjes til den nuværende samling. Hvis du ikke gør dette, bliver filerne tilføjet til "Temporary Collection". </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jeg kan ikke følge med i sangteksten, den spilles for hurtigt! </para> +</question> +<answer> +<para +>Du kan trykke på venstrepilen i Tempo <acronym +>LCD</acronym +>'en for at få den til at spille langsommere. Husk at du kan dobbeltklikke på <acronym +>LCD</acronym +>'en for at få standardtempoet tilbage. </para +> +</answer> +</qandaentry> +</qandaset> + +</chapter> + +<chapter id="final-notes"> +<title +>Slutbemærkninger</title> + +<sect1 id="some-tips-and-tricks"> +<title +>Nogle vink</title> + +<para +>Jeg inkluderer nogle vink så at du kan drage fordel af alle funktioner i &kmid; i fuld udstrækning: </para> + +<variablelist> +<varlistentry> +<term +>Åbn filer</term> +<listitem> +<para +>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. </para> + +<para +>Antag at du vil spille nogle midi-filer, men ikke vil tilføje dem til nogen samling. Luk så blot for <guimenuitem +>Tilføj automatisk til samling</guimenuitem +> i menuen <guimenu +>Samlinger</guimenu +>, og åbn filerne, så tilføjes de til "Temporary Collection". </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>En anden måde at oprette en ny samling</term> +<listitem> +<para +>Antag at du har midi-filerne <filename +>A.mid</filename +>, <filename +>B.mid</filename +> og <filename +>C.mid</filename +>. Først vil du kun spille den første midi-fil, så du lukker for <guimenuitem +>Tilføj automatisk til samling</guimenuitem +> og åbner <filename +>A.mid</filename +>. Så får du en "Temporary Collection" med kun en midi-fil. </para> +<para +>Derefter bestemmer du dig for også at spille B og C, og lave en samling med allesammen. Hvad gør du så? </para> +<para +>Let, vælg <guimenuitem +>Tilføj automatisk til samling</guimenuitem +> og åbn <filename +>B.mid</filename +> og <filename +>C.mid</filename +> (med en af de forskellige metoder), så tilføjes de automatisk til "Temporary Collection", som nu indeholder <filename +>A.mid</filename +>, <filename +>B.mid</filename +> og <filename +>C.mid</filename +>. Åbn nu dialoge <guilabel +>Samlingshåndteringen</guilabel +>, markér "Temporary Collection", og klik på knappen <literal +>Kopiér</literal +>, 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;. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="hall-of-kmids-friends"> +<title +>Galleri med &kmid;s venner</title> + +<para +>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;. </para> + +<itemizedlist> +<listitem> +<para +>Ola Sigurdson - <literal +>Taking Care of Business</literal +> (Bachman Turner Overdrive)</para> +</listitem> +<listitem> +<para +>EG Lim - Et virkelig smukt postkort fra Penang.</para> +</listitem> +<listitem> +<para +>Guenther Starnberger - <literal +>Amadeus</literal +> (Falco) og <literal +>Schrei Nach Liebe</literal +> (Die Ärzte)</para> +</listitem> +<listitem> +<para +>Leandro Terrés - <literal +>All That She Wants</literal +> og <literal +>The Sign</literal +> (Ace of Base)</para> +</listitem> +<listitem> +<para +>Nick Stoic - To midi-filer</para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="about-the-author"> +<title +>Om forfatteren</title> + +<para +>&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 ;-). </para> + +<para +>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 <email +>larrosa@kde.org</email +> eller <email +>antlarr@arrakis.es</email +> </para> + +<para +>eller skriv til mig med almindelig post: </para> + +<literallayout +>Antonio Larrosa Jimenez +Rio Arnoya 10 5B +Malaga (Spanien) +</literallayout> + +<para +>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. </para> + +<para +>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). </para> + +<para +>Jeg vil gerne takke følgende personer for deres hjælp med at udvikle &kmid;: </para> + +<itemizedlist> +<listitem> +<para +>Paul J. Leonard <email +>P.J.Leonard@bath.ac.uk</email +> - understøttelse for AWE-kort </para> +</listitem> +<listitem> +<para +>Sebestyen Zoltan <email +>szoli@digo.inf.elte.hu</email +>- overførsel til FreeBSD og test af AWE </para> +</listitem> +<listitem> +<para +>Christian Esken <email +>esken@kde.org</email +> - for at have organiseret anstrengelserne med KDE's multimedia </para> +</listitem> +<listitem> +<para +>Stephan Kulow <email +>coolo@kde.org</email +>- konfigurationscripter og hjælp med <command +>automake</command +> og <command +>CVS</command +> </para> +</listitem> +<listitem> +<para +>Jaroslav Kysela - hjælp med at få understøttelse for &Linux; Ultrasound Project driveren </para> +</listitem> +<listitem> +<para +>Takashi Iwai og Joseph H. Buehler - Rettelser for at tonehøjden på AWE-kort var for høj </para> +</listitem> +<listitem> +<para +>Adrian Knoth - for at have givet mig gode nyheder og mange forslag </para> +</listitem> +<listitem> +<para +>Kevin Street - programrettelser for at støtte FreeBSD 3.0 </para> +</listitem> +<listitem> +<para +>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. </para> +</listitem> +<listitem> +<para +>Og naturligvis til alle fantastiske musikere på nettet som fortsætter med at give os alle de vidunderlige MIDI- og Karaoke-filer. </para> +</listitem> +</itemizedlist> + +&erik.kjaer.pedersen.credit; + +</sect1> + +<sect1 id="copyright-and-license"> +<title +>Ophavsret og licens</title> + +<para +>&kmid; ophavsret Antonio Larrosa Jiménez, 1999-2001</para> + +<para +>Dokumentation ophavsret Antonio Larrosa Jiménez 1999, 2001</para> +&underFDL; &underGPL; </sect1> + +</chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="how-to-obtain-kmid"> +<title +>Hvordan får man fat på &kmid;</title> +&install.intro.documentation; <para +>Desuden findes &kmid; på sin egen hjemmeside, som er på <ulink url="http://www.arrakis.es/~rlarrosa/kmid.html" +> http://www.arrakis.es/~rlarrosa/kmid.html</ulink +>. 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. </para> + +</sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>For at virke kræver &kmid;:</para> + +<itemizedlist> +<listitem> +<para +>&kde;. Nå, det har du formodentlig allerede :-) </para> +</listitem> +<listitem> +<para +>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. </para> + +<para +>Hvis du ikke har et lydkort, kan du stadigvæk kompilere kmid; med <literal +>MODE_DEMO_ONLYVISUAL</literal +> defineret og den kører som om du havde et kort (med du hører naturligvis ingen musik :-( ). </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="compilation-and-installation"> +<title +>Kompilering og installation</title> +&install.compile.documentation; <para +>Jeg har vedlagt nogle eksempler som installeres i <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/kmid</filename +>. </para> + +<para +>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. </para> + +</sect1> + +</appendix> + +</book> +<!-- +Local Variables: +mode: sgml +sgml-omittag: nil +sgml-shorttag: t +End: +--> diff --git a/tde-i18n-da/docs/kdemultimedia/kmix/Makefile.am b/tde-i18n-da/docs/kdemultimedia/kmix/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/kmix/Makefile.in b/tde-i18n-da/docs/kdemultimedia/kmix/Makefile.in new file mode 100644 index 00000000000..fc6ec883ee9 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/kmix/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/kmix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kmix/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kmix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kmix/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kmix/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/kmix/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..b729696cc41 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kmix/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/kmix/index.docbook b/tde-i18n-da/docs/kdemultimedia/kmix/index.docbook new file mode 100644 index 00000000000..18568803f03 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kmix/index.docbook @@ -0,0 +1,924 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kmix;"> + <!ENTITY package "kdemultimedia"> + <!ENTITY % Danish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>&kmix;-håndbogen</title> + +<authorgroup> +<author +><firstname +>Matt</firstname +> <surname +>Johnston</surname +> <affiliation +> <address +>&Matt.Johnston.mail;</address> +</affiliation> +</author> + +<othercredit role="developer" +><firstname +>Christian</firstname +> <surname +>Esken</surname +> <affiliation +><address +><email +>esken@kde.org</email +></address +></affiliation> +<contrib +>Udvikler</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Helio</firstname +> <surname +>Chissini de Castro</surname +> <affiliation +><address +><email +>helio@kde.org</email +></address +></affiliation> +<contrib +>Udvikler</contrib> +</othercredit> + + +<othercredit role="developer" +><firstname +>Stefan</firstname +> <surname +>Schimanski</surname +> <affiliation +><address +><email +>1Stein@gmx.de</email +></address +></affiliation> +<contrib +>Udvikler</contrib> +</othercredit> + +<othercredit role="reviewer" +><firstname +>Lauri</firstname +> <surname +>Watts</surname +> <affiliation +><address +>&Lauri.Watts.mail;</address +></affiliation> +<contrib +>Tester</contrib> +</othercredit> +&lars.schunk.role; &erik.kjaer.pedersen.role; +</authorgroup> + +<copyright> +<year +>1996</year +><year +>2005</year> +<holder +>Christian Esken & &Matt.Johnston;</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2007-01-05</date> +<releaseinfo +>2.6.1</releaseinfo> + +<abstract +><para +>&kmix; er et program som lader dig ændre lydstyrken på dit lydkort.</para +></abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>KMix</keyword> +<keyword +>kdemultimedia</keyword> +<keyword +>lyd</keyword> +<keyword +>lydstyrke</keyword> +<keyword +>mikser</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Indledning</title> + +<para +>&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.</para> + +<para +>&kmix; understøtter adskillige platforme og lyddrivere:</para> + +<itemizedlist> +<listitem +><para +>ALSA-lydkortdriveren.</para +></listitem> +<listitem +><para +>Alle Open Sound System-platforme. &Linux;, FreeBSD, NetBSD og BSDI er eksplicit testet.</para +></listitem> +<listitem +><para +>&Solaris;-baserede maskiner.</para +></listitem> +<listitem +><para +>&IRIX;-baserede maskiner.</para +></listitem> +<listitem +><para +>&HP-UX;-baserede maskiner.</para +></listitem> +</itemizedlist> + +<para +>Hvis du både har installeret ALSA og Open Sound System drivere, bruger &kmix; ALSA-driveren.</para> + +</chapter> + +<chapter id="working-with-kmix"> +<title +>Arbejd med &kmix;</title> + +<sect1 id="basic-usage"> +<title +>Det basale</title> + +<para +>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. <screenshot> +<screeninfo +>&kmix; hovedvindue</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-window.png" format="PNG"/></imageobject> +<textobject +><phrase +>&kmix; hovedvindue</phrase +></textobject> +</mediaobject> +</screenshot> + +</para> + + +<para +>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. <simplelist> +<member +><guilabel +>Output</guilabel +>: Dette indeholder kontroller som for det meste har med afspilning at gøre, såsom lydstyrkekontrollen <guilabel +>Master</guilabel +>.</member> +<member +><guilabel +>Input</guilabel +>: Dette indeholder alle kontroller som for det meste har med indspilning at gøre, såsom <guilabel +>Capture</guilabel +>.</member> +<member +><guilabel +>Afbrydere</guilabel +>: Dette indeholder alle kontroller som lader dig lukke af eller slå til for en funktion (såsom "Mic Boost (+20dB)"), og flervalgskontroller (såsom <guilabel +>Mic Select</guilabel +>: <guilabel +>Mic1</guilabel +> eller <guilabel +>Mic2</guilabel +>).</member> +</simplelist> +</para> + +<para +>Foruden lydstyrkekontroller, indeholder &kmix; også lysdioder. Den generelle farvelægningsregel er:</para> +<simplelist> +<member +>Grøn: En lysdiode som har med afspilning at gøre</member> +<member +>Rød: En lysdiode som har med indspilning at gøre</member> +<member +>Gul: En lysdiode som har med særlige funktioner på lydkortet at gøre</member> +</simplelist> +<para +>De tre farver har to varianter: En tændt lysdiode betyder TIL, og en slukket lysdiode betyder FRA.</para> +</sect1> + +<sect1 id="volume-sliders"> +<title +>Lydstyrkekontroller</title> + +<para +>Lydstyrkekontrollerne under fanebladene <guilabel +>Output</guilabel +> og <guilabel +>Input</guilabel +> består af (oppefra og nedad): <screenshot> +<screeninfo +>Lydstyrkekontrol (fanebladet <guilabel +>Input</guilabel +>)</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-channel-playback.png" format="PNG"/></imageobject> +<textobject +><phrase +>Lydstyrkekontrol (fanebladet <guilabel +>Input</guilabel +>)</phrase +></textobject> +</mediaobject> +</screenshot> + +<simplelist> +<member +>En ikon som repræsenterer kontrollens funktion.</member> +<member +>En indikering af lydstyrkens værdi (valgfri).</member> +<member +>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).</member> +<member +>Et skyder for lydstyrkekontrol (vink: du kan skjule skyderens navn, for eksempel hvis mixeren optager for meget plads på skærmen).</member> +<member +>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.</member> +</simplelist> + +<screenshot> +<screeninfo +>Lydstyrkekontrol med indspilningsafbryder (fanebladet <guilabel +>Output</guilabel +>)</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-channel-record.png" format="PNG"/></imageobject> +<textobject +><phrase +>Lydstyrkekontrol med indspilningsafbryder (fanebladet <guilabel +>Output</guilabel +>)</phrase +></textobject> +</mediaobject> +</screenshot> + +</para> + + +<para +>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. </para> + +<variablelist> +<varlistentry> +<term +><guimenuitem +>Opsplit kanaler</guimenuitem +></term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Uden lyd</guimenuitem +></term> +<listitem +><para +>Tænd eller sluk for enheden.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Skjul</guimenuitem +></term> +<listitem +><para +>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 <guimenuitem +>Kanaler</guimenuitem +> (se nedenfor).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Indstil globale genveje...</guimenuitem +></term> +<listitem +><para +>Du kan kontrollere en enhed med dit tastatur. Brug dette menuvalg til at vise &kde;'s <guilabel +>Indstil genveje</guilabel +>-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.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Kanaler</guimenuitem +></term> +<listitem +><para +>En dialog vises hvor du kan indstille hvilke kanaler du vil se under hvert faneblad (<guilabel +>Output</guilabel +>, <guilabel +>Input</guilabel +>, <guilabel +>Afbrydere</guilabel +>).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Vis/Skjul menulinje</guimenuitem +></term> +<listitem +><para +>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 <keycombo action="simul" +>&Ctrl;<keycap +>M</keycap +></keycombo +>).</para +></listitem> +</varlistentry> + +</variablelist> +</sect1> + +<sect1 id="switches"> +<title +>Afbrydere og flervalgskontroller</title> + +<para +>Kontrollerne under fanebladet <guilabel +>Afbrydere</guilabel +> består af en lysdiode og en kort etiket som beskriver funktionen. Fanebladet <guilabel +>Afbrydere</guilabel +> 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 <guilabel +>Kanaler</guilabel +> og <guilabel +>Vis/Skjul menulinje</guilabel +> som allerede beskrevet. <screenshot +><screeninfo +>Afbrydere og flervalgskontroller (fanebladet <guilabel +>Afbrydere</guilabel +>)</screeninfo +> <mediaobject +> <imageobject +> <imagedata fileref="kmix-channel-switches.png" format="PNG"/></imageobject +> <textobject +><phrase +>Afbrydere og flervalgskontroller (fanebladet <guilabel +>Afbrydere</guilabel +>)</phrase +></textobject +> </mediaobject +></screenshot +> 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 <guilabel +>IEC958 Output</guilabel +> lysdiode (gul = specialkontrol), en tændt <guilabel +>Mix</guilabel +> lysdiode (rød = indspilningsrelateret), en slukket indspilningsrelateret lysdiode, en tændt specialkontrol og en flervalgskontrol (<guilabel +>PCM Out Path & Mute</guilabel +>). 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 <ulink url="http://www.alsa-project.org" +>ALSA</ulink +>). </para> + +</sect1> + +<sect1 id="panning-slider"> +<title +>Panoreringsskyder</title> + +<para +>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.</para> +<para +>Vær klar over at for surround-system styrer hovedenheden ofte kun de forreste højtalere. Dette er en begrænsning i lydkortets drivere.</para +> +<para +>Hvis lydkortet ikke har en hovedenhed, kan en anden enhed vælges af &kmix;. For de fleste er det <guilabel +>Wave</guilabel +>-kontrollen (eller <guilabel +>PCM</guilabel +>-kontrollen).</para> + +</sect1> + +<sect1 id="configuration-options"> +<title +>Indstillingsmuligheder</title> + +<para +>Brug <menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Indstil &kmix;...</guimenuitem +></menuchoice +> i menulinjen for at vælge indstillinger. Disse punkter er:</para> + +<variablelist> +<varlistentry> +<term +><guilabel +>Dok i panel</guilabel +></term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Aktivér kontrol af lydstyrke i statusfelt</guilabel +></term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Vis tikmærker</guilabel +></term> +<listitem +><para +>Vis linjer til at markere positioner på skyderne.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Vis etiketter</guilabel +></term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Genopret lydstyrker ved login</guilabel +></term> +<listitem +><para +>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).</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Lydstyrkeværdier:</guilabel +></term> +<listitem +><para +>Vælg om og hvordan lydstyrkeværdier vises: <guilabel +>Ingen</guilabel +>, <guilabel +>Absolutte</guilabel +> eller <guilabel +>Relative</guilabel +>.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Skyderens orientering</guilabel +></term> +<listitem +><para +>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.</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + + +</chapter> + + +<chapter id="working-with-kmixapplet"> +<title +>&kmix;-panel-applet</title> + +<para +>&kmix; panelminiprogram er en alternativ grænseflade for &kmix;. Du kan til det til &kde;'s panel ved at vælge <guimenuitem +>Tilføj miniprogram til panelet...</guimenuitem +> i <guimenu +>Panelmenuen</guimenu +> eller den sammenhængsafhængige menu. Vælg <guilabel +>Lydmikser</guilabel +> og klik på <guibutton +>Tilføj til panelet</guibutton +> eller dobbeltklik på <guilabel +>Lydmikser</guilabel +>. </para> + +<para +>Du kan arbejde med &kmix;-appletten som beskrevet for <link linkend="working-with-kmix" +>hovedvinduet</link +> - inklusive sammenhængsmenuen. På grund af den begrænsede plads i panelet er der forskelle: <simplelist> +<member +>Ingen hovedmenu tilgængelig.</member> +<member +>Hvis du har flere lydkort, kan du ikke ændre den valgte mikser efter det initiale valg.</member> +<member +>Ingen dokningsikon. Hvis du vil bruge dokningspunktet, skal du desuden starte &kmix; fra <menuchoice +><guimenu +>K-menuen</guimenu +><guisubmenu +>Multimedie</guisubmenu +> <guimenuitem +>&kmix; lydmikser</guimenuitem +></menuchoice +>.</member> +<member +>Ikoner kun til stede når panelet er stort nok.</member> +<member +>Ingen navne på enheder.</member> +<member +>Indstilling udføres via panelmenu - du kan indstille farver og skyder-retning her.</member> +<member +>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.</member> +</simplelist> + +</para> +</chapter> + + +<chapter id="advanced-kmix"> +<title +>Avancerede &kmix;-egenskaber</title> + +<warning +><para +>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</para +></warning> + +<sect1 id="dcop-overview"> +<title +>&DCOP;-Grænsefladen</title> + +<para +>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 <userinput +><command +>dcop kmix</command +></userinput +>, for at begynde med at udforske &kmix; &DCOP;-grænseflade. De særlige grænseflader i &kmix; er følgende:</para> + +<variablelist> +<varlistentry> +<term +><userinput +><command +>Mixer0</command +></userinput +></term> +<listitem +><para +>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 <userinput +><command +>dcop kmix Mixer0</command +></userinput +> hvis du vil udforske alle funktioner. Der er flere indgange såsom <userinput +><command +>Mixer1</command +></userinput +>, hvis flere lydkort er installerede.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +><command +>kmix-mainwindow#1</command +></userinput +></term> +<listitem +><para +>Det grafiske vindue kan styres med denne kommando. Du kan skjule og vise vinduet, ændre størrelse på det, og meget mere. Skriv <userinput +><command +>dcop kmix kmix-mainwindow#1</command +></userinput +> hvis du vil udforske alle funktioner.</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + + +<sect1 id="dcop-examples"> +<title +>&DCOP;-Eksempler</title> + +<variablelist> +<varlistentry> +<term +><userinput +><command +>dcop kmix kmix-mainwindow#1 hide</command +></userinput +></term> +<listitem +><para +>Skjuler det grafiske vindue. Brug <userinput +><command +>dcop kmix kmix-mainwindow#1 show</command +></userinput +> eller dokningsikonen for at vise det igen.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +><command +>dcop kmix kmix-mainwindow#1 resize 1 1</command +></userinput +></term> +<listitem +><para +>Æ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.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +><command +>dcop kmix Mixer0 mixerName</command +></userinput +></term> +<listitem +><para +>Angiver navnet på den første mikser, for eksempel <computeroutput +>Sound Fusion CS46xx</computeroutput +>.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +><command +>dcop kmix Mixer1 setVolume 0 10</command +></userinput +></term> +<listitem +><para +>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 <userinput +><command +>dcop kmix Mixer1 setMasterVolume 0</command +></userinput +>.</para +></listitem> +</varlistentry> +</variablelist> + +<para +>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 <envar +>DCOPSERVER</envar +> (som vises på første linje i filen <filename +>~/.DCOPserver_hostname_:0</filename +>), for eksempel:</para> + +<programlisting +>#!/bin/sh +DCOPSERVER=`cat /home/dinhemmappe/.DCOPserver_dinvært_:0 | grep local` +eksport DCOPSERVER +dcop kmix Mixer0 setMasterVolume 0 +</programlisting> +</sect1> + +<sect1 id="tips-and-tricks"> +<title +>Tips og Tricks</title> +<sect2> +<title +>Brug af ALSA pg OSS driver samtidigt</title> +<para +>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 <filename +>kmixrc</filename +>-fil i afsnittet for globale indstillinger.</para> +<programlisting +>MultiDriver=true</programlisting> +<para +>Start &kmix; igen. Hvis du klikker på <menuchoice +><guimenu +>Hjælp</guimenu +> <guimenuitem +>Hardwareinformation</guimenuitem +></menuchoice +> bør du se <guilabel +>Lyddriverer som bruges: ALSA0.9 + OSS</guilabel +> og <guilabel +>Experimental multiple-Driver mode activated</guilabel +>.</para> + +<warning +><para +>Du ser formodentlig alle din miksere dublerede.</para> +<para +>Der er ingen støtte for denne slags indstilling.</para +></warning> +</sect2> + +</sect1> + +</chapter> + +<chapter id="credits"> +<title +>Medvirkende og licens</title> + +<para +>Hovedudviklere</para> + +<itemizedlist> +<listitem +><para +>Ophavsret 1996-2000 Christian Esken</para +></listitem> +<listitem +><para +>Ophavsret 2000-2003 Christian Esken & Stefan Schimanski</para +></listitem> +<listitem +><para +>Ophavsret 2003-2005 Christian Esken & Helio Chissini de Castro</para +></listitem> +</itemizedlist> + +<para +>Bidragydere:</para> + +<itemizedlist> +<listitem +><para +>Christian Esken <email +>esken@kde.org</email +></para +></listitem> +<listitem +><para +>Stefan Schimanski <email +>1Stein@gmx.de</email +></para +></listitem> +<listitem +><para +>Paul Kendall <email +>paul@orion.co.nz</email +> - &SGI;-portering</para +></listitem> +<listitem +><para +>Sebestyen Zoltan <email +>szoli@digo.inf.elte.hu</email +> - FreeBSD-rettelser</para +></listitem> +<listitem +><para +>Faraut Jean-Louis <email +>jlf@essi.fr</email +> - &Solaris;-rettelser</para +></listitem> +<listitem +><para +>Nick Lopez <email +>kimo_sabe@usa.net</email +> - ALSA-portering</para +></listitem> +<listitem +><para +>&Helge.Deller; <email +>deller@gmx.de</email +> - oversættelse til &HP;-UX</para +></listitem> +<listitem +><para +>Lennart Augustsson <email +>augustss@cs.chalmers.se</email +> - *BSD-rettelser</para +></listitem> +</itemizedlist> + +<para +>Dokumentation ophavsret 2000 &Matt.Johnston; &Matt.Johnston.mail;</para> + +<para +>Opdateret 2003 til at matche &kmix; V1.91 ved Christian Esken <email +>esken@kde.org</email +></para> + +<para +>Opdateret 2005 til at matche &kmix; V1.91 ved Christian Esken <email +>esken@kde.org</email +></para> + +<para +>Opdateret 7/2005 til at matche &kmix; V2.6 ved Christian Esken <email +>esken@kde.org</email +></para> + +<para +>Baseret på dokumentation af Christian Esken <email +>esken@kde.org</email +></para> +&lars.schunk.credit;&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="getting-kmix"> +<title +>Anskaf &kmix;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>&kmix; er åbenlyst kun nyttig hvis du har et lydkort. &kmix; understøtter adskillige platforme og lyddrivere.</para> + +<itemizedlist> +<listitem +><para +>Alle Open Sound System-platforme. &Linux;, FreeBSD, NetBSD og BSDI er eksplicit testet.</para +></listitem> +<listitem +><para +>&Solaris;-baserede maskiner.</para +></listitem> +<listitem +><para +>&IRIX;-baserede maskiner.</para +></listitem> +<listitem +><para +>ALSA-lydkortdriveren.</para +></listitem> +<listitem +><para +>&HP-UX;-baserede maskiner.</para +></listitem> +</itemizedlist> + +</sect1> + +<sect1 id="compilation"> +<title +>Kompilering og installation</title> +&install.compile.documentation; </sect1> + +</appendix> + +</book> +<!-- +Local Variables: +mode: sgml +sgml-omittag: nil +sgml-shorttag: t +End: +--> + diff --git a/tde-i18n-da/docs/kdemultimedia/krec/Makefile.am b/tde-i18n-da/docs/kdemultimedia/krec/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/krec/Makefile.in b/tde-i18n-da/docs/kdemultimedia/krec/Makefile.in new file mode 100644 index 00000000000..428dbf018cb --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/krec/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/krec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/krec/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/krec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/krec/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/krec/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/krec/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..ff6d356bb56 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/krec/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/krec/index.docbook b/tde-i18n-da/docs/kdemultimedia/krec/index.docbook new file mode 100644 index 00000000000..ff316c0407e --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/krec/index.docbook @@ -0,0 +1,633 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&krec;"> + <!ENTITY package "kdemultimedia"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Danish "INCLUDE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>&krec;-håndbogen</title> + +<authorgroup> +<author +><firstname +>Arnold</firstname +> <surname +>Krille</surname +> <affiliation +> <address +><email +>arnold@arnoldarts.de</email +></address> +</affiliation> +</author> +</authorgroup> + +&erik.kjaer.pedersen.role; + +<copyright> +<year +>2002</year> +<year +>2003</year> +<year +>2004</year> +<holder +>Arnold Krille</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2004-03-01</date> +<releaseinfo +>0.5.1</releaseinfo> + +<!-- + vim: tw=80 et sw=2 ts=2 +--> +<abstract> +<para +>&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. </para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>kdemultimedia</keyword> +<keyword +>Krec</keyword> +<keyword +>aRts</keyword> +<keyword +>indspilning</keyword> +<keyword +>grænseflade</keyword> +</keywordset> + +</bookinfo> + +<!-- + TODO: (ordered by priority) + - Explained: + - Mainwidget + - more on exports + + Quality settings + + possible more examples for the compressors + + Configuration + + Recording from line-in +--> + +<chapter id="introduction"> +<title +>Indledning</title> + +<sect1 id="why-krec"> +<title +>Hvorfor skrev jeg &krec;</title> + +<para +>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 <command +>artsrec</command +>. 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;. </para> +</sect1> + +<sect1 id="what-krec-does"> +<title +>Hvad &krec; gør</title> + +<para +>&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. </para> +<para +>Men &krec; har meget mere funktionalitet. Du kan lave flere optagelser i en fil endog med overliggende funktionaliter. </para> +</sect1> + +<sect1 id="bugs_and_info"> +<title +>Få mere information</title> +&reporting.bugs; &updating.documentation; </sect1> + +</chapter> + +<chapter id="first_glance"> +<title +>Et første blik på &krec;</title> + +<!--<para> +Let`s take a first glance at &krec; right after startup and I will try to give +some explainations what the different items are. +</para +>--> + +<screenshot> +<screeninfo +>Her er et skærmaftryk af &krec;.</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-keramik.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Her er et skærmaftryk af &krec; lige efter den er startet.</phrase> +</textobject> +</mediaobject> +</screenshot> + +<sect1 id="first_glance_items"> +<title +>&krec;'s hovedvindue i detaljer</title> + +<itemizedlist> +<listitem +><para +>For oven er der <emphasis +>menulinjen</emphasis +> og to <emphasis +>værktøjslinjer</emphasis +>. Den første værktøjslinje indeholder nogle nyttige punkter fra <guimenu +>Filer</guimenu +>-menuen, den anden værktøjslinje er leveret med vigtige funktioner fra <guimenu +>Spil</guimenu +>-menuen.</para +></listitem> +<listitem +><para +>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.</para +></listitem> +<listitem +><para +>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.</para +></listitem> +<listitem +><para +>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.</para +></listitem> +</itemizedlist> + +<para +>Se <xref linkend="krec_explained"/> for mere info. </para> + +</sect1> +</chapter> + +<chapter id="recording_howtos"> +<title +>Hvordan optager du</title> + +<para +>Dette kapitel indeholder nogle trin for trin gennemgange der viser dig vejen til nogle gode optagelser med &krec;. </para> + +<sect1 id="recording_from_music"> +<title +>Optagelse fra intern musik</title> + +<orderedlist> +<listitem +><para +>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 kdemultimedia derfra hvor du fik &krec;). </para +></listitem> +<listitem +><para +>I &krec; vælges <guimenuitem +>Lydhåndtering</guimenuitem +> fra <guimenu +>Værktøjer</guimenu +>-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 <emphasis +>afspil</emphasis +> eller <emphasis +>optag</emphasis +>. 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 <emphasis +>in_soundcard</emphasis +> som er inputkanalen for dit lydkort, men da vi nu ønsker at optage fra afspilleren og afspilleren spiller til <emphasis +>out_soundcard</emphasis +>, klikker vi på &krec;::In punktet for at skifte den til en anden kilde. Vælg <emphasis +>out_soundcard</emphasis +> fra det vindue der kommer op og klik på <guibutton +>O.k</guibutton +>. For at lære mere om lydhåndteringen se <xref linkend="audio_manager"/>. </para +></listitem> +<listitem +><para +>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). </para +></listitem> +<listitem +><para +>Åbn nu en ny fil enten ved at klikke på det første punkt i værktøjslinjen eller ved at vælge <guimenuitem +>Ny</guimenuitem +> fra <guimenu +>Filer</guimenu +>-menuen. Acceptér kvalitetsopsætningen indtil videre eller se <xref linkend="quality"/> for mere info. </para +></listitem> +<listitem +><para +>Vælg <guimenuitem +>Optag</guimenuitem +> fra <guimenu +>Afspil</guimenu +>-menuen eller tryk på <keycap +>R</keycap +>-tasten. Efter du er færdig vælg <guimenuitem +>Stop</guimenuitem +> fra den samme menu eller brug <keycap +>S</keycap +>-tasten. </para +></listitem> +<listitem +><para +>At gemme virker på standard vis, hvid du er interesseret i at eksportere se <xref linkend="exporting"/>.</para +></listitem> +</orderedlist> + +<para +>Det er det hele. Nu kan du høre din optagelse elle eksportere den (glem ikke at gå tilbage til begyndelsen). </para> + +</sect1> + +<sect1 id="recording_from_line_in"> +<title +>Optagelse fra Line-In eller Mic-In</title> + +<para +>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... </para> +<para +>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 <command +>kcmshell arts</command +>). På den anden fanebladsside skal du sørge for at afkrydsningsfeltet for fuld dupleks er markeret, klik på <guibutton +>Anvend</guibutton +> genstarter &arts; hvilket betyder at du også må genstarte &krec;. </para> +<para +>Efter disse forberedelse skulle VU-måleren (se <xref linkend="vu-meter"/> 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 <glossterm +>ADC</glossterm +> 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. </para> +<para +>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 <xref linkend="compressor"/>. </para> +<para +>De tilbageværende skridt er de samme som i <xref linkend="recording_from_music"/> fra skridt fire og følgende. Så hvis du startede med det afsnit skule du vide det nu. </para> + +</sect1> +</chapter> + +<chapter id="krec_explained"> +<title +>&krec; forklaret</title> + +<para +>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. </para> + +<sect1 id="audio_manager"> +<title +>Lydhåndteringen</title> +<para +>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 <emphasis +>eller</emphasis +> en vilkårlig anden bus. Men flere udgaver af &noatun; kan alle forbindes til hovedudgangen. </para> + +<sect2 id="audio_manager_mw"> +<title +>Hovedvinduet for lydhåndteringen</title> +<para +>Det indeholder tre søjler: </para> +<orderedlist> +<listitem +><para +>Nævnet på punktet der afspiller eller optager lyd.</para +></listitem> +<listitem +><para +>Typen af punktet enten <emphasis +>afspil</emphasis +> eller <emphasis +>optag</emphasis +>.</para +></listitem> +<listitem +><para +>Bussen punktet er forbundet til.</para +></listitem> +</orderedlist> +<para +>Klik på et punkt så vil en dialog for at vælge den ønskede bus komme frem. </para> +</sect2> +<sect2 id="audio_manager_dialog"> +<title +>Busdialogen</title> +<para +>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. </para> +<tip +><para +>For at optage fra en afspiller der bruger &arts; og lytte til det du rent faktisk optager laver du blot en ny bus (<emphasis +>test</emphasis +> 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å <guimenuitem +>Spil igennem</guimenuitem +> til. </para +></tip> +</sect2> + +</sect1> + +<sect1 id="compressor"> +<title +>Komprimeringen</title> +<para +>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 <emphasis +>tærskel</emphasis +>-værdi med faktoren som angives af <emphasis +>ratio</emphasis +>. 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 <emphasis +>udgangs</emphasis +>potentiometer til at ekspandere (eller reducere) lyden. <emphasis +>Attack</emphasis +> og <emphasis +>release</emphasis +> 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. </para> +<tip +><para +>Prøv det mens du taler i mikrofonen med <guimenuitem +>Spil igennem</guimenuitem +> aktiveret, så hører du forskellen mellem den almindelige og den komprimerede udgave.</para +></tip> +<sect2 id="compressor_tips"> +<title +>Vink om brug af komprimering</title> +<para +>Dette er <emphasis +>kun</emphasis +> 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. </para> +<glosslist> +<glossentry +><glossterm +>Normal tale</glossterm +><glossdef +><para +>De 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.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Mastering 1: Begrænsning af niveauet</glossterm +><glossdef +><para +>For 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.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Mastering 2: Udførsel af den egentlige mastering</glossterm +><glossdef +><para +>Udfø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.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Enkelte instrumenter</glossterm +><glossdef +><para +>Disse indstillinger afhænger af instrumentet. Mens der optages er det klogt at bruge en begrænseropsætning.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Endeligt vink</glossterm +><glossdef +><para +>Brug dine ører og øv dig. Alt er tilladt der lyder godt.</para +></glossdef +></glossentry> +<!--<glossentry +><glossterm +>Term</glossterm +><glossdef +><para +>Definition</para +></glossdef +></glossentry +>--> +</glosslist> +</sect2> +</sect1> + +<sect1 id="configuration"> +<title +>Indstilling</title> +<para +>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 <xref linkend="quality"/>. </para> +<screenshot> +<screeninfo +>Generel opsætning</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-configuration.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Redigering af generel &krec;-opsætning.</phrase> +</textobject> +</mediaobject> +</screenshot> +<para +>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. </para> +<para +>Afkrydsningsfeltet nedenfor gør tidsvisninger mere ordrige og viser enheden indeni. </para> +<para +>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. </para> +</sect1> + +<sect1 id="exporting"> +<title +>Eksporterer</title> +<blockquote> +<attribution +>En anonym fan af &krec;</attribution> +<para +>Dit program er rigtigt lækkert, jeg bruger det hele dagen men det mangler virkelig eksport til wave/mp3/ogg!</para> +</blockquote> +<para +>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. </para> +<para +>Valg af det ønskede eksport-plugin gøres med filnavnet: Du vælger <guimenuitem +>Eksportér fil...</guimenuitem +> fra <guimenu +>Filer</guimenu +>, 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. </para> +<para +>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. </para> +<sect2 id="export_wave"> +<title +>Eksport til Wave (*.wav)</title> +<para +>Det simpleste eksport-plugin. Det eksporterer din &krec;-fil til en wave-fil med de kvalitetsindstillinger du lavede for hele filen. </para> +</sect2> +<sect2 id="export_mp3"> +<title +>Eksport til MP3 (*.mp3)</title> +<para +>Måske den mest ønskede eksportmulighed. Denne eksporterer din &krec;-fil til en mp3-fil. </para> +<important +><para +>Kvalitetsopsætningen du indstiller i afsnittet <quote +>Lyd & Multimedie</quote +> / <quote +>Lyd-CD'er</quote +> i &kcontrol; bruges i denne udgave da &krec; bruger de samme biblioteker som audiocd:/-funktionen. </para +></important> +</sect2> +<sect2 id="export_ogg"> +<title +>Eksport til OGG (*.ogg)</title> +<para +>Denne eksporterer din &krec;-fil til en ogg-fil. </para> +<important +><para +>Kvalitetsopsætningen du indstiller i afsnittet <quote +>Lyd & Multimedie</quote +> / <quote +>Lyd-CD'er</quote +> i &kcontrol; bruges i denne udgave da &krec; bruger de samme biblioteker som audiocd:/-funktionen. </para +></important> +</sect2> +</sect1> + +<sect1 id="play_thru"> +<title +>Spil igennem</title> +<para +>For de som vil høre det som indspilles, er der det meget nyttige punkt <guimenuitem +>Spil igennem</guimenuitem +> i menuen <guimenu +>Spil</guimenu +>. 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. </para> +<caution +><para +>Undgå at oprette en løkke ved indspilning fra <emphasis +>out_soundcard</emphasis +> når <guimenuitem +>Spil igennem</guimenuitem +> 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;... </para +><para +>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. </para +></caution> +</sect1> + +<sect1 id="quality"> +<title +>Kvalitetsopsætning</title> +<screenshot> +<screeninfo +>Egenskaber for nye filer</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-new_file_properties.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Dette er dialogen til at vælge egenskaberne for nye filer.</phrase> +</textobject> +</mediaobject> +</screenshot> +<para +>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. </para> +<para +><emphasis +>Samplingraten</emphasis +> 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 <quote +>sinus</quote +>-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). </para> +<para +>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 <quote +>Mono</quote +> uden tab af data. </para> +<para +>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. </para> +<para +>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. </para> +<example +><title +>Beregning af størrelsen af et minut cd-kvalitet</title +><para +>For 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. </para +></example> +<tip +><para +>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. </para +></tip> +<para +>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. </para> +<para +>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. </para> +</sect1> + +<sect1 id="vu-meter"> +<title +>VU-Måler</title> +<para +>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. </para> +<tip +><para +>For gode optagelser skal niveauet være mellem -12dB og 0dB det meste af tiden. </para +></tip> +<tip +><para +>Brug komprimeringen til at redigere dynamikken i dine optagelser. Se <xref linkend="compressor"/> for mere info. </para +></tip> +</sect1> + +</chapter> + + + +<chapter id="credits"> +<title +>Medvirkende og licens</title> +<para +>&krec; </para> +<para +>Program ophavsret 2002-2003 Arnold Krille<email +>arnold@arnoldarts.de</email +> </para> +<para +>Dokumentation ophavsret 2002-2004 Arnold Krille <email +>arnold@arnoldarts.de</email +> </para> +&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="getting-krec"> +<title +>Hvordan får man fat på &krec;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> +<para +>For at bruge &krec; 0.5.1 med heldigt resultat, har du brug for &kde; 3.3. </para> +<para +>&krec; skulle være i kdemultimedia-pakken. Eftersom pakken kræver at &kde; og &arts; kører, skulle alting være i orden. </para> +</sect1> + +<sect1 id="compilation"> +<title +>Kompilering og installation</title> +&install.compile.documentation; </sect1> + +</appendix> + +&documentation.index; +</book> + +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +End: +--> diff --git a/tde-i18n-da/docs/kdemultimedia/kscd/Makefile.am b/tde-i18n-da/docs/kdemultimedia/kscd/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/kscd/Makefile.in b/tde-i18n-da/docs/kdemultimedia/kscd/Makefile.in new file mode 100644 index 00000000000..1c67f1cbe82 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/kscd/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/kscd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kscd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kscd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/kscd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/kscd/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/kscd/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..52b916ae554 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kscd/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/kscd/index.docbook b/tde-i18n-da/docs/kdemultimedia/kscd/index.docbook new file mode 100644 index 00000000000..909a1938d2d --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/kscd/index.docbook @@ -0,0 +1,1612 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kscd;"> + <!ENTITY package "kdemultimedia"> + <!ENTITY % Danish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>&kscd;-håndbogen</title> + +<authorgroup> + +<author +><firstname +>Mike</firstname +> <surname +>McBride</surname +> <affiliation +><address +>&Mike.McBride.mail;</address +></affiliation> +</author> + +<author +><firstname +>Jonathan</firstname +> <surname +>Singer</surname +> <affiliation +><address +>&Jonathan.Singer.mail;</address +></affiliation> +</author> + +<author +><firstname +>David</firstname +> <surname +>White</surname +> <affiliation +><address +><email +>a9403784@unet.univie.ac.at</email +></address> +</affiliation> +</author> + +<othercredit role="developer" +><firstname +>Bernd</firstname +> <othername +>Johannes</othername +> <surname +>Wuebben</surname +> <affiliation +><address +>&Bernd.Johannes.Wuebben.mail;</address +></affiliation> +<contrib +>Udvikler</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Dirk</firstname +> <surname +>Forsterling</surname +> <affiliation +><address +><email +>milliByte@gmx.net</email +></address +></affiliation> +<contrib +>Udvikler</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Dirk</firstname +> <surname +>Foersterling</surname +> <affiliation +><address +><email +>milliByte@gmx.net</email +></address +></affiliation> +<contrib +>Udvikler</contrib> +</othercredit> + +<othercredit role="reviewer" +><firstname +>Lauri</firstname +> <surname +>Watts</surname +> <affiliation +><address +>&Lauri.Watts.mail;</address +></affiliation> +<contrib +>Tester</contrib> +</othercredit> +&erik.kjaer.pedersen.role; +</authorgroup> + +<copyright> +<year +>2000</year +><year +>2004</year> +<holder +>J Singer</holder> + +</copyright> +<copyright> + +<year +>2005-2006</year> +<holder +>Mike McBride</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + + +<date +>2005-12-22</date> +<releaseinfo +>1.5</releaseinfo> + +<abstract> +<para +>&kscd; er en lille hurtig, <abbrev +>CDDB</abbrev +>-følsom lyd-&CD;-afspiller for &UNIX;-platforme.</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>kdemultimedia</keyword> +<keyword +>kscd</keyword> +<keyword +>musik</keyword> +<keyword +>cd</keyword> +<keyword +>lyd</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Indledning</title> + +<para +>&kscd; er en lille hurtig, <abbrev +>CDDB</abbrev +>-følsom &CD;-afspiller for &UNIX;-platforme. &kscd; står for <quote +>KDE-projektets lille/enkle &CD;-afspiller</quote +>.</para> + +<para +><emphasis +>Nyhed</emphasis +>: Perlscriptet <filename +>workman2cddb.pl</filename +> som sørger for at forenkle overgangen for brugere af Workman.</para> + +<para +>Jeg håber du vil nyde denne &CD;afspiller.</para> + +<para +>&Bernd.Johannes.Wuebben;</para> + +<para +>&Bernd.Johannes.Wuebben.mail;</para> + +<sect1 id="supported-platforms"> +<title +>Understøttede platforme</title> + +<para +>&kscd; understøtter udtrykkelig følgende platforme:</para> + +<itemizedlist> +<listitem +><para +>&Linux;</para +></listitem> +<listitem +><para +>FreeBSD</para +></listitem> +<listitem +><para +>NetBSD</para +></listitem> +<listitem +><para +>BSD386</para +></listitem> +<listitem +><para +>Sun</para +></listitem> +<listitem +><para +>&Solaris; (inklusive <acronym +>cdda</acronym +>-støtte)</para +></listitem> +<listitem +><para +>&HP-UX;</para +></listitem> +<listitem +><para +>&SGI; Irix (inklusive <abbrev +>cdda</abbrev +>-støtte)</para +></listitem> +<listitem +><para +>Sony NEWS</para +></listitem> +<listitem +><para +>OSF/1</para +></listitem> +<listitem +><para +>Ultrix</para +></listitem> +</itemizedlist> + +<para +>og skulle kunne kompilere på mange flere med små ændringer.</para> + +</sect1> + +</chapter> + +<chapter id="onscreen-fundamentals"> +<title +>Grundlæggende skærmhåndtering</title> + +<sect1 id="basic-operation"> +<title +>Basal brug</title> + +<screenshot> +<screeninfo +>&kscd;-grænsefladen</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kscd.png" format="PNG"/></imageobject> +<textobject +><phrase +>&kscd;-grænsefladen</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>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.</para> + +<sect2 id="control-panel"> +<title +>Kontrolpanelet</title> + +<screenshot> +<screeninfo +>Kontrolpanelet</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd2.png" format="PNG"/></imageobject> +<textobject +><phrase +>Kontrolpanelet</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Dette er &kscd;s hovedkontrolpanel. Funktionen af disse knapper bør være kendt for alle som nogensinde har brugt en cd-afspiller.</para> + +<para +>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.</para> +</sect2> + + +<sect2 id="status-display"> +<title +>Statusvinduet</title> + +<screenshot> +<screeninfo +>Statusvinduet</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd3.png" format="PNG"/></imageobject> +<textobject +><phrase +>Statusvinduet</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>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 <acronym +>CDDB</acronym +> (&CD;--database).</para> + +<para +>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.</para> +</sect2> + +<sect2 id="configuration-button"> +<title +><guibutton +>Indstillings</guibutton +>knappen</title> + +<screenshot> +<screeninfo +>Ekstra-knappen</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd5.png" format="PNG"/></imageobject> +<textobject +><phrase +>Ekstra-knappen</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>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 <link linkend="configuring-kscd" +>Indstil &kscd;</link +>, for detaljer om at indstille &kscd;.</para> +<para +>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.</para> +<para +>Denne menu tillader dig også at åbne dette hjælpedokument, rapportere fejl, lære mere om &kscd; og &kde; og at afslutte &kscd;.</para> +</sect2> + +<sect2 id="cddb-button"> +<title +><guibutton +>CDDB</guibutton +>-knappen</title> + +<screenshot> +<screeninfo +><acronym +>CDDB</acronym +>-knappen</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd6.png" format="PNG"/></imageobject> +<textobject +><phrase +><acronym +>CDDB</acronym +>-knappen</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Denne knap åbner panelet for <acronym +>CDDB</acronym +>-indtastningseditor (Compact Disc Database). </para> + +<para +><acronym +>CDDB</acronym +> kan identificere din &CD;, og oftest hente en liste af spor for den, eller indlæse listen fra filsystemet. Se afsnittet <link linkend="cddb-editor" +>&CD;-databaseeditor</link +> for flere detaljer om at bruge dette værktøj.</para> +</sect2> + + + + +<sect2> +<title +>Lydstyrke-skyderen</title> + +<screenshot> +<screeninfo +>Lydstyrke-skyderen</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd9.png" format="PNG"/></imageobject> +<textobject +><phrase +>Lydstyrkeskyderen</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>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.</para> +</sect2> + + +<sect2> +<title +>Sporvalget</title> + +<screenshot> +<screeninfo +>Sporvalget</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd11.png" format="PNG"/></imageobject> +<textobject +><phrase +>Sporvalget</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>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. </para> +</sect2> + +</sect1> +</chapter> + +<chapter id="configuring-kscd"> +<title +>Indstil &kscd;</title> +<sect1 id="configuration-intro"> +<title +>Det primære indstillingsvindue</title> + +<para +>Du indstiller &kscd; ved at klikke på knappen <guibutton +>Ekstra</guibutton +>. Dette viser en menu, hvor du vælger <guilabel +>Indstil &kscd;...</guilabel +>. Dette åbner et nyt vindue.</para> +<para +>Det primære indstillingsvindue for &kscd; er opdelt i to hovedafsnit. </para> + +<itemizedlist> +<listitem +><para +><link linkend="kscd-options-tab" +><guilabel +>Cd-spiller</guilabel +></link +> for at bestemme udseende og opførsel af &kscd;.</para +></listitem> +<listitem +><para +><guilabel +>CDDB</guilabel +> som bruges til at indstille &kscd;s funktion for opslag i CDDB.</para +></listitem> +</itemizedlist> + +<para +>Du kan skifte mellem disse to afsnit med ikonerne til venstre i dialogen.</para> +</sect1> + +<sect1 id="kscd-options-tab"> +<title +>Dialogen <guilabel +>Cd-afspiller</guilabel +></title> + +<screenshot> +<screeninfo +>Dialogen <guilabel +>Cd-afspiller</guilabel +></screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd12.png" format="PNG"/></imageobject> +<textobject +><phrase +>Dialogen <guilabel +>KSCD-konfiguration</guilabel +></phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Tekstfeltet <guilabel +>LCD-skrifttype</guilabel +> viser skrifttypen som for øjeblikket er valgt til at vise al information i &kscd;s statusvindue. Klik på knappen <guilabel +>Vælg...</guilabel +> for at ændre skrifttypen.</para> + +<para +>Feltet <guilabel +>LCD-farve:</guilabel +> og <guilabel +>Baggrundsfarve:</guilabel +> viser farven som er valgt for forgrunden og baggrunden i statusvinduet. Tryk på farvebjælkerne for at ændre disse farver.</para> + + +<!-- +<para +>The <guilabel +>Unix mail command</guilabel +> field shows the +command used to send new <acronym +>CDDB</acronym +> entries to the +database. The default value is <userinput +><command +>mail</command> +<option +>-s <replaceable +>%s</replaceable +></option +></userinput +>. You +will need to make sure this command will actually send mail to +non-local systems if you want to submit <acronym +>CDDB</acronym> +entries, especially if you access the Internet through a dial-up +connection. Check the documentation for your &Linux; distribution for +details. Some Linux distributions that use sendmail to deliver email +require only that you enter your mail host into the +<option +>"Smart" relay host</option +> field in +<filename +>/etc/sendmail.cf</filename +>. In addition, the +<acronym +>CDDB</acronym +> site will want to be able to mail you back; it +may therefore also be necessary to edit +<filename +>/etc/sendmail.cf</filename +> to ensure that the return +address on the submission is valid. Your mileage is likely to vary. If +all else fails, use <link linkend="smtp-options" +>SMTP</link> +instead.</para> + +<para +>The <guilabel +>WWW-Browser</guilabel +> section lets you choose which web +browser to use to access the web sites in the <link linkend="information-button" +>information button</link +> menus. You can choose +either &konqueror; or a custom browser with the radio buttons. By default, the +<guilabel +>Use Custom Browser</guilabel +> field contains +<userinput +><command +>kfmclient</command> +<option +><replaceable +>openURL %s</replaceable +></option +></userinput +>.</para> +--> + +<para +>Markering af afkrydsningsfeltet som hedder <guilabel +>Vis ikon i statusfeltet</guilabel +> gør at en &kscd;-ikon vises i &kicker;-panelet.</para> + +<para +>Markering af afkrydsningsfeltet som hedder <guilabel +>Vis spormeddelelser</guilabel +> gør at et lille informationsvindue vises ovenpå panelets vindue hver gang et cd-spor ændres. Vinduet forsvinder automatisk efter 5 sekunder.</para> + +<screenshot> +<screeninfo +>Eksempel på spormeddelelse</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscdannounc.png" format="PNG"/></imageobject> +<textobject +><phrase +>Eksempel på spormeddelelse</phrase +></textobject> +</mediaobject> +</screenshot> + + +<para +>Indstil feltet <guilabel +>Skip-interval</guilabel +> til det ønskede antal sekunder som springes frem eller tilbage når knapperne <guibutton +>skip fremad</guibutton +> eller <guibutton +>skip tilbage</guibutton +> i kontrolpanelet bruges.</para> + +<para +><guilabel +>Spil automatisk når cd sættes ind</guilabel +> gør at &kscd; begynder at spille cd'en når den sættes ind, uden at behøve at trykke på knappen <guibutton +>Spil</guibutton +>.</para> + +<para +><guilabel +>Skub ud ved afslutning</guilabel +> gør at &CD;'en skubbes ud automatisk når afspilningen slutter.</para> + +<para +><guilabel +>Hold op med at spille cd ved afslutning</guilabel +> gør at afspilning af &CD;'en stopper når &kscd; afsluttes.</para> + +<para +>Feltet <guilabel +>&CD-ROM;-enhed</guilabel +> indeholder navnet på den &CD-ROM;-enhed som skal bruges til at spille lyd-&CD;'er. Standardværdien er <filename +>/dev/cdrom</filename +>. 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.</para> + +<note +><para +>Inden vi beskriver følgende tilvalg, er det vigtigt at forstå at der er to måder som personlige computere kan spille en cd.</para> + +<para +>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.</para> + +<para +>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.</para +></note> + +<para +>Afkrydsningsfeltet som hedder <guilabel +>Brug direkte digital afspilning</guilabel +> 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.</para> + +<para +>Hvis du har valgt direkte digital afspilning, lader et dropned-felt som hedder <guilabel +>Vælg lydbaggrundsprogram:</guilabel +> 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 <guilabel +>arts</guilabel +>. Du kan også bruge enheden som lydbaggrundsprogrammet bruger, ved at indtaste enhedens sted i tekstfeltet som hedder <guilabel +>Vælg lydenhed:</guilabel +>. En fuldstændig beskrivelse af lydenheder og lydbaggrundsprogrammer går udover denne håndbogs omfang.</para> + +<para +>Hvis afkrydsningsfeltet som hedder <guilabel +>Tillad valg af tegnsæt</guilabel +> er markeret, kan du vælge tegnsætte for resultatet af CDDB-forespørgsler.</para> +<tip +><para +>Standarden beskriver CDDB-resultater som kun værende er Latin-1. Hvis du ikke har problemermed CDDB-information, så efterlad feltet uden markering.</para +></tip> + + +<para +>Knappen <guibutton +>Hjælp</guibutton +> åbner indholdsfortegnelsen for &kscd;s håndbog. Knappen <guibutton +>Standard</guibutton +> genoprette standardværdier for alle tilvalg i dialogen. <guibutton +>O.k.</guibutton +> gemmer nuværende indstillinger og afslutter. <guibutton +>Anvend</guibutton +> gemmer nuværende indstillinger uden at afslutte. <guibutton +>Annullér</guibutton +> afslutter uden at gemme. </para> +</sect1> + +<sect1 id="freedb-tab"> +<title +>Fanebladet <guilabel +>freedb-opslag</guilabel +></title> +<screenshot> +<screeninfo +>Fanebladet <guilabel +>freedb-opslag</guilabel +> i indstillingsdialogen</screeninfo> +<mediaobject> +<imageobject +> <imagedata fileref="kscd14.png" format="PNG"/> </imageobject> +<textobject +><phrase +>Fanebladet <guilabel +>freedb-opslag</guilabel +> i indstillingsdialogen</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Fanebladet <guilabel +>freedb-opslag</guilabel +> indstiller <acronym +>CDDB</acronym +>-funktionen i &kscd;.</para> + +<para +><guilabel +>Tilstand</guilabel +> afgør hvordan <acronym +>CDDB</acronym +>-opslag bliver udført. Indstillgen <guilabel +>Kun cache</guilabel +> betyder at kun information der allerede er på din computer vil blive brugt. <guilabel +>Cache og ekstern</guilabel +> vil slå information op du ikke allerede har mens <guilabel +>Kun ekstern</guilabel +> slår hver disk op over internettet. </para> + + +<para +>Feltet <guilabel +>CDDB-server</guilabel +> 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 <guibutton +>Vis liste over spejlsteder</guibutton +>. 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å <guibutton +>O.k</guibutton +>.</para> + +<para +>Feltet som hedder <guilabel +>Cachesteder</guilabel +> 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å <guibutton +>Tilføj</guibutton +>. 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å <guibutton +>Fjern</guibutton +>. Du kan ændre rækkefølgen som &kscd; gennemsøger mapperne ved at klikke på mappenavnet og klikke på knapperne <guibutton +>Flyt opad</guibutton +> og <guibutton +>Flyt nedad</guibutton +>.</para> + +<para +>Knappen <guibutton +>Hjælp</guibutton +> åbner indholdsfortegnelsen for &kscd;s håndbog. Knappen <guibutton +>Standard</guibutton +> genoprette standardværdier for alle tilvalg i dialogen. <guibutton +>O.k.</guibutton +> gemmer nuværende indstillinger og afslutter. <guibutton +>Anvend</guibutton +> gemmer nuværende indstillinger uden at afslutte. <guibutton +>Annullér</guibutton +> afslutter uden at gemme. </para> + +</sect1> + +<sect1 id="smtp-options"> +<title +>Fanebladet <guilabel +>freedb-indsendelse</guilabel +></title> + +<screenshot> +<screeninfo +>freedb-indsendelsesfaneblad</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd16.png" format="PNG"/></imageobject> +</mediaobject> +</screenshot> + +<para +>freedb-indsendelsesfanebladet indstiller forbindelsen til en e-mail-server til at indsende nye <acronym +>CDDB</acronym +>-indgange. Dette er nyttigt hvis du ikke har dit eget system indstillet som en server. </para> + +<para +>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). </para> + +<tip +><para +>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.</para +></tip> + +<para +>Vælg først enten <guilabel +>&HTTP;</guilabel +> eller <guilabel +>SMTP (e-mail)</guilabel +> for at afgøre hvilken protokol som skal bruges.</para> + +<sect2 id="http-options"> +<title +>Brug af &HTTP; til at sende CDDB-information</title> +<para +>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.</para> +</sect2> + +<sect2 id="smtp2-options"> +<title +>Brug SMTP (e-mail) til at sende CDDB-information</title> +<para +>For at forberede dig på at indsende information via e-mail, skrives din e-mail-adresse i tekstfeltet som hedder <guilabel +>Svar til:</guilabel +>, din e-mail-server i tekstfeltet som hedder <guilabel +>SMTP-server:</guilabel +> og vælg portnummeret i dropned-feltet som hedder <guilabel +>Port:</guilabel +>.</para> +<para +>Hvis du skal bruge et kodeord for at sende e-mail med e-mail-serveren, markeres afkrydsningsfeltet som hedder <guilabel +>Serveren kræver godkendelseskontrol</guilabel +> og skriv så dit brugernavn i tekstfeltet som hedder <guilabel +>Brugernavn:</guilabel +>.</para> + +<para +>Knappen <guibutton +>Hjælp</guibutton +> åbner indholdsfortegnelsen for &kscd;s håndbog. Knappen <guibutton +>Standard</guibutton +> genoprette standardværdier for alle tilvalg i dialogen. <guibutton +>O.k.</guibutton +> gemmer nuværende indstillinger og afslutter. <guibutton +>Anvend</guibutton +> gemmer nuværende indstillinger uden at afslutte. <guibutton +>Annullér</guibutton +> afslutter uden at gemme. </para> +</sect2> +</sect1> + + +</chapter> + +<chapter id="cddb-editor"> +<title +><guilabel +>Cd-databaseeditor</guilabel +></title> + +<screenshot> +<screeninfo +>&CD;-databaseeditor</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd13.png" format="PNG"/></imageobject> +<textobject +><phrase +>&CD;-databaseeditor</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Cd-databaseeditoren lader dig ændre, hente, gemme, tilføje påtegninger og overføre <link linkend="cddb-support" +><acronym +>CDDB</acronym +>-indgange</link +> (Compact Disc database).</para> + +<para +>Hvis der er en indgang i dit lokale <acronym +>CDDB</acronym +>-træ (se afsnittet <link linkend="freedb-tab" +>CDDB</link +> 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 <guilabel +>Kunstner</guilabel +> og <guilabel +>Titel</guilabel +> og en sporliste med sangtitler i dropned-feltet <interface +>Spor</interface +>. Ellers ser du en liste over spor og spilletider uden titler.</para> + +<para +>Du kan tilføje en påtegning for hele disken med knappen <guibutton +>Kommentar</guibutton +> under feltet <guilabel +>Titel</guilabel +>, eller for et markeret spor i feltet <guilabel +>Spor</guilabel +> med knappen <guibutton +>Kommentar</guibutton +> ved siden af. Hvis du markerer et spor i feltet <guilabel +>Spor</guilabel +>, vises titlen, hvis den findes, i feltet <guilabel +>Titel</guilabel +> 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.</para> + +<para +>Når alle spor har fået titler og <guilabel +>Kunstner</guilabel +> og <guilabel +>Titel</guilabel +> er udfyldt, kan du trykke på knappen <guibutton +>Overfør</guibutton +> for at sende dit bidrag til freedb med e-mail</para> + +<para +>Du bliver bedt om at vælge en kategori for bidraget. <guilabel +>Disk-id</guilabel +> sektionen viser den 32-bits <acronym +>ID</acronym +>-kode som freedb bruger til at identificere en cd. Ovenfor <acronym +>ID</acronym +>-koden findes <guilabel +>CDDB</guilabel +>-indgangens kategori. Disse kategorier svarer til undermappetræet for mappen som vælges i <guilabel +>Basismappe for freedb</guilabel +> i fanebladet <link linkend="freedb-tab" +><abbrev +>freedb</abbrev +></link +> i &kscd;'s indstillingsvindue.</para> + +<para +><guilabel +>Længde:</guilabel +> viser den totale spilletid for &CD;'en.</para> + +<para +>Tryk på knappen <guibutton +>Hent information</guibutton +> for at hente<acronym +>CDDB</acronym +>-data. Tryk på knappen <guibutton +>O.k.</guibutton +> for at gemme ændringerne lokalt. Knappen <guibutton +>Annullér</guibutton +> kan bruges for at afslutte &CD;-databaseeditoren uden at gemme.</para> + +</chapter> + +<chapter id="using-kscd-in-the-panel"> +<title +>Brug &kscd; i &kde;'s panel</title> + +<screenshot> +<screeninfo +>Brug &kscd; i &kde;'s panel</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd18.png" format="PNG"/></imageobject> +<textobject +><phrase +>Brug &kscd; i &kde;'s panel</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Når feltet <guilabel +>Vis ikon i statusfelt </guilabel +> er markeret, vises også et lille miniprogram i &kicker;. Til forskel fra &kscd;'s hovedvindue, er dette miniprogram tilgængeligt på alle desktoppe. <mousebutton +>Højre</mousebutton +>klik på miniprogrammet for at vise en menu som styrer afspilning af &CD;'en. Et <mousebutton +>venstre</mousebutton +>klik på miniprogrammet skjuler &kscd;'s hovedvindue. Hvis hovedvinduet er skjult vises det igen med et nyt <mousebutton +>venstre</mousebutton +>klik på miniprogrammet. </para> + +<note +><para +>For at være præcis, så vises miniprogrammet i panelets <application +>statusfelt</application +>. Hvis intet miniprogram vises når &kscd; minimeres, har måske du fjernet statusfeltet. For at tilføje det igen, <mousebutton +>højre</mousebutton +>klikkes på et tomt sted i panelet og vælg <menuchoice +><guisubmenu +>Tilføj</guisubmenu +> <guisubmenu +>Miniprogram</guisubmenu +> <guimenuitem +>Statusfelt</guimenuitem +> </menuchoice +></para +></note> + +</chapter> + +<chapter id="cddb-support"> +<title +><acronym +>CDDB</acronym +>-støtte</title> + +<para +>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 <link linkend="freedb-tab" +>Fanebladet freedb</link +> i kapitlet om at indstille &kscd; for detaljerede instruktioner om hvordan denne funktion skal indstilles, og afsnittet <link linkend="cddb-editor" +>Cd-databaseeditor</link +> for instruktion om hvordan man redigerer <acronym +>CDDB</acronym +>-indgange.</para> + +<para +>Brug af <acronym +>CDDB</acronym +> er gratis. Bidrag fra brugere opmuntres.</para> + +<para +>Når du forbereder indgange til <acronym +>CDDB</acronym +>, så husk venligst følgende:</para> + +<itemizedlist> +<listitem +><para +>Brug <quote +>almindelige</quote +> tegn fra det latinske alfabet i indgangene. Visse specialtegn understøttes, men tegn fra det cyrillisk eller græske alfabet accepteres for eksempel ikke.</para +></listitem> +<listitem +><para +>Brug kun et <keysym +>/</keysym +> tegn i feltet <guilabel +>Kunstner / Titel</guilabel +> i cd-databaseeditoren.</para> + +<para +>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).</para +></listitem +> +<listitem +><para +>Hvis du indsender en indgang som allerede findes i databasen, kan eventuel yderligere information som du angiver tilføjes til den eksisterende indgang.</para> +</listitem> +</itemizedlist> + +<para +>Normalt installerer &kscd; <acronym +>CDDB</acronym +>-standardkategorier i <filename class="directory" +>$KDEDIR/share/apps/kscd/cddb</filename +>. Du kan oprette så mange undermapper som du vil. Når du overfører vises dog kun de officielle <acronym +>CDDB</acronym +>-kategorier. Den forvalgte overførselsadresse er <email +>freedb-submit@freedb.org</email +>. For mere information, besøg hjemmesiden for <abbrev +>freedb</abbrev +>.</para> + +<para +>Den lokale <acronym +>CDDB</acronym +>-indgang for en vis &CD;, opbevares i filen <filename +><replaceable +>kategorinavn</replaceable +>/<replaceable +>disk-id</replaceable +></filename +> under basismappen for <acronym +>CDDB</acronym +>. Disse filer kan redigeres med en hvilken som helst teksteditor, hvis du ikke har noget bedre at tage dig til på et ledig tidspunkt.</para> + +</chapter> + +<chapter id="troubleshooting"> +<title +>Fejlsøg cd-spilleren</title> + +<para +>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</para> + +<sect1 id="ts-begin"> +<title +>Begynd at fejlsøge</title> +<para +>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.</para> +<para +>Da jeg trykkede på <guilabel +>Spil</guilabel +>:</para> +<itemizedlist> +<listitem +><para +><link linkend="ts-errorbox" +>Kom en fejlmeddelses frem</link +></para +></listitem> +<listitem +><para +><link linkend="ts-playing" +>Kom ingen fejlmeddelelse frem</link +></para +></listitem> +</itemizedlist> +</sect1> +<sect1 id="ts-playing"> +<title +>Jeg fik ingen fejlmeddelelse, men det kommer ingen lyd ud af mine højtalere</title> +<para +>Først kontrollerer vi at lyden er skruet op i &kscd;.</para> +<para +>Lydstyrkeskyderen er tæt på øverste højre hjørne i &kscd;s vindue. Lydstyrkeskyderen ser sådan her ud:</para> +<screenshot> +<screeninfo +>Lydstyrke-skyderen</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd9.png" format="PNG"/></imageobject> +<textobject +><phrase +>Lydstyrkeskyderen</phrase +></textobject> +</mediaobject> +</screenshot> +<para +>Klik en gang på den lodrette markering og træk den hele vejen længst til højre på skyderen.</para> +<para +>Hvis du kan høre musikken nu, er problemet løst. Hvis du stadigvæk ikke kan høre musikken, så klik <link linkend="ts-kmixlevels" +>her</link +> for at fortsætte.</para> +</sect1> +<sect1 id="ts-kmixlevels"> +<title +>Afgør om mikserlydstyrkeniveauerne er oppe</title> +<para +>Næste skridt er at afgøre om lydstyrkeniveauerne i &kmix; er passende.</para> +<note +><para +>&kmix; er et lydmikserpanel som indgår i &kde;. Mikseren lader dig justere de relative lydstyrkeniveauer for mange lydkomponenter.</para +></note> +<para +>For at starte &kmix;, vælges <menuchoice +><guimenu +>K-menuen</guimenu +> <guimenuitem +>Lyd og video</guimenuitem +> <guimenuitem +>&kmix;</guimenuitem +></menuchoice +>.</para> +<para +>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 <menuchoice +><guimenu +>Opsætning</guimenu +> <guimenuitem +>Indstil &kmix;...</guimenuitem +></menuchoice +> i &kmix; vindue. Det viser et lille vindue med nogle afkrydsningsfelter. For at vise etiketter, markeres afkrydsningsfeltet som hedder <guilabel +>Vis etiketter</guilabel +> og klik på <guibutton +>O.k</guibutton +>.</para> +<para +>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.</para> +<note +><para +>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.</para +></note> +<para +>Klik på fanebladet som hedder <guilabel +>Uddata</guilabel +>.</para> +<para +>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:</para> +<itemizedlist> +<listitem +><para +><guilabel +>Master</guilabel +></para +></listitem> +<listitem +><para +><guilabel +>Master Mono</guilabel +></para +></listitem> +<listitem +><para +><guilabel +>PC Speaker</guilabel +></para +></listitem> +<listitem +><para +><guilabel +>PCM</guilabel +></para +></listitem> +</itemizedlist> + +<para +>Hvis du stadigvæk ikke hør cd'en, så klik på fanebladet som hedder <guilabel +>Input</guilabel +></para> +<para +>Sørg for om at skyderen markeret <guilabel +>CD</guilabel +> ikke er tavs (stærk grøn lysdiode) og at markeringen er hele veje længst oppe på skyderen.</para> +<para +>Hvis du kan høre cd'en nu, kan du holde op med at fejlsøge. Hvis ikke, klik <link linkend="ts-othersounds" +>her</link +> for at fortsætte</para> +</sect1> +<sect1 id="ts-othersounds"> +<title +>Afgør om andre lyde er hørbare på maskinen</title> +<para +>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. </para> +<para +>Først skal vi finde en passende testfil. Dette gøres på kommandolinjen.</para> +<para +>Vælg <menuchoice +><guimenu +>K-menuen</guimenu +><guimenuitem +>System</guimenuitem +> <guimenuitem +>&konsole;</guimenuitem +></menuchoice +>. Et nyt vindue med en kommandolinje vises. Skriv følgende på den:</para> +<para +><screen +><prompt +>$</prompt +> <userinput +><command +>locate -n1 KDE_Window_Open.wav</command +></userinput +></screen +></para> +<para +>Når du trykker på returtasten bliver der en pause, og en enkelt linje med en fil skrives ud under kommandoen du skrev ind.</para> +<para +><screen +><prompt +>$</prompt +> <userinput +><command +>locate -n1 KDE_Window_Open.wav</command +></userinput> +/usr/local/kde/share/sounds/KDE_Window_Open.wav</screen +></para> + +<para +>Nu skal du bede &kde; om at afspille denne korte lydfil. Indtast teksten <command +>noatun</command +> fulgt af et mellemrum. Kopiér derefter det fuldstændige sted for filen som du netop lokaliserede med den foregående kommando. For eksempel: </para> +<para +><screen +><prompt +>$</prompt +> <userinput +><command +>noatun /usr/local/kde/share/sounds/KDE_Window_Open.wav</command +></userinput +></screen +></para> +<para +>Hvis du hører en kort lyd, <link linkend="ts-othersoundsplay" +>klik her</link +>.</para> +<para +>Hvis du ikke hørte en kort lyd, er lydsystemet ikke rigtigt indstillet. Klik <link linkend="ts-noothersounds" +>her</link +> for at fortsætte.</para> +</sect1> + +<sect1 id="ts-noothersounds"> +<title +>Afspilning af testlyden mislykkedes</title> +<para +>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.</para> +<note +><para +>Sørg for dig at cd'en stadigvæk spiller i cd-enheden.</para +></note> +<para +>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:</para> +<itemizedlist> +<listitem +><para +>Sørg for at højtalerne er rigtigt sluttet til maskinen (se brugermanualen om nødvendigt).</para +></listitem> +<listitem +><para +>Hvis dine højtalere kræver batterier, erstat batterierne med nye.</para +></listitem> +<listitem +><para +>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.</para +></listitem> +<listitem +><para +>Hvis dine højtalere har en strømafbryder, så skal du sikre dig at strømmen er på.</para +></listitem> +<listitem +><para +>Hvis dine højtalere har en lydstyrkeknap, så skal du sikre dig at lydstyrken er indstillet halvvejs mellem af og maksimal værdi.</para +></listitem> +</itemizedlist> + +<para +>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.</para> + +<para +>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:</para> + +<itemizedlist> +<listitem +><para +><ulink url="http://www.tldp.org/HOWTO/Sound-HOWTO/index.html" +>Linux Sound HOWTO</ulink +>.</para +></listitem> +<listitem +><para +>Din distributørs hjemmeside har sikkert et brugerforum til at stille spørgsmål.</para +></listitem> +<listitem +><para +>Send et spørgsmål en gruppe på Usenet såsom comp.os.linux</para +></listitem> +<listitem +><para +>Anvend en søgetjeneste for at finde andre som har stødt på lignende problemer som dig.</para +></listitem> +</itemizedlist> +</sect1> + +<sect1 id="ts-othersoundsplay"> +<title +>Afspilning af testlyden lykkedes, men jeg kan ikke høre cd'en</title> +<para +>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.</para> +<para +>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 <link linkend="ts-ddpback" +>her</link +>.</para> +</sect1> + +<sect1 id="ts-ddpback"> +<title +>Forsøg at bruge direkte digital afspilning</title> +<para +>Der er to måder som en personlig computer kan spille en cd.</para> + +<para +>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.</para> + +<para +>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.</para> + +<para +>&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 <guibutton +>Stop</guibutton +> i &kscd;s vindue. Det stopper indtil videre alle forsøg på at spille cd'en.</para> + +<para +>Klik nu på knappen som hedder <guibutton +>Ekstra</guibutton +>. Det viser en lille menu. Vælg <guilabel +>Indstil &kscd;...</guilabel +>. Det åbner en ny dialog.</para> +<para +>Klik på ikonen som hedder <guilabel +>Cd-spiller</guilabel +> til venstre i dialogen.</para> +<para +>Markér afkrydsningsfeltet som hedder <guilabel +>Brug direkte digital afspilning</guilabel +>.</para> +<para +>Klik på <guibutton +>o.k</guibutton +>. </para> +<para +>Klik nu på <guibutton +>Spil</guibutton +> i &kscd;s vindue og se om cd'en begynder at spilles rigtigt.</para> + +<para +>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:</para> + +<itemizedlist> +<listitem +><para +>Din distributørs hjemmeside har sikkert et brugerforum til at stille spørgsmål.</para +></listitem> +<listitem +><para +>Send et spørgsmål til en gruppe på Usenet, såsom comp.os.linux, eller en direktemeddelelseskanal for brugere af dit operativsystem</para +></listitem> +<listitem +><para +>Anvend en søgetjeneste for at finde andre som har stødt på lignende problemer som dig.</para +></listitem> +</itemizedlist> + +</sect1> + + +<sect1 id="ts-errorbox"> +<title +>En fejlmeddelelse blev vist</title> +<para +>Formodentlig er fejlmeddelelsen som vises denne:</para> +<screenshot> +<screeninfo +>Fejldialog</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd19.png" format ="PNG"/></imageobject> +<textobject +><phrase +>Fejldialog</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Information om hvordan denne dialog kan ordnes er tilgængelig i afsnittet <link linkend="questions-and-answers" +>Spørgsmål og svar</link +> i denne håndbog.</para> + +<para +>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 <ulink url="http://www.google.com" +>Google</ulink +>.</para> +</sect1> +</chapter> + +<chapter id="questions-and-answers"> +<title +>Spørgsmål of svar</title> + +<qandaset> +<qandaentry> +<question +><para +>Denne dialog vises når jeg starter &kscd;. Hvad er forkert?</para> +<screenshot> +<screeninfo +>Fejldialog</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd19.png" format ="PNG"/></imageobject> +<textobject +><phrase +>Fejldialog</phrase +></textobject> +</mediaobject> +</screenshot> +</question> +<answer +><para +>Dette betyder at &kscd; ikke kunne åbne din &CD-ROM;enhed. Navnet på enheden under <guilabel +>&CD-ROM;-enhed</guilabel +> i <guilabel +>Kscd's indstillinger</guilabel +> skal angive blokenheden som hører sammen med din &CD-ROM;-enhed. Dette er ofte et hårdt link til en tilsvarende <acronym +>IDE</acronym +>- (<filename +>/dev/hdx</filename +>) eller <acronym +>SCSI</acronym +>-enhed (<filename +>/dev/sdx</filename +>).</para> + +<para +>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 <emphasis +>ingenting</emphasis +> at gøre med <application +>SUID</application +> kommandoen <command +>mount</command +> (Set User <acronym +>ID</acronym +> program bruger funktionen <function +>setuid()</function +> 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.</para> + +<para +>Hvis du kender til root's kodeord, kan du rette dette hurtigt og enkelt: Log på som root og skriv <userinput +><command +>chmod</command +> <option +>a+r</option +> <filename +><replaceable +>/dev/cdrom</replaceable +></filename +></userinput +> for at lade alle brugere på systemet læse fra <filename +>/dev/cdrom</filename +>. 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.</para> + +<para +>Se også kapitlet <link linkend="configuring-kscd" +>Indstil KSCD </link +></para +></answer> +</qandaentry> + +<qandaentry +> +<question +><para +>Jeg kan ikke få <acronym +>CDDB</acronym +> til at virke. Kan jeg få mere detaljeret information om hvad som kan være gået galt?</para +></question +> +<answer +><para +>Hvis du oplever problemer med <acronym +>CDDB</acronym +>-funktionen, prøv at starte &kscd; fra kommandolinjen med flaget <option +>-d</option +> og kontrollér fejlretningsudskrifterne.</para +></answer +> +</qandaentry> +</qandaset> +</chapter> + +<chapter id="credits-and-license"> +<title +>Medvirkende og licens</title> + +<para +>&kscd; Ophavsret 1997,1998 &Bernd.Johannes.Wuebben; &Bernd.Johannes.Wuebben.mail;</para> + +<para +>&kscd; indeholder kode fra: </para> +<itemizedlist> +<listitem +><para +><application +>workman</application +> 1.4 beta 3 Ophavsret (c) Steven Grimm <email +>koreth@hyperion.com</email +></para +></listitem> +</itemizedlist> + + +<para +>En særlig tak til Ti Kan og Steve Scherf, opfinderne af <acronym +>CDDB</acronym +>-databasebegrebet. Besøg <ulink url="http://www.cddb.com/" +>http://ww.cddb.com</ulink +> for mere information om <acronym +>CDDB</acronym +>.</para> + +<para +>En meget varm tak også til David White, som skrev den oprindelige &kscd;-hjælpedokumentation. Storartet job, David!</para> + +<para +>Dokumentation opdateret for KDE 2.0, og ophavsret ved &Jonathan.Singer; &Jonathan.Singer.mail;</para> + +<para +>Dokumentation opdateret for KDE 3.4, og ophavsret ved &Mike.McBride; &Mike.McBride.mail;</para> + +&erik.kjaer.pedersen.credit; +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="how-to-obtain-kscd"> +<title +>Hvordan får man fat på &kscd;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>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;.</para> + +</sect1 +> + +<sect1 id="compilation-and-installation" +> +<title +>Kompilering og installation</title +> &install.compile.documentation; <para +>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.</para> + +</sect1> + +</appendix> + +&documentation.index; +</book> +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes: nil +sgml-general-insert-case: lower +End: +--> diff --git a/tde-i18n-da/docs/kdemultimedia/noatun/Makefile.am b/tde-i18n-da/docs/kdemultimedia/noatun/Makefile.am new file mode 100644 index 00000000000..29f2e0115ae --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/noatun/Makefile.in b/tde-i18n-da/docs/kdemultimedia/noatun/Makefile.in new file mode 100644 index 00000000000..85b63358146 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/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/kdemultimedia/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@ +kdeinitdir = @kdeinitdir@ +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/kdemultimedia/noatun/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/kdemultimedia/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/kdemultimedia/noatun/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/noatun/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/noatun/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/kdemultimedia/noatun/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/kdemultimedia/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/kdemultimedia/noatun/index.cache.bz2 b/tde-i18n-da/docs/kdemultimedia/noatun/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..8e96074f75a --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/noatun/index.cache.bz2 diff --git a/tde-i18n-da/docs/kdemultimedia/noatun/index.docbook b/tde-i18n-da/docs/kdemultimedia/noatun/index.docbook new file mode 100644 index 00000000000..d5291117090 --- /dev/null +++ b/tde-i18n-da/docs/kdemultimedia/noatun/index.docbook @@ -0,0 +1,624 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&noatun;"> + <!ENTITY package "kdemultimedia"> + <!ENTITY % Danish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>&noatun;-håndbogen</title> + +<authorgroup> +<author +><firstname +>Charles</firstname +> <surname +>Samuels</surname +> <affiliation +> <address +><email +>charles@kde.org</email +></address> +</affiliation> +</author> +&lars.schunk.role; +</authorgroup> + +<copyright> +<year +>2001</year +><year +>2002</year> +<holder +>Charles Samuels</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2002-03-01</date> +<releaseinfo +>2.00.00</releaseinfo +> <!-- Use App version here --> + +<abstract> +<para +>&noatun; er en fuldt udstyret plugin-baseret medieafspiller for &kde;.</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>Noatun</keyword> +<keyword +>kdemultimedia</keyword> +<keyword +>mp3</keyword> +<keyword +>musik</keyword> +<keyword +>medie</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Indledning</title> + +<para +>&noatun; er en fuldt udstyret plugin-baseret medieafspiller for &kde;.</para> + +<sect1 id="features"> +<title +>Egenskaber</title> + +<para +>&noatun; er en fuldstændig forende til &arts; — the Analog Real-Time Synthesizer. For at tilføje spilleobjekter, gå til <ulink url="http://noatun.kde.org/plugins" +> http://noatun.kde.org/plugins.phtml</ulink +>, eller <ulink url="http://mpeglib.sf.net" +> http://mpeglib.sf.net</ulink +>. Som standard understøtter &arts; MP3 og MPEG-1. Vorbis er også understøttet hvis Vorbis-bibliotekerne var tilgængelige under kompileringen af &kde;. </para> + +</sect1> +</chapter> + +<chapter id="using-noatun"> +<title +>Brug af &noatun;</title> + +<para +>&noatun; starter som normalt op med brugergrænsefladen 'Excellent'. Dette plugin blev valgt da det ligner andre KDE-programmer.</para> + +<para +>&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! </para> + +<sect1 id="title-format"> +<title +>Titelformat</title> +<para +>&noatun;'s indstillingsvindue har et mærkeligt <guilabel +>Titelformat</guilabel +> tekstfelt. Du kan indtaste en formatstreng for at brugerindstille hvordan titler ser ud. </para> + +<itemizedlist> +<listitem +><para +>Al tekst ser normal ud, medmindre det er indenfor et <literal +>$( )</literal +>.</para +></listitem> +<listitem +><para +>Teksten indenfor <literal +>$( )</literal +> vil læse &noatun;-egenskaben for det givne punkt, og erstatte teksten med det.</para +></listitem> +<listitem +><para +>Hvis der er citationstegn indenfor <literal +>$( )</literal +>, vil teksten indenfor citationstegnene blive vist normalt, men kun egenskaben for navnet eksisterer.</para +></listitem> +<listitem +><para +>Citationstegnene kan enten være i begyndelsen af <literal +>$( )</literal +>, ved slutningen af den, eller både i begyndelsen og slutningen</para +></listitem> +</itemizedlist> + +<para +>For eksempel bliver <literal +>$(bitrate)</literal +> 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: <literal +>$(bitrate"kbps")</literal +> for eksempel vil vise filens bitrate, fulgt af tegnene <literal +>"kbps"</literal +>. Ingen af delene vil blive vist hvis egenskaben <quote +>bitrate</quote +> ikke eksisterer. </para +> +</sect1> + +</chapter> + +<chapter id="using-noatun-plugins"> +<title +>Brug af &noatun;-plugin</title> + +<para +>Du kan vælge forskellige plugin ved at gå ind i menuen <guimenuitem +>Opsætning</guimenuitem +> og vælge <guimenuitem +>Indstil &noatun;...</guimenuitem +>. Klik på <guilabel +>Plugin</guilabel +> 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. </para> + +<sect1 id="milk-chocolate"> +<title +>Mælkechokolade</title> + +<para +>Mælkechokolade er en lille og simpel brugergrænseflade. Knapperne fungerer stort set som på en cd-afspiller og '<guiicon +>skub ud</guiicon +>'-knappen åbner en spilleliste. Knappen med <guiicon +>et kryds på et papir</guiicon +> fjerner det aktuelle spillelistepunkt, men sletter ikke filen fra disken, og <guiicon +>pil</guiicon +>-knappen aktiverer/deaktiverer løkkeafspilning. En menu er tilgængelig ved at klikke med højre museknap hvor som helst i vinduet.</para> + +</sect1> + +<sect1 id="young-hickory"> + +<title +>Young Hickory</title> + +<para +>Young Hickory er et plugin til &kde;'s statusfelt, området som normalt befinder sig nær uret.</para> + +<para +>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.</para> + +</sect1> + +<sect1 id="html-exporter"> +<title +><acronym +>HTML</acronym +> spilleliste-eksport</title> + +<para +>Dette plugin vil placere din spilleliste i en flot <acronym +>HTML</acronym +>-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.</para> + +<para +>Når du har sat de ønskede indstillinger, vil <guimenu +>Handling</guimenu +>-menuens <guimenuitem +>Eksportér spilleliste</guimenuitem +> åbne en fildialog, så du kan vælge hvor HTML-filen skal gemmes. </para> + +</sect1> + +<sect1 id="kjofol-skin"> +<title +><application +>K-Jöfol</application +> Skins</title> + +<para +>&noatun;s <application +>K-Jöfol</application +> forside-indlæser er en reimplementering af et &Windows;-program af samme navn.</para> + +<para +>&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.</para> + +<para +>For at installere en forside, (i &Windows; ZIP-format) kan du bruge forside-installatøren, der kan findes i &noatun;s indstillingsdialog.</para> + +<para +>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:</para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>cd</command +> <filename class="directory" +>$KDEHOME/share/apps/noatun</filename +></userinput> +<prompt +>%</prompt +> <userinput +><command +>mkdir</command +> <option +>kjskins</option +></userinput +> (om nødvendigt) +<prompt +>%</prompt +> <userinput +><command +>cd</command +> <option +>kjskins</option +></userinput> +<prompt +>%</prompt +> <userinput +><command +>mkdir</command +> <option +>new_skin</option +> ; <command +>cd</command +> <replaceable +>new_skin</replaceable +></userinput> +<prompt +>%</prompt +> <userinput +><command +>unzip</command +> <replaceable +>/path/to/new_skin.zip</replaceable +></userinput +></screen> + +<para +>Du kan også lave dine egne forsider ved at følge vejledningen på <ulink url="http://www.angelfire.com/mo/nequiem/tutorial.html" +>http://www.angelfire.com/mo/nequiem/tutorial.html</ulink +>. </para> + +</sect1> + +<sect1 id="splitplaylist"> +<title +>Den opdelte spilleliste</title> + +<para +>Den opdelte spilleliste havde en simpel, klassisk-stil design. Dobbeltklik på en indgang vil spille den (hvilket valg af den efterfulgt af <keycap +>Enter</keycap +> også vil). Du kan også trække filer og &URL;er ind. </para> + +<para +>Efter &kde; 3.0, vil den opdelte spilleliste (<acronym +>SPL</acronym +>) gemme sine data i &XML;-format, men den vil automatisk import <acronym +>m3u</acronym +>-listen hvis &XML;-filen ikke eksisterer. Det betyder at du kan skrive til m3u-filen, og slette &XML;-filen, for automatisk at generere spillelister. </para> + +<para +>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. </para> +</sect1> + +<sect1 id="winampskin"> +<title +>Winamp-forsider</title> +<para +>Hvis du faktisk bruger <trademark +>Winamp</trademark +>-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 <mousebutton +>højre</mousebutton +>klik (eller et klik på ikonet i øverste venstre hjørne) åbner &noatun;s standardværktøjslinje. </para> +<para +>Du kan installere nye forsider ved at oprette en mappe for dem i <filename class="directory" +>$KDEHOME/share/apps/noatun/skins/winamp</filename +>, hvorefter du unzipper forsiden i mappen. <trademark +>Winamp</trademark +>-forsider med endelsen <literal role="extension" +>.wsz</literal +> 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. </para> +</sect1> + +<sect1 id="metatag"> +<title +>Metatag</title> +<para +>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 <guimenu +>Handlinger</guimenu +>-menuens underpunkt <guimenu +>Mærkeredigering</guimenu +>. Det understøtter redigering af <acronym +>ID3</acronym +>-mærker såvel som OggVorbis-mærker. Det kan også læse filers bitrate. </para> +</sect1> + +<sect1 id="keyz"> +<title +>Keyz</title> +<para +>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! </para> +<para +>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 <quote +>multimedietastaturer</quote +> værdifulde. </para> +</sect1> + +<sect1 id="ir-control"> +<title +>Infrarød kontrol</title> +<para +>Hvis du har en fjernbetjening til din computer (som dem der findes på fjernsynskort med <trademark class="registered" +>Brooktree</trademark +>-tunere), og din infrarøde fjernbetjening er understøttet af <ulink url="http://www.lirc.org" +>LIRC</ulink +>, skulle dette fungere. Som med Keyz, er navnet ikke særlig spændende, men dette plugin lader dig binde handlinger til tastetryk. </para> +<para +>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. </para> +<para +>Hvis du har et <acronym +>TV</acronym +>-kort, er et praktisk trick at binde lyddæmperknappen til Pause, sådan at du kan slukke for lyden til dit <acronym +>TV</acronym +>-fremvisningsprogram, mens du sætter &noatun; i gang og vice versa. Dette er specielt nyttigt i tilfælde af reklamer. </para> +</sect1> +</chapter> + +<chapter id="questions-answers-and-tips"> + +<title +>Spørgsmål, svar og tips</title> + +<qandaset id="faq"> +<title +>Ofte stillede spørgsmål</title> +<qandaentry> +<question> +<para +>Musikken hakker meget, når jeg flytter vinduer.</para> +</question> +<answer> +<para +>Du kan have &arts; buffer mere som følger: </para +> + +<itemizedlist +> +<listitem +><para +>Start &kcontrol;</para +></listitem> +<listitem +><para +>Gå til <guilabel +>Lyd</guilabel +>-gruppen</para +></listitem +> +<listitem +><para +>Gå til afsnittet <guilabel +>Lydserver</guilabel +></para +></listitem +> +<listitem +><para +>Øg svartiden —384ms er sædvanligvis tilstrækkelig for de fleste computere.</para +></listitem +> +</itemizedlist +> + +<para +>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. </para +> + +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Jeg kan ikke fjerne en spilleliste eller en brugergrænseflade fra plugin-listen.</para> +</question> +<answer> +<para +>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. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Hvor kan jeg finde flere plugin?</para> +</question> +<answer> +<para +>Tredjepartsudviklere kan indsende deres egne plugin til <ulink url="http://noatun.kde.org/plugins" +>&noatun;-hjemmesiden</ulink +>, hvorfra de kan downloades af brugerne. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Hvordan skriver jeg et &noatun;-plugin?</para> +</question> +<answer> +<para +>Dokumentation, en <acronym +>API</acronym +>-reference og et kildekode-eksempel er tilgængelig på <ulink url="http://noatun.kde.org" +>&noatun;-hjemmesiden</ulink +>. Og i Open Source-softwarens ånd er kildekoden til &noatun; og alle standard-plugin tilgængelige. </para> +</answer> +</qandaentry> +</qandaset> +</chapter> + +<chapter id="credits-and-licenses"> +<title +>Medvirkende og licens</title> + +<para +>Program ophavsret 2000-2002 Charles Samuels <email +>charles@kde.org</email +></para> + +<para +>Dokumentation ophavsret 2002 Charles Samuels <email +>charles@kde.org</email +></para> + +<para +>&noatun; er gjort mulig af følgende mennesker:</para> + +<itemizedlist> +<listitem> +<para +>Charles Samuels <email +>charles@kde.org</email +></para> +</listitem> +<listitem> +<para +>Neil Stevens <email +>multivac@fcmail.com</email +></para> +</listitem> +<listitem> +<para +>Stefan Westerfeld <email +>stefan@space.twc.de</email +></para> +</listitem> +<listitem> +<para +>Martin Vogt <email +>mvogt@rhrk.uni-kl.de</email +></para> +</listitem> +<listitem> +<para +>Malte Starostik <email +>malte.starostik@t-online.de</email +></para> +</listitem> +<listitem> +<para +>Nikolas Zimmermann <email +>wildfox@kde.org</email +></para> +</listitem> +<listitem> +<para +>Stefan Schimanski <email +>1Stein@gmx.de</email +></para> +</listitem> +</itemizedlist> +&lars.schunk.credit; +&underFDL; &underBSDLicense; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="how-to-obtain-Noatun"> +<title +>Anskaffelse af &noatun;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Systemkrav</title> + +<para +>&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.</para> + +<para +>For at en platform let kan understøttes, skal den have pthread-understøttelse og <acronym +>OSS</acronym +>-lydsystemet. <acronym +>ALSA</acronym +> er imidlertid understøttet i &Linux;.</para> + +</sect1> + +<sect1 id="compilation-and-installation"> +<title +>Kompilering og installation</title> +&install.compile.documentation; <para +>Hvis du løber ind i problemer, så rapportér dem venligst til forfatteren via <email +>charles@kde.org</email +>.</para> + +<para +>Hvis du har denne dokumentation, så har du højst sandsynligt allerede kompileret &noatun;.</para> + +</sect1> + +</appendix> + +<glossary id="glossary"> +<title +>Glosar</title> + +<glossentry id="gloss-mc"> +<glossterm +>Mælkechokolade</glossterm +><glossdef> +<para +>Mælkechokolade er et simpelt, minimalistisk brugerflade-plugin. </para +></glossdef +></glossentry> + +<glossentry id="gloss-arts"> +<glossterm +>&arts;</glossterm +><glossdef> +<para +>&arts; er den Analoge RealTids-Synthesizer. En slagkraftig mediestruktur, som &noatun; anvender. </para +></glossdef +></glossentry> +<glossentry id="gloss-kj"> +<glossterm +>K-Jöfol</glossterm +><glossdef> +<para +>Dette plugin indlæser forsider der oprindeligt bruges til en medieafspiller til &Windows; af samme navn. </para +></glossdef +></glossentry> + +<glossentry id="gloss-keyz"> +<glossterm +>Keyz</glossterm +><glossdef> +<para +>Keyz tillader dig at binde tastetryk til handlinger i &noatun;. </para +></glossdef +></glossentry> +<glossentry id="gloss-young-hickory"> +<glossterm +>Young Hickory</glossterm +><glossdef> +<para +>Young Hickory er et statusfelt-plugin. </para +></glossdef +></glossentry> +<glossentry id="gloss-kaiman"> +<glossterm +>Noatun</glossterm +><glossdef> +<para +>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. </para +></glossdef +></glossentry> + +</glossary> + +&documentation.index; +</book> + |