diff options
Diffstat (limited to 'tde-i18n-sv/docs/tdemultimedia')
126 files changed, 31071 insertions, 0 deletions
diff --git a/tde-i18n-sv/docs/tdemultimedia/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/Makefile.in new file mode 100644 index 00000000000..bd2453068bf --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/Makefile.in @@ -0,0 +1,587 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. kio_audiocd juk artsbuilder noatun kaboodle kmid krec kmidi kmix kcontrol kaudiocreator kscd +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=Makefile.in Makefile.am + +#>+ 2 +docs-am: + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/Makefile.in new file mode 100644 index 00000000000..6cc9d9d7efe --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/artsbuilder +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. images +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/artsbuilder/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=future.docbook index.docbook arts-structure.png 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) arts-structure.png 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 arts-structure.png 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 arts-structure.png 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 arts-structure.png glossary.docbook porting.docbook apis.docbook gui.docbook references.docbook mcop.docbook index.docbook detail.docbook future.docbook artsbuilder.docbook digitalaudio.docbook faq.docbook modules.docbook tools.docbook midi.docbook helping.docbook midiintro.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/artsbuilder/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/apis.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/apis.docbook new file mode 100644 index 00000000000..d5a0e38b151 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/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änssnitt</title> + +<sect1 id="api-overview"> +<title +>Översikt</title> +<para +>aRts är inte enbart ett program, den tillhandahåller också ett antal olika programmeringsgränssnitt (API) för olika syften. I det här avsnittet, försöker jag beskriva "helhetsbilden", en snabb överblick av vad de här gränssnitten är tänkta att användas till, och hur de hänger samman. </para> + +<para +>Det finns en viktig distinktion som måste göras: De flesta gränssnitten är <emphasis +> språk- och platsoberoende</emphasis +> eftersom de är specificerade som <emphasis +>mcopidl</emphasis +>. Det här betyder att man egentligen kan använda den service som de tillhandahåller från vilket språk som helst, implementera dem i vilket språk som helst, och man behöver inte bry sig om ifall man pratar med lokala eller fjärrobjekt. Här är först en lista på dem: </para> + + +<variablelist> +<varlistentry> +<term +>core.idl</term> + <listitem +><para +>Grundläggande definitioner som bildar grunden i MCOP-funktionen, som själva protokollet, definitioner av objekt, handlaren, flödessystemet och så vidare. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsflow.idl</term> + + <listitem +><para +>De här innehåller flödessystemet som man använder för att ansluta ljudflöden, definitionen av <emphasis +>Arts::SynthModule</emphasis +> som är grunden för alla gränssnitt som har strömmar, och till slut några användbara ljudobjekt </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>kmedia2.idl</term> + + + <listitem +><para +>Här definieras <emphasis +>Arts::PlayObject</emphasis +>, ett objekt som kan spela upp en mediatyp. Mediaspelare som KDE:s mediaspelare noatun kommer att kunna spela upp vilka media som helst som har PlayObject. Därför är det vettigt att implementera PlayObject för olika format (som mp3, mpg video, midi, wav, ...) med det här som grund, och det finns redan många. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>soundserver.idl</term> + + <listitem +><para +>Här definieras ett gränssnitt för systemets ljudserver artsd. Gränssnittet benämns <emphasis +>Arts::SoundServer</emphasis +>, och implementerar funktioner som att ta emot strömmar från nätverket, spela samplingar, skapa andra egna aRts-objekt och så vidare. Nätverkstransparens är underförstådd eftersom MCOP används (som för allt övrigt här). </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsbuilder.idl</term> + <listitem +><para +>Den här modulen definierar grundläggande flödesfunktioner, dvs. kombinera enklare objekt till mer komplexa genom att definiera en graf som binder samman dem. Den definierar det grundläggande gränssnitten <emphasis +>Arts::StructureDesc</emphasis +>, <emphasis +>Arts::ModuleDesc</emphasis +> och <emphasis +>Arts::PortDesc</emphasis +> som innehåller en beskrivning av en struktur, modul och port. Det finns också ett sätt att skapa ett "levande nätverk av objekt" från de här förbindelserna och värdebeskrivningarna med användning av en fabrik. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsmidi.idl</term> + + <listitem +><para +>Den här modulen definierar grundläggande midi-funktioner, som objekt som skapar midi-händelser, vad en midi-händelse är, och <emphasis +>Arts::MidiManager</emphasis +> för att förbinda producenter och konsumenter av midi-händelser, och så vidare. Som alltid är nätverkstransparens underförstådd. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsmodules.idl</term> + <listitem +><para +>Här finns diverse ytterligare filter, oscillatorer, ljudeffekter, fördröjningar och så vidare, allt som behövs för riktigt användbar signalbehandling, och för att bygga komplexa instrument och effekter från de här grundläggande byggblocken. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>artsgui.idl</term> + + <listitem +><para +>Det här tar hand om synliga objekt. Det definierar den grundläggande typen <emphasis +> Arts::Widget</emphasis +> som alla moduler med ett grafiskt gränssnitt utgår från. Det här åstadkommer oberoende av verktygslåda, och ... visuell redigering av det grafiska gränssnittet, och möjlighet att serialisera grafiska gränssnitt. Dessutom, eftersom de grafiska komponenterna har normala egenskaper, kan deras värden på ett rättframt sätt anslutas till vissa signalbehandlingsmoduler. (dvs. värdet av ett skjutreglage till klippning för ett filter). Som alltid, nätverkstransparent. </para +></listitem> + +</varlistentry> + +</variablelist> +<para +>Där det är möjligt implementeras aRts själv med IDL. Å andra sidan finns det några <emphasis +>språkspecifika</emphasis +> programmeringsgränssnitt, som antingen använder enkel C++ eller C. Det är ofta förnuftigt att använda IDL-gränssnitt om möjligt, och de övriga gränssnitten när det är nödvändigt. Här är en lista på språkspecifika programmeringsgränssnitt: </para> + +<variablelist> + +<varlistentry> +<term +>KNotify, KAudioPlayer (ingår i libtdecore)</term> + + <listitem +><para +>De här är KDE:s programmeringsgränssnitt för bekvämlighet med de enkla och väldigt vanliga fall, när man bara vill spela upp en sampling. Gränssnitten är enkel C++, Qt/KDE-optimerade, och så enkla som de kan vara. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libartsc</term> + <listitem +><para +>Enkelt C-gränssnitt för ljudservern. Mycket användbart för att anpassa gamla program. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libmcop</term> + + <listitem +><para +>Här sker all magi som har med MCOP att göra. Biblioteket innehåller de grundläggande saker som behövs för att skriva ett enkelt MCOP-program, avsändaren, tidtagning, I/O-hantering, men också de interna funktioner som behövs för att själva MCOP-protokollet ska fungera. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libartsflow</term> + <listitem +><para +>Förutom implementeringen av artsflow.idl, några användbara verktyg för konvertering av samplingsfrekvens. </para +></listitem> + +</varlistentry> + +<varlistentry> +<term +>libqiomanager</term> + + <listitem +><para +>Integration av MCOP i Qt:s händelsesnurra, när man skriver Qt-program som använder MCOP. </para +></listitem> + +</varlistentry> + +</variablelist> + + + +</sect1> +<sect1 id="knotify"> +<title +>knotify</title> +<para +>Ännu inte skrivet. </para> +</sect1> + +<sect1 id="kaudioplayer"> +<title +>kaudioplayer</title> +<para +>Ännu inte skrivet. </para> +</sect1> + +<sect1 id="libkmid"> +<title +>libkmid</title> +<para +>Ännu inte skrivet. </para> +</sect1> + +<sect1 id="kmedia2"> +<title +>kmedia2</title> +<para +>Ännu inte skrivet. </para> +</sect1> + +<sect1 id="soundserver"> +<title +>ljudserver</title> +<para +>Ännu inte skrivet. </para> +</sect1> + +<sect1 id="artsflow"> +<title +>artsflow</title> +<para +>Ännu inte skrivet. </para> +</sect1> + +<sect1 id="capi"> +<title +>C <acronym +>API</acronym +></title> + +<sect2 id="capiintro"> +<title +>Inledning</title> + +<para +>C-gränssnittet för &arts; skapades för att göra det lätt att skriva och anpassa enkla C-program till &arts; ljudserver. Det tillhandahåller flödesfunktioner (att skicka samplingsströmmar till <application +>artsd</application +>), antingen med eller utan blockering. För de flesta program tar man helt enkelt bort de få systemanrop som hanterar ljudenheten och byter ut dem mot lämpliga anrop till &arts;.</para> + +<para +>Jag gjorde två anpassningar för att verifiera idén: <application +>mpg123</application +> och <application +>quake</application +>. Du kan skaffa programfixarna <ulink url="http://space.twc.de/~stefan/kde/download/artsc-patches.tar.gz" +>härifrån</ulink +>. Bidra gärna med dina egna programfixar till underhållaren av &arts; eller till programvarupaket för multimedia så att de kan integrera stöd för &arts; i sin kod.</para> + +</sect2> + +<sect2 id="capiwalkthru"> +<title +>Snabbtur</title> + +<para +>Att skicka ljud till ljudservern med gränssnittet är mycket enkelt:</para> +<procedure> +<step +><para +>infoga deklarationsfilen med <userinput +>#include <artsc.h></userinput +></para +></step> +<step +><para +>initiera gränssnittet med <function +>arts_init()</function +></para +></step> +<step +><para +>skapa en ström med <function +>arts_play_stream()</function +></para +></step> +<step +><para +>anpassa särskilda parametrar med <function +>arts_stream_set()</function +></para +></step> +<step +><para +>skriva samplingsdata till strömmen med <function +>arts_write()</function +></para +></step> +<step +><para +>stänga strömmen med <function +>arts_close_stream()</function +></para +></step> +<step +><para +>frigöra gränssnittet med <function +>arts_free()</function +></para +></step> +</procedure> + +<para +>Här är ett exempel på ett litet program som visar det här:</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 fel: %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 fel: %s\n", arts_error_text(errorcode)); + return 1; + } + } + + arts_close_stream(stream); + arts_free(); + + return 0; +} +</programlisting> +</sect2> + +<sect2 id="capiartscconfig"> +<title +>Att kompilera och länka: <application +>artsc-config</application +></title> + +<para +>För att lätt kunna kompilera och länka program med &arts; C-gränssnitt, finns verktyget <application +>artsc-config</application +> som känner till vilka bibliotek som man måste länka med och var deklarationsfilerna finns. Det anropas med</para> + +<screen +><userinput +><command +>artsc-config</command +> <option +>--libs</option +></userinput +> +</screen> + +<para +>för att ta reda på biblioteken och </para> + +<screen +><userinput +><command +>artsc-config</command +> <option +>--cflags</option +></userinput +> +</screen> + +<para +>för att ta reda på ytterligare C-kompilatorväljare. Exemplet ovan skulle ha kunnat kompileras med kommandoraden:</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 +>Biblioteksreferens</title> + +<para +>[ATT GÖRA: skapa dokumentation för artsc.h med kdoc] </para> + +</sect2> + +</sect1> +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/arts-structure.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/arts-structure.png Binary files differnew file mode 100644 index 00000000000..1869b5598ff --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/arts-structure.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/artsbuilder.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/artsbuilder.docbook new file mode 100644 index 00000000000..dc286a81aeb --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/artsbuilder.docbook @@ -0,0 +1,917 @@ +<chapter id="artsbuilder"> +<title +>aRts-byggare</title> + +<sect1 id="overview"> +<title +>Översikt</title> + +<para +>Först av allt, när du försöker köra aRts-byggaren, ska du också köra ljudservern (&artsd;). Oftast, om du använder &kde; 2.1, ska detta redan vara fallet. Om inte, så kan du ställa in automatisk start av ljudservern i inställningscentralen, med <menuchoice +><guilabel +>Ljud</guilabel +><guilabel +>Ljudserver</guilabel +></menuchoice +>. </para> + +<para +>När du kör &arts;, körs alltid små moduler. aRts-byggaren är ett verktyg för att skapa nya strukturer av små ihopkopplade moduler. Du klickar helt enkelt i rutnätet för att lägga till en modul. För att göra detta, välj dem från menyn <guimenu +>Moduler</guimenu +>, och klicka någonstans på den gröngrå ytan. </para> + +<para +>Moduler har ofta portar (där ljudsignaler vanligtvis leds in eller ut). För att koppla ihop två portar, klicka på den första, som gör att den blir orange, och klicka sedan på den andra. Du kan bara förbinda en inport (på översidan av en modul) med en utport (på undersidan av en modul). Om du vill ange ett konstant värde för en port (eller koppla ifrån den), gör det genom att dubbelklicka på porten. </para> + +</sect1> + +<sect1 id="artsbuilder-tutorial"> +<title +>Handledning</title> + +<sect2 id="step-1"> +<title +>Steg 1</title> + +<para +>Starta aRts-byggaren. </para> + +<para +>Du behöver en Synth_AMAN_PLAY-modul för att höra utdata som du skapar. Så skapa en Synth_AMAN_PLAY-modul genom att välja <menuchoice +><guimenu +>Moduler</guimenu +> <guisubmenu +>Syntes</guisubmenu +> <guisubmenu +>Ljud-IO</guisubmenu +> <guisubmenu +>Synth_AMAN_PLAY</guisubmenu +></menuchoice +> och klicka på den tomma modulytan. Placera den nedanför den femte raden ungefär, eftersom vi kommer att lägga till en del grejor ovanför. </para> + +<para +>Modulen kommer att ha en parameter <parameter +>title</parameter +> (porten längst till vänster), och <parameter +>autoRestoreID</parameter +> (intill porten längst till vänster) för att den ska kunna hittas. För att fylla i de här, dubbelklicka på portarna, välj konstant värde och skriv <userinput +>handledning</userinput +> i textrutan. Klicka <guibutton +>OK</guibutton +> för att verkställa. </para> + +<para +>Välj <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Kör struktur</guimenuitem +> </menuchoice +>. Du hör absolut ingenting. Uppspelningsmodulen behöver också någon indata... ;) Om du har lyssnat på tystnaden ett tag, klicka <guibutton +>Avsluta</guibutton +> och gå till steg 2. </para> +</sect2> + +<sect2 id="step-2"> +<title +>Steg 2</title> + +<para +>Skapa en Synth_WAVE_SIN-modul (från <menuchoice +> <guimenu +>Moduler</guimenu +> <guimenuitem +>Syntes</guimenuitem +> <guimenuitem +>Vågformer</guimenuitem +></menuchoice +>) och placera den ovanför Synth_AMAN_PLAY-modulen (lämna en rads mellanrum mellan dem). </para> + +<para +>Som du ser, så producerar den någon utdata, men kräver <guilabel +>pos</guilabel +> som indata. Låt oss först ansluta utporten till högtalarna. Klicka på porten <guilabel +>out</guilabel +> på Synth_WAVE_SIN och sedan på porten <guilabel +>left</guilabel +> på Synth_AMAN_PLAY. Voila, du har kopplat ihop två moduler. </para> + +<para +>Oscillatorer i &arts; kräver inte en frekvens som indata, utan istället en position i vågformen. Positionen ska vara mellan 0 och 1, som i ett standardobjekt Synth_WAVE_SIN översätts till området 0 .. 2*Pi. För att skapa oscillerande värden från en frekvens, används en Synth_FREQUENCY modul. </para> + +<para +>Skapa en Synth_FREQUENCY-modul (från <menuchoice +> <guimenu +>Moduler</guimenu +> <guimenuitem +>Syntes</guimenuitem +> <guimenuitem +>Oscillation & modulation</guimenuitem +></menuchoice +>) och anslut dess <quote +>pos</quote +> utgång till <quote +>pos</quote +> ingången på Synth_WAVE_SIN. Sätt frekvensporten för frekvensgeneratorn till det konstanta värdet 440. </para> + + +<para +>Välj <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Kör struktur</guimenuitem +> </menuchoice +>. Du kommer att höra en sinusvåg på 440 Hz i en av dina högtalare. Om du har lyssnat på den ett tag, klicka <guibutton +>Avsluta</guibutton +> och gå till steg 3. </para> + +</sect2> + +<sect2 id="step-3"> +<title +>Steg 3</title> + +<para +>OK, det vore trevligare om du kunde höra sinusvågen i båda högtalarna. Anslut den högra porten på Synth_PLAY till utgången från Synth_WAVE_SIN också. </para> + +<para +>Skapa ett Synth_SEQUENCE-objekt (från <menuchoice +><guimenu +>Moduler</guimenu +> <guisubmenu +>Syntes</guisubmenu +><guisubmenu +>Midi & sekvensiering</guisubmenu +></menuchoice +>). Det ska placeras överst på skärmen. Om du behöver mer utrymme kan du flytta de andra modulerna genom att markera dem (för att markera flera moduler håll nere skifttangenten), och dra omkring dem. </para> + +<para +>Anslut nu frekvensutgången på Synth_SEQUENCE till frekvensingången på Synth_FREQUENCY-modulen. Ange sedan sekvensens hastighet som konstant värde 0.13 (hastigheten är porten längs till vänster). </para> + +<para +>Gå nu till porten längs till höger (seq) på Synth_SEQUENCE och skriv in <userinput +>A-3;C-4;E-4;C-4;</userinput +> som konstant värde. Det här anger en sekvens. Mer om detta i modulreferensen. </para> + +<note> +<para +>Synth_SEQUENCE <emphasis +>behöver</emphasis +> verkligen en sekvens och hastigheten. Utan dessa kanske du får minnesdumpar. </para> +</note> + +<para +>Välj <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Kör struktur</guimenuitem +> </menuchoice +>. Du kommer att höra en trevlig sekvens spelas upp. Om du har njutit av känslan, klicka <guibutton +>Avsluta</guibutton +> och gå till steg 4. </para> +</sect2> + +<sect2 id="step-4"> +<title +>Steg 4</title> + +<para +>Skapa en Synth_PSCALE-modul (från <menuchoice +><guimenu +>Moduler</guimenu +> <guisubmenu +>Syntes</guisubmenu +> <guisubmenu +>Envelopper</guisubmenu +> </menuchoice +>). Koppla bort utgången från sinusvågen genom att dubbelklicka på den och välja <guilabel +>inte ansluten</guilabel +>. Anslut </para> + +<orderedlist +><listitem> +<para +>Utgången SIN till ingången på PSCALE</para> +</listitem> +<listitem> +<para +>PSCALE utgången till AMAN_PLAY på vänster sida</para> +</listitem> +<listitem> +<para +>PSCALE utgången till AMAN_PLAY på höger sida</para> +</listitem> +<listitem> +<para +>SEQUENCE pos till PSCALE pos</para> +</listitem> +</orderedlist> + +<para +>Till slut, sätt PSCALE top till något värde, till exempel 0.1. </para> + +<para +>Hur fungerar detta nu: Synth_SEQUENCE ger ytterligare information om positionen för tonen den spelar just nu, där 0 betyder precis påbörjad och 1 betyder avslutad. Modulen Synth_PSCALE skalar ljudflödet som skickas genom den från volymen 0 (tyst) till 1 (ursprunglig ljudstyrka) tillbaka till 0 (tyst) enligt positionen. Positionen där toppen ska ske kan anges som top. 0.1 betyder att efter 10 % av tonen har spelats har volymen nått sitt maximala värde, och börjar sedan avta. </para> + + +<para +>Välj <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Kör struktur</guimenuitem +> </menuchoice +>. Du kommer att höra en trevlig sekvens spelas upp. Om du har njutit av känslan, klicka <guibutton +>Avsluta</guibutton +> och gå till steg 5. </para> + +</sect2> + +<sect2 id="step-5-starting-to-beam-data-around"> +<title +>Steg 5: Börja skicka omkring data ;)</title> + +<para +>Starta en aRts-byggare till.</para> + +<para +>Placera en Synth_AMAN_PLAY i den, och ställ in den till ett vettigt namn. Placera en Synth_BUS_DOWNLINK i den och:</para> + +<orderedlist> +<listitem> +<para +>Sätt Synth_BUS_DOWNLINK bus till ljud (det är bara ett namn, kalla den Fred om du vill) </para> +</listitem> +<listitem> +<para +>Anslut Synth_BUS_DOWNLINK left (vänster) till Synth_AMAN_PLAY left. </para> +</listitem> +<listitem> +<para +>Anslut Synth_BUS_DOWNLINK right (höger) till Synth_AMAN_PLAY right. </para> +</listitem> +</orderedlist> + +<para +>Börja köra strukturen. Som väntat hör du ingenting, ... inte än. </para> + +<para +>Gå tillbaka till strukturen med Synth_WAVE_SIN grejorna och byt ut Synth_AMAN_PLAY-modulen mot en Synth_BUS_UPLINK, och ställ in namnet till ljud (eller Fred om du vill). Att ta bort moduler görs genom att markera dem och välja <menuchoice +><guimenu +>Redigera</guimenu +> <guimenuitem +>Ta bort</guimenuitem +></menuchoice +> från menyn (eller trycka på tangenten <keycap +>Del</keycap +>). </para> + +<para +>Välj <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Kör struktur</guimenuitem +> </menuchoice +>. Du kommer att höra sekvensen med skalade toner, transporterad över bussen. </para> + +<para +>Om du vill ta reda på varför något sådant här kan vara användbart, klicka <guibutton +>Avsluta</guibutton +> (i aRts-byggaren som kör Synth_SEQUENCE grejorna, du kan låta den andra fortsätta köra) och gå till steg 6. </para> +</sect2> + +<sect2 id="step-6-beaming-for-advanced-users"> +<title +>Steg 6: Skicka data för avancerade användare</title> + +<para +>Välj <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Byt namn på struktur</guimenuitem +></menuchoice +> från menyn i den aRts-byggare som innehåller Synth_SEQUENCE grejorna, och kalla den handledning. Tryck <guibutton +>OK</guibutton +>. </para> + +<para +>Välj <menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Spara som</guimenuitem +> </menuchoice +>. </para> + +<para +>Starta ytterligare en aRts-byggare och välj <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Öppna</guimenuitem +> </menuchoice +>, och ladda handledningen igen. </para> + +<para +>Nu kan du välja <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Kör struktur</guimenuitem +> </menuchoice +> i båda aRts-byggarna som har strukturen. Nu hör du samma sak två gånger. Beroende på när du startar dem kommer det att låta mer eller mindre bra. </para> + +<para +>En annan sak som kan vara bra att göra vid det här tillfället är att starta &noatun;, och spela en <literal role="extension" +>mp3</literal +>-fil. Starta sedan &artscontrol;. Gå till <menuchoice +><guimenu +>Visa</guimenu +><guimenuitem +>Visa ljudhanterare</guimenuitem +></menuchoice +>. Vad du ser är &noatun; och din struktur <quote +>handledning</quote +> spela upp någonting. Det trevliga som du kan göra är: dubbelklicka på &noatun;. Du får nu en lista på tillgängliga bussar. Och ser du? Du kan låta &noatun; skicka sin utmatning via ljudbussen till uppspelningsstrukturen som din handledning tillhandahåller. </para> +</sect2> + +<sect2 id="step-7-midi-synthesis"> +<title +>Steg 7: Midisyntes</title> + +<para +>Till slut, nu ska du kunna göra om din sinusvåg till ett riktigt instrument. Det här är bara meningsfullt om du har något lämpligt som kan skicka &MIDI;-händelser till &arts;. Här beskriver jag hur du kan använda ett externt keyboard, men en sequencer, som &brahms;, som känner till midibussen fungerar också. </para> + +<para +>Först av allt, rensa på ditt skrivbord till du bara har en aRts-byggare med sinusvågstrukturen igång (men låt den inte köra). Gå därefter tre gånger till <menuchoice +><guimenu +>Portar</guimenu +> <guisubmenu +>Skapa IN-ljudsignal</guisubmenu +></menuchoice +>, och tre gånger till <menuchoice +><guimenu +>Portar</guimenu +> <guisubmenu +>Skapa UT-ljudsignal</guisubmenu +></menuchoice +>. Placera portarna någonstans. </para> + +<para +>Gå till <menuchoice +><guimenu +>Portar</guimenu +> <guilabel +>Ändra positioner/namn</guilabel +></menuchoice +> och döp portarna till frequency, velocity, pressed, left, right, done. </para> + +<para +>Till sist kan du ta bort modulen Synth_SEQUENCE, och istället ansluta inporten frequency för strukturen till frekvensporten på Synth_FREQUENCY. Hmm. Men vad ska man göra med pos?</para +> <para +>Den här är inte tillgänglig, eftersom det inte finns någon algoritm i värden som kan förutse när användaren ska släppa tangenten han just tryckte ner på sitt midi-keyboard. Vi har istället parametern pressed, som bara anger om användaren fortfarande håller nere tangenten. (pressed = 1: tangenten fortfarande nertryckt, pressed = 0: tangenten släppt) </para> + +<para +>Det här betyder också att Synth_PSCALE-objektet måste bytas ut nu. Koppla in en Synth_ENVELOPE_ADSR istället (från <menuchoice +><guimenu +>Moduler</guimenu +> <guisubmenu +>Syntes</guisubmenu +> <guisubmenu +>Envelopper</guisubmenu +> </menuchoice +>). Anslut: </para> + +<orderedlist> +<listitem> +<para +>Strukturens pressed ingång till ADSR active</para> +</listitem> +<listitem> +<para +>SIN utgången till ADSR ingången</para> +</listitem> +<listitem> +<para +>ADSR utgången till den vänstra strukturutgången</para> +</listitem +><listitem> +<para +>ADSR utgången till den högra strukturutgången</para> +</listitem> +</orderedlist> + +<para +>Ställ in parametrarna attack till 0.1, decay till 0.2, sustain till 0.7, release till 0.1. </para> + +<para +>En sak till som vi måste tänka på är att instrumentstrukturen måste på något sätt veta när den har spelat färdigt och då kunna rensas bort, eftersom den annars aldrig skulle stanna även om tangenten har släppts. Som tur är, vet ADSR enveloppen när det inte finns mer att höra, eftersom den ändå skalar ner signalen till noll vid någon tidpunkt efter tangenten har släppts. </para> + +<para +>Det här anges genom att sätta utgången done till 1. Så anslut den här till strukturens utgång. Strukturen tas bort så fort done blir 1. </para> + +<para +>Döp om din struktur till instrument_handledning (från <menuchoice +><guimenu +> Arkiv</guimenu +> <guimenuitem +>Byt namn på struktur</guimenuitem +></menuchoice +>. Spara den sedan med Spara som (det förvalda namnet som nu anges ska vara instrument_handledning).</para +><para +>Starta aRts control, och gå till <menuchoice +><guimenu +>Visa</guimenu +><guimenuitem +>Visa midihanterare</guimenuitem +></menuchoice +>, och välj <menuchoice +><guimenu +>Lägg till</guimenu +><guimenuitem +>aRts synthes midi utmatning</guimenuitem +></menuchoice +>. Till sist ska du kunna välja ditt instrument (handledning) här. </para> + +<para +>Öppna en terminal och skriv <userinput +><command +>midisend</command +></userinput +>. Du kommer att se att <command +>midisend</command +> och instrumentet nu listas i &arts; &MIDI;hanterare. Efter att ha valt båda två och tryckt på <guibutton +>Anslut</guibutton +>, är vi till sist klara. Ta ditt keyboard och börja spela (det måste förstås vara anslutet till din dator). </para> +</sect2> + +<sect2 id="suggestions"> +<title +>Förslag</title> + +<para +>Du bör nu kunna arbeta med &arts;. Här är några tips om vad du nu skulle kunna göra för att förbättra dina strukturer: </para> + +<itemizedlist> +<listitem> +<para +>Försök att använda något annat än en sinusvåg. Om du kopplar in en triangelvåg, TRI, tycker du troligen inte att ljudet är särskilt trevligt, Men försök att lägga till ett SHELVE_CUTOFF-filter direkt efter triangelvågen för att klippa frekvenserna ovanför en viss frekvens (försök med något i stil med 1000 Hz, eller ännu bättre två gånger indatafrekvensen eller indatafrekvensen + 2000 Hz eller något sådant). </para> +</listitem> +<listitem> +<para +>Försök använda mer än en oscillator. Synth_XFADE kan användas för att övertona (blanda) två signaler, Synth_ADD för att addera dem. </para> +</listitem> +<listitem> +<para +>Försök att sätta frekvenserna för oscillatorerna till något olika värden, det ger trevliga oscillationer. </para> +</listitem> +<listitem> +<para +>Experimentera med mer än ett envelopp. </para> +</listitem> +<listitem> +<para +>Försök syntetisera instrument med olika ljud till vänster och höger. </para> +</listitem> +<listitem> +<para +>Försök efterbehandla signalen när den kommer ut från bussens nerlänk. Du skulle till exempel kunna blanda en fördröjd version av signalen med originalet för att få en ekoeffekt. </para> +</listitem> +<listitem> +<para +>Försök att använda anslagsstyrkan, velocity (det här är styrkan som tangenten har tryckts ner med, man kan också kalla det volymen). Specialeffekter uppstår alltid om det här inte bara ändrar volymen på signalen som skapas, utan också instrumentets ljud (till exempel klippningsfrekvensen). </para> +</listitem> +<listitem> +<para +>...</para> +</listitem> +</itemizedlist> + +<para +>Om du har skapat något storartat, fundera gärna på att tillhandahålla det till &arts; webbsida, eller för att ingå i nästa utgåva. </para> +</sect2> + +</sect1> + +<sect1 id="artsbuilder-examples"> +<title +>Exempel</title> + +<para +>aRts-byggaren levereras med flera exempel, som kan öppnas med <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Öppna exempel...</guimenuitem +> </menuchoice +>. Några av dem är i katalogen, medan några (som av någon anledning inte fungerar med den nuvarande utgåvan) har lämnats i todo-katalogen. </para> +<para +>Exemplen kan delas in i flera kategorier: </para> + +<itemizedlist> +<listitem> +<para +>Självständiga exempel som illustrerar hur var och en av de inbyggda aRts-modulerna används (som heter <filename +>example_*.arts</filename +>). De här skickar typiskt någon utmatning till ett ljudkort. </para> +</listitem> + +<listitem> +<para +>Instrument som byggs från aRts-moduler på lägre nivå (som heter <filename +>instrument_*.arts</filename +>). De här följer en standardkonvention för in- och utportar så att de kan användas av &MIDI;-hanteraren i &artscontrol;. </para> +</listitem> + +<listitem> +<para +>Mallar för att skapa nya moduler (som heter <filename +>template_*.arts</filename +>). </para> +</listitem> + +<listitem> +<para +>Effekter som kan användas som återanvändbara byggblock (som heter <filename +>effect_*.arts</filename +>) [ alla att göra ] </para> +</listitem> + +<listitem> +<para +>Mixerelement som används för att skapa mixrar, inklusive grafiska styrmoduler (som heter <filename +>mixer_element_*.arts</filename +>). [ alla att göra ] </para> +</listitem> + +<listitem> +<para +>Diverse moduler som inte passar in i någon av de ovanstående kategorierna. </para> +</listitem> +</itemizedlist> + +<variablelist> +<title +>Detaljerad beskrivning av varje modul:</title> +<varlistentry> +<term +><filename +>example_stereo_beep.arts</filename +></term> +<listitem> +<para +>Skapar en 440 Hz sinusvåg i vänster kanal och en 880 Hz sinusvåg i höger kanal, och skickar dem till ljudkortet. Den här hänvisas till i &arts; dokumentation. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_sine.arts</filename +></term> +<listitem> +<para +>Skapar en 440 Hz sinusvåg. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pulse.arts</filename +></term> +<listitem> +<para +>Skapar en 440 Hz pulsvåg med 20% aktivitet. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_softsaw.arts</filename +></term> +<listitem> +<para +>Skapar en 440 Hz sågtandsvåg. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_square.arts</filename +></term> +<listitem> +<para +>Skapar en 440 Hz fyrkantvåg. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_tri.arts</filename +></term> +<listitem> +<para +>Skapar en 440 Hz triangelvåg. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_noise.arts</filename +></term> +<listitem> +<para +>Skapar vitt brus. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_dtmf1.arts</filename +></term> +<listitem> +<para +>Skapar en dubbelton genom att producera sinusvågor med 697 och 1209 Hz, skala dem till 0,5 och addera dem. Det här är DTMF-tonen för siffran "1" på en knapptelefon. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_atan_saturate.arts</filename +></term> +<listitem> +<para +>Kör en triangelvåg genom ett atan-mättningsfilter. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_autopanner.arts</filename +></term> +<listitem> +<para +>Använder autopanorering för att panorera en 400 Hz sinusvåg mellan vänster och höger högtalare med en hastighet av 2 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_brickwall.arts</filename +></term> +<listitem> +<para +>Skalar en sinusvåg med en faktor 5 och kör den sedan genom en tegelväggsbegränsare. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_bus.arts</filename +></term> +<listitem> +<para +>Länkar ner från en buss som heter <quote +>Bus</quote +> och länkar upp till bussen <quote +>out_soundcard</quote +> med vänster och höger kanal utbytta. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_cdelay.arts</filename +></term> +<listitem> +<para +>Länkar ner från en buss som heter <quote +>Delay</quote +> och länkar upp höger kanal genom en 0,5 sekunders fördröjning, och vänster kanal oförändrad. Du kan använda &artscontrol; för att ansluta effekten till ljuduppspelning och observera resultatet. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_delay.arts</filename +></term> +<listitem> +<para +>Det här är samma sak som <filename +>example_cdelay.arts</filename +> men använder fördröjningseffekten. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_capture_wav.arts</filename +></term> +<listitem> +<para +>Det här använder Synth_CAPTURE_WAV för att spara en 400 Hz sinusvåg som en wav-fil. Kör modulen i några sekunder, och titta sedan på filen som skapats i <filename class="directory" +>/tmp</filename +>. Du kan spela upp filen med en mediaspelare som <application +>kaiman</application +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_data.arts</filename +></term> +<listitem> +<para +>Det här använder Data-modulen för att skapa en konstant ström av värdet <quote +>3</quote +> och skickar det till en Debug-modul för att visa det periodiskt. Det innehåller också en Nil-modul, och visar hur den kan användas för att göra ingenting alls. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_adsr.arts</filename +></term> +<listitem> +<para +>Visar hur ett enkelt instrumentljud kan skapas med envelopp ADSR-modulen, som triggas repetitivt av en fyrkantvåg. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_fm.arts</filename +></term> +<listitem> +<para +>Det här använder FM Source-modulen för att skapa en 440 Hz sinusvåg som frekvensmoduleras med en 5 Hz hastighet. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_freeverb.arts</filename +></term> +<listitem> +<para +>Det här förbinder Freeverb-effekten från en bussnerlänk till en bussupplänk. Du kan använda artscontrol för att ansluta effekten till ljuduppspelning och observera resultatet. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_flanger.arts</filename +></term> +<listitem> +<para +>Det här implementerar en enkel flänseffekt (det verkar dock inte fungera än). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_moog.arts</filename +></term> +<listitem> +<para +>Den här strukturen kombinerar de två kanalerna från en buss till en, skickar den genom ett Moog VCF filer, och skickar det sedan till bussen out_soundcard. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pitch_shift.arts</filename +></term> +<listitem> +<para +>Den här strukturen skickar vänsterkanalens ljuddata genom en tonhöjdsändringseffekt. Justera hastighetsparametern för att variera effekten. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_rc.arts</filename +></term> +<listitem> +<para +>Den här strukturen skickar vitt brus genom ett RC-filer och ut till ljudkortet. Genom att titta på FFT mätaren i artscontrol kan du se hur det här skiljer sig från en ofiltrerad brusvågform. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_sequence.arts</filename +></term> +<listitem> +<para +>Det här demonstrerar Sequence-modulen genom att spela en sekvens av toner. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_shelve_cutoff.arts</filename +></term> +<listitem> +<para +>Den här strukturen skickar vitt brus genom ett hyllklippningsfilter och ut till ljudkortet. Genom att titta på FFT mätaren i artscontrol kan du se hur det här skiljer sig från en ofiltrerad brusvågform. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_equalizer.arts</filename +></term> +<listitem> +<para +>Det här demonstrerar modulen Std_Equalizer. Det höjer de låga och höga frekvenserna med 6 dB. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_tremolo.arts</filename +></term> +<listitem> +<para +>Det här demonstrerar tremoloeffekten. Det modulerar vänster och höger kanal med ett 10 Hz tremolo. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_xfade.arts</filename +></term> +<listitem> +<para +>Det här exemplet blandar 440 och 880 Hz sinusvågor med en övertoning. Justera värdet på övertoningens procentingång från -1 till 1 för att kontrollera blandningen av de två signalerna. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_pscale.arts</filename +></term> +<listitem> +<para +>Det här illustrerar Pscale-modulen (jag är inte säker på att det är ett meningsfullt exempel). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><filename +>example_play_wav.arts</filename +></term> +<listitem> +<para +>Det här illustrerar modulen Play Wave. Du måste ange hela sökvägen till en <literal role="extension" +>.wav</literal +>-fil som filnamnsparameter. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>example_multi_add.arts</term> +<listitem> +<para +>Det här visar modulen Multi Add, som accepterar vilket antal ingångar som helst. Det summerar tre Data-moduler som producerar indata 1, 2 och 3, och visar resultatet 6. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/detail.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/detail.docbook new file mode 100644 index 00000000000..24e4cf4d186 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/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 detalj</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 & portar</title> + +<para +>Idén med &arts; är att syntes kan göras med små moduler, som bara gör en enda sak, och sedan kombinera dem i komplexa strukturer. De små modulerna har normalt ingångar, där de kan ta emot några signaler eller parametrar, och utgångar där de producerar några signaler. </para> + +<para +>En modul (Synth_ADD) tar till exempel bara de två signalerna på sina ingångar och adderar dem. Resultatet är tillgängligt som en utsignal. De ställen där moduler tillhandahåller sina in- eller utsignaler kallas portar. </para> + +</sect1> + +<sect1 id="structures"> +<title +>Strukturer</title> + +<para +>En struktur är en kombination av ihopkopplade moduler, där några kan ha parametrar som är direktkodade på deras inportar, andra kan vara ihopkopplade, och en del kan vara helt oanslutna. </para> + +<para +>Vad du kan göra med aRts-byggaren är att beskriva strukturer. Du beskriver vilka moduler du vill ska kopplas ihop med vilka andra moduler. När du är klar, kan du spara strukturbeskrivningen i en fil, eller be &arts; att skapa (köra) den strukturen som du beskrivit. </para> + +<para +>Därefter hör du förmodligen något ljud, om du har gjort allt på rätt sätt. </para> +</sect1> + +<!-- TODO + +<sect1 id="streams"> +<title +>Streams</title> + +</sect1> + +--> + +<sect1 id="latency"> +<title +>Latenstid</title> + +<sect2 id="what-islatency"> +<title +>Vad är latenstid?</title> + +<para +>Anta att du har ett program som heter <quote +>muspling</quote +> (som ska avge ett <quote +>pling</quote +> ljud om du klickar på en musknapp). Latenstiden är tiden mellan ditt finger trycker på musknappen och du hör plinget. Latenstiden för det här scenariot består av flera olika latenstider, som har olika orsaker. </para> + +</sect2> + +<sect2 id="latenbcy-simple"> +<title +>Latenstid i enkla program</title> + +<para +>För det här enkla programmet uppstår latenstiden på följande ställen: </para> + +<itemizedlist> + +<listitem> +<para +>Tiden till kärnan har meddelat X11-servern att musknappen har tryckts ner. </para> +</listitem> + +<listitem> +<para +>Tiden till X11-servern har meddelat ditt program att musknappen har tryckts ner. </para> +</listitem> + +<listitem> +<para +>Tiden till muspling-programmet har bestämt att den här knappen var värd att få ett pling spelat. </para> +</listitem> + +<listitem> +<para +>Tiden det tar för muspling-programmet att tala om för ljudservern att den ska spela ett pling. </para> +</listitem> + +<listitem> +<para +>Tiden det tar för plinget (som ljudservern börjar mixa med övrig utmatning omedelbart) att ta sig igenom buffrad data, till det verkligen når stället där ljudkortet spelar. </para> +</listitem> + +<listitem> +<para +>Tiden det tar för pling-ljudet att gå från högtalarna till dina öron. </para> +</listitem> +</itemizedlist> + +<para +>De första tre punkterna är latenstid utanför &arts;. De är intressanta, men utanför det här dokumentets omfattning. Hur som helst, var medveten om att de finns, så att även om du har optimerat allting annat till verkligt små värden, så kanske du inte nödvändigtvis får exakt det resultat du förväntar dig. </para> + +<para +>Att be servern att spela någonting innebär oftast bara ett enda &MCOP;-anrop. Det finns mätningar som bekräftar att det går att be servern att spela någonting 9000 gånger per sekund med den nuvarande implementeringen, på samma värddator med Unix domänuttag. Jag antar att det mesta av det här är kärnans omkostnad, för att byta från en process till en annan. Naturligtvis ändras det här värdet med de exakta typerna på parametrarna. Om man överför en hel bild med ett anrop, blir det långsammare än om man bara överför ett "long" värde. Detsamma är sant för returvärdet. För vanliga strängar (som filnamnet på <literal role="extension" +>wav</literal +>-filen som ska spelas) ska inte det här vara ett problem. </para> + +<para +>Det här betyder att vi kan approximera den här tiden med 1/9000 sekund, det vill säga under 0,15 ms. Vi kommer att se att detta inte är relevant. </para> + +<para +>Därefter kommer tiden efter servern börjar spela och ljudkortet tar emot någonting. Servern måste buffra data, så att inga pauser hörs när andra program, som din X11-server eller <quote +>muspling</quote +>-programmet, kör. Det sätt som detta hanteras på &Linux; är att det finns ett antal fragment av en viss storlek. Servern fyller på fragment, och ljudkortet spelar fragment. </para> + +<para +>Så antag att det finns tre fragment. Servern fyller det första och ljudkortet börjar spela det. Servern fyller det andra. Servern fyller det tredje. Servern är klar och andra program kan nu göra någonting. </para> + +<para +>När ljudkortet har spelat det första fragmentet, börjar det spela det andra och servern börjar fylla det första igen, och så vidare. </para> + +<para +>Den maximala latenstiden du får med allt detta är (antal fragment) * (storlek på varje fragment) / (samplingsfrekvens * (storlek på varje sampling)). Om vi antar 44 kHz stereo, och sju fragment på 1024 byte (de nuvarande förvalda inställningarna i aRts), så får vi 40 ms. </para> + +<para +>De här värdena kan anpassas enligt dina behov. <acronym +>CPU</acronym +>-användningen ökar dock med mindre latenstider, eftersom ljudservern måste fylla på buffrarna oftare, och med mindre delar. Det är också oftast omöjligt att nå bättre värden utan att ge ljudservern realtidsprioritet, eftersom man annars ofta får pauser. </para> + +<para +>Det är i alla fall realistiskt att göra någonting i stil med 3 fragment med 256 byte vardera, som skulle ändra det här värdet till 4,4 ms. Med 4,4 ms fördröjning skulle &arts; <acronym +>CPU</acronym +>-användning vara ungefär 7,5 %. Med en 40 ms fördröjning, skulle den vara ungefär 3 % (för en PII-350, och värdet kan bero på ditt ljudkort, version av kärnan och annat). </para> + +<para +>Så är det tiden som det tar för pling-ljudet att gå från högtalarna till dina öron. Antag att ditt avstånd från högtalarna är 2 meter. Ljud rör sig med hastigheten 330 meter per sekund. Så vi kan uppskatta den här tiden till 6 ms. </para> + +</sect2> + +<sect2 id="latency-streaming"> +<title +>Latenstid i program med ljudflöden</title> + +<para +>Program med ljudflöden är de som skapar sitt ljud själva. Tänk dig ett spel som skickar ett konstant flöde med samplingar, och nu ska anpassas att spela upp ljud via &arts;. Som ett exempel: när jag trycker på en tangent så hoppar figuren som jag använder, och ett bång-ljud spelas upp. </para> + +<para +>Först så måste du veta hur &arts; hanterar strömmar. Det är mycket likt I/O med ljudkortet. Spelet skickar några paket med samplingar till ljudservern, låt oss anta tre stycken. Så fort som ljudservern är klar med det första paketet, skickar det en bekräftelse tillbaka till spelet att det paketet är klart. </para> + +<para +>Spelet skapar ytterligare ett ljudpaket och skickar det till servern. Under tiden börjar servern konsumera det andra ljudpaketet, och så vidare. Latenstiden här liknar den i det enklare fallet: </para> + +<itemizedlist> +<listitem> +<para +>Tiden till kärnan har meddelat X11-servern att en knapp har tryckts ner. </para> +</listitem> + +<listitem> +<para +>Tiden till X11-servern har meddelat spelet att en knapp har tryckts ner. </para> +</listitem> + +<listitem> +<para +>Tiden till spelet har bestämt att den här knappen var värd att få ett bång spelat. </para> +</listitem> + +<listitem> +<para +>Tiden till ljudpaketet som spelet har börjat stoppa in bång-ljudet i når ljudservern. </para> +</listitem> + +<listitem> +<para +>Tiden det tar för bånget (som ljudservern börjar mixa med övrig utmatning omedelbart) att ta sig igenom buffrad data, till det verkligen når stället där ljudkortet spelar. </para> +</listitem> + +<listitem> +<para +>Tiden det tar för bång-ljudet från högtalarna att nå dina öron. </para> +</listitem> + +</itemizedlist> + +<para +>De externa latenstiderna, som ovan, är utanför det här dokumentets omfattning. </para> + +<para +>Det är uppenbart att latenstiden för strömmar beror på tiden det tar för alla paket som används att spelas en gång. Så den är (antal paket) * (storlek på varje paket) / (samplingsfrekvensen * (storlek på varje sampling)). </para> + +<para +>Som du ser är detta samma formel som gäller för fragmenten. För spel finns det dock ingen anledning att ha så korta fördröjningar som ovan. Jag skulle vilja säga att ett realistiskt exempel för ett spel skulle vara 2048 byte per paket, använd 3 paket. Latenstidsresultatet skulle då vara 35 ms. </para> + +<para +>Det här är baserat på följande: antag att ett spel renderar 25 bilder per sekund (för skärmen). Det är antagligen helt säkert att anta att en skillnad på en bild för ljudutmatningen inte skulle märkas. Därför är 1/25 sekunds fördröjning för ljudflöden acceptabelt, vilket i sin tur betyder att 40 ms skulle vara ok. </para> + +<para +>De flesta personer kör inte heller sina spel med realtidsprioritet, och faran med pauser i ljudet kan inte bortses ifrån. Strömmar med 3 paket på 256 byte är möjliga (jag provade det) - men orsakar mycket <acronym +>CPU</acronym +>-användning för strömhantering. </para> + +<para +>Latenstider på serversidan kan du beräkna precis som ovan. </para> + +</sect2> + +<sect2 id="cpu-usage"> +<title +>Några <acronym +>CPU</acronym +>-användningshänsyn</title> + +<para +>Det finns många faktorer som påverkar <acronym +>CPU</acronym +>-användning i ett komplext scenario, med några program med ljudflöden och några andra program, några insticksprogram i servern, etc. För att ange några få: </para> + +<itemizedlist> +<listitem> +<para +>Rå <acronym +>CPU</acronym +>-användning för de nödvändiga beräkningarna. </para> +</listitem> + +<listitem> +<para +>&arts; interna schemaläggningsomkostnad - hur &arts; bestämmer när vilken modul ska beräkna vad. </para> +</listitem> + +<listitem> +<para +>Omkostnad för konvertering av heltal till flyttal. </para> +</listitem> + +<listitem> +<para +>&MCOP; protokollomkostnad. </para> +</listitem> + +<listitem> +<para +>Kärnans process/sammanhangsbyte. </para> +</listitem> + +<listitem> +<para +>Kärnans kommunikationsomkostnad. </para> +</listitem> +</itemizedlist> + +<para +>För beräkning av rå <acronym +>CPU</acronym +>-användning, om du spelar upp två strömmar samtidigt måste du göra additioner. Om du applicerar ett filter, är vissa beräkningar inblandade. För att ta ett förenklat exempel, att addera två strömmar kräver kanske fyra <acronym +>CPU</acronym +>-cykler per addition, på en 350 MHz processor är detta 44100 * 2 * 4 / 350000000 = 0,1 % <acronym +>CPU</acronym +>-användning. </para> + +<para +>&arts; interna schemaläggning: &arts; behöver bestämma vilken insticksmodul som ska beräkna vad när. Detta tar tid. Använd ett profileringsverktyg om du är intresserad av det. Vad som kan sägas i allmänhet är att ju mindre realtid som används (dvs. ju större block som kan beräknas åt gången) desto mindre schemaläggningsomkostnad fås. Över beräkning av block med 128 samplingar åt gången (alltså med användning av fragmentstorlekar på 512 byte) är schemaläggningsomkostnad förmodligen inte värt att bry sig om. </para> + +<para +>Konvertering från heltal till flyttal: &arts; använder flyttal som internt dataformat. De är enkla att hantera, och på moderna processorer inte mycket långsammare än heltalsoperationer. Om det i alla fall finns klienter som spelar data som inte är flyttal (som ett spel som ska göra sin ljudutmatning via &arts;), behövs konvertering. Detsamma gäller om du vill spela upp ljud på ditt ljudkort. Ljudkortet behöver heltal, så du måste konvertera. </para> + +<para +>Här är värden för en Celeron, ungefärliga klockcykler per sampling, med -O2 och egcs 2.91.66 (mätta av Eugene Smith <email +>hamster@null.ru</email +>). Det här är förstås ytterst processorberoende: </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å detta betyder 1 % <acronym +>CPU</acronym +>-användning för konvertering och 5 % för interpolation på den här 350 MHz processorn. </para> + +<para +>&MCOP; protokollomkostnad: &MCOP; klarar, som en tumregel, 9000 anrop per sekund. En stor del av detta är inte &MCOP;:s fel, utan hör ihop med de två orsakerna för kärnan som nämns nedan. Det här ger i alla fall en bas för att göra beräkningar av vad kostaden för strömhantering är. </para> + +<para +>Varje datapaket som skickas med en ström kan anses vara ett &MCOP;-anrop. Stora paket är förstås långsammare än 9000 paket/s, men det ger en god idé. </para> + +<para +>Antag att du använder paketstorlekar på 1024 byte. På så sätt, för att överföra en ström med 44 kHz stereo, behöver du överföra 44100 * 4 / 1024 = 172 paket per sekund. Antag att du kunde överföra 9000 paket med 100 % CPU-användning, då får du (172 *100) / 9000 = 2 % <acronym +>CPU</acronym +>-användning på grund av strömmen med 1024 byte paket. </para> + +<para +>Detta är en approximation. Det visar i alla fall att du skulle klara dig mycket bättre (om du har råd med latenstiden), med att till exempel använda paket på 4096 byte. Här kan vi skapa en kompakt formel, genom att beräkna paketstorleken som orsakar 100 % <acronym +>CPU</acronym +>-användning som 44100 * 4 / 9000 = 19,6 samplingar, och på så sätt få snabbformeln: </para> + +<para +><acronym +>CPU</acronym +>-användning för en ström i procent = 1960 / (din paketstorlek) </para> + +<para +>som ger oss 0,5 % <acronym +>CPU</acronym +>-användning med en ström av 4096 byte paket. </para> + +<para +>Kärnans process/sammanhangsbyte: Det här är en del av &MCOP;-protokollets omkostnad. Att byta mellan två processer tar tid. Det blir en ny minnesmappning, cachar blir ogiltiga, och en del annat (om en expert på kärnan läser det här - tala om de exakta orsakerna för mig). Det här betyder: det tar tid. </para> + +<para +>Jag är inte säker på hur många processbyten &Linux; kan göra per sekund, men värdet är inte oändligt. Så av &MCOP;-protokollets omkostnad, antar jag att en hel del beror på processbyten. När &MCOP; först påbörjades provade jag samma kommunikation inne i en process, och det var mycket snabbare (ungefär fyra gånger snabbare). </para> + +<para +>Kärnans kommunikationsomkostnad: Det här är en del av &MCOP;-protokollets omkostnad. Att överföra data mellan processer görs för närvarande via ett uttag (socket). Det här är bekvämt, eftersom den vanliga select() metoden kan användas för att avgöra när ett meddelande har anlänt. Det kan också kombineras med andra I/O-källor som ljud-I/O, X11-server eller vad som helst annat. </para> + +<para +>De här läs- och skrivanropen kostar definitivt processorcykler. För små anrop (som att överföra en midi-händelse) är det förmodligen inte så farligt, men för stora anrop (som att överföra en videobild med flera Mibyte) är det helt klart ett problem. </para> + +<para +>Att lägga till användning av delat minne till &MCOP; där det är lämpligt är förmodligen den bästa lösningen. Det måste dock göras transparent för tillämpningsprogrammeraren. </para> + +<para +>Ta ett profileringsverktyg och gör andra prov för att exakt ta reda på hur nuvarande ljudströmmar påverkas av att inte använda delat minne. Det är dock inte så dåligt, eftersom ljudströmmar (spela upp mp3) kan göras med totalt 6 % <acronym +>CPU</acronym +>-användning för &artsd; och <application +>artscat</application +> (och 5 % för mp3-avkodaren). Det här innefattar dock allting från nödvändiga beräkningar till omkostnad för uttaget, så jag skulle uppskatta att man skulle vinna ungefär 1 % på att använda delat minne. </para> + +</sect2> + +<sect2 id="hard-numbers"> +<title +>Några riktiga värden</title> + +<para +>De här är gjorda med den nuvarande utvecklingsversionen. Jag ville också försöka med riktigt svåra fall, så det här är inte vad program för daglig användning skulle göra. </para> + +<para +>Jag skrev ett program som heter streamsound som skickar dataflöden till &arts;. Här körs det med realtidsprioritet (utan problem), och en liten insticksmodul på serversidan (volymskalning och klippning): </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 +>Var och en av programmen skickar en ström med 3 fragment på 1024 byte (18 ms). Det finns tre sådana klienter som kör samtidigt. Jag vet att det verkar vara lite väl mycket, men som jag sa: ta ett profileringsverktyg och ta reda på vad som kostar tid, och om du vill, förbättra det. </para> + +<para +>Jag tror i alla fall inte att använda strömmar så här är realistiskt eller vettigt. För att göra det hela ännu mer extremt, försökte jag med den minsta möjliga latenstiden. Resultat: man kan använda strömmar utan avbrott med ett klientprogram, om man tar 2 fragment med 128 byte mellan aRts och ljudkortet, och mellan klientprogrammet och aRts. Det här betyder att man har en total maximal latenstid på 128 * 4 / 44100 * 4 = 3 ms, där 1,5 ms skapas på grund av I/O till ljudkortet och 1,5 ms skapas av kommunikation med &arts;. Båda programmen måste köra med realtidsprioritet. </para> + +<para +>Men det här kostar en enorm mängd <acronym +>CPU</acronym +>. Det här exemplet kostar ungefär 45 % på min P-II/350. Det börjar också gå fel om man startar top, flyttar fönster på X11-skärmen eller gör disk-I/O. Allt det här har med kärnan att göra. Problemet är att schemalägga två eller flera processer med realtidsprioritet också kostar en enorm ansträngning, ännu mer än kommunikation och meddelande till varandra, etc. </para> + +<para +>Till sist, ett mer vardagligt exempel: Det här är &arts; med artsd och en artscat (en klient med dataflöde) som kör 16 fragment 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 +>Bussar</title> + +<para +>Bussar är förbindelser som byggs dynamiskt för att överföra ljud. Det finns ett antal upplänkar och nerlänkar. Alla signaler från upplänkarna adderas och skickas till nerlänkarna. </para> + +<para +>Bussar är för närvarande implementerade för att fungera med stereo, så du kan bara överföra stereodata via bussar. Om du vill ha monodata, nå, överför det bara på en kanal och sätt den andra till noll eller något godtyckligt. Vad du måste göra är att skapa en eller flera Synth_BUS_UPLINK-objekt och ge dem ett bussnamn, som de ska prata med (t.ex. <quote +>ljud</quote +> eller <quote +>trummor</quote +>). Skicka sedan helt enkelt in data dit. </para> + +<para +>Därefter måste du skapa en eller flera Synth_BUS_DOWNLINK-objekt, och tala om bussnamnet för dem (<quote +>ljud</quote +> eller <quote +>trummor</quote +>... om det passar ihop, kommer data igenom), och det blandade ljudet kommer ut igen. </para> + +<para +>Upplänkarna och nerlänkarna kan finnas i olika strukturer, du kan till och med ha olika aRts-byggare som kör och starta en upplänk i en och ta emot data i den andra med en nerlänk. </para> + +<para +>Vad som är trevligt med bussar är att de är fullständigt dynamiska. Klienter kan kopplas in eller ur i farten. Det ska inte höras några klick eller brus när detta sker. </para> + +<para +>Du ska förstås inte koppla in eller ur en klient medan den spelar en signal, eftersom den förmodligen inte är noll när den kopplas ur, och då uppstår ett klick. </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 +>Handlaren</title> + +<para +>&arts;/&MCOP; förlitar sig helt på att dela upp objekt i små komponenter. Det här gör allt mycket flexibelt, eftersom man lätt kan utöka systemet genom att lägga till nya komponenter, som implementerar nya effekter, filformat, oscillatorer, grafiska element, ... Eftersom nästan allt är komponenter, kan nästan allt lätt utökas utan att ändra befintlig källkod. Nya komponenter kan enkelt laddas dynamiskt för att förbättra program som redan finns. </para> + +<para +>För att detta ska fungera, behövs dock två saker: </para> + +<itemizedlist> + +<listitem> +<para +>Komponenter måste tala om att de finns - de måste beskriva vilka storartade saker de erbjuder, så att program kan använda dem. </para> +</listitem> + +<listitem> +<para +>Program måste aktivt leta efter komponenter som de skulle kunna använda, istället för att alltid använda samma komponent för en viss uppgift. </para> +</listitem> + +</itemizedlist> + +<para +>Kombinationen av det här: komponenter som säger <quote +>här är jag, jag är tuff, använd mig</quote +>, och program (eller om man vill, andra komponenter) som går ut och letar efter vilken komponent som de kan använda för att få någonting gjort, kallas att handla. </para> + +<para +>I &arts; beskriver komponenter sig genom att ange värden som de <quote +>stöder</quote +> som egenskaper. En typisk egenskap för en filladdningskomponent kan vara filändelsen för filerna som den kan behandla. Typiska värden kan vara <literal role="extension" +>wav</literal +>, <literal role="extension" +>aiff</literal +> eller <literal role="extension" +>mp3</literal +>. </para> + +<para +>I själva verket kan varje komponent välja att erbjuda många olika värden för en egenskap. Så en enda komponent skulle kunna erbjuda att läsa både <literal role="extension" +>wav</literal +> och <literal role="extension" +>aiff</literal +> filer, genom att ange att den stöder de här värdena för egenskapen <quote +>Extension</quote +>. </para> + +<para +>För att göra det här, måste en komponent lägga en <literal role="extension" +>.mcopclass</literal +>-fil som innehåller egenskaperna den stöder på ett lämpligt ställe. För vårt exempel, kan den se ut så här (och skulle installeras i <filename +><replaceable +>komponentkatalog</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 är viktigt att filnamnet på <literal role="extension" +>.mcopclass</literal +>-filen också anger vad komponentens gränssnitt heter. Handlaren tittar inte på innehållet alls, om filen (som här) heter <filename +>Arts/WavPlayObject.mcopclass</filename +>, och komponentgränssnittet heter <interfacename +>Arts::WavPlayObject</interfacename +> (moduler hör ihop med kataloger). </para> + +<para +>För att leta efter komponenter finns det två gränssnitt (som är definierade i <filename +>core.idl</filename +>, så de är tillgängliga i varje program), som heter <interfacename +>Arts::TraderQuery</interfacename +> och <interfacename +>Arts::TraderOffer</interfacename +>. Du går på en <quote +>shoppingrunda</quote +> efter komponenter så här: </para> + +<orderedlist> +<listitem> +<para +>Skapa ett frågeobjekt: </para> +<programlisting +>Arts::TraderQuery query; +</programlisting> +</listitem> + +<listitem> +<para +>Ange vad du vill ha. Som du såg ovan, beskriver komponenter sig själva med egenskaper, som de sätter till vissa värden. Så att specificera vad du vill ha görs genom att välja komponenter som stöder ett visst värde för en egenskap. Det här sker med metoden supports i TraderQuery: </para> + +<programlisting +>query.supports("Interface","Arts::PlayObject"); + query.supports("Extension","wav"); +</programlisting> +</listitem> + +<listitem> +<para +>Till sist utförs förfrågan med metoden query. Sedan får du (förhoppningsvis) några erbjudanden: </para> + +<programlisting +>vector<Arts::TraderOffer> *offers = query.query(); +</programlisting> +</listitem> + +<listitem> +<para +>Nu kan du undersöka vad du hittade. Det viktiga är metoden interfaceName i TraderOffer, som ger dig namnen på komponenterna som svarade på frågan. Du kan också ta reda på ytterligare egenskaper med getProperty. Följande kod löper helt enkelt igenom alla komponenterna, skriver ut deras gränssnittsnamn (som skulle kunna användas för att skapa dem), och tar bort resultatet av frågan: </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 +>För att den här sortens handelsservice ska vara användbar, är det viktigt att på något sätt komma överens om vilka egenskaper som komponenter normalt ska definiera. Det är väsentligt att mer eller mindre alla komponenter inom ett visst område använder samma uppsättning egenskaper för att beskriva sig själva (och samma uppsättning värden när det behövs), så att program (eller andra komponenter) kan hitta dem. </para> + +<para +>Author (typ stäng, valfri): Upphovsman. Det här kan användas för att till sist låta världen få reda på att du skrivit någonting. Du kan skriva vad du vill här, en e-postadress är förstås en bra hjälp. </para> + +<para +>Buildable (typ boolean, rekommenderas): Byggbar. Det här anger om komponenten är användbar med <acronym +>RAD</acronym +>-verktyg (som aRts-byggaren) som använder komponenter genom att tilldela egenskaper och ansluta portar. Det rekommenderas att det här värdet sätts till true för nästan alla signalbehandlingskomponenter (som filer, ljudeffekter, oscillatorer, ...), och för alla andra objekt som kan användas på ett <acronym +>RAD</acronym +>-liknande sätt, men inte för interna objekt som till exempel <interfacename +>Arts::InterfaceRepo</interfacename +>. </para> + +<para +>Extension (typ sträng, använd där det passar): Filändelse. Alla moduler som hanterar filer bör fundera på att använda det här. Du anger filändelsen med små bokstäver utan <quote +>.</quote +> här, så något som <userinput +>wav</userinput +> ska fungera utmärkt. </para> + +<para +>Interface (typ sträng, krävs): Gränssnitt. Det här ska omfatta hela listan på (användbara) gränssnitt som din komponent stöder, troligen inklusive <interfacename +>Arts::Object</interfacename +> och om tillämpligt <interfacename +>Arts::SynthModule</interfacename +>. </para> + +<para +>Language (typ sträng, rekommenderas): Språk. Om du vill att din komponent ska laddas dynamiskt, måste du ange språket här. För närvarande är det enda tillåtna värdet <userinput +>C++</userinput +>, som betyder att komponenten är skriven med det normala C++ programmeringsgränssnittet. Om du anger detta, måste du också ange egenskapen <quote +>Library</quote +> nedan. </para> + +<para +>Library (typ sträng, använd där det passar): Bibliotek. Komponenter som är skrivna i C++ kan laddas dynamiskt. För att göra det måste du kompilera dem i en dynamiskt laddningsbar libtool (<literal role="extension" +>.la</literal +>) modul. Här kan du ange namnet på <literal role="extension" +>.la</literal +>-filen som innehåller din komponent. Kom ihåg att använda REGISTER_IMPLEMENTATION (som alltid). </para> + +<para +>MimeType (typ sträng, använd där det passar): Mimetyp. Alla som hanterar filer bör tänka sig att använda det här. Du ska ange standard-mimetypen med små bokstäver här, till exempel <userinput +>audio/x-wav</userinput +>. </para> + +<para +>&URL; (typ sträng, valfri): Om du vill tala om var man kan hitta en ny version av komponenten (eller en hemsida eller något annat), kan du göra det här. Det här ska vara en standard &HTTP;- eller &FTP;-webbadress. </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 +>Namnrymder i &arts;</title> + +<sect2 id="namespaces-intro"> +<title +>Inledning</title> + +<para +>Varje namnrymdsdeklaration hör ihop med en deklaration av en <quote +>modul</quote +> i &MCOP; &IDL;. </para> + +<programlisting +>// mcop idl + +module M { + interface A + { + } +}; + +interface B; +</programlisting> + +<para +>I det här fallet skulle den genererade C++ koden för &IDL;-fragmentet se ut så här: </para> + +<programlisting +>// C++ deklaration + +namespace M { + /* deklaration av A_base/A_skel/A_stub och liknande */ + class A { // Smartwrap referensklass + /* [...] */ + }; +} + +/* deklaration av B_base/B_skel/B_stub och liknande */ +class B { + /* [...] */ +}; +</programlisting> + +<para +>Så när du hänvisar till klasserna från exemplet ovan i din C++ kod, måste du skriva <classname +>M::A</classname +>, men bara B. Du kan förstås använda <quote +>using M</quote +> någonstans, som med alla namnrymnder i C++. </para> + +</sect2> + +<sect2 id="namespaces-how"> +<title +>Hur &arts; använder namnrymder</title> + +<para +>Det finns en global namnrymd som kallas <quote +>Arts</quote +>, som alla program och bibliotek som hör till &arts; själv använder för att lägga sina deklarationer i. Det här betyder att när du skriver C++ kod som beror på &arts;, måste du normalt använda prefixet <classname +>Arts::</classname +> för varje klass som du använder, så här: </para> + +<programlisting +>int main(int argc, char **argv) +{ + Arts::Dispatcher dispatcher; + Arts::SimpleSoundServer server(Arts::Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/någon_fil.wav"); +</programlisting> + +<para +>Det andra alternativet är att skriva "using" en gång, så här: </para> + +<programlisting +>using namespace Arts; + +int main(int argc, char **argv) +{ + Dispatcher dispatcher; + SimpleSoundServer server(Reference("global:Arts_SimpleSoundServer")); + + server.play("/var/foo/någon_fil.wav"); + [...] +</programlisting> + +<para +>I &IDL;-filer, har du egentligen inget val. Om du skriver kod som tillhör &arts; själv, måste du lägga den i modulen &arts;. </para> + +<programlisting +>// IDL-fil för aRts-kod: +#include <artsflow.idl> +module Arts { // lägg den i Arts-namnrymd + interface Synth_TWEAK : SynthModule + { + in audio stream invalue; + out audio stream outvalue; + attribute float tweakFactor; + }; +}; +</programlisting> + +<para +>Om du skriver kod som inte hör till &arts; själv, ska du inte lägga den i namnrymden <quote +>Arts</quote +>. Du kan dock skapa en egen namnrymd om du vill. Hur som helst, måste du använda prefix för klasser från &arts; som du använder. </para> + +<programlisting +>// IDL-fil för kod som inte hör till aRts: +#include <artsflow.idl> + +// skriv antingen med eller utan moduldeklaration, och de genererade klasserna +// kommer inte att använda en namnrymd: +interface Synth_TWEAK2 : Arts::SynthModule +{ + in audio stream invalue; + out audio stream outvalue; + attribute float tweakFactor; +}; + +// du kan dock välja en egen namnrymd om du vill, så om du +// skriver programmet "PowerRadio", skulle du kunna göra så här: +module PowerRadio { + struct Station { + string name; + float frequency; + }; + + interface Tuner : Arts::SynthModule { + attribute Station station; // inget prefix för Station, samma modul + out audio stream left, right; + }; +}; +</programlisting> + +</sect2> + +<sect2 id="namespaces-implementation"> +<title +>Interna funktioner: hur implementeringen fungerar</title> + +<para +>&MCOP; behöver ofta hänvisa till namn på typer och gränssnitt för typkonverteringar, gränssnitt och metodsignaturer. Dessa representeras av strängar i de vanliga &MCOP;-datastrukturerna, medan namnrymden alltid är fullständigt representerad i C++ stilen. Det här betyder att strängarna skulle innehålla <quote +>M::A</quote +> och <quote +>B</quote +>, enligt exemplen ovan. </para> + +<para +>Observera att detta gäller till och med om namnrymdskvalificeringen inte angavs inne i &IDL;-texten, eftersom sammanhanget klargör vilken namnrymd gränssnittet <interfacename +>A</interfacename +> var tänkt att användas. </para> + +</sect2> +</sect1> + +<sect1 id="threads"> +<title +>Trådar i &arts;</title> + +<sect2 id="threads-basics"> +<title +>Grundläggande information</title> + +<para +>Att använda trådar är inte möjligt på alla plattformar. Det här är orsaken att &arts; ursprungligen skrevs utan att använda trådar alls. För nästan alla problem, finns det en lösning utan trådar som gör samma sak som varje lösning med trådar. </para> + +<para +>Till exempel, istället för att placera ljudutmatning i en separat tråd, och göra den blockerande, använder &arts; ljudutmatning som inte blockerar, och räknar ut när nästa del av utdata ska skrivas med <function +>select()</function +>. </para> + +<para +>&arts; stöder åtminstone (i de senaste versionerna) de som vill implementera sina objekt med trådar. Till exempel om du redan har kod för en <literal role="extension" +>mp3</literal +>-spelare, och koden förväntar sig att <literal role="extension" +>mp3</literal +>-avkodaren ska köras i en separat tråd, är det oftast lättast att behålla den konstruktionen. </para> + +<para +>Implementeringen av &arts;/&MCOP; är uppbyggd genom att dela tillståndet mellan olika objekt på tydliga och mindre tydliga sätt. En kort lista på delade tillstånd innefattar: </para> + +<itemizedlist> +<listitem +><para +>Avsändarobjektet som gör &MCOP;-kommunikation </para> +</listitem> + +<listitem> +<para +>Referensräkningen (Smartwrappers). </para> +</listitem> + +<listitem> +<para +>I/O-hanteraren som hanterar tidsgränser och fd-tidmätning. </para> +</listitem> + +<listitem> +<para +>Objekthanteraren som skapar objekt och laddar insticksmoduler dynamiskt. </para> +</listitem> + +<listitem> +<para +>Flödessystemet som anropar calculateBlock vid lämpliga tillfällen. </para> +</listitem> +</itemizedlist> + +<para +>Inget av de ovanstående objekten förväntar sig att användas med samtidighet (dvs. anropas från olika trådar samtidigt). I allmänhet finns det två sätt att lösa detta: </para> + +<itemizedlist> +<listitem> +<para +>Kräva att den som anropar vilken funktion som helst i objektet skaffar ett lås innan den används. </para> +</listitem> + +<listitem> +<para +>Göra objekten verkligt trådsäkra och/eller skapa instanser av dem för varje tråd. </para> +</listitem> +</itemizedlist> + +<para +>&arts; använder det första sättet. Du behöver ett lås varje gång du ska komma åt några av de här objekten. Det andra sättet är svårare att göra. En snabbfix som försöker åstadkomma detta finns 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 för närvarande fungerar förmodligen ett minimalt sätt bättre, och orsakar mindre problem med befintliga program. </para> + +</sect2> +<sect2 id="threads-locking"> +<title +>När/hur ska låsning ske?</title> + +<para +>Du kan skaffa/släppa låset med de två funktionerna: </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 +>I allmänhet behöver du inte skaffa ett lås (och du ska inte försöka att göra det), om det redan hålls. En lista på villkor när detta är fallet är: </para> + +<itemizedlist> +<listitem> +<para +>Du tar emot ett återanrop från I/O-hanteraren (tidsgräns eller fd). </para> +</listitem> + +<listitem> +<para +>Du anropas på grund av någon &MCOP;-begäran. </para> +</listitem> + +<listitem> +<para +>Du anropas från NotificationManager. </para> +</listitem> + +<listitem> +<para +>Du anropas från flödessystemet (calculateBlock) </para> +</listitem> +</itemizedlist> + +<para +>Det finns också några undantag för funktioner som du bara kan anropa i huvudtråden, och av den anledningen aldrig behöver ett lås för att anropa dem: </para> + +<itemizedlist> +<listitem> +<para +>Skapa och ta bort avsändaren eller I/O-hanteraren. </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 är allt. För allt annat som på något sätt hör ihop med &arts;, måste du skaffa låset, och släppa det igen när du är klar. Här är ett enkelt exempel: </para> + +<programlisting +>class SuspendTimeThread : Arts::Thread { +public: + void run() { + /* + * du behöver det här låset därför att: + * - skapa en referens behöver ett lås (eftersom global: går till + * objekthanteraren, som i sin tur kan behöva GlobalComm + * objektet för att slå upp vart anslutningen ska göras) + * - tilldela en smartwrapper behöver ett lås + * - skapa ett objekt från en referens behöver ett lås (eftersom + * det kan behöva ansluta till en server) + */ + Arts::Dispatcher::lock(); + Arts::SoundServer server = Arts::Reference("global:Arts_SoundServer"); + Arts::Dispatcher::unlock(); + + for(;;) { /* + * du behöver ett lås här, eftersom + * - följa en referens för en smartwrapper behöver ett lås + * (eftersom det kan skapa objektet när det används) + * - att göra ett MCOP-anrop behöver ett lås + */ + Arts::Dispatcher::lock(); + long seconds = server.secondsUntilSuspend(); + Arts::Dispatcher::unlock(); + + printf("sekunder till vänteläge = %d",seconds); + sleep(1); + } + } +} +</programlisting> + + +</sect2> + +<sect2 id="threads-classes"> +<title +>Trådrelaterade klasser</title> + +<para +>Följande trådrelaterade klasser finns tillgängliga för närvarande: </para> + +<itemizedlist> +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__Thread.html" +><classname +> Arts::Thread</classname +></ulink +> - som kapslar in 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 kapslar in en mutex. </para> +</listitem> + +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__ThreadCondition.html" +> <classname +>Arts::ThreadCondition</classname +></ulink +> - som ger stöd för att väcka upp trådar som väntar på att ett visst villkor ska bli sant. </para> +</listitem> + +<listitem> +<para +><ulink url="http://www.arts-project.org/doc/headers/Arts__SystemThreads.html" +><classname +>Arts::SystemThreads</classname +></ulink +> - som kapslar in operativsystemets trådningslager (och ger några hjälpfunktioner för tillämpningsprogrammerare). </para> +</listitem> +</itemizedlist> + +<para +>Se länkarna för dokumentation. </para> + +</sect2> +</sect1> + +<sect1 id="references-errors"> +<title +>Referenser och felhantering</title> + +<para +>&MCOP;-referenser är ett av de mest centrala koncepten i &MCOP; programmering. Det här avsnittet försöker beskriva exakt hur referenser används, och behandlar särskilt felfall (serverkrascher). </para> + +<sect2 id="references-properties"> +<title +>Grundläggande egenskaper för referenser</title> + +<itemizedlist> +<listitem> +<para +>En &MCOP; referens är inte ett objekt, utan en referens till ett objekt: Även om följande deklaration <programlisting> + Arts::Synth_PLAY p; +</programlisting +> ser ut som en definition av ett objekt, så deklarerar det bara en referens till ett objekt. Som C++ programmerare, kan du också se den som Synth_PLAY *, en sorts pekare till ett Synth_PLAY-objekt. Det betyder i synnerhet att p kan vara samma sak som en NULL-pekare. </para> +</listitem> + +<listitem> +<para +>Du kan skapa en NULL-referens genom att explicit tilldela den. </para> +<programlisting +>Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); +</programlisting> +</listitem> + +<listitem> +<para +>Att anropa objekt med en NULL-referens orsakar en minnesdump </para> +<programlisting +>Arts::Synth_PLAY p = Arts::Synth_PLAY::null(); + string s = p.toString(); +</programlisting> +<para +>orsakar en minnesdump. Om man jämför detta med en pekare, är det i stor sett samma som <programlisting> + QWindow* w = 0; + w->show(); +</programlisting +> vilket varje C++ programmerare vet att man ska undvika. </para> +</listitem> + +<listitem> +<para +>Oinitierade objekt försöker att skapa sig själva när de först används </para> + +<programlisting +>Arts::Synth_PLAY p; + string s = p.toString(); +</programlisting> +<para +>är något annorlunda än att följa en NULL-pekare. Du talade inte alls om för objektet vad det är, och nu försöker du använda det. Gissningen här är att du vill ha en ny lokal instans av ett Arts::Synth_PLAY-objekt. Du kan förstås ha velat göra något annat (som att skapa objektet någon annanstans, eller använda ett befintligt fjärrobjekt). Det är i alla fall en bekväm genväg för att skapa objekt. Att skapa ett objekt när det först används fungerar inte när du väl har tilldelat det något annat (som en null-referens). </para> + +<para +>Den motsvarande C++ terminologin skulle vara <programlisting> + QWidget* w; + w->show(); +</programlisting +> som naturligtvis helt enkelt ger ett segmenteringsfel i C++. Så detta är annorlunda här. Det här sättet att skapa objekt är knepigt, eftersom det inte är nödvändigt att det finns en implementering för ditt gränssnitt. </para> + +<para +>Betrakta till exempel ett abstrakt objekt som ett Arts::PlayObject. Det finns naturligtvis konkreta PlayObjects, som de för att spela mp3-filer eller wav-filer, men <programlisting> + Arts::PlayObject po; + po.play(); +</programlisting +> misslyckas helt säkert. Problemet är att fastän ett PlayObject försöker skapas, så misslyckas det eftersom det bara finns objekt som Arts::WavPlayObject och liknande. Använd därför bara det här sättet att skapa objekt om du är säker på att det finns en implementering. </para> +</listitem> + +<listitem> +<para +>Referenser kan peka på samma objekt </para> + +<programlisting +>Arts::SimpleSoundServer s = Arts::Reference("global:Arts_SimpleSoundServer"); + Arts::SimpleSoundServer s2 = s; +</programlisting> + +<para +>skapar två referenser som anger samma objekt. Det kopierar inte något värde, och skapar inte två objekt. </para> +</listitem> + +<listitem> +<para +>Alla objekt referensräknas. Så fort ett objekt inte har några referenser längre, tas det bort. Det finns inget sätt att uttryckligen ta bort ett objekt, men du kan dock använda något sådant här <programlisting> + Arts::Synth_PLAY p; + p.start(); + [...] + p = Arts::Synth_PLAY::null(); +</programlisting +> för att få Synth_PLAY-objektet att försvinna till slut. I synnerhet ska det aldrig vara nödvändigt att använda new och delete i samband med referenser. </para> +</listitem> +</itemizedlist> + +</sect2> + +<sect2 id="references-failure"> +<title +>Fallet med misslyckanden</title> + +<para +>Eftersom referenser kan peka på fjärrobjekt, kan servrarna som innehåller de här objekten krascha. Vad händer då? </para> + +<itemizedlist> + +<listitem> +<para +>En krasch ändrar inte om en referens är en null-referens. Det här betyder att om <function +>foo.isNull()</function +> var <returnvalue +>true</returnvalue +> innan en serverkrasch är den också <returnvalue +>true</returnvalue +> efter en serverkrasch (vilket är självklart). Det betyder också att om <function +>foo.isNull()</function +> var <returnvalue +>false</returnvalue +> innan en serverkrasch (foo angav ett objekt) är den också <returnvalue +>false</returnvalue +> efter serverkraschen. </para> +</listitem> + +<listitem> +<para +>Att anropa metoder med en giltig referens förblir säkert. Antag att servern som innehåller objektet calc kraschade. Fortfarande är anrop till objekt som <programlisting> + int k = calc.subtract(i,j) +</programlisting +> säkra. Det är uppenbart att subtract måste returnera något här, vilket den inte kan eftersom fjärrobjektet inte längre finns. I det här fallet skulle (k == 0) vara sant. I allmänhet försöker operationer returnera något <quote +>neutralt</quote +> som resultat, som 0.0, en null-referens för objekt eller tomma strängar, när objektet inte längre finns. </para> +</listitem> + +<listitem> +<para +>Att kontrollera med <function +>error()</function +> avslöjar om något fungerade. </para> + +<para +>För ovanstående fall, skulle <programlisting> + int k = calc.subtract(i,j) + if(k.error()) { + printf("k är inte i-j!\n"); + } +</programlisting +> skriva ut <computeroutput +>k är inte i-j</computeroutput +> när fjärranropet inte fungerade. Annars är <varname +>k</varname +> verkligen resultatet av subtraktionsoperationen som utförs av fjärrobjektet (ingen serverkrasch). För metoder som gör saker som att ta bort en fil, kan du inte veta säkert om det verkligen skett. Naturligtvis skedde det om <function +>.error()</function +> är <returnvalue +>false</returnvalue +>. Men om <function +>.error()</function +> är <returnvalue +>true</returnvalue +>, finns det två möjligheter: </para> + +<itemizedlist> +<listitem> +<para +>Filen togs bort, och servern kraschade precis efter den togs bort, men innan resultatet överfördes. </para> +</listitem> + +<listitem> +<para +>Servern kraschade innan den kunde ta bort filen. </para> +</listitem> +</itemizedlist> +</listitem> + +<listitem> +<para +>Att använda nästlade anrop är farligt i ett program som ska vara kraschsäkert. </para> + +<para +>Att använda något som liknar <programlisting> + window.titlebar().setTitle("foo"); +</programlisting +> är ingen bra Idé. Antag att du vet att fönstret innehåller en giltig fönsterreferens. Antag att du vet att <function +>window.titlebar()</function +> returnerar en referens till namnlisten eftersom fönsterobjektet är riktigt implementerat. Men satsen ovan är ändå inte säker. </para> + +<para +>Vad kan hända om servern som innehåller fönsterobjektet har kraschat. Då, oberoende av hur bra implementeringen av Window är, så kommer du att få en null-referens som resultat av operationen window.titlebar(). Och sedan kommer förstås anropet till setTitle med den här null-referensen också leda till en krasch. </para> + +<para +>Så en säker variant av detta skulle vara <programlisting> + Titlebar titlebar = window.titlebar(); + if(!window.error()) + titlebar.setTitle("foo"); +</programlisting +> och lägg till den riktiga felhanteringen om du vill. Om du inte litar på implementeringen av Window, kan du lika väl använda <programlisting> + Titlebar titlebar = window.titlebar(); + if(!titlebar.isNull()) + titlebar.setTitle("foo"); +</programlisting +> som båda är säkra. </para> +</listitem> +</itemizedlist> + +<para +>Det finns andra felorsaker, som nerkoppling av nätverket (antag att du tar bort kabeln mellan din server och klient medan ditt program kör). Deras effekt är ändå likadan som en serverkrasch. </para> + +<para +>Totalt sett är det förstås en policyfråga hur strikt du försöker hantera kommunikationsfel i hela ditt program. Du kan följa metoden <quote +>om servern kraschar, måste vi avlusa den till den aldrig kraschar igen</quote +>, som skulle betyda att du inte behöver bry dig om alla de här problemen. </para> + +</sect2> + +<sect2 id="references-internals"> +<title +>Interna funktioner: distribuerad referensräkning</title> + +<para +>Ett objekt måste ägas av någon för att finnas till. Om det inte gör det, kommer det upphöra att finnas till (mer eller mindre) omedelbart. Internt anges en ägare genom att anropa <function +>_copy()</function +>, som räknar upp en referensräknare, och en ägare tas bort genom att anropa <function +>_release()</function +>. Så fort referensräknaren når noll, så tas objektet bort. </para> + +<para +>Som en variation på temat, anges fjärranvändning med <function +>_useRemote()</function +>, och löses upp med <function +>_releaseRemote()</function +>. Dessa funktioner har en lista över vilken server som har anropat dem (och därför äger objektet). Det här används om servern kopplar ner (dvs. krasch, nätverksfel), för att ta bort referenser som fortfarande finns till objektet. Det här görs i <function +>_disconnectRemote()</function +>. </para> + +<para +>Nu finns det ett problem. Betrakta ett returvärde. I vanliga fall ägs inte returvärdesobjektet av funktionen som anropas längre. Det ägs inte heller av den som anropar, förrän meddelandet som innehåller objektet har tagits emot. Så det finns en tid med objekt som <quote +>saknar ägare</quote +>. </para> + +<para +>Nu när vi skickar ett objekt kan man vara rimligt säker på att så fort det tas emot, ägs det av någon igen, om inte, återigen, mottagaren kraschar. Det här betyder i alla fall att speciell hänsyn måste tas för objekt åtminstone vid sändning, och troligen också vid mottagning, så att de inte tas bort meddetsamma. </para> + +<para +>Sättet som &MCOP; gör det här är genom att <quote +>tagga</quote +> objekt som håller på att kopieras över nätverket. Innan en sådan kopiering börjar, anropas <function +>_copyRemote</function +>. Det här förhindrar att objektet tas bort på ett tag (5 sekunder). Så fort mottagaren anropar <function +>_useRemote()</function +>, tas taggen bort igen. Så alla objekt som skickas över nätverket, taggas innan överföringen. </para> + +<para +>Om mottagaren tar emot ett objekt som finns på samma server, så används förstås inte <function +>_useRemote()</function +>. I det här specialfallet, finns funktionen <function +>_cancelCopyRemote()</function +> för att ta bort taggen manuellt. Förutom detta, finns det också en tidsbaserad borttagning av taggen, om taggning gjordes, men mottagaren verkligen inte fick objektet (på grund av krasch, nätverksfel). Det här görs med klassen <classname +>ReferenceClean</classname +>. </para> + +</sect2> + +</sect1> + +<sect1 id="detail-gui-elements"> +<title +>Grafiska gränssnittselement</title> + +<para +>Grafiska gränssnittselement är för närvarande på det experimentella stadiet. Det här avsnittet beskriver vad som är meningen ska hända med dem, så om du är en utvecklare, kan du förstå hur &arts; kommer att hantera grafiska gränssnitt i framtiden. Det finns också redan en del kod på plats. </para> + +<para +>Grafiska gränssnittselement ska användas för att låta syntesstrukturer växelverka med användaren. I det enklaste fallet ska användaren kunna ändra några parametrar för en struktur direkt (som en förstärkningsfaktor som används innan den slutliga uppspelningsmodulen). </para> + +<para +>För mer komplexa fall, kan man tänka sig att användaren ändrar parametrar för grupper av strukturer och/eller strukturer som inte kör än, som att ändra <acronym +>ADSR</acronym +> enveloppen för det aktiva &MIDI;-instrumentet. Något annat skulle kunna vara att ange filnamnet för ett samplingsbaserat instrument. </para +> + +<para +>Å andra sidan, skulle användaren kunna vilja övervaka vad synthezisern gör. Det skulle kunna finnas oscilloskop, spektrumanalysatorer volymmätare och <quote +>experiment</quote +> som till exempel räknar ut frekvensöverföringskurvan för en given filtermodul. </para> + +<para +>Till sist, ska grafiska gränssnittselement kunna kontrollera hela strukturen av allt som kör inne i &arts;, och på vilket sätt. Användaren ska kunna tilldela instrument till midi-kanaler, starta nya effektbehandlingssteg, anpassa sin huvudmixerpanel (som själv är byggd av &arts;-strukturer) för att få ytterligare en kanal eller använda en annan strategi för tonkontroll. </para> + +<para +>Som du ser, ska grafiska gränssnittselement ge alla möjligheterna i en virtuell studio som &arts; simulerar åt användaren. Naturligtvis ska de också växelverka med midi-ingångar (som skjutreglage som också flyttas om de får &MIDI;-indata som ändrar motsvarande parameter), och troligen till och med skapa händelser själva, för att växelverkan med användaren ska kunna spelas in via en sequencer. </para> + +<para +>Tekniskt sett är Idén att ha en &IDL;-basklass för alla grafiska komponenter (<classname +>Arts::Widget</classname +>), och härleda ett antal vanliga komponenter från den (som <classname +>Arts::Poti</classname +>, <classname +>Arts::Panel</classname +>, <classname +>Arts::Window</classname +>, ...). </para> + +<para +>Därefter kan man implementera de här grafiska komponenterna med en verktygslåda, till exempel &Qt; eller Gtk. Till slut, bör effekter bygga sina grafiska gränssnitt från existerande komponenter. En efterklangseffekt skulle till exempel kunna bygga sitt grafiska gränssnitt från fem <classname +>Arts::Poti</classname +>-mojänger och ett <classname +>Arts::Window</classname +>. Så OM det finns en &Qt; implementering för de här grundkomponenterna, kan effekten visas med &Qt;. Om det finns en Gtk implementering, fungerar det också med Gtk (och ser mer eller mindre likadant ut). </para> + +<para +>Till sist, eftersom vi använder &IDL; här, kan aRts-byggaren (eller andra verktyg) sätta ihop grafiska gränssnitt visuellt, eller automatgenerera grafiska gränssnitt, med tips för parametervärden, enbart baserat på gränssnitten. Det borde vara ganska rättframt att skriva en klass för att <quote +>skapa grafiskt gränssnitt från en beskrivning</quote +>, som tar en beskrivning av ett grafiskt gränssnitt (som innehåller de olika parametrarna och grafiska komponenterna), och skapar ett levande objekt för ett grafiskt gränssnitt från den. </para> + +<para +>Baserat på &IDL; och &arts;/&MCOP;-komponentmodellen, bör det vara lätt att utöka de möjliga objekten som kan användas för det grafiska gränssnittet precis lika lätt som det är att lägga till en insticksmodul till &arts; som till exempel implementerar ett nytt filter. </para> + +</sect1> + +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/digitalaudio.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/digitalaudio.docbook new file mode 100644 index 00000000000..982a9f2a766 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/digitalaudio.docbook @@ -0,0 +1,16 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<appendix id="intro-digital-audio"> +<title +>Introduktion till digitalljud</title> + +<para +>Digital sampling, filter, ljudeffekter, etc.</para> + +</appendix> + + + diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/faq.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/faq.docbook new file mode 100644 index 00000000000..6b9160b5277 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/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 +>Vanliga frågor</title> + +<para +>Det här avsnittet besvarar några frågor som ofta ställs om &arts;. </para> + +<qandaset id="faq-general"> +<title +>Allmänna frågor</title> + +<qandaentry> +<question> +<para +>Stöder &kde; mitt ljudkort för ljuduppspelning? </para> +</question> + +<answer> +<para +>&kde; använder &arts; för att spela upp ljud, och &arts; använder ljuddrivrutinerna i &Linux; kärna, antingen <acronym +>OSS</acronym +> eller <acronym +>ALSA</acronym +> (med emulering av <acronym +>OSS</acronym +>). Om ditt ljudkort antingen stöds av <acronym +>ALSA</acronym +> eller <acronym +>OSS</acronym +> och är riktigt inställt (dvs. alla andra &Linux;-program kan spela upp ljud), kommer det att fungera. Det finns dock några problem med specifik hårdvara, läs <link linkend="faq-hardware-specific" +>avsnittet om hårdvaruspecifika problem</link +> om du får problem med artsd på din dator. </para> +<para +>Under tiden har också stöd för diverse andra plattformar lagts till. Här är en fullständig lista över hur den senaste versionen av &arts; kan spela ljud. Om du har en plattform som inte stöds, fundera gärna på att anpassa &arts; till din plattform. </para> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry +>&arts; metod för ljud-I/O</entry> +<entry +>Kommentar</entry> +</row> +</thead> + +<tbody> +<row> +<entry +>paud</entry> +<entry +>Stöd för AIX personliga ljudenhet (Personal Audio Device)</entry> +</row> + +<row> +<entry +>alsa</entry> +<entry +>Linux ALSA-0.5 och ALSA-0.9 drivrutiner</entry> +</row> + +<row> +<entry +>libaudioio</entry> +<entry +>Stöd för det generella LibAudioIO-biblioteket som fungerar på Solaris</entry> +</row> + +<row> +<entry +>nas</entry> +<entry +>NAS ljudserver, användbar för X-terminaler med NAS-stöd</entry> +</row> + +<row> +<entry +>null</entry> +<entry +>Ljudenheten null, kastar bort ljudet utan att något hörs</entry> +</row> + +<row> +<entry +>oss</entry> +<entry +>OSS (Open Sound System) stöd (fungerar på Linux, olika BSD-versioner och andra plattformar med OSS-drivrutiner installerade)</entry> +</row> + +<row> +<entry +>toss</entry> +<entry +>Trådat OSS-stöd, som fungerar bättre i vissa fall då det vanliga OSS-stödet inte fungerar bra</entry> +</row> + +<row> +<entry +>sgi</entry> +<entry +>Stöd för SGI Direct Media för IRIX</entry> +</row> + +<row> +<entry +>sun</entry> +<entry +>Solaris-stöd</entry> +</row> + +</tbody> +</tgroup> +</informaltable> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jag kan inte spela <literal role="extension" +>wav</literal +>-filer med &artsd;! </para> +</question> + +<answer> +<para +>Kontrollera att &artsd; är länkad till <filename +>libaudiofile</filename +> (<userinput +><command +>ldd</command +> <parameter +>artsd</parameter +></userinput +>). Om den inte är det, ladda ner tdesupport, kompilera om allt, och det kommer att fungera. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jag hör ljud när jag är inloggad som <systemitem class="username" +>root</systemitem +>, men andra användare saknar ljud! </para> +</question> + +<answer> +<para +>Rättigheterna för filen <filename class="devicefile" +>/dev/dsp</filename +> påverkar vilka användare som har ljud. För att låta alla använda den, gör så här: </para> + +<procedure> +<step> +<para +>Logga in som <systemitem class="username" +>root</systemitem +>. </para> +</step> + +<step> +<para +>Öppna ett &konqueror;-fönster. </para> +</step> + +<step> +<para +>Gå till katalogen <filename class="directory" +>/dev</filename +>. </para> +</step> + +<step> +<para +>Klicka på filen <filename +>dsp</filename +> med <mousebutton +>höger</mousebutton +> musknapp, och välj egenskaper. </para> +</step> + +<step> +<para +>Klicka på fliken <guilabel +>Skydd</guilabel +>. </para> +</step> + +<step> +<para +>Markera rutorna <guilabel +>Visa poster</guilabel +> och <guilabel +>Skriv poster</guilabel +> i alla avdelningar. </para> +</step> + +<step> +<para +>Klicka på <guibutton +>Ok</guibutton +>. </para> +</step> +</procedure> + +<para +>Du kan uppnå samma effekt i ett terminalfönster med kommandot <userinput +><command +>chmod</command +> <option +>666</option +> <parameter +>/dev/dsp</parameter +></userinput +>. </para> + +<para +>För att begränsa tillgången av ljud till särskilda användare kan du använda gruppskydd. För vissa &Linux;-distributioner, till exempel Debian/Potato, ägs <filename class="devicefile" +>/dev/dsp</filename +> redan av en grupp som heter <systemitem class="groupname" +>audio</systemitem +>, så allt du behöver göra är att lägga till användarna till den här gruppen. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Det här hjälper för &artsd;, men vad gäller för &kmix;, &kmid;, &kscd; etc.? </para> +</question> +<answer> + +<para +>Det finns diverse andra enheter som tillhandahåller funktioner som ska kommas åt av multimediaprogram. Du kan behandla dem på samma sätt, antingen genom att göra dem tillgängliga för alla, eller använda grupper för att kontrollera åtkomsten. Här är en lista, som fortfarande kan vara ofullständig (dessutom om det finns flera enheter på formen <filename class="devicefile" +>midi0</filename +>, <filename class="devicefile" +>midi1</filename +>..., så finns bara 0-versionen 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 +>Vad kan jag göra om artsd inte startar eller kraschar när den kör?</para> +</question> + +<answer> +<para +>Försök först att använda de förvalda inställningarna i inställningscentralen (eller om du startar manuellt, ange inga extra väljare utom eventuellt <userinput +><option +>-F</option +><parameter +>10</parameter +> <option +>-S</option +><parameter +>4096</parameter +></userinput +> för latenstid). Särskilt <emphasis +>full duplex fungerar troligen inte</emphasis +> med diverse drivrutiner, så försök stänga av det. </para> + +<para +>Ett bra sätt att räkna ut varför &artsd; inte startar (eller kraschar när den kör) är att starta den manuellt. Öppna ett &konsole;-fönster och 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 också lägga till väljaren <option +>-l0</option +>, som skriver ut mer information om vad som händer, så här: </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 +>Genom att göra detta får du förmodligen någon användbar information om varför den inte startade. Eller om den kraschar medan något särskilt pågår, kan du göra det och se <quote +>hur</quote +> den kraschar. Om du vill rapportera ett fel, kan en bakåtspårning skapad med <command +>gdb</command +> och/eller en <command +>strace</command +> hjälpa till att hitta problemet. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Kan jag flytta på &artsd; (flytta kompilerade filer till en annan katalog)?</para> +</question> + +<answer> +<para +>Du kan inte flytta &arts; helt perfekt. Problemet är att &artswrapper; har platsen för &artsd; inkompilerad av säkerhetsskäl. Du kan i alla fall använda <filename +>.mcoprc</filename +>-filen (TraderPath/ExtensionPath posterna) för att åtminstone få en flyttad &artsd; att hitta sina komponenter. Se <link linkend="the-mcoprc-file" +>kapitlet om <filename +>.mcoprc</filename +>-filen</link +> för detaljer om hur man gör detta. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Kan jag kompilera &arts; med gcc-3.0?</para> +</question> + +<answer> +<para +>Ett kort svar: nej, &arts; fungerar inte om du kompilerar det med gcc-3.0. </para> + +<para +>Långt svar: i den officiella utgåvan av gcc-3.0, finns det två fel som påverkar &arts;. Det första problemet med gcc-3.0, c++/2733, är ganska ofarligt (och har att göra med problem med asm-satsen). Det gör att convert.cc inte kan kompileras. Det har rättats i gcc-3.0 CVS, och kommer inte att vara ett problem med gcc-3.0.1 och senare. Ett sätt att gå förbi problemet har också lagts till i CVS-versionen av KDE/aRts. </para> +<para +>Det andra problemet med gcc-3.0, c++/3145 (som orsakar felaktig kodgenerering för vissa fall av multipla virtuellt arv) är kritisk. Program som &artsd; kraschar helt enkelt när de startas om de har kompilerats med gcc-3.0. Även om vissa framsteg har gjorts i gcc-3.0 grenen när det här skrivs, kraschar fortfarande &artsd; väldigt ofta, oförutsägbart. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Vilka program kör med &arts;?</para> +</question> +<answer> + +<para +>Självklart så fungerar alla program som ingår i &kde; med &arts;. Detta innefattar: </para> + +<itemizedlist> +<listitem +><para +>&noatun;</para +></listitem> +<listitem +><para +>aRts-byggare</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;-spel som &kpoker; och &ktuberling;</para +></listitem> +</itemizedlist> + +<para +>Vissa &kde;-program som ännu inte ingår i &kde;-utgåvor (t.ex. i kdenonbeta) stöder också &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öljande program som inte hör till -&kde; är kända för att fungera med &arts;: </para> + +<itemizedlist> +<listitem +><para +><application +>xmms</application +> (med &arts;-insticksprogram)</para +></listitem> +<listitem +><para +>Real Networks <application +>RealPlayer</application +> 8.0 (fungerar med &artsdsp;; inbyggt &arts;-stöd undersöks)</para +></listitem> +</itemizedlist> + +<para +>Följande program är kända för att <emphasis +>inte</emphasis +> fungera med &arts;: </para> + +<itemizedlist> +<listitem +><para +>inga</para +></listitem> +</itemizedlist> + +<para +>Se också svaren till frågorna i avsnittet om <link linkend="faq-non-arts" +>program som inte stöder &arts;</link +>. </para> + +<para +>Det här avsnittet är ofullständigt. Om du har mer information om program som stöds eller inte, var vänlig skicka dem till upphovsmannen så att de kan läggas till här. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-non-arts"> +<title +>Program som inte stöder &arts;</title> + +<qandaentry> +<question> +<para +>Så fort &kde; kör, så kan inga andra program komma åt mitt ljudkort! </para> +</question> +<answer> +<para +>Eftersom &arts;-ljudservern som används av &kde; kör, använder den ljudenheten. Om servern är oanvänd i 60 sekunder, går den till vänteläge och släpper enheten automatiskt. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Du sa att den går till vänteläge efter 60 sekunder, det gör den inte för mig! </para> +</question> +<answer> +<para +>Om du startar artsd från KDE:s inställningscentral, är det förvalda värdet att gå till vänteläge efter 60 sekunder. Om du startar artsd från kommandoraden måste du använda väljaren -s för att ange väntelägesvärdet, annars är det förvalda beteendet att stänga av väntelägesfunktionen. </para> +<para +>För närvarande går servern inte till vänteläge om full duplex används. Stäng av full duplex i inställningscentralen så går den till vänteläge. Att stänga av full duplex är i allmänhet en bra idé ändå, om du bara använder &arts; för att spela upp ljud och inte för att spela in. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Hur kan jag köra gamla program som inte stöder &arts;? </para> +</question> + +<answer> +<para +>Kör dem med &artsdsp;. Om du till exempel normalt skulle köra: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>mpg123</command +> <option +>foo.mp3</option +></userinput +></screen> + +<para +>använd istället:</para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>mpg123 foo.mp3</option +></userinput +></screen> + +<para +>Det här skickar ljudutmatning till &arts;. Den här metoden kräver inte några ändringar i programmet. Den är ändå något av en ful snabbfix, och stöder ännu inte alla funktioner i ljudkortsenheten, så vissa program kanske inte fungerar. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jag kan inte köra &artsdsp; med något program. Den kraschar alltid! </para> +</question> +<answer> +<para +>Du behöver en aktuell version av glibc-bilblioteket. &artsdsp; fungerar inte tillförlitligt på vissa äldre &Linux;-distributioner. Till exempel på Debian 2.1 (som är baserat på glibc 2.0) fungerar den inte, medan på Debian 2.2 (som är baserat på glibc 2.1.3), gör den det. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Finns det teoretiska begränsningar med vissa program som förhindrar att de någonsin fungerar med &artsdsp;? </para> +</question> +<answer> +<para +>Nej. Att använda &artsdsp; kan resultera i något högre latenstider och <acronym +>CPU</acronym +>-användning än att använda &arts; programmeringsgränssnitt direkt. Förutom det, ska alla program som inte fungerar anses som ett fel i &artsdsp;. Tekniken som används av &artsdsp; ska, om den är riktigt implementerad, tillåta <emphasis +>varje</emphasis +> program att fungera med den (inklusive stora program som <application +>Quake</application +> 3). </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Vad kan jag göra om ett program inte fungerar med &artsdsp;? </para> +</question> +<answer> +<para +>Du kan vänta på att &artsd; går till vänteläge eller använda kommandot <userinput +><command +>artsshell</command +> <option +>suspend</option +></userinput +> för att begära att servern ska gå till vänteläge. Du kommer bara kunna få servern att gå till vänteläge om inget &arts;-program använder den för närvarande, och inga &arts;-program kan köra medan servern är i vänteläge. </para> + +<para +>Om servern är upptagen ser ett grovt men effektivt sätt att bli av med den ut så här: </para> + + +<screen +><prompt +>%</prompt +> <userinput +><command +>killall</command +> <option +>artsd</option +> ; <command +>killall</command +> <option +>artswrapper</option +></userinput> +<lineannotation +>Starta nu ditt eget program.</lineannotation> +<prompt +>%</prompt +> <userinput +><command +>kcminit</command +> <option +>arts</option +></userinput +> +</screen> + +<para +>Alla &arts;-program som för närvarande kör kan krascha, när du väl avslutar servern. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Vad gäller för program skrivna för &kde; 1.x? </para> +</question> +<answer> +<para +>Om du kör &kde; 1.x program, som spelar upp ljud via ljudservern i &kde; 1, måste du köra <application +>kaudioserver</application +> för att det ska fungera. Du kan starta <application +>kaudioserver</application +> på samma sätt som andra program som inte stöder &arts;: </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>kaudioserver</option +></userinput +> +</screen> + +<para +>Du måste ha installerat kaudioserver (från samma källa där du skaffade &kde; 1.x programmen). Den hör till &kde; 1.x, inte &kde; 2. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Vad gäller för program som använder Enlightened Sound Daemon, <acronym +>ESD</acronym +>? </para> +</question> +<answer> +<para +>Det här problemet liknar fallet med <application +>kaudioserver</application +>. Sådana program kräver en esd-server som kör. Du kan starta <command +>esd</command +> via &artsdsp;, och alla program som stöder <acronym +>ESD</acronym +> ska fungera bra, så här: </para> +<screen +><prompt +>%</prompt +> <userinput +><command +>artsdsp</command +> <option +>esd</option +></userinput +> +</screen> +<para +>Nyare versioner av aRts ( +>= 1.2.0) kan också använda Enlightened Sound Daemon istället för direkt åtkomst av ljudkortet. På kommandoraden kan du använda väljaren -a, på följande sätt </para> +<screen +><prompt +>%</prompt +> <userinput +><command +>artsd</command +> <option +>-a esd</option +></userinput +> +</screen> +<para +>för att få stöd för ESD. I stället, i KDE, kan du använda Inställningscentralen för att anpassa artsd att använda ESD, via Ljud -> Ljudserver -> Ljud I/O. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-latency"> +<title +>Latenstid</title> + +<qandaentry> +<question> +<para +>Ibland hör jag korta pauser när jag lyssnar på musik. Är detta ett fel? </para> +</question> +<answer> +<para +>Det här är troligen inget fel, utan orsakas av det faktum att &Linux; kärna inte är särskilt bra på realtidsschemaläggning. Det finns situationer då &arts; inte kan hänga med i uppspelningen. Du kan dock aktivera realtidsrättigheter (via inställningscentralen), och använda en stor latenstidsinställning (som <guilabel +>250 ms</guilabel +> eller <guilabel +>så stor som möjligt</guilabel +>), vilket bör förbättra situationen. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Vad är effekten av svarstidsinställningen? </para> +</question> +<answer> +<para +>Hjälptexten för den här inställningen i inställningscentralen kan vara förvirrande. Ett lägre värde betyder att &arts; reagerar snabbare på yttre händelser (dvs tiden det tar mellan ett fönster stängs och ljudet spelas av &artsd;). Den kommer också att använda mer <acronym +>CPU</acronym +>-resurser och vara mer benäget att orsaka pauser i ljudet.</para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Finns det någonting annat jag kan göra för att undvika pauser? </para> +</question> +<answer> +<para +>För användare av <acronym +>IDE</acronym +>-enheter, kan man använda kommandot <command +>hdparm</command +> för att ställa in din <acronym +>IDE</acronym +>-enhet att använda <acronym +>DMA</acronym +>-läge. Ett varningens ord: Det här fungerar inte med all sorts hårdvara, och kan orsaka att man måste göra en hårdvaruåterställning, eller i ovanliga fall, förlust av data. Läs dokumentationen för kommandot <command +>hdparm</command +> för mer detaljer. Jag har använt följande kommando med lyckat 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 måste köra det här efter varje omstart, så du kanske vill lägga det i ett uppstartsskript för systemet (hur man gör detta är specifikt för varje distribution, på Debian &Linux; läggs det oftast i <filename +>/etc/rc.boot</filename +>). </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Realtidsprioritet verkar inte få någon effekt för mig? </para> +</question> +<answer> +<para +>Kontrollera att artswrapper verkligen är installerad suid <systemitem class="username" +>root</systemitem +>, som det är meningen att den ska vara. Många distributioner (till exempel SuSE7.x) gör inte detta. Du kan kontrollera det med: ls -l $(which artswrapper). Bra: <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åligt: <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 +> Om du inte har med s:et, 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 +>Om du gör &artswrapper; SUID <systemitem class="username" +>root</systemitem +>, kommer det troligen förbättra kvaliteten på ljudåtergivningen genom att reducera uppehåll i musiken. Dock ökar det också risken att ett fel i koden, eller en användare med uppsåt att skada kan krascha eller skada datorn på något sätt. Dessutom, att prioritera hög ljudkvalitet på fleranvändardatorer kan orsaka försämrad prestanda för användare som försöker använda datorn på ett <quote +>produktivt</quote +> sätt.</para> + +</answer> +</qandaentry> + + +<qandaentry> +<question> +<para +>Varför tar &artsd; så mycket <acronym +>CPU</acronym +>-tid? </para> +</question> +<answer> +<para +>Kontrollera dina svarstidsinställningar. Dessutom är den nuvarande versionen inte egentligen optimerad. Det här kommer att bli bättre, och till dess kan inte någon riktig förutsägelse göras om hur snabb &artsd; kan vara. </para> +</answer> +</qandaentry> +</qandaset> + +<qandaset id="faq-network"> +<title +>Nätverkstransparens</title> + +<qandaentry> +<question> +<para +>Vad måste jag göra för att få nätverkstransparens? </para> +</question> +<answer> +<para +>Aktivera det i inställningscentralens inställningar för <guilabel +>Ljudserver</guilabel +> (<guilabel +>Utbyt säkerhets- och referensinformation över X11-servern</guilabel +> och <guilabel +>Aktivera nätverkstransparens</guilabel +>). Kopiera sedan din <filename +>.mcoprc</filename +>-fil till alla maskiner som du tänker använda nätverkstransparensen från. Logga in igen. Försäkra dig om att värddatorerna som ska samarbeta känner till varandras namn (dvs. de har namn som kan lösas upp eller finns i <filename +>/etc/hosts</filename +>). </para> + +<para +>Det här bör vara allt du behöver göra. Om det inte fungerar ändå, följer några ytterligare detaljer. &arts; ljudserverprocess &artsd; ska bara köras på en värddator, den med ljudkortet där ljud ska spelas upp. Den kan startas automatiskt vid inloggning av &kde; (om du anger det i inställningscentralen), eller manuellt med någonting i stil med: </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 +>Väljaren <option +>-n</option +> anger nätverkstransparens, medan de övriga anpassar latenstider. </para> + +<para +>Din <filename +>.mcoprc</filename +>-fil måste innehålla den här raden: </para> + +<screen +><userinput +>GlobalComm=Arts::X11GlobalComm</userinput +> +</screen> + +<para +>för alla maskiner som är inblandade, för att nätverkstransparens ska fungera. Det är det här som aktiveras av inställningen <guilabel +>Utbyt säkerhets- och referensinformation över X11-servern</guilabel +> i inställningscentralen. </para> + +<para +>Till sist, i alla &kde;-versioner i 2.0.x serien, finns det ett fel som visar sig om du inte har ett domännamn inställt. Klienter till &artsd; försöker hitta anslutningen via kombinationen av <systemitem class="systemname" +><replaceable +>värddatornamn</replaceable +>.<replaceable +>domännamn</replaceable +></systemitem +>. Om domännamnet är tomt, försöker de ansluta till <systemitem class="systemname" +><replaceable +>värddatornamn</replaceable +></systemitem +>. (observera den extra punkten). Att lägga till en post som ser ut så här i <filename +>/etc/hosts</filename +> (dvs <userinput +>orion.</userinput +> om värddatornamnet är <systemitem class="systemname" +>orion</systemitem +>) gör att man undviker problemet. </para> +</answer> +</qandaentry> + + +<qandaentry> +<question> +<para +>Hur avlusar jag nätverkstransparens om det inte fungerar? </para> +</question> +<answer> +<para +>Om du har &kde;:s källkod, gå till <filename class="directory" +>tdelibs/arts/examples</filename +>, och kör <userinput +><command +>make</command +> <option +>check</option +></userinput +> för att kompilera några program, inklusive <application +>referenceinfo</application +>. Kör sedan </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>./referenceinfo</command +> <option +>global:Arts_SimpleSoundServer</option +></userinput +> +</screen> + +<para +>Utmatningen anger värddatornamnet och porten som används av &arts;. Till exempel, <computeroutput +>tcp:orion:1698</computeroutput +> skulle betyda att alla klienter som försöker använda nätverkstransparens måste veta hur värddatorn <systemitem class="systemname" +>orion</systemitem +> kan nås. </para> +</answer> +</qandaentry> + +</qandaset> + +<qandaset id="faq-hardware-specific"> +<title +>Hårdvaruspecifika frågor</title> + +<qandaentry> +<question> +<para +>Vilken hårdvara fungerar artsd inte bra tillsammans med? </para> +</question> +<answer> +<para +>Det verkar som om det finns några få Linux-drivrutiner som inte fungerar bra tillsammans med aRts för vissa versioner av kärnan. Läs först den här listan innan du rapporterar ett fel. Om du märker att informationen i listan inte är fullständig, tveka inte att tala om det för oss. <informaltable +> <tgroup cols="4"> +<thead> +<row> +<entry +>Linux-drivrutin/ljudkort</entry> +<entry +>Fungerar inte med</entry> +<entry +>Fungerar med</entry> +<entry +>Anmärkning</entry> +</row> +</thead> + +<tbody> +<row> +<entry +>i810-drivrutin (Intel 810 + AC97 Audio)</entry> +<entry +>2.4.9</entry> +<entry +>2.4.18, 2.2.20, kommersiell OSS-drivrutin, alsa-0.5.12a med OSS-emulering</entry> +<entry +>drivrutinen orsakar för mycket CPU-last (se nedan)</entry> +</row> + +<row> +<entry +>maestro 3/4-kretsar</entry> +<entry +>2.4.9</entry> +<entry +>?</entry> +<entry +>drivrutinen orsakar ibland överlast av processorn (se nedan)</entry> +</row> + +<row> +<entry +>aureal8820, aureal8830-drivrutiner från sourceforge</entry> +<entry +>2.4.17</entry> +<entry +>?</entry> +<entry +>drivrutinen orsakar felmeddelande / för mycket CPU-last (se nedan)</entry> +</row> + +<row> +<entry +>OSS kommersiell 3.9.4g med Aureal Vortex</entry> +<entry +>?</entry> +<entry +>?</entry> +<entry +>systemet låser sig</entry> +</row> + +<row> +<entry +>ymfpci</entry> +<entry +>2.4.0, 2.4.12</entry> +<entry +>2.4.17</entry> +<entry +>drivrutinen orsakar felmeddelande (se nedan)</entry> +</row> + + + +</tbody> +</tgroup> +</informaltable> +</para> +</answer> +</qandaentry> + + + +<qandaentry> +<question> +<para +>Varför finns det hårdvaruspecifika problem, och hur ser jag dem? </para> +</question> +<answer> +<para +>De vanliga problemen är att drivrutinen inte ger aRts tillräcklig eller tillräckligt noggrann information om när ljuddata ska skrivas. De flesta OSS-drivrutiner ger riktig information, men inte alla. </para> +<para +>Du kan märka att vissa andra program (som xmms) inte behöver den här informationen, och därför fungerar på ett riktigt sätt till och med för din hårdvara. Men &arts; behöver den här informationen, så artsd kan sluta fungera. Det här är fortfarande ett fel i drivrutinen, och inte i &arts;. </para> +<para +>Det finns två sorters beteende som artsd påvisar när den körs med en felaktig drivrutin. Antingen försöker den skicka ny data, men lyckas egentligen aldrig, vilket till slut leder till att för mycket CPU-last används, att detta rapporteras, och att den avslutas. Det andra problemet är att artsd kan få fel information om hur mycket data som ska skrivas. Då <emphasis +>stoppar</emphasis +> artsd med ett felmeddelande som: <screen +>artsd: audiosubsys.cc:458: void Arts::AudioSubSystem::handleIO(int): +Assertion `len == can_write' failed. +Aborted +</screen> +</para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Vad är fel i drivrutinen om jag får problemet med för mycket CPU-last? </para> +</question> +<answer> +<para +>Oftast använder artsd anropet select() för att ta reda på när ny data ska skrivas. Därefter använder den anropet ioctl(...GETOSPACE...), för att ta reda på hur mycket data som ska skrivas. Till sist skriver den data. </para> +<para +>Ett problem uppstår om artsd antingen alltid väcks, eller om det finns mycket lite data att skriva. OSS-dokumentationen anger att anropet select() bara väcker en process om det finns minst ett fragment att skriva. Om artsd väcks när det inte finns någon, eller mycket lite, data att skriva, till exempel en sampling, försöker den skriva småbitar med ljuddata, vilket kan bli mycket kostsamt, och till slut ge för mycket CPU-last. </para> +<para +>För att rätta detta, ska drivrutinen bara väcka artsd om ett helt fragment kan skrivas. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Vad är det för fel i drivrutinen om jag får det här felmeddelandet? </para> +</question> +<answer> +<para +>Oftast använder artsd anropet select() för att ta reda på när ny data ska skrivas. Därefter använder den anropet ioctl(...GETOSPACE...), för att ta reda på hur mycket data som ska skrivas. Till sist skriver den data. </para> +<para +>Om artsd inte kan skriva så mycket data som anges av anropet ioctl, så stoppar den med felmeddelandet ovan. För att rätta detta, ska drivrutinen ange rätt storlek på det lediga utrymmet. </para> +</answer> +</qandaentry> +</qandaset> + +<qandaset id="faq-other"> +<title +>Övriga problem</title> + +<qandaentry> +<question> +<para +>Jag kan inte använda aRts-byggaren. Den kraschar när jag kör en modul! </para> +</question> +<answer> +<para +>Den troligaste orsaken är att du använder gamla strukturer eller moduler som inte stöds i &kde; 2 versionen. Tyvärr gäller dokumentationen på nätet &arts;-0.3.4.1 som är helt föråldrad. Den oftast rapporterade kraschen är att om en struktur körs i aRts-byggaren fås felmeddelandet <errorname +>[artsd] Synth_PLAY: ljuddelsystemet används redan.</errorname +> </para> + +<para +>Du måste använda en Synth_AMAN_PLAY modul istället för Synth_PLAY och problemet försvinner. Se också aRts-byggarens hjälpfil (tryck på <keycap +>F1</keycap +> i aRts-byggaren). </para> + +<para +>Senare versioner av aRts-byggaren (&kde; 2.1 beta 1 och senare) levereras med ett antal exempel som du kan använda. </para> +</answer> +</qandaentry> + +</qandaset> + +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/future.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/future.docbook new file mode 100644 index 00000000000..0692bc71610 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/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 +>Framtida arbete</title> + +<para +>Det här avsnittet beskriver en del av det pågående arbetet med &arts;. Utvecklingen går snabbt framåt, så den här informationen kan vara föråldrad. Du bör kontrollera listfilen TODO och arkiven för <link linkend="mailing-lists" +>e-postlistorna</link +> för att ta reda på vilka nya funktioner som planeras. Delta gärna i ny konstruktion och implementering. </para> + +<para +>Det här är ett utkast som försöker ge dig en översikt av hur nya teknologier kommer att integreras i &arts;. Det täcker följande: </para> + +<itemizedlist> +<listitem +><para +>Hur gränssnitt fungerar.</para +></listitem> +<listitem +><para +>Avkodare - avkodning av mp3 eller wav-flöden till en form som gör att de kan användas som data.</para +></listitem> +<listitem +><para +>Video.</para +></listitem> +<listitem +><para +>Trådning.</para +></listitem> +<listitem +><para +>Synkronisering.</para +></listitem> +<listitem +><para +>Dynamisk utökning/maskering.</para +></listitem> +<listitem +><para +>Dynamisk sammansättning.</para +></listitem> +<listitem +><para +>&GUI;</para +></listitem> +<listitem +><para +>&MIDI;</para +></listitem> +</itemizedlist> + +<para +>Det här är pågående arbete. Det bör dock kunna ge grunden om du vill titta på ny teknologi i &arts;. Det bör ge dig en allmän idé om hur de här problemen kommer att attackeras. Korrigera gärna allt du ser här. </para> + +<para +>Saker som kommer att använda &arts;-teknologi (så var snäll och koordinera ansträngningarna): </para> + +<itemizedlist> +<listitem> +<para +><application +>K-telefon</application +> (röst via <acronym +>IP</acronym +>) </para> +</listitem> + +<listitem> +<para +>&noatun; (videospelare / ljudspelare) </para> +</listitem> + +<listitem> +<para +>&artscontrol; (styrprogram för ljudservern, och för mätare) </para> +</listitem> + +<listitem> +<para +><application +>Brahms</application +> (musiksequencer) </para> +</listitem> + +<listitem> +<para +><application +>Kaiman</application +> (&kde;2 mediaspelare - kmedia2-anpassad) </para> +</listitem> + +<listitem> +<para +><application +>mpglib</application +>/<application +>kmpg</application +> (<acronym +>mpg</acronym +> ljud- och videouppspelningsteknologi) </para> +</listitem> + +<listitem> +<para +><application +>SDL</application +> (direktmedialager för spel, som ännu inte påbörjats men som kan vara trevligt) </para> +</listitem> + +<listitem> +<para +><application +>Elektriska öron</application +> (upphovsmannen kontaktade mig - status okänd) </para> +</listitem> +</itemizedlist> + +<sect1 id="interfaces-how"> +<title +>Hur gränssnitt fungerar</title> + +<!-- I think this is now obsolete and documented elsewhere ? --> + +<para +>&MCOP;-gränssnitt är grunden för &arts;-konceptet. De är den nätverkstransparenta motsvarigheten till C++ klasser. Så snart det är möjligt bör du rikta in din konstruktion mot gränssnitt. Ett gränssnitt består av fyra delar: </para> + +<itemizedlist> +<listitem +><para +>Synkrona strömmar</para +></listitem> +<listitem +><para +>Asynkrona strömmar</para +></listitem> +<listitem +><para +>Metoder</para +></listitem> +<listitem +><para +>Egenskaper</para +></listitem> +</itemizedlist> + +<para +>De här kan blandas på vilket sätt du vill. Nya teknologier bör definieras med hjälp av gränssnitt. Läs avsnitten om asynkrona strömmar och synkrona strömmar, samt KMedia2-gränssnittet, som är bra exempel på hur sådana saker fungerar. </para> + +<para +>Gränssnitt specificeras i <literal role="extension" +>.idl</literal +>-kod och körs genom <command +>mcopidl</command +>-kompilatorn. Man härleder <classname +><replaceable +>Gränssnittsnamn</replaceable +>_impl</classname +> klassen för att implementera dem, och använder <function +>REGISTER_IMPLEMENTATION (Gränssnittsnamn_impl)</function +> för att infoga en objektimplementering i &MCOP;:s objektsystem. </para> + +</sect1> + +<sect1 id="codecs"> +<title +>Codec, dataavkodning</title> + +<para +>Kmedia2-gränssnittet låter dig bortse från att wav-filer, mp3-filer eller vad som helst består av dataflöden. Istället implementerar du bara metoder för att spela dem. </para> + +<para +>På så sätt kan du skriva en vågformsladdningsrutin på ett sätt så att du kan spela vågformsfiler (som PlayObject), men ingen annan kan använda din kod. </para> + +<para +>Asynkrona strömmar skulle vara alternativet. Man definierar ett gränssnitt som tillåter att datablock skickas in, och hämtas ut. Detta ser ut så här i &MCOP;: </para> + +<programlisting +>interface Codec { + in async byte stream indata; + out async byte stream outdata; +}; +</programlisting> + + +<para +>Avkodare kan förstås också ange egenskaper för att skicka ut ytterligare data, som formatinformation. </para> + +<programlisting +>interface ByteAudioCodec { + in async byte stream indata; + out async byte stream outdata; + readonly attribute samplingRate, bits, channels; +}; +</programlisting> + +<para +>Den här <interfacename +>ByteAudioCodec</interfacename +> kan till exempel anslutas till ett <interfacename +>ByteStreamToAudio</interfacename +>-objekt, för att skapa riktigt flytande ljud. </para> + +<para +>Andra typer av avkodare kan förstås innefatta att direkt skicka ut videodata, som </para> + +<programlisting +>interface VideoCodec { + in async byte stream indata; + out video stream outdata; /* observera: videoströmmar finns inte ännu */ +}; +</programlisting> + +<para +>Troligtvis bör ett avkodningskoncept användas istället för sättet <quote +>du vet hur det spelas upp med det gör inte jag</quote +> som till exempel <interfacename +>WavPlayObject</interfacename +> använder för närvarande. Någon måste dock sätta sig ner och experimentera lite innan ett programmeringsgränssnitt kan definieras. </para> + +</sect1> + +<sect1 id="video"> +<title +>Video</title> + +<para +>Min idé är att tillhandahålla video som asynkrona strömmar för någon inbyggd &MCOP;-datatyp som innehåller bilder. Den här datatypen har inte skapats än. Genom att göra detta, kan insticksprogram som hanterar video kopplas ihop på samma sätt som ljudinsticksprogram. </para> + +<para +>Det finns några saker som är viktiga att inte utelämna: </para> + +<itemizedlist> +<listitem> +<para +>Det finns <acronym +>RGB</acronym +> och <acronym +>YUV</acronym +> färgrymder. </para> +</listitem> +<listitem> +<para +>Formatet bör markeras i strömmen på något sätt. </para> +</listitem> +<listitem> +<para +>Synkronisering är viktig. </para> +</listitem> +</itemizedlist> + +<para +>Min idé är att lämna möjligheten att ändra implementeringen av <classname +>VideoFrame</classname +>-klassen öppen, så att den kan lagra grejor i ett delat minnessegment. Genom att göra detta kan till och med videoströmmar mellan olika processer bli möjligt utan alltför mycket problem. </para> + +<para +>För video är dock den vanliga situationen att alla saker är i samma process, från avkodningen till renderingen. </para> + +<para +>Jag har gjort en prototypimplementering av videoströmmar, som kan laddas ner <ulink url="http://space.twc.de/~stefan/kde/download/video-quickdraw.tar.gz" +>härifrån</ulink +>. Det här behöver integreras med &MCOP; efter några experiment. </para> + +<para +>En rederingskomponent som stöder XMITSHM (med <acronym +>RGB</acronym +> och <acronym +>YUV</acronym +>) bör tillhandahållas. Martin Vogt talade om för mig att han arbetar på en sådan. </para> + +</sect1> + +<sect1 id="threading"> +<title +>Trådning</title> + +<para +>För närvarande är &MCOP; helt och hållet en enda tråd. För video kanske vi inte längre kan komma undan trådar. Ok. Det finns några saker som ska hanteras med försiktighet: </para> + + +<itemizedlist> +<listitem +><para +>SmartWrappers - de är inte trådsäkra på grund av osäker referensräkning och liknande. </para> +</listitem> +<listitem> +<para +>Avsändaren / I/O - inte heller trådsäkra. </para> +</listitem> +</itemizedlist> + +<para +>Vad jag i alla fall kan tänka mig är att göra utvalda moduler trådsäkra, för både synkrona och asynkrona strömmar. På det här sättet kan man schemalägga signalflödet på två eller flera processorer, med ett flödessystem som känner till trådar. Det här borde också hjälpa en hel del med ljud med multiprocessorer. </para> + +<para +>Hur det skulle fungera: </para> + + +<itemizedlist> +<listitem> +<para +>Flödessystemet bestämmer vilka moduler som ska beräkna vad, dvs: </para> + <itemizedlist> + <listitem +><para +>videobilder (med metoden process_indata)</para +></listitem> + <listitem +><para +>synkrona ljudflöden (calculateBlock)</para +></listitem> + <listitem +><para +>andra asynkrona flöden, i huvudsak dataströmmar</para +></listitem> + </itemizedlist> +</listitem> +<listitem> +<para +>Modulerna kan beräkna de här sakerna i egna trådar. För ljud är det vettigt att återanvända trådar (t.ex. hantera det med fyra trådar om det finns fyra processorer, även om 100 moduler kör). För video- och datauppackning, kan det vara bekvämare att ha en blockerande implementering i en egen tråd, som synkroniseras med resten av &MCOP; med flödessystemet. </para> +</listitem> + +<listitem> +<para +>Moduler får inte använda &MCOP;-funktioner (som fjärranrop) medan trådade operationer pågår. </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="synchronization"> +<title +>Synkronisering</title> + +<para +>Video och &MIDI; (och ljud) kan kräva synkronisering. I grund och botten är det här tidsstämplar. Idén jag har är att bifoga tidsstämplar till de asynkrona strömmarna, genom att lägga till en tidsstämpel till varje paket. Om man skickar två videobilder, görs det helt enkelt som två paket (de är stora ändå), så att man kan ha två olika tidsstämplar. </para> + +<para +>Ljud ska ha underförstådda tidsstämplar, eftersom det är synkront. </para> + +</sect1> + +<sect1 id="dynamic-composition"> +<title +>Dynamisk sammansättning</title> + +<para +>Det bör vara möjligt att säga: En effekt FX består av de här enklare modulerna. FX bör se ut som en normal &MCOP;-modul (se maskering), men i själva verket bestå av andra moduler. </para> + +<para +>Det här krävs för aRts-byggaren. </para> + +</sect1> + +<sect1 id="gui"> +<title +>&GUI;</title> + +<para +>Alla komponenter i det grafiska gränssnittet kommer att vara &MCOP;-moduler. De bör ha egenskaper som storlek, etikett, färg, ... En <acronym +>RAD</acronym +>-byggare (aRts-byggaren) bör kunna sätta samman dem visuellt. </para> + +<para +>Det grafiska gränssnittet bör vara möjligt att spara genom att spara egenskaperna. </para> + +</sect1> + +<sect1 id="midi-stuff"> +<title +>&MIDI;</title> + +<para +>&MIDI;-grejorna kommer att implementeras som asynkrona strömmar. Det finns två alternativ, ett är att använda normala &MCOP;-strukturer för att definiera typerna och det andra är att introducera ytterligare egna typer. </para> + +<para +>Jag tror att normala strukturer kan räcka till, dvs något som: </para> + +<programlisting +>struct MidiEvent { + byte b1,b2,b3; + sequence<byte> sysex; +} +</programlisting> + +<para +>Asynkrona strömmar bör stöda egna flödestyper. </para> + +</sect1> + +</chapter> + + diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/glossary.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/glossary.docbook new file mode 100644 index 00000000000..076741e6bee --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/glossary.docbook @@ -0,0 +1,173 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE glossary PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<glossary id="glossary"> + +<glossentry id="gloss-alsa"> +<glossterm +><acronym +>ALSA</acronym +></glossterm> +<glossdef> +<para +>Advanced &Linux; Sound Architecture. En ljudkortsdrivrutin för &Linux; som för närvarande inte ingår i standardkällkoden för kärnan. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-arts"> +<glossterm +>&arts;</glossterm> +<glossdef> +<para +>Analog realtidssynthesizer. Namnet på den multimediaarkitektur/bibliotek/verktygslåda som används av &kde;-projektet (observera den stora bokstaven) </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-bsd"> +<glossterm +><acronym +>BSD</acronym +></glossterm> +<glossdef> +<para +>Berkeley Software Distribution. Anger här ett av flera olika &UNIX;-kompatibla operativsystem som har sitt ursprung 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 för att implementera objektorienterad fjärrkörning. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-cvs"> +<glossterm +><acronym +>CVS</acronym +></glossterm> +<glossdef> +<para +>Concurrent Versions System. Ett konfigurationshanteringssystem för programvara som används av många programvaruprojekt inklusive &kde; och &arts;. </para> +</glossdef> +</glossentry> + +<glossentry id="glos-fft"> +<glossterm +><acronym +>FFT</acronym +></glossterm> +<glossdef> +<para +>Fast Fourier Transform. En algoritm för att konvertera data från tidsdomänen till frekvensdomänen, som ofta används i signalbehandling. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-full-duplex"> +<glossterm +>Full duplex</glossterm> +<glossdef> +<para +>Möjligheten hos ett ljudkort att samtidigt spela in och spela upp ljud. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-gpl"> +<glossterm +><acronym +>GPL</acronym +></glossterm> +<glossdef> +<para +><acronym +>GNU</acronym +> General Public License. En programvarulicens som skapats av Free Software Foundation, som definierar villkoren för att ge ut fri programvara. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-gui"> +<glossterm +>&GUI;</glossterm> +<glossdef> +<para +>Grafiskt användargränssnitt </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-idl"> +<glossterm +><acronym +>IDL</acronym +></glossterm> +<glossdef> +<para +>Interface Definition Language. Ett format oberoende av programmeringsspråk för att definiera gränssnitt (metoder och data). </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-kde"> +<glossterm +>&kde;</glossterm> +<glossdef> +<para +>K skrivbordsmiljö. Ett projekt för att utveckla en fri grafisk skrivbordsmiljö för &UNIX;-kompatibla system. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-lgpl"> +<glossterm +><acronym +>LGPL</acronym +></glossterm> +<glossdef> +<para +><acronym +>GNU</acronym +> Lesser General Public License. En programvarulicens som skapats av Free Software Foundation, som definierar villkoren för att ge ut fri programvara, med mindre begränsningar än <acronym +>GPL</acronym +> som ofta används för programvarubibliotek. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-mcop"> +<glossterm +>&MCOP;</glossterm> +<glossdef> +<para +>Multimedia COmmunication Protocol. Protokollet som används för kommunikation mellan &arts; programmoduler, som har likheter med <acronym +>CORBA</acronym +> men är enklare och optimerat för multimedia. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-midi"> +<glossterm +>&MIDI;</glossterm> +<glossdef> +<para +>Musical Instrument Digital Interface. Ett standardprotokoll för kommunikation mellan elektroniska musikinstrument, anger också ofta filformatet som används för att lagra &MIDI;-kommandon. </para> +</glossdef> +</glossentry> + +<glossentry id="gloss-oss"> +<glossterm +><acronym +>OSS</acronym +></glossterm> +<glossdef> +<para +>Open Sound System. Ljuddrivrutinerna som ingår i &Linux; kärna (ibland benämnda <acronym +>OSS</acronym +>/Free) eller en kommersiell version som säljs av 4Front Technologies. </para> +</glossdef> +</glossentry> + +</glossary> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/gui.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/gui.docbook new file mode 100644 index 00000000000..b769c161b6b --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/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-sv/docs/tdemultimedia/artsbuilder/helping.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/helping.docbook new file mode 100644 index 00000000000..a02e0e26794 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/helping.docbook @@ -0,0 +1,237 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="contributing"> +<title +>Att bidra till &arts;</title> + +<sect1 id="how-to-help"> +<title +>Hur du kan hjälpa till</title> + +<para +>&arts;-projektet behöver hjälp från utvecklare att att lägga till stöd för &arts; i befintliga multimediaprogram, skriva nya multimediaprogram och förbättra &arts; möjligheter. Du behöver dock inte vara en utvecklare för att bidra. Vi behöver också hjälp från testare för att skicka in felrapporter, översättare för att översätta programtexten och dokumentationen till andra språk, grafiker för att skapa ikoner (särskilt för <application +>artsbuilder</application +> moduler), musiker för att skapa &arts;-modulexempel, och författare för att skriva eller granska dokumentation. </para> +</sect1> + +<sect1 id="mailing-lists"> +<title +>E-postlistor</title> + +<para +>De flesta utvecklingsdiskussioner om &arts; äger rum via två e-postlistor. Det här är stället att diskutera nya funktioner och implementeringsidéer och att fråga efter hjälp med problem. </para> + +<para +>&kde;:s multimedia e-postlista är till för generella &kde; multimediafrågor inklusive &arts; samt multimediaprogram som &noatun; och &aktion;. Du kan prenumerera från webbsidan på <ulink url="http://www.kde.org/mailinglists.html" +> http://www.kde.org/mailinglists.html</ulink +> eller skicka e-post med rubriken <userinput +>subscribe <replaceable +>din-e-postadress</replaceable +></userinput +> till <email +>kde-multimedia-request@kde.org</email +>. Listan finns också arkiverad på <ulink url="http://lists.kde.org" +> http://lists.kde.org</ulink +>. </para> + +<para +>E-postlistan för &arts; är till för frågor som enbart rör &arts;, inklusive användning av &arts; utanför &kde;. För att prenumerera, skicka e-post till <email +>arts-request@space.twc.de</email +> med meddelandetexten <userinput +>subscribe <replaceable +>din-epostadress</replaceable +></userinput +>. Listan arkiveras 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 +>För att åstadkomma en konsekvent läsning av all källkod, är det viktigt att hålla kodningsstilen likadan i hela &arts; källkod. Var snäll och försök skriva/formattera din källkod i enlighet med detta, även om du bara skriver en modul, eftersom det gör det enklare för olika personer att underhålla källkodsträdet, och lättare att kopiera delar av källkoden från en fil till en annan. </para> + +<variablelist> +<varlistentry> +<term +>Namngivning av medlemsfunktioner</term> +<listitem> +<para +>&Qt;/&Java;-stil. Det här betyder att stora bokstäver används för att markera nya ord, och att första bokstaven alltid är liten. Inga understreck. </para> +<para +>Det här betyder till exempel:</para> + +<programlisting +>createStructureDesc() + updateWidget(); + start(); </programlisting> + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Klassmedlemmar</term> +<listitem> +<para +>Klassmedlemmar har inte stora bokstäver, som till exempel menubar eller button. </para> + +<para +>När det finns funktioner som används för åtkomst, ska standarden som används vara enligt &MCOP;-sättet, dvs. om det finns en "long" medlem <function +>foo</function +>, som inte ska vara synlig, så skapas: </para> + +<programlisting +>foo(long new_value); + long foo(); </programlisting> + +<para +>funktioner för att hämta eller sätta ett värde. I detta fall, ska det riktiga värdet för <function +>foo</function +> lagras i <returnvalue +>_foo</returnvalue +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Klassnamn</term> +<listitem> +<para +>Alla klasser ska ha stora bokstäver för varje ord, vilket betyder <classname +>ModuleView</classname +>, <classname +>SynthModule</classname +>. Alla klasser som hör till biblioteken ska använda &arts;-namnrymden, som <classname +>Arts::Soundserver</classname +>. </para> +<para +>Implementeringar av &MCOP;-klasser ska döpas <classname +>Class_impl</classname +>, som till exempel <classname +>SoundServer_impl</classname +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Parametrar</term> +<listitem> +<para +>Parametrar har alltid små bokstäver. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Lokala variabler</term> +<listitem> +<para +>Lokala variabler har alltid små bokstäver, och kan ha namn som <varname +>i</varname +>, <varname +>p</varname +>, <varname +>x</varname +> etc. om det passar. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Tabulatorbredd (skiftbredd)</term> +<listitem> +<para +>Ett tabulatortecken är lika mycket som fyra blanktecken. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Mellanslag i uttryck</term> +<listitem> +<para +>Normalt behöver du inte använda mellanslag i uttryck. Du kan i alla fall använda dem mellan operatorer och deras operander. Om du skriver ett mellanslag före en operator (t.ex. +), måste du också skriva ett mellanslag efter operatorn. Det enda undantaget från detta är uttryck som liknar listor (med ,), där du bara ska använda ett mellanslag efter ",", men inte före. Det är också ok att utelämna mellanslag här. </para> +<para +>Följande exempel demonstrerar bra användning av mellanslag: </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öljande exempel demonstrerar hur man <emphasis +>inte</emphasis +> ska använda mellanslag. För funktionsanrop, efter if, while, for, switch och så vidare, skrivs inget mellanslag. </para> +<programlisting +>{ + // DÅLIGT: Om du skriver en lista, skriv bara mellanslag efter "," + int a , b , c , d , e , f; + + // DÅLIGT: inte symmetrisk användning av mellanslag för = operatorn + a= 5; + + // DÅLIGT: Om det anses vara en funktion, och inte följs av ett mellanslag + if (a == 5) { + } + + // DÅLIGT: skriv inte ett mellanslag efter while + while (a--) + b++; + + // DÅLIGT: Funktionsnamn följs inte av ett mellanslag + arts_debug ("%d\n", c); + + // DÅLIGT: inte heller medlemsnamn + Arts::Object o = Arts::Object::null (); +} +</programlisting> +</listitem> +</varlistentry> + + +<varlistentry> +<term +>Namngivning av källkodsfiler</term> +<listitem> +<para +>Källkodsfiler ska inte ha några stora bokstäver i namnet. De ska ha samma namn som klassen om de implementerar en enda klass. Deras filändelse ska vara <literal role="extension" +>.cc</literal +> om de innehåller &Qt;- och grafikoberoende kod, och <literal role="extension" +>.cpp</literal +> om de innehåller &Qt;- och grafikberoende kod. Implementeringsfiler för gränssnitt ska benämnas <filename +><replaceable +>foo</replaceable +>_impl</filename +>, om Foo är gränssnittets namn. </para> + +<para +>&IDL;-filer ska benämnas på ett beskrivande sätt med tanke på den samling gränssnitt de innehåller, också helt med små bokstäver. I synnerhet är det inte bra att benämna en &IDL;-fil som klassen själv, eftersom .mcopclass-handlaren och typinfoposterna då kommer att kollidera. </para> +</listitem> +</varlistentry> +</variablelist> +</sect1> + +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Makefile.am new file mode 100644 index 00000000000..05163865c86 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = artsbuilder/images +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Makefile.in new file mode 100644 index 00000000000..23a565ecf40 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Makefile.in @@ -0,0 +1,613 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/artsbuilder/images +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = artsbuilder/images +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/images/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/images/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/images/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/images/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/artsbuilder/images/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=Synth_AMAN_PLAY.png Synth_CAPTURE.png Synth_NOISE.png Synth_MOOG_VCF.png Synth_MULTI_ADD.png Synth_PITCH_SHIFT.png Synth_FX_CFLANGER.png Synth_DATA.png Synth_MIDI_TEST.png Synth_RECORD.png Synth_AMAN_RECORD.png Synth_BRICKWALL_LIMITER.png Synth_WAVE_PULSE.png Makefile.in Synth_FREEVERB.png Synth_TREMOLO.png Makefile.am Synth_WAVE_SOFTSAW.png + +#>+ 2 +docs-am: Synth_FX_CFLANGER.png Synth_BRICKWALL_LIMITER.png Synth_DATA.png Synth_TREMOLO.png Synth_WAVE_PULSE.png Synth_MIDI_TEST.png Synth_AMAN_RECORD.png Synth_MULTI_ADD.png Synth_FREEVERB.png Synth_AMAN_PLAY.png Synth_PITCH_SHIFT.png Synth_WAVE_SOFTSAW.png Synth_RECORD.png Synth_CAPTURE.png Synth_MOOG_VCF.png Synth_NOISE.png + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/images + @for base in Synth_FX_CFLANGER.png Synth_BRICKWALL_LIMITER.png Synth_DATA.png Synth_TREMOLO.png Synth_WAVE_PULSE.png Synth_MIDI_TEST.png Synth_AMAN_RECORD.png Synth_MULTI_ADD.png Synth_FREEVERB.png Synth_AMAN_PLAY.png Synth_PITCH_SHIFT.png Synth_WAVE_SOFTSAW.png Synth_RECORD.png Synth_CAPTURE.png Synth_MOOG_VCF.png Synth_NOISE.png ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/images/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/images/$$base ;\ + done + +uninstall-nls: + for base in Synth_FX_CFLANGER.png Synth_BRICKWALL_LIMITER.png Synth_DATA.png Synth_TREMOLO.png Synth_WAVE_PULSE.png Synth_MIDI_TEST.png Synth_AMAN_RECORD.png Synth_MULTI_ADD.png Synth_FREEVERB.png Synth_AMAN_PLAY.png Synth_PITCH_SHIFT.png Synth_WAVE_SOFTSAW.png Synth_RECORD.png Synth_CAPTURE.png Synth_MOOG_VCF.png Synth_NOISE.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/artsbuilder/images/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in Synth_FX_CFLANGER.png Synth_BRICKWALL_LIMITER.png Synth_DATA.png Synth_TREMOLO.png Synth_WAVE_PULSE.png Synth_MIDI_TEST.png Synth_AMAN_RECORD.png Synth_MULTI_ADD.png Synth_FREEVERB.png Synth_AMAN_PLAY.png Synth_PITCH_SHIFT.png Synth_WAVE_SOFTSAW.png Synth_RECORD.png Synth_CAPTURE.png Synth_MOOG_VCF.png Synth_NOISE.png ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/images/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/artsbuilder/images/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/artsbuilder/images/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-sv/docs/tdemultimedia/artsbuilder/images/Synth_AMAN_PLAY.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_AMAN_PLAY.png Binary files differnew file mode 100644 index 00000000000..19716d76094 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_AMAN_PLAY.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_AMAN_RECORD.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_AMAN_RECORD.png Binary files differnew file mode 100644 index 00000000000..367f1b09d34 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_AMAN_RECORD.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_BRICKWALL_LIMITER.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_BRICKWALL_LIMITER.png Binary files differnew file mode 100644 index 00000000000..2b5d6839989 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_BRICKWALL_LIMITER.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_CAPTURE.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_CAPTURE.png Binary files differnew file mode 100644 index 00000000000..2360a709061 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_CAPTURE.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_DATA.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_DATA.png Binary files differnew file mode 100644 index 00000000000..749d751d434 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_DATA.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_FREEVERB.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_FREEVERB.png Binary files differnew file mode 100644 index 00000000000..a0737838ac9 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_FREEVERB.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_FX_CFLANGER.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_FX_CFLANGER.png Binary files differnew file mode 100644 index 00000000000..edac1e438f1 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_FX_CFLANGER.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MIDI_TEST.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MIDI_TEST.png Binary files differnew file mode 100644 index 00000000000..03ea8fdf98a --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MIDI_TEST.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MOOG_VCF.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MOOG_VCF.png Binary files differnew file mode 100644 index 00000000000..7e5da9a6e58 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MOOG_VCF.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MULTI_ADD.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MULTI_ADD.png Binary files differnew file mode 100644 index 00000000000..f20e7f35fcd --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_MULTI_ADD.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_NOISE.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_NOISE.png Binary files differnew file mode 100644 index 00000000000..bf20ef5bd80 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_NOISE.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_PITCH_SHIFT.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_PITCH_SHIFT.png Binary files differnew file mode 100644 index 00000000000..1249ac4cd95 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_PITCH_SHIFT.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_RECORD.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_RECORD.png Binary files differnew file mode 100644 index 00000000000..eee096d53c4 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_RECORD.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_TREMOLO.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_TREMOLO.png Binary files differnew file mode 100644 index 00000000000..f98830e75e1 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_TREMOLO.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_WAVE_PULSE.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_WAVE_PULSE.png Binary files differnew file mode 100644 index 00000000000..e2a714bac11 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_WAVE_PULSE.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_WAVE_SOFTSAW.png b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_WAVE_SOFTSAW.png Binary files differnew file mode 100644 index 00000000000..f3e920d3b89 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/images/Synth_WAVE_SOFTSAW.png diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..9034ac71104 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/index.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/index.docbook new file mode 100644 index 00000000000..0626201cd63 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/index.docbook @@ -0,0 +1,415 @@ +<?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 % Swedish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>Handbok &arts;</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> + +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit +> +</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 +>Den här handboken beskriver &arts;, den analoga realtidssynthesizern.</para> + +</abstract> + +<keywordset> +<keyword +>aRts</keyword> +<keyword +>artsbuilder</keyword> +<keyword +>synthesizer</keyword> +<keyword +>multimedia</keyword> +<keyword +>struktur</keyword> +<keyword +>musik</keyword> +<keyword +>ljud</keyword> +<keyword +>KDE</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Inledning</title> + +<sect1 id="what-is-arts"> +<title +>Vad är &arts;?</title> + +<para +>Den analoga realtidssynthesizern, eller &arts;, är ett modulärt system för att syntetisera ljud och musik på en digital dator. Med små byggblock, som kallas moduler, kan användaren lätt bygga komplexa verktyg för att behandla ljud. Moduler tillhandahåller typiskt funktioner som vågformsgeneratorer, filter, ljudeffekter, samt mixning och uppspelning av digitalt ljud med olika filformat.</para> + +<para +>Ljudservern &artsd; blandar ljud från olika källor i realtid, vilket låter flera ljudprogram transparent få delad tillgång till ljudhårdvaran.</para> + +<para +>Genom att använda &MCOP;, multimediakommunikationsprotokollet, kan multimediaprogram bli nätverkstransparenta, säkerhetsidentifierade, och fungera på flera plattformar med gränssnitt som definieras på ett språkoberoende sätt med &IDL;. Äldre program som inte stöder &arts; hanteras också. Som en central komponent i skrivbordsmiljön &kde; 2, tillhandahåller &arts; grunden för &kde;:s arkitektur för multimedia, och kommer att stöda fler mediatyper inklusive video i framtiden. Som &kde;, så kör &arts; på flera operativsystem, inklusive &Linux; och BSD-varianter. Det kan också användas oberoende av &kde;.</para> + +</sect1> + +<sect1 id="using-this-manual"> +<title +>Att använda den här handboken</title> + +<para +>Den här handboken är tänkt att ge fullständig dokumentation om &arts; för användare med olika kunskapsnivåer. Beroende på om du är en vardagsanvändare av multimediaprogram som kör med hjälp av &arts; eller en utvecklare av multimediaprogram, kan du välja att läsa handbokens avsnitt i olika ordning.</para> + +<para +>Vi föreslår att du först läser kapitlet <link linkend="installation" +>Ladda ner och bygga &arts;</link +> om du måste få &arts; installerad och körbar från början. Om du redan har ett fungerande system, troligen installerade tillsammans med din operativsystemdistribution, kan du välja att hoppa över det här avsnittet.</para> + +<para +>Därefter bör du läsa avsnitten i kapitlet <link linkend="arts-tools" +>&arts; verktyg</link +>, särskilt &artsd;, artscontrol;, &artsshell;, och &artsdsp;. Det här hjälper dig använda &arts; på det effektivaste sättet.</para> + +<para +>Om du är intresserad av att tränga in ytterligare i &arts; funktion, läs kapitlet om <link linkend="artsbuilder" +>aRts-byggaren</link +> och gå igenom handledningen. Det här bör ge dig en förståelse för &arts; kraftfulla möjligheter och de moduler som är tillgängliga att använda utan att behöva kunna programmera.</para> + +<para +>Om du vill lära dig mer om hur &arts; fungerar internt, antingen för att utveckla multimediaprogram eller för att utöka &arts; själv, läs några eller alla kapitlen om <link linkend="arts-in-detail" +>&arts; i detalj</link +>. Det här bör ge dig en förståelse för alla koncept som krävs för &arts;-programvaruutveckling.</para> + +<para +>Om du är särskilt intresserad av <acronym +>MIDI</acronym +>-funktionerna i &arts;, bör du läsa 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 +>Om du vill utveckla multimediaprogram som använder &arts;, beskrivs de olika programvarugränssnitten (<acronym +>API</acronym +>) detaljerat i kapitlet <link linkend="arts-apis" +>&arts; programvarugränssnitt</link +>.</para> + +<para +>Om du vill utöka &arts; genom att skapa nya moduler, läs kapitlet <link linkend="arts-modules" +>&arts;-moduler</link +>.</para> + +<para +>Om du ändrar ett befintligt program för att köra ihop med &arts;, läs kapitlet <link linkend="porting" +>Ändra program för att passa &arts;</link +>.</para> + +<para +>Du kan också ta reda på hur du kan hjälpa till och bidra till &arts;-projektet i kapitlet <link linkend="contributing" +>Bidra till &arts;</link +>, läsa om kommande utveckling av &arts; i kapitlet <link linkend="future-work" +>Framtida arbete</link +>, och hitta länkar till mer information i avsnittet <link linkend="references" +>Referenser</link +>.</para> + +<para +>Vi har också avrundat handboken med en del ytterligare material, inklusive <link linkend="faq" +>svar på vanliga frågor</link +>, en <link linkend="contributors" +>lista på bidragsgivare</link +>, detaljer om &arts; <link linkend="copyright-and-licenses" +>copyright och licenser</link +>, och en del bakgrundsmaterial om <link linkend="intro-digital-audio" +>digitalljud</link +> och <link linkend="midi-introduction" +>&MIDI;</link +>. En <link linkend="glossary" +>gloslista</link +> ingår också.</para> + +<note> +<para +>Den här handboken är fortfarande i stor utsträckning pågående arbete. Du får gärna bidra genom att skriva delar av den, men om du vill göra det, kontakta först Jeff Tranter <email +>tranter@kde.org</email +> eller Stefan Westerfeld <email +>stefan@space.twc.de</email +> för att undvika dubbelarbete. </para> +</note> + +</sect1> + +<sect1 id="history"> +<title +>Historik</title> + +<para +>Mot slutet av 1997 började Stefan Westerfeld arbeta med ett modulärt realtidssystem för ljudsyntes. Koden kördes ursprungligen på ett PowerPC-system med &AIX;. Den första implementeringen var mycket enkel, men stödde ett flödessystem med fullständig funktion som kunde göra sådana saker som spela MP3-filer och skicka data genom ljudeffektmoduler. </para> + + +<para +>Nästa steg var att implementera ett grafiskt gränssnitt, så att moduler kunde manipuleras grafiskt. Stefan hade en del god erfarenhet av att använda &kde;, så därför valdes &kde; som den grafiska verktygslådan, (med vetskap om att det kunde bli nödvändigt att göra en version med GNOME/Gtk+ också) och det här gjorde att &Linux; senare valdes som den huvudsakliga utvecklingsplattformen. Projektet, som ursprungligen hette <application +>ksynth</application +>, döptes om till &arts; och utvecklingstakten ökade. Vid det här laget var projektet nästan komplett, med ett <acronym +>CORBA</acronym +>-baserat protokoll, dussintals moduler, ett grafiskt modulredigeringsverktyg, C och C++ gränssnitt, dokumentation, verktyg och en e-postlista och webbsida med en liten grupp utvecklare. Projektet hade kommit en bra bit på vägen efter bara något mer än ett års utveckling.</para> + +<para +>När &kde;-gruppen började planera för &kde; 2.0, blev det klart att &kde; behövde en kraftfullare infrastruktur för ljud och andra mediatyper. Beslutet togs att anpassa &arts;, eftersom det var ett steg i rätt riktning med en beprövad arkitektur. En ny stor utvecklingsansträngning gjordes för den här nya versionen av &arts;, framförallt utbytet av <acronym +>CORBA</acronym +>-koden mot ett helt nytt subsystem, &MCOP;, optimerat för multimedia. Version 0.4 av &arts; ingick i utgåva 2.0 av &kde;.</para> + +<para +>Arbetet med &arts; forsätter, för att förbättra prestanda och lägga till nya funktioner. Observera att även om &arts; nu är en central komponent i &kde;, kan den användas utan &kde;, och används också av program som går utanför traditionell multimedia. Projektet har skapat visst intresse från GNOME-gruppen, som öppnar en möjlighet att det i framtiden kan bli standardarkitekturen för multimedia på &UNIX; skrivbordssystem.</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; Copyright och licens</title> + +<para +>&arts; programvara copyright 1998-2001 Stefan Westerfeld <email +>stefan@space.twc.de</email +></para> + +<para +><anchor id="contributors"/> Dokumentation copyright 1999-2001 Stefan Westerfeld <email +>stefan@space.twc.de</email +> och Jeff Tranter <email +>tranter@kde.org</email +>. </para> +<para +>Översättning Stefan Asserhäll <email +>stefan.asserhall@comhem.se</email +></para +> +&underFDL; <para +>Alla bibliotek som ingår i &arts; licensieras under villkoren i <acronym +>GNU</acronym +> Lesser General Public license. En överväldigande majoritet av koden i &arts; finns i biblioteken, inklusive hela <acronym +>MCOP</acronym +> och ArtsFlow. Det här tillåter att biblioteken används för program som inte är fri eller öppen programvara om så önskas. </para> + +<para +>Det finns ett fåtal program (som <application +>artsd</application +>), som ges ut under villkoren i <acronym +>GNU</acronym +> General Public License. Eftersom det har funnits olika åsikter om det är tillåtet eller inte att länka <acronym +>GPL</acronym +>-program med &Qt;, har jag också lagt till en uttrycklig anmärkning som tillåter det, som ett tillägg till <acronym +>GPL</acronym +>: tillåtelse ges också att länka det här programmet med &Qt;-biblioteket, där &Qt; behandlas som ett bibliotek som normalt följer med operativsystemets kärna, vare sig detta är fallet eller inte.</para> + +</chapter> + +<appendix id="installation"> +<title +>Installera &arts;</title> + +<para +>För att kunna använda &arts; måste du naturligtvis ha det installerat och köra det på systemet. Det finns två metoder att åstadkomma detta, som beskrivs i de följande avsnitten. </para> + +<sect1 id="binary-install"> +<title +>Installera en färdigkompilerad binärutgåva</title> + +<para +>Det snabbaste och enklaste sättet att få &arts; körklart är att installera färdigkompilerade binärpaket för systemet. De flesta nyare &Linux;-distributioner innehåller &kde;, och om det är &kde; 2.0 eller senare finns &arts; med. Om &kde; inte följer med installationen, kan det finnas tillgängligt för nerladdning från din operativsystemleverantör. Som ett alternativ kan det finnas tillgängligt från tredje part. Försäkra dig om att du använder paket som passar ihop med ditt operativsystem. </para> + +<para +>En grundläggande installation av &kde; innehåller ljudservern, som låter de flesta program spela upp ljud. Om du vill ha hela uppsättningen med multimediaverktyg och program behöver du troligen installera ytterligare valfria paket. </para> + +<para +>Nackdelen med att använda färdigkompilerade binärfiler är att de kanske inte innehåller den senaste versionen av &arts;. Det här är särskilt troligt om de tillhandahålls på CD-ROM, eftersom utvecklingstakten för &arts; och &kde; är sådan att CD-ROM utgåvor oftast inte kan hålla samma takt. Du kan också råka ut för att färdigkompilerade binärpaket inte är tillgängliga, om du har en mindre vanlig arkitektur eller operativsystemdistribution, och du måste därför använda den andra metoden. </para> + +</sect1> + +<sect1 id="source-install"> +<title +>Bygga från källkod</title> + +<para +>Även om det tar tid, är det mest flexibla sättet att bygga &arts; att själv kompilera det från källkod. Det här försäkrar dig om att du har en version som är optimalt kompilerad för din systemuppsättning och låter dig bygga den senaste versionen. </para> + +<para +>Här har du två alternativ, du kan antingen installera den senaste stabila versionen som ingår i &kde; eller du kan skaffa den senaste (men kanske instabila) versionen direkt från &kde;-projektets <acronym +>CVS</acronym +>-arkiv. De flesta användare som inte utvecklar med &arts; bör använda den stabila versionen. Du kan ladda ner den från <ulink url="ftp://ftp.kde.org" +>ftp://ftp.kde.org</ulink +> eller en av de många spegelplatserna. Om du redan utvecklar aktivt med &arts; vill du troligen använda <acronym +>CVS</acronym +>-versionen. Om du vill använda aRts utan KDE, kan du ladda ner en självständig utvecklingsversion från <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 +>Om du bygger från <acronym +>CVS</acronym +>, observera att vissa komponenter i &arts; (dvs. de grundläggande centrala komponenterna inklusive ljudservern) finns i <acronym +>CVS</acronym +>-modulen tdelibs, medan ytterligare komponenter (t.ex. <application +>artsbuilder</application +>) ingår i tdemultimedia. Det här kan ändras i framtiden. Du kan också hitta en version i modulen kmusic, det är den gamla versionen (före &kde; 2.0) som nu är föråldrad. </para> + +<para +>Kraven för att bygga &arts; är i huvudsak likadana som för &kde;. Konfigurationsskripten bör upptäcka systeminställningarna och ange om några nödvändiga komponenter saknas. Försäkra dig om att du har en fungerande ljuddrivrutin på systemet (antingen <acronym +>OSS</acronym +>/Free drivrutinen i kärnan, <acronym +>OSS</acronym +>-drivrutinen från 4Front Technologies, eller en <acronym +>ALSA</acronym +>-drivrutin med <acronym +>OSS</acronym +>-stöd). </para> + +<para +>Mer information om att ladda ner och installera &kde; (inklusive &arts;) finns i <ulink url="http://www.kde.org/documentation/faq/index.html" +>&kde;:s vanliga frågor</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-sv/docs/tdemultimedia/artsbuilder/mcop.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/mcop.docbook new file mode 100644 index 00000000000..3b25f15b017 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/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;: objektmodell och strömmar</title> + +<sect1 id="mcop-overview"> + +<title +>Översikt</title> + +<para +>&MCOP; är standarden som &arts; använder för: </para> + +<itemizedlist> +<listitem> +<para +>Kommunikation mellan objekt. </para> +</listitem> + +<listitem> +<para +>Nätverkstransparens. </para> +</listitem> + +<listitem> +<para +>Beskriva objektgränssnitt. </para> +</listitem> + +<listitem> +<para +>Språkoberoende. </para> +</listitem> +</itemizedlist> + +<para +>En viktig del av &MCOP; är <emphasis +>gränssnittsbeskrivningsspråket</emphasis +>, &IDL;, som används för att definiera många av &arts; programmeringsgränssnitt och andra gränssnitt på ett språkoberoende sätt. </para> + +<para +>För att använda ett &IDL;-gränssnitt från C++, kompileras det med &IDL; kompilatorn till C++ kod. När du implementerar ett gränssnitt, härleder du från stomklassen som &IDL; kompilatorn har skapat. När man använder ett gränssnitt gör man det med ett omgärdande skal. På det här sättet kan &MCOP; använda ett protokoll om objektet du pratar med inte är lokalt - man får nätverkstransparens. </para> + +<para +>Det här kapitlet är ämnat att beskriva de grundläggande funktionerna i objektmodellen som är resultatet av att använda &MCOP;, protokollet, hur &MCOP; används med C++ (språkbindning), och så vidare. </para> + +</sect1> + +<sect1 id="interfaces"> + +<title +>Gränssnitt och &IDL;</title> + +<para +>Mycket av den service som tillhandahålls av &arts;, som modulerna och ljudservern definieras i form av <acronym +>gränssnitt</acronym +>. Gränssnitt specificeras i ett programspråksoberoende format: &IDL;. </para> + +<para +>Det här tillåter att många av implementeringsdetaljerna som formatet på multimediadataflöden, nätverkstransparens och programspråksoberoende döljs för specifikationen av gränssnittet. Ett verktyg, &mcopidl;, översätter gränssnittsdefinitionen till ett specifikt programspråk (för närvarande stöds enbart C++). </para> + +<para +>Verktyget skapar en stomklass med all standardkod och grundläggande funktionalitet. Man härleder från den här klassen för att implementera de funktioner man vill ha. </para> + +<para +>Det &IDL; som används av &arts; liknar det som används av <acronym +>CORBA</acronym +> och <acronym +>DCOM</acronym +>. </para> + +<para +>&IDL;-filer kan innehålla: </para> + +<itemizedlist> +<listitem> +<para +>C-stil #include-direktiv för andra &IDL;-filer. </para> +</listitem> + +<listitem> +<para +>Definitioner av uppräkningstyper och struct-typer, som i C/C++. </para> +</listitem> + +<listitem> +<para +>Definitioner av gränssnitt. </para> +</listitem> +</itemizedlist> + +<para +>I &IDL; definieras gränssnitt på ett sätt som påminner mycket om en C++ klass eller C-struct, dock med vissa begränsningar. Som i C++, så kan gränssnitt vara underklasser till andra gränssnitt med arv. Gränssnittsdefinitioner kan innehålla tre saker: Strömmar, egenskaper och metoder. </para> + +<sect2 id="streams"> + +<title +>Strömmar</title> + +<para +>Strömmar definierar multimediadata, en av de viktigaste komponenterna i en modul. Strömmar definieras med följande format: </para> + +<para +>[ async ] in|out [ multi ] <replaceable +>typ</replaceable +> stream <replaceable +>namn</replaceable +> [ , <replaceable +>namn</replaceable +> ] ; </para> + +<para +>Strömmar har en definierad riktning i förhållande till modulen, som anges av de nödvändiga bestämningarna in eller out. Typargumentet definierar datatypen, som kan vara vilken som helst av typerna för egenskaper som beskrivs senare (alla stöds inte än). Många moduler använder strömtypen audio, som är ett alias för float eftersom det är det interna dataformatet för ljudströmmar. Flera strömmar av samma typ kan ingå i samma definition med namn separerade med kommatecken. </para> + +<para +>Strömmar är normalt synkrona, vilket betyder att de är kontinuerliga dataflöden med en konstant hastighet, som <acronym +>PCM</acronym +>-ljud. Bestämningen async anger en asynkron ström, som används för icke-kontinuerliga dataflöden. Det vanligaste exemplet på en asynkron ström är &MIDI;-meddelanden. </para> + +<para +>Nyckelordet multi, som bara är giltigt för indataströmmar, anger att gränssnittet stöder ett variabelt antal ingångar. Det här är användbart för att implementera enheter som en mixer som kan ta emot vilket antal indataströmmar som helst. </para> + +</sect2> +<sect2 id="attributes"> + +<title +>Egenskaper</title> + +<para +>Egenskaper är data som hör ihop med en instans av ett gränssnitt. De deklareras som medlemsvariabler i C++, och kan använda vilken som helst av de primitiva typerna boolean, byte, long, string, eller float. Du kan också använda egendefinierade struct- eller uppräkningstyper samt sekvenser av variabel storlek med syntaxen sekvens<typ>. Egenskaper kan valfritt markeras som skrivskyddade. </para> + +</sect2> +<sect2 id="methods"> + +<title +>Metoder</title> + +<para +>Som i C++, kan metoder definieras i gränssnitt. Metodparametrarna är begränsade till samma typer som egenskaperna. Nyckelordet oneway anger en metod som returnerar omedelbart och körs asynkront. </para> + +</sect2> + +<sect2 id="standardinterfaces"> + +<title +>Standardgränssnitt</title> + +<para +>Flera gränssnitt för standardmoduler är redan definierade åt dig i &arts;, som <interfacename +>StereoEffect</interfacename +>, och <interfacename +>SimpleSoundServer</interfacename +>. </para> + +</sect2> + +<sect2 id="example"> +<title +>Exempel</title> + +<para +>Ett enkelt exempel på en modul taget från &arts; är modulen med konstant fördröjning, som finns i filen <filename +>tdemultimedia/arts/modules/artsmodules.idl</filename +>. Gränssnittsdefinitionen anges nedan: </para> + +<programlisting +>interface Synth_CDELAY : SynthModule { + attribute float time; + in audio stream invalue; + out audio stream outvalue; +}; +</programlisting> + +<para +>Modulen ärver <interfacename +>SynthModule</interfacename +>. Det gränssnittet, som finns i <filename +>artsflow.idl</filename +>, definierar alla standardmetoder som implementeras i alla syntesmoduler. </para> + +<para +>CDELAY-effekten fördröjer ett stereoljudflöde med tidsvärdet som anges som en flyttalsparameter. Gränssnittsdefinitionen har ett attribut av typen float för att lagra fördröjningsvärdet. Det definierar två indata- och två utdataströmmar (typiskt för stereoeffekter). Inga metoder krävs förutom de ärvda. </para> + +</sect2> + +</sect1> + +<sect1 id="more-about-streams"> +<title +>Mer om strömmar</title> + +<para +>Det här avsnittet täcker en del ytterligare ämnesområden som hör ihop med strömmar. </para> + +<sect2 id="stream-types"> +<title +>Strömtyper</title> + +<para +>Det finns olika krav för hur en modul kan hantera flöden. För att illustrera detta, betrakta följande exempel: </para> + +<itemizedlist> +<listitem> +<para +>Skala en signal med en faktor två. </para> +</listitem> + +<listitem> +<para +>Utför frekvenskonvertering av samplingar. </para> +</listitem> + +<listitem> +<para +>Packa upp en runlength-kodad signal. </para> +</listitem> + +<listitem> +<para +>Läs &MIDI;-händelser från <filename class="devicefile" +>/dev/midi00</filename +> och infoga dem i en ström. </para> +</listitem +> +</itemizedlist> + +<para +>Det första fallet är det enklaste: när modulen tar emot 200 indatasamplingar producerar den 200 utdatasamplingar. Den producerar bara utdata när den får indata. </para> + +<para +>Det andra fallet producerar olika antal utdatasamplingar när den får 200 indatasamplingar. Det beror på vilken konvertering som utförs, men antalet är känt i förväg. </para> + +<para +>Det tredje fallet är ännu värre. Från utdata kan man inte ens gissa hur mycket data som skapas av 200 indatabyte (förmodligen mycket mer än 200 byte, men...). </para> + +<para +>Det sista fallet är en modul som aktiveras av sig själv, och ibland skapar data. </para> + +<para +>I &arts;s-0.3.4, hanterades bara strömmar av den första typen, och de flesta saker fungerade bra. Det här är troligen vad du behöver mest när du skriver moduler som behandlar ljud. Problemen med de andra, mer komplexa sorternas flöden, är att de är svåra att programmera, och att man inte behöver funktionerna för det mesta. Det här är orsaken vi gör detta med två olika sorters strömtyper: synkrona och asynkrona. </para> + +<para +>Synkrona strömmar har följande egenskaper: </para> + +<itemizedlist> +<listitem> +<para +>Moduler måste kunna beräkna data av vilken längd som helst, med tillräckligt mycket indata. </para> +</listitem> + +<listitem> +<para +>Alla strömmar har samma samplingsfrekvens. </para> +</listitem> + +<listitem> +<para +>Funktionen <function +>calculateBlock()</function +> anropas när tillräckligt med data är tillgängligt, och modulen kan lita på att pekarna anger data. </para> +</listitem +> + +<listitem> +<para +>Det finns ingen allokering eller avallokering att göra. </para> +</listitem> +</itemizedlist> + +<para +>Asynkrona strömmar, å andra sidan, beter sig så här: </para> + +<itemizedlist> +<listitem> +<para +>Moduler kan producera data ibland, eller med olika samplingsfrekvens, eller bara om de får indata från någon fil. De måste inte följa regeln <quote +>måste kunna hantera begäran av vilken storlek som helst</quote +>. </para> +</listitem> + +<listitem> +<para +>Asynkrona strömmar för en modul kan ha helt skilda samplingsfrekvenser. </para> +</listitem> + +<listitem> +<para +>Utgående strömmar: det finns särskilda funktioner för att allokera paket, att skicka paket och en valfri mekanism för att fråga efter data som talar om när mer data ska skapas. </para> +</listitem> + +<listitem> +<para +>Inkommande strömmar: ett anrop skickas när ett nytt paket tas emot. Man måste tala om när man är färdig med att behandla all data i det paketet, och detta får inte ske omedelbart (man kan tala om det när som helst senare, och om alla har behandlat ett paket, kommer det att frigöras/återanvändas). </para> +</listitem> +</itemizedlist> + +<para +>När strömmar deklareras, används nyckelordet <quote +>async</quote +> för att ange att strömmen ska vara asynkron. Så anta till exempel att du vill konvertera en asynkron ström av byte till en synkron ström av samplingar. Gränssnittet skulle då kunna se ut så här: </para> + +<programlisting +>interface ByteStreamToAudio : SynthModule { + async in byte stream indata; // den asynkrona indatasamplingen + + out audio stream left,right; // de synkrona utdatasamplingarna +}; +</programlisting> + +</sect2> + +<sect2 id="async-streams"> +<title +>Att använda asynkrona strömmar</title> + +<para +>Antag att du har bestämt dig för att skriva en modul som skapar asynkront ljud. Dess gränssnitt kan se ut så här: </para> + +<programlisting +>interface SomeModule : SynthModule +{ + async out byte stream outdata; +}; +</programlisting> + +<para +>Hur skickar man data? Den första metoden kallas <quote +>tryckleverans</quote +>. Med asynkrona strömmar skickar man data som paket. Det betyder att individuella paket skickas som i exemplet ovan. Den verkliga processen är: allokera ett paket, fyll det, skicka det. </para> + +<para +>Här följer det i form av kod. Först allokerar vi ett paket: </para> + +<programlisting +>DataPacket<mcopbyte> *packet = outdata.allocPacket(100); +</programlisting> + +<para +>Vi fyller det: </para> + +<programlisting +>// typkonvertera så att fgets får en (char *) pekare +char *data = (char *)packet->contents; + +// som du ser, kan du krympa paketstorleken efter allokeringen +// om du vill +if(fgets(data,100,stdin)) + packet->size = strlen(data); +else + packet->size = 0; +</programlisting> + +<para +>Nu skickar vi det: </para> + +<programlisting +>packet->send(); +</programlisting> + +<para +>Det här är mycket enkelt, men om vi vill skicka paket precis så snabbt som mottagaren kan hantera dem, behövs ett annat sätt, metoden med <quote +>dragleverans</quote +>. Man begär att skicka paket så snabbt som mottagaren är klar att behandla dem. Man börjar med en viss mängd paket som skickas. Medan mottagaren behandlar paket efter paket, börjar man fylla i dem med färsk data, och skickar dem igen. </para> + +<para +>Du startar det genom att anropa setPull. Till exempel: </para> + +<programlisting +>outdata.setPull(8, 1024); +</programlisting> + +<para +>Det här betyder att du vill skicka paket via outdata. Du vill börja med att skicka 8 paket på en gång, och när mottagaren behandlar några av dem, vill du fylla dem igen. </para> + +<para +>Därefter behöver du implementera en metod som fyller paketen, som skulle kunna se ut så här: </para> + +<programlisting +>void request_outdata(DataPacket<mcopbyte> *packet) +{ + packet->size = 1024; // ska inte vara mer än 1024 + for(int i = 0;i < 1024; i++) + packet->contents[i] = (mcopbyte)'A'; + packet->send(); +} +</programlisting> + +<para +>Det är allt. När du inte har mer data, kan du börja skicka paket med storleken noll, som stoppar dragleveranserna. </para> + +<para +>Observera att det är väsentligt att ge metoden exakt namnet <methodname +>request_<replaceable +>strömnamn</replaceable +></methodname +>. </para> + +<para +>Vi beskrev just att skicka data. Att ta emot data är mycket enklare. Antag att du har ett enkelt filter, ToLower, som helt enkelt konverterar alla bokstäver till små: </para> + +<programlisting +>interface ToLower { + async in byte stream indata; + async out byte stream utdata; +}; +</programlisting> + +<para +>Det här är verkligt enkelt att implementera. Här är hela implementationen: </para> + +<programlisting +>class ToLower_impl : public ToLower_skel { +public: + void process_indata(DataPacket<mcopbyte> *inpacket) + { + DataPacket<mcopbyte> *outpacket = outdata.allocPacket(inpacket->size); + + // omvandla till små bokstäver + 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 +>Återigen är det väsentligt att ge metoden namnet <methodname +>process_<replaceable +>strömnamn</replaceable +></methodname +>. </para> + +<para +>Som du kan se, så får du ett anrop till en funktion för varje paket som anländer (<function +>process_indata</function +> i vårt fall). Du måste anropa metoden <methodname +>processed()</methodname +> för ett paket för att ange att du har behandlat det. </para> + +<para +>Här är ett implementeringstips: Om det tar lång tid att behandla data (dvs. om du måste vänta på utmatning till ljudkortet eller något sådant), anropa inte processed omedelbart, utan lagra hela datapaketet och anropa processed bara när du verkligen har behandlat paketet. På detta sätt, har avsändarna en chans att veta hur lång tid det verkligen tar att utföra arbetet. </para> + +<para +>Eftersom synkronisering inte är så trevlig med asynkrona strömmar, ska man använda synkrona strömmar så ofta det är möjligt, och asynkrona bara om det är nödvändigt. </para> + +</sect2> + +<sect2 id="default-streams"> +<title +>Förvalda strömmar</title> + +<para +>Antag att du har två objekt, till exempel en AudioProducer och en AudioConsumer. AudioProducer har en utdataström och AudioConsumer har en indataström. Varje gång du vill förbinda dem, använder du de här två strömmarna. Den första användningen av förval är att låta dig upprätta förbindelsen utan att ange portarna i det här fallet. </para> + +<para +>Antag nu att de två objekten ovan kan hantera stereo, och båda har en <quote +>vänster</quote +> och <quote +>höger</quote +> port. Du skulle fortfarande vilja kunna koppla ihop dem lika lätt som tidigare. Men hur kan förbindelsesystemet veta vilken utgång som ska kopplas till vilken ingång? Det har inget sätt att koppla ihop strömmarna korrekt. Förval används då för att ange flera strömmar med en viss ordning. På så sätt, om du ansluter ett objekt med två förvalda utdataströmmar till ett annat med två förvalda indataströmmar, behöver du inte ange portarna, och förbindelserna görs på ett riktigt sätt. </para> + +<para +>Det här är förstås inte begränsat till stereo. Vilket antal strömmar som helst kan göras förvalda om det behövs, och anslutningsfunktionen kontrollerar att antalet förval för två objekt passar ihop (med de angivna riktningarna) om du inte anger portarna som ska användas. </para> + +<para +>Syntaxen är den följande: I &IDL; kan du använda nyckelordet default i strömdeklarationen, eller på en ensam rad. Till exempel: </para> + +<programlisting +>interface TwoToOneMixer { + default in audio stream input1, input2; + out audio stream output; +}; +</programlisting> + +<para +>I det här exemplet kommer objektet att förvänta sig att dess två indataportar ska anslutas med förval. Ordningen är den som anges på raden, så ett objekt som det här: </para> + +<programlisting +>interface DualNoiseGenerator { + out audio stream bzzt, couic; + default couic, bzzt; +}; +</programlisting> + +<para +>skapar automatiskt en förbindelse från <quote +>couic</quote +> till <quote +>input1</quote +>, och <quote +>bzzt</quote +> till <quote +>input2</quote +> Observera att eftersom det bara finns en utgång för mixern, kommer den att vara förvald i det här fallet (se nedan). Syntaxen som används i brusgeneratorn är användbar för att ange en annan ordning än i deklarationen, eller för att välja bara några få portar som förval. Riktningen på portarna på den här raden slås upp av &mcopidl;, så ange dem inte. Du kan till och med blanda in- och utportar på en sådan här rad, bara ordningen spelar roll. </para> + +<para +>Det finns några regler som följs när arv används: </para> + +<itemizedlist> +<listitem> +<para +>Om en förvalslista anges i &IDL; så måste den användas. En förälders portar kan också ingå i listan, vare sig de var förval i föräldern eller inte. </para> +</listitem> + +<listitem> +<para +>Annars ärvs förälderns förval. Ordningen är förälder1 förval1, förälder1 förval2..., förälder2 förval1... Om det finns en gemensam förfader som använder två föräldragrenar, görs en hopslagning som liknar <quote +>virtual public</quote +> vid förvalets första plats i listan. </para> +</listitem> + +<listitem> +<para +>Om det fortfarande inte finns något förval och en enda ström i en viss riktning, så används den som förval för den riktningen. </para> +</listitem> +</itemizedlist> + +</sect2> + +</sect1> +<sect1 id="attribute-change-notify"> +<title +>Ändringsmeddelanden för egenskaper</title> + +<!-- TODO: This should be embedded better into the context - I mean: the + context should be written ;-). --> + +<para +>Ändringsmeddelanden för egenskaper är ett sätt att veta när en egenskap ändras. De kan i viss utsträckning jämföras med en &Qt;- eller Gtk-signal eller slot. Om du till exempel har ett grafiskt element, ett skjutreglage, som ställer in ett tal mellan 0 och 100, har du oftast ett objekt som gör något med talet (det kan till exempel kontrollera volymen på någon ljudsignal). Så du skulle vilja att så fort skjutreglaget flyttas ska objektet som ställer in volymen bli underrättat. En förbindelse mellan en sändare och mottagare. </para> + +<para +>&MCOP; hanterar detta genom att kunna ge meddelanden när egenskaper ändras. Allt som deklareras som <quote +>attribute</quote +> i &IDL; kan avge sådana ändringsmeddelanden, och ska göra det, när de än ändras. Allt som deklareras som <quote +>attribute</quote +> kan också ta emot sådana ändringsmeddelanden. Så om du till exempel har två &IDL;-gränssnitt som de här </para> + +<programlisting +>interface Slider { + attribute long min,max; + attribute long position; + }; + interface VolumeControl : Arts::StereoEffect { + attribute long volume; // 0..100 + }; +</programlisting> + +<para +>kan du förbinda dem med ändringsmeddelanden. Det fungerar med det normala flödessystemets anslutningsoperation. I det här fallet, ser C++ koden som ansluter två objekt ut så här: </para> + +<programlisting +>#include <connect.h> +using namespace Arts; +[...] +connect(slider,"position_changed",volumeControl,"volume"); +</programlisting> + +<para +>Som du kan se, erbjuder varje egenskap två olika strömmar, en för att skicka ändringsmeddelanden, som heter <function +><replaceable +>egenskapsnamn</replaceable +>_changed</function +>, och en för att ta emot ändringsmeddelanden, som heter <function +>egenskapsnamn</function +>. </para> + +<para +>Det är viktigt att veta att ändringsmeddelanden och asynkrona strömmar passar ihop. De är också nätverkstransparenta. Så du kan ansluta en flyttalsegenskaps ändringsmeddelande för en grafisk komponent till en asynkron ström för en syntesmodul som kör på en annan dator. Det här betyder förstås också att ändringsmeddelanden <emphasis +>inte är synkrona</emphasis +>, vilket betyder att det kan ta tid innan de verkligen tas emot efter du har skickat dem. </para> + +<sect2 id="sending-change-notifications"> + +<title +>Att skicka ändringsmeddelanden</title> + +<para +>När du implementerar objekt som har egenskaper, måste du skicka ändringsmeddelanden så snart en egenskap ändras. Koden för att göra detta ser ut så här: </para> + +<programlisting +>void KPoti_impl::value(float newValue) + { + if(newValue != _value) + { + _value = newValue; + value_changed(newValue); // <- skicka ändringsmeddelande + } + } +</programlisting> + +<para +>Det rekommenderas varmt att använda kod som den här för alla objekt som du implementerar, så att ändringsmeddelanden kan användas av andra. Du bör dock undvika att skicka meddelanden för ofta, så om du gör signalbehandling är det troligen bäst att hålla reda på när du skickade ditt senaste meddelande, så att du inte skickar ett för varje sampling. </para> + +</sect2> + +<sect2 id="change-notifications-apps"> +<title +>Tillämpningar för ändringsmeddelanden</title> + +<para +>Det kommer att vara särskilt användbart att använda ändringsmeddelanden tillsammans med mätare (objekt som till exempel visualiserar ljuddata), grafiska gränssnitt, styrelement och monitorer. Kod som använder det här finns i <filename class="directory" +>tdelibs/arts/tests</filename +>, och i den experimentella artsgui-implementeringen, som du hittar i <filename class="directory" +>tdemultimedia/arts/gui</filename +>. </para> + +<!-- TODO: can I markup links into the source code - if yes, how? --> + +<!-- LW: Linking into the source is problematic - we can't assume people are +reading this on a machine with the sources available, or that they aren't +reading it from a website. We're working on it! --> + +</sect2> +</sect1> + +<sect1 id="the-mcoprc-file"> + +<title +>Filen <literal role="extension" +>.mcoprc</literal +></title> + +<para +>Filen <literal role="extension" +>.mcoprc</literal +> (i varje användares hemkatalog) kan användas för att anpassa &MCOP; i viss mån. För närvarande är följande möjligt: </para> + +<variablelist> + +<varlistentry> +<term +>GlobalComm</term> +<listitem> +<para +>Namnet på ett gränssnitt som ska användas för global kommunikation. Global kommunikation används för att hitta andra objekt och hämta den hemliga kakan. Alla &MCOP; klienter/servrar som ska kunna kommunicera med varandra måste ha ett GlobalComm-objekt för att kunna dela information. För närvarande är de möjliga värdena <quote +>Arts::TmpGlobalComm</quote +> för att kommunicera via katalogen <filename class="directory" +>/tmp/mcop-<replaceable +>användarnamn</replaceable +></filename +> (som bara fungerar på den lokala datorn) och <quote +>Arts::X11GlobalComm</quote +> för att kommunicera via rotfönsteregenskaperna på X11-servern. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>TraderPath</term> + +<listitem> +<para +>Anger var handlarinformation ska hittas. Du kan ange mer än en katalog här, och separera dem med kommatecken. </para> +</listitem> + +</varlistentry> + +<varlistentry> +<term +>ExtensionPath</term> + +<listitem> +<para +>Anger från vilka kataloger utökningar (i form av delade bibliotek) laddas. Flera värden kan separeras med kommatecken. </para> +</listitem> + +</varlistentry> +</variablelist> + +<para +>Ett exempel som använder allt det ovanstående är: </para> + +<programlisting +># $HOME/.mcoprc file +GlobalComm=Arts::X11GlobalComm + +# om du är en utvecklare kan det vara bekvämt att lägga till en katalog i din +# hemkatalog till TraderPath/ExtensionPath sökvägarna för att kunna lägga +# till komponenter utan att installera 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; för <acronym +>CORBA</acronym +>-användare</title> + +<para +>Om du har använt <acronym +>CORBA</acronym +> tidigare, kommer du att märka att &MCOP; är mycket likt. I själva verket så använde &arts; <acronym +>CORBA</acronym +> innan version 0.4. </para> + +<para +>Den grundläggande idén med <acronym +>CORBA</acronym +> är likadan: man implementerar objekt (komponenter). Genom att använda funktionerna i &MCOP; är objekt inte bara tillgängliga som normala klasser från samma process (via standardmässiga C++ tekniker), utan de är också transparent tillgängliga för en fjärrserver. För att detta ska fungera, är det första du måste göra att specificera gränssnittet för dina objekt i en &IDL;-fil, precis som för <acronym +>CORBA</acronym +>-&IDL;. Det finns bara ett fåtal skillnader. </para> + +<sect2 id="corba-missing"> +<title +><acronym +>CORBA</acronym +>-funktioner som saknas i &MCOP;</title> + +<para +>I &MCOP; finns det inga <quote +>in</quote +> och <quote +>out</quote +> parametrar för metodanrop. Parametrar är alltid ingående, och returvärdet är alltid utgående, vilket betyder att gränssnittet: </para> + +<programlisting +>// CORBA idl +interface Account { + void deposit( in long amount ); + void withdraw( in long amount ); + long balance(); +}; +</programlisting> + +<para +>skrivs som </para> + +<programlisting +>// MCOP idl +interface Account { + void deposit( long amount ); + void withdraw( long amount ); + long balance(); +}; +</programlisting> + +<para +>i &MCOP;. </para> + +<para +>Det finns inget stöd för undantag. &MCOP; har inte undantag, det använder något annat för felhantering. </para> + +<para +>Det finns inga union-typer och inga typdefinitioner. Jag vet inte om det är en verklig svaghet, något man desperat behöver för att överleva. </para> + +<para +>Det finns inget stöd för att skicka gränssnitt eller objektreferenser </para> + +</sect2> + +<sect2 id="corba-different"> +<title +><acronym +>CORBA</acronym +>-funktioner som är annorlunda i &MCOP;</title> + +<para +>Du deklarerar sekvenser som <quote +>sequence<replaceable +>typ</replaceable +></quote +> i &MCOP;. Det finns inget behov av en typdefinition. Till exempel, istället för: </para> + +<programlisting +>// CORBA idl +struct Line { + long x1,y1,x2,y2; +}; +typedef sequence<Line> LineSeq; +interface Plotter { + void draw(in LineSeq lines); +}; +</programlisting> + +<para +>skulle du skriva </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 inte finns i <acronym +>CORBA</acronym +></title> + +<para +>Du kan deklarera strömmar, som sedan behandlas av &arts; grundstomme. Strömmar deklareras på ett sätt som liknar egenskaper. Till exempel: </para> + +<programlisting +>// MCOP idl +interface Synth_ADD : SynthModule { + in audio stream signal1,signal2; + out audio stream outvalue; +}; +</programlisting> + +<para +>Det här betyder att ditt objekt kommer att acceptera två inkommande synkrona ljudströmmar som kallas signal1 och signal2. Synkron betyder att de är strömmar som levererar x samplingar per sekund (eller annan tid), så att schemaläggaren alltid garanterar att du får en balanserad mängd indata (t.ex. 200 samplingar av signal1 finns och 200 samplingar av signal2 finns). Du garanterar att om ditt objekt anropas med de här 200 samplingarna av signal1 + signal2, så kan det skapa precis 200 samplingar utdata. </para> + +</sect2> + +<sect2 id="mcop-binding"> +<title +>&MCOP;-bindningen till C++ språket</title> + +<para +>Det här skiljer sig från <acronym +>CORBA</acronym +> i huvudsak angående: </para> + +<itemizedlist> +<listitem> +<para +>Strängar använder C++ <acronym +>STL</acronym +>-klassen <classname +>string</classname +>. När de lagras i sekvenser, lagras de <quote +>enkelt</quote +>, vilket betyder att de anses vara en primitiv typ. Därför behöver de kopieras. </para> +</listitem> + +<listitem> +<para +>long är enkla long (förväntas vara 32 bitar). </para> +</listitem> + +<listitem> +<para +>Sekvenser använder C++ <acronym +>STL</acronym +>-klassen <classname +>vector</classname +>. </para> +</listitem> + +<listitem> +<para +>Strukturer härleds alla från &MCOP; klassen <classname +>Type</classname +>, och skapas av &MCOP; &IDL;-kompilatorn. När de lagras i sekvenser, lagras de inte <quote +>enkelt</quote +>, utan som pekare, eftersom annars skulle för mycket kopiering uppstå. </para> +</listitem> +</itemizedlist> +</sect2> + +<sect2 id="implementing-objects"> +<title +>Att implementera &MCOP;-objekt</title> + +<para +>Efter att ha skickat dem genom &IDL;-kompilatorn, måste du härleda från klassen <classname +>_skel</classname +>. Antag till exempel att du har definierat gränssnittet så här: </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 skickar det genom &IDL;-kompilatorn genom att anropa <userinput +><command +>mcopidl</command +> <parameter +>hello.idl</parameter +></userinput +>, som i sin tur skapar <filename +>hello.cc</filename +> och <filename +>hello.h</filename +>. För att implementera det, behöver du en C++ klass som ärver stommen: </para> + +<programlisting +>// C++ deklarationsfil - infoga hello.h någonstans +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 +>Till sist måste du implementera metoderna som vanlig C++. </para> + +<programlisting +>// C++ implementeringsfil + +// som du ser skickas strängar som konstanta strängreferenser +void Hello_impl::hello(const string& s) +{ + printf("Hello '%s'!\n",s.c_str()); +} + +// när de är ett returvärde skickas de som "normala" strängar +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 väl har gjort detta, har du ett objekt som kan kommunicera med &MCOP;. Skapa bara ett (med de normala C++ faciliteterna för att skapa ett objekt): </para> + +<programlisting +>Hello_impl server; +</programlisting> + +<para +>Och så fort du ger någon referensen </para> + +<programlisting +>string reference = server._toString(); + printf("%s\n",reference.c_str()); +</programlisting> + +<para +>och går till &MCOP;:s väntesnurra </para> + +<programlisting +>Dispatcher::the()->run(); +</programlisting> + +<para +>kan alla komma åt objektet med </para> + +<programlisting +>// den här koden kan köra var som helst - inte nödvändigtvis i samma process +// (den kan också köra på en annan dator/arkitektur) + + Hello *h = Hello::_fromString([objektreferensen som skrevs ut ovan]); +</programlisting> + +<para +>och anropa metoder: </para> + +<programlisting +>if(h) + h->hello("test"); + else + printf("Åtkomst misslyckades?\n"); +</programlisting> + +</sect2> +</sect1> + +<sect1 id="mcop-security"> +<title +>Säkerhetshänsyn för &MCOP;</title> + +<para +>Eftersom en &MCOP;-server lyssnar på en <acronym +>TCP</acronym +>-port, kan potentiellt sett alla (om du är ansluten till Internet) försöka att ansluta till en &MCOP;-service. Därför är det viktigt att identifiera klienter. &MCOP; använder md5-auth protokollet. </para> + +<para +>Protokollet md5-auth gör följande för att försäkra att bara utvalda (pålitliga) klienter kan ansluta till en server: </para> + +<itemizedlist> +<listitem> +<para +>Det antar att du kan ge varje klient en hemlig kaka. </para> +</listitem> + +<listitem> +<para +>Varje gång en klient ansluter, verifierar den att den här klienten känner till den hemliga kakan, utan att verkligen skicka den (inte ens på en form som någon som lyssnar på nätverkstrafik kan ta reda på). </para> +</listitem> + +</itemizedlist> + +<para +>För att ge varje klient den hemliga kakan, lägger &MCOP; (normalt) den i <filename class="directory" +>mcop</filename +> katalogen (i <filename class="directory" +>/tmp/mcop-<envar +>USER</envar +>/secret-cookie</filename +>). Du kan förstås kopiera den till andra datorer. Men om du gör det, använd då en säker överföringsmekanism, som <command +>scp</command +> (från <application +>ssh</application +>). </para> + +<para +>Identifieringen av klienter använder följande steg: </para> + +<procedure> +<step> +<para +>[SERVER] skapa en ny (slumpmässig) kaka R </para> +</step> + +<step> +<para +>[SERVER] skicka den till klienten </para> +</step> + +<step> +<para +>[KLIENT] läs den "hemliga kakan" S från en fil </para> +</step> + +<step> +<para +>[KLIENT] behandla kakorna R och S för att skapa kakan M med MD5-algoritmen </para> +</step> + +<step> +<para +>[KLIENT] skicka M till servern </para> +</step> + +<step> +<para +>[SERVER] verifiera att behandling av R och S ger precis samma sak som kakan M som togs emot från klienten. Om detta stämmer har identifieringen lyckats. </para> +</step> + +</procedure> + +<para +>Den här algoritmen bör vara säker, under förutsättning att </para> + +<orderedlist> +<listitem> +<para +>De hemliga och slumpmässiga kakorna är <quote +>slumpmässiga nog</quote +> och </para> +</listitem> + +<listitem> +<para +>MD5-algoritmen inte tillåter att <quote +>originaltexten</quote +> kan avgöras, det vill säga den hemliga kakan S och den slumpmässiga kakan R (som är känd ändå), från den behandlade kakan M. </para> +</listitem> +</orderedlist> + +<para +>&MCOP;-protokollet startar varje ny förbindelse med en identifieringsprocess. Översiktligt ser den ut så här: </para> + +<procedure> + +<step> +<para +>Servern skickar meddelandet ServerHello, som beskriver de kända indentifieringsprotokollen. </para> +</step> + +<step> +<para +>Klienten skickar meddelandet ClientHello, som innehåller identifieringsinformation. </para> +</step> + +<step> +<para +>Servern skickar meddelandet AuthAccept. </para> +</step> +</procedure> + +<para +>För att se att säkerheten verkligen fungerar, bör vi titta på hur meddelanden behandlas för oidentifierade förbindelser: </para> + +<itemizedlist> +<listitem> +<para +>Innan identifieringen lyckas, tar inte servern emot andra meddelanden från anslutningen. Istället, om servern till exempel förväntar sig meddelandet <quote +>ClientHello</quote +>, och får meddelandet mcopInvocation, så kopplar den ner förbindelsen. </para> +</listitem> + +<listitem> +<para +>Om klienten inte skickar ett giltigt &MCOP;-meddelande alls (inget magiskt värde &MCOP; i meddelandehuvudet) i identifieringsfasen, utan något annat, så kopplas förbindelsen ner. </para> +</listitem> + +<listitem> +<para +>Om klienten försöker skicka ett mycket mycket stort meddelande (> 4096 byte) under identifieringsfasen, kapas meddelandestorleken till 0 byte, vilket gör att det inte accepteras som identifiering. Det här är till för att förhindra att oidentifierade klienter skickar t.ex. ett 100 Mibyte meddelande, som skulle tas emot och kunna orsaka att servern får slut på minne. </para> +</listitem> + +<listitem> +<para +>Om klienten skickar ett felaktigt ClientHello meddelande (ett där avkodningen misslyckas), så kopplas förbindelsen ner. </para> +</listitem> + +<listitem> +<para +>Om klienten inte skickar något alls, ska en tidsgräns överskridas (ännu inte implementerat). </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="mcop-protocol"> +<title +>&MCOP; protokollspecifikation</title> + +<sect2 id="mcop-protocol-intro"> +<title +>Inledning</title> + +<para +>Den har begreppsmässiga likheter med <acronym +>CORBA</acronym +>, men är avsett för att kunna utökas på alla sätt som krävs för multimediaoperationer i realtid. </para> + +<para +>Den tillhandahåller en multimediaobjektmodell, som både kan användas för kommunikation mellan komponenter i ett adressrum (en process), och mellan komponenter som finns i olika trådar, processer eller på olika värddatorer. </para> + +<para +>Totalt sett, kommer den att konstrueras för extremt hög prestanda (så att allt ska optimeras för att vara våldsamt snabbt), lämpligt för mycket kommunikationsintensiva multimediaprogram. Att till exempel skicka runt video är en av tillämpningarna för &MCOP;, där de flesta <acronym +>CORBA</acronym +>-implementeringar skulle gå på knäna. </para> + +<para +>Gränssnittsdefinitionerna kan hantera följande själv: </para> + +<itemizedlist> +<listitem> +<para +>Kontinuerliga dataflöden (som ljuddata). </para> +</listitem> + +<listitem> +<para +>Händelseflöden av data (som &MIDI;-händelser). </para> +</listitem> + +<listitem> +<para +>Riktig referensräkning. </para> +</listitem> +</itemizedlist> + +<para +>och de viktigaste <acronym +>CORBA</acronym +>-knepen, som </para> + +<itemizedlist> +<listitem> +<para +>Synkrona metodanrop. </para> +</listitem> + +<listitem> +<para +>Asynkrona metodanrop. </para> +</listitem> + +<listitem> +<para +>Konstruera användardefinierade datatyper. </para> +</listitem> + +<listitem> +<para +>Multipla arv. </para> +</listitem> + +<listitem> +<para +>Skicka objektreferenser. </para> +</listitem> +</itemizedlist> + +</sect2> + +<sect2 id="mcop-protocol-marshalling"> +<title +>&MCOP;:s meddelandekodning</title> + +<para +>Konstruktionsmål/idéer: </para> + +<itemizedlist> + +<listitem> +<para +>Kodning ska vara enkelt att implementera. </para> +</listitem> + +<listitem> +<para +>Avkodning kräver att mottagaren vet vilken typ som ska avkodas. </para> +</listitem> + +<listitem> +<para +>Mottagaren förväntas använda all information, så möjlighet att hoppa över data finns bara i protokollet såtillvida att: </para> + +<itemizedlist> +<listitem> +<para +>Om man vet att ett block av data kommer att tas emot, behöver man inte titta på varje del efter en slutmarkör. </para> +</listitem> + +<listitem> +<para +>Om man vet att en sträng kommer att tas emot, behöver man inte läsa till en noll-byte för att ta reda på dess längd vid avkodning, men, </para> +</listitem> + +<listitem> +<para +>Om man vet att en sekvens av strängar kommer att tas emot måste man titta på längden för var och en av dem för att ta reda på slutet för sekvensen, eftersom strängar har variabel längd. Men om strängarna används för någonting nyttigt, måste det göras i alla fall, så det här är ingen förlust. </para> +</listitem> +</itemizedlist> + +</listitem> + +<listitem> +<para +>Så lite extra kostnad som möjligt. </para> +</listitem> +</itemizedlist> + +<!-- TODO: Make this a table --> + +<para +>Kodningen av de olika typerna visas i tabellen nedan: </para> + +<informaltable> +<tgroup cols="3"> +<thead> +<row> +<entry +>Typ</entry> +<entry +>Kodningsprocess</entry> +<entry +>Resultat</entry> +</row> +</thead> + +<tbody> +<row> +<entry +><type +>void</type +></entry> +<entry +>typen <type +>void</type +> kodas genom att utelämna den, så ingenting skrivs till strömmen för den.</entry> +<entry +></entry> +</row> + +<row> +<entry +><type +>long</type +></entry> +<entry +>kodas som fyra byte, med den mest signifikanta först, så att talet 10001025 (som är 0x989a81) skulle kodas som:</entry> +<entry +><literal +>0x00 0x98 0x9a 0x81</literal +></entry> +</row> + +<row> +<entry +><type +>uppräkningstyper</type +></entry> +<entry +><para +>kodas som <type +>long</type +></para +></entry> +<entry +></entry> +</row> + +<row> +<entry +><type +>byte</type +></entry> +<entry +><para +>kodas som en enda byte, så 0x42 skulle kodas som:</para +></entry> +<entry +><literal +>0x42</literal +></entry> +</row> + +<row> +<entry +><type +>sträng</type +></entry> +<entry +><para +>kodas som en <type +>long</type +>, som innehåller längden på den efterföljande strängen, och sedan sekvensen av tecken. Strängar måste sluta med en noll-byte (som ingår i längdberäkningen).</para> +<important> +<para +>inklusive den sista 0 byten i längdräkningen!</para> +</important> +<para +><quote +>hello</quote +> skulle kodas 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 +>kodas som en byte, som innehåller 0 om <returnvalue +>false</returnvalue +> eller 1 om <returnvalue +>true</returnvalue +>, så att det booleska värdet <returnvalue +>true</returnvalue +> kodas som:</para +></entry> +<entry +><literal +>0x01</literal +></entry> +</row> + +<row> +<entry +><type +>flyttal</type +></entry> +<entry +><para +>kodas med fyra-byte IEEE754 representationen, detaljerad dokumentation om hur IEEE fungerar finns här: <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 +> och här: <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ärdet 2,15 skulle kodas som:</para +></entry> +<entry +><literal +>0x9a 0x99 0x09 0x40</literal +></entry> +</row> + +<row> +<entry +><type +>struct</type +></entry> +<entry +><para +>En struktur kodas genom att koda dess innehåll. Det krävs inga ytterligare prefix eller suffix, så att strukturen </para> +<programlisting +>struct test { + string name; // som är "hello" + long value; // som är 10001025 (0x989a81) +}; +</programlisting> +<para +>skulle kodas 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 kodas genom att lista antalet element som följer, och sedan koda elementen ett efter ett.</para> +<para +>Så en sekvens med tre "long a", med a[0] = 0x12345678, a[1] = 0x01 och a[2] = 0x42 skulle kodas 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 +>Om du behöver hänvisa till en typ, anges alla primitiva typer med namnen som finns ovan. Strukturer och uppräkningstyper får sina egna namn (som Header). Sekvenser benämns som *<replaceable +>normal typ</replaceable +>, så att en sekvens av long är <quote +>*long</quote +> och en sekvens av Header struct:ar är <quote +>*Header</quote +>. </para> + +</sect2> + +<sect2 id="mcop-protocol-messages"> +<title +>Meddelanden</title> + +<para +>Formatet på &MCOP;:s meddelandehuvud definieras av den här strukturen: </para> + +<programlisting +>struct Header { + long magic; // värdet 0x4d434f50, som kodas som MCOP + long messageLength; + long messageType; +}; +</programlisting> + +<para +>De möjliga meddelandetyperna är för närvarande </para> + +<programlisting +>mcopServerHello = 1 + mcopClientHello = 2 + mcopAuthAccept = 3 + mcopInvocation = 4 + mcopReturn = 5 + mcopOnewayInvocation = 6 +</programlisting> + +<para +>Lite information om &MCOP;:s meddelandehantering: </para> + + +<itemizedlist> +<listitem> +<para +>Varje meddelande börjar med ett huvud. </para> +</listitem> + +<listitem> +<para +>Vissa meddelandetyper ska ignoreras av servern, innan identifiering är färdig. </para> +</listitem> + +<listitem> +<para +>Efter att huvudet tagits emot, kan protokollhanteringen (anslutningen) ta emot meddelandet i sin helhet, utan att titta på innehållet. </para> +</listitem> +</itemizedlist> + +<para +>Meddelandelängden i huvudet är förstås redundant i vissa fall, vilket gör att metoden inte alltid är minimal med avseende på antal byte. </para> + +<para +>Detta ger dock en enkel (och snabb) implementering för behandling av meddelanden som inte blockerar. Med hjälp av huvudet kan meddelanden tas emot av protokollhanteringsklasser i bakgrunden (utan blockering), om det finns många anslutningar till servern kan alla behandlas parallellt. Man behöver inte titta på meddelandets innehåll för att ta emot ett meddelande (och avgöra när man är klar), bara på huvudet, så koden för detta är ganska enkel. </para> + +<para +>När ett meddelande väl finns på plats, kan det avkodas och behandlas i ett enda steg, utan att bry sig om fall där all data kanske inte tagits emot (eftersom meddelandelängden garanterar att allt är på plats). </para> + +</sect2> + +<sect2 id="mcop-protocol-invocations"> +<title +>Anrop</title> + +<para +>För att anropa en fjärrmetod, måste man skicka följande struktur i ett &MCOP;-meddelande med messageType = 1 (mcopInvocation): </para> + +<programlisting +>struct Invocation { + long objectID; + long methodID; + long requestID; +}; +</programlisting> + +<para +>därefter skickas parametrarna som en struktur, t.ex. om man anropar metoden "string concat(string s1, string s2)", skickas strukturen </para> + +<programlisting +>struct InvocationBody { + string s1; + string s2; +}; +</programlisting> + + +<para +>om metoden deklarerades som envägs, vilket betyder asynkront utan returvärde, är det allt. Annars får man ett meddelande som svar med messageType = 2 (mcopReturn). </para> + +<programlisting +>struct ReturnCode { + long requestID; + <resulttype> result; +}; +</programlisting> + + +<para +>där <resulttype> är typen för resultatet. Eftersom void-typer utelämnas vid kodning, kan man också bara ange requestID om man returnerar från en void-metod. </para> + +<para +>Så vår "string concat(string s1, string s2)" skulle ge en returkod som </para> + +<programlisting +>struct ReturnCode { + long requestID; + string result; +}; +</programlisting> + +</sect2> + +<sect2 id="mcop-protocol-inspecting"> +<title +>Inspektera gränssnitt</title> + +<para +>För att göra anrop, måste man känna till metoderna som ett objekt stöder. För att göra detta, är methodID 0, 1, 2 och 3 hårdkodade för vissa funktioner. Det vill säga </para> + +<programlisting +>long _lookupMethod(MethodDef methodDef); // metod-id alltid 0 +string _interfaceName(); // metod-id alltid 1 +InterfaceDef _queryInterface(string name); // metod-id alltid 2 +TypeDef _queryType(string name); // metod-id alltid 3 +</programlisting> + +<para +>för att läsa detta, behövs förstås också </para> + +<programlisting +>struct MethodDef { + string methodName; + string type; + long flags; // nu satt till 0 (krävs för strömmar) + sequence<ParamDef> signature; +}; + +struct ParamDef { + string name; + long typeCode; +}; +</programlisting> + +<para +>parameterfältet innehåller typkomponenter som anger typerna för parametrar. Typen för returkoden anges i typfältet för MethodDef. </para> + +<para +>För att vara strikt, är det bara metoderna <methodname +>_lookupMethod()</methodname +> och <methodname +>_interfaceName()</methodname +> som varierar från objekt till objekt, medan <methodname +>_queryInterface()</methodname +> och <methodname +>_queryType()</methodname +> alltid är likadana. </para> + +<para +>Vad är ett sådant här methodID? Om man gör ett &MCOP;-anrop, förväntas man skicka numret för metoden som anropas. Orsaken till detta är att nummer kan behandlas mycket snabbare än strängar när en &MCOP;-begäran körs. </para> + +<para +>Så hur skaffar man sig ett sådant här nummer? Om man känner till signaturen för metoden, dvs. en MethodDef som beskriver den (som innehåller namn, typ, parameternamn, parametertyper och liknande), så kan man skicka den till _lookupMethod för objektet där man vill anropa en metod. Eftersom _lookupMethod är hårdkodad till methodID 0, ska det inte vara några problem att göra detta. </para> + +<para +>Om man å andra sidan inte känner till metodens signatur, kan man ta reda på vilka metoder som stöds genom att använda _interfaceName, _queryInterface och _queryType. </para> +</sect2> + +<sect2 id="mcop-protocol-typedefs"> +<title +>Typdefinitioner</title> + +<para +>Användardefinierade datatyper beskrivs 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 +>Varför &arts; inte använder &DCOP;</title> + +<para +>Eftersom &kde; släppt <acronym +>CORBA</acronym +> helt och hållet, och istället använder &DCOP; överallt, uppstår förstås frågan varför inte &arts; också gör det. Trots allt finns &DCOP;-stöd i <classname +>KApplication</classname +>, underhålls väl, förväntas integreras utmärkt med libICE, och allt möjligt annat. </para> + +<para +>Eftersom det (möjligtvis) kommer att finnas många som frågar om det verkligen är nödvändigt att ha &MCOP; förutom &DCOP;, så finns svaret här. Missförstå mig inte, jag försöker inte säga att <quote +>&DCOP; är dåligt</quote +>. Jag försöker bara säga <quote +>&DCOP; är inte rätt lösning för &arts;</quote +> (medan det är en bra lösning för andra saker). </para> + +<para +>Först måste man förstå exakt vad &DCOP; skrevs för. Skapat på två dar under mötet &kde;-TWO, var det avsett att vara så enkelt som möjligt, ett verkligt <quote +>lättviktigt</quote +> kommunikationsprotokoll. I synnerhet utelämnade implementeringen allt som kunde innebära komplexitet, till exempel ett fullständigt koncept angående hur datatyper ska kodas. </para> + +<para +>Fastän &DCOP; inte bryr sig om vissa saker (som hur man skickar en sträng på ett nätverkstransparent sätt), måste detta göras. Så allt som inte &DCOP; gör överlämnas till &Qt; i &kde;-programmen som använder &DCOP; idag. Det här är i huvudsak typhantering (som använder &Qt;:s serialiseringsoperator). </para> + +<para +>Så &DCOP; är ett minimalt protokoll som gör det helt möjlig för &kde;-program att skicka enkla meddelanden som <quote +>öppna ett fönster som pekar på http://www.kde.org</quote +> eller <quote +>dina inställningar har ändrats</quote +>. Inne i &arts; fokuseras dock på andra saker. </para> + +<para +>Idén är att små insticksmoduler i &arts; ska kommunicera med sådana datastrukturer som <quote +>midi-händelser</quote +> och <quote +>sångpositionspekare</quote +> och <quote +>flödesgrafer</quote +>. </para> + +<para +>Detta är komplexa datatyper, som måste skickas mellan olika objekt, och hanteras som strömmar, eller parametrar. &MCOP; tillhandahåller ett typkoncept för att definiera komplexa datatyper från enklare (liknande struct:ar och fält i C++). &DCOP; bryr sig inte om typer alls, så det här problemet skulle lämnas till programmeraren, som att skriva C++ klasser för typerna, och försäkra sig om att de går att serialisera på ett riktigt sätt (till exempel stöd för &Qt;:s serialiseringsoperator). </para> + +<para +>Men på det sättet skulle de inte vara tillgängliga för något annat än direkt kodning i C++. I synnerhet skulle man inte kunna skapa ett skriptspråk som skulle kunna känna till alla typer som en insticksmodul kan göra tillgängliga, eftersom de inte skulle vara självbeskrivande. </para> + +<para +>Samma argument gäller också gränssnitt i stor utsträckning. &DCOP;-objekt gör inte sina förhållanden, arvhierarkier, etc. tillgängliga. Om man skulle skriva en objektbläddrare som skulle visa <quote +>vilka egenskaper har det här objektet</quote +>, skulle man misslyckas. </para> + + +<para +>Även om Matthias talade om för mig att man har en speciell funktion <quote +>functions</quote +> för varje objekt som informerar om vilka metoder som objektet stöder, utelämnar detta saker som egenskaper, strömmar och arvrelationer. </para> + +<para +>Det här gör att program som aRts-byggaren inte skulle fungera alls. Men kom ihåg, det var inte meningen att &DCOP; skulle vara en objektmodell (eftersom &Qt; redan har en med <application +>moc</application +> och liknande), inte heller vara något som <acronym +>CORBA</acronym +>, utan tillhandahålla kommunikation mellan program. </para> + +<para +>Orsaken att &MCOP; överhuvudtaget finns är att det måste fungera bra med strömmar mellan objekt. &arts; använder många små insticksmoduler, som förbinds med strömmar. <acronym +>CORBA</acronym +>-versionen av &arts; var tvungen att introducera en besvärande uppdelning mellan <quote +>SynthModule-objekt</quote +>, som var de interna arbetsmodulerna som skapade strömmar, och <quote +><acronym +>CORBA</acronym +>-gränssnitt</quote +>, som var något externt. </para> + +<para +>Mycket kod bekymrade sig om att åstadkomma att växelverkan mellan <quote +>SynthModule-objekt</quote +> och <quote +><acronym +>CORBA</acronym +>-gränssnittet</quote +> såg naturlig ut, men den gjorde aldrig det, eftersom <acronym +>CORBA</acronym +> inte kände till något alls om strömmar. &MCOP; gör det. Titta på koden (någonting i stil med <filename +>simplesoundserver_impl.cc</filename +>). Åtskilligt bättre! Strömmar kan deklareras i modulernas gränssnitt, och implementeras på ett sätt som ser naturligt ut. </para> + +<para +>Man kan inte förneka det. En av orsakerna att jag skrev &MCOP; var snabbhet. Här är några argument varför &MCOP; definitivt kommer att vara snabbare än &DCOP; (även utan att ange siffror). </para> + + +<para +>Ett anrop i &MCOP; kommer att ha ett huvud med sex <quote +>long</quote +>. Det vill säga: </para> + +<itemizedlist> +<listitem +><para +>magiskt värde <quote +>MCOP</quote +></para +></listitem> +<listitem +><para +>meddelandetyp (anrop)</para +></listitem> +<listitem +><para +>storlek på begäran i byte</para +></listitem> +<listitem +><para +>ID för begäran</para +></listitem> +<listitem +><para +>ID för målobjektet</para +></listitem> +<listitem +><para +>ID för målmetoden</para +></listitem> +</itemizedlist> + +<para +>Efter detta följer parametrarna. Observera att avkoda det här går extremt fort. Man kan använda tabelluppslagningar för att hitta avkodningsfunktionen för objektet och metoden, vilket betyder att komplexiteten är O(1) [det tar lika lång tid oberoende av hur många objekt som finns, och hur många funktioner som finns]. </para> + +<para +>Om det här jämförs med &DCOP;, ser du att det finns åtminstone </para> + +<itemizedlist> +<listitem +><para +>en sträng för målobjektet - någonting i stil med <quote +>myCalculator</quote +></para +></listitem +> +<listitem +><para +>en sträng som liknar <quote +>addNumber(int,int)</quote +> för att ange metoden</para +></listitem> +<listitem +><para +>ytterligare protokollinformation tillagd av libICE, och andra DCOP-specifika saker som jag inte känner till</para +></listitem> +</itemizedlist> + +<para +>De här är mycket svårare att avkoda, eftersom man måste tolka strängen, leta efter funktionen, etc. </para> + +<para +>Med &DCOP; skickas alla anrop genom en server (<application +>DCOPServer</application +>). Det betyder att hanteringen av ett synkront anrop ser ut så här: </para> + +<itemizedlist> +<listitem> +<para +>Klientprocessen skickar anrop. </para> +</listitem> + +<listitem> +<para +><application +>DCOPserver</application +> (mannen i mitten) tar emot anropet och ser efter vart det ska ta vägen, och skickar det till den <quote +>riktiga</quote +> servern. </para> +</listitem +> + +<listitem> +<para +>Serverprocessen tar emot anropet, utför begäran och skickar resultatet. </para> +</listitem> + +<listitem> +<para +><application +>DCOPserver</application +> (mannen i mitten) tar emot resultatet och ... skickar det till klienten. </para> +</listitem> + +<listitem> +<para +>Klienten avkodar svaret. </para> +</listitem> +</itemizedlist> + +<para +>I &MCOP; ser samma anrop ut så här: </para> + +<itemizedlist> +<listitem> +<para +>Klientprocessen skickar anrop. </para> +</listitem> + +<listitem> +<para +>Serverprocessen tar emot anropet, utför begäran och skickar resultatet. </para> +</listitem> + +<listitem> +<para +>Klienten avkodar svaret. </para> +</listitem> +</itemizedlist> + +<para +>Antag att båda är riktigt implementerade. &MCOP;:s icke-hierarkiska strategi bör vara snabbare med en faktor två, än &DCOP;:s man i mitten-strategi. Observera dock att det förstås fanns orsaker att välja &DCOP;-strategin, som är att om du har 20 program som kör, och varje program pratar med varje annat program, så behöver man 20 anslutningar med &DCOP;, och 200 med &MCOP;. I fallet med multimedia är det dock inte meningen att detta ska vara ett vanligt scenario. </para> + +<para +>Jag försökte jämföra &MCOP; och &DCOP;, med att göra ett anrop som adderar två tal. Jag ändrade testdcop för att åstadkomma detta. Testen var dock kanske inte precis på &DCOP;-sidan. Jag anropade metoden i samma process som gjorde anropet till &DCOP;, och jag visste inte hur man blev av med ett avlusningsmeddelande, så jag använde omdirigering av utmatningen. </para> + +<para +>Testen använde bara ett objekt och en funktion, så resultaten för &DCOP; förväntas minska med fler objekt och funktioner, medan resultaten för &MCOP; bör förbli likadana. Dessutom var inte <application +>dcopserver</application +>-processen ansluten till andra program, och det kanske är så att om många program är anslutna så minskar överföringsprestanda. </para> + +<para +>Resultatet jag fick var att medan &DCOP; fick lite mer än 2000 anrop per sekund, fick &MCOP; något mer än 8000 anrop per sekund. Det betyder en faktor 4. Jag vet att &MCOP; inte är avstämd för den maximalt möjliga hastigheten än. (Som jämförelse: <acronym +>CORBA</acronym +>, med mico-implementeringen, klarar något mellan 1000 och 1500 anrop per sekund). </para> + +<para +>Om du vill ha <quote +>riktigare</quote +> data, fundera på att skriva något litet mätprogram för &DCOP; och skicka det till mig. </para> + +<para +><acronym +>CORBA</acronym +> hade den trevliga funktionen att man kunde använda objekt som man implementerat, som <quote +>separat serverprocess</quote +>, eller som <quote +>bibliotek</quote +>. Man kunde använda samma kod för att göra det, och <acronym +>CORBA</acronym +> bestämde transparent vad som skulle göras. Med &DCOP;, är det inte riktigt meningen, och så vitt jag vet inte egentligen möjligt. </para> + +<para +>&MCOP; å andra sidan ska stöda detta från början. Så man kan köra en effekt inne i &artsd;. Men för en vågformseditor kan man välja att köra samma effekt inne i processen också. </para> + +<para +>Där &DCOP; i huvudsak är ett sätt att kommunicera mellan program, är &MCOP; också ett sätt att kommunicera inne i program. Särskilt för multimediaflöden är detta viktigt (eftersom man kan köra flera &MCOP;-objekt i parallell, för att lösa en multimediauppgift i ett program). </para> + +<para +>Fastän &MCOP; inte gör det för närvarande, är möjligheterna öppna att implementera servicekvalitetsfunktioner. Någonting i stil med att <quote +>den där &MIDI;-händelsen är verkligen riktigt viktig, jämfört med det här anropet</quote +>. Eller någonting som <quote +>måste vara där i tid</quote +>. </para> + +<para +>Å andra sidan kan strömöverföringar integreras i &MCOP;-protokollet på ett trevligt sätt, och kombineras med <acronym +>QoS</acronym +>-grejor. Under förutsättning att protokollet kan ändras, bör inte &MCOP; strömöverföringar verkligen bli långsammare än en konventionell <acronym +>TCP</acronym +>-ström, men de kommer att vara enklare och mer konsekventa att använda. </para> + +<para +>Det finns ingen anledning att basera mellanprogram för multimedia på &Qt;. Genom att bestämma sig för det, och använda allt de där trevliga &Qt;-strömmarna och andra saker, kan det lätt leda till att mellanprogram bara blir en sak för &Qt;-(eller i själva verket bara &kde;). Jag menar att om jag någonsin ser att GNOME också använder &DCOP;, eller någonting liknande, är det förstås bevisat att jag har fel. </para> + +<para +>Fastän jag vet att &DCOP; i grunden inte känner till de datatyper som det skickar, så att man skulle kunna använda &DCOP; utan &Qt;, se hur det används i daglig &kde;-användning: man skickar runt typer som <classname +>QString</classname +>, <classname +>QRect</classname +>, <classname +>QPixmap</classname +>, <classname +>QCString</classname +>, .... De här använder &Qt;:s-serialisering. Så om någon väljer att stöda &DCOP; i ett GNOME-program, måste han antingen ange att han använder <classname +>QString</classname +>,... typer (även om han inte gör det), och emulera sättet som &Qt; använder för strömmar, eller så skulle han skicka runt andra sträng-, pixmap- och rect-typer, och på så sätt ändå inte kunna fungera ihop med &kde;-program. </para> + +<para +>Nå, hur som helst var alltid &arts; avsett att fungera med eller utan &kde;, med eller utan &Qt;, med eller utan X11, och kanske till och med med eller utan &Linux; (och jag har inte ens några invändningar mot personer som anpassar det till operativsystem som inte är fria). </para> + +<para +>Min inställning är att komponenter som inte ingår i ett grafiskt gränssnitt ska skrivas oberoende av detta, för att möjliggöra att de delas mellan ett större antal utvecklare (och användare). </para> + +<para +>Jag inser att använda två <acronym +>IPC</acronym +>-protokoll kan vara obekvämt. Dessutom är båda två inte standardiserade. Av orsakerna som angivits ovan är det inte möjligt att byta till &DCOP;. Om det finns ett betydligt intresse av att hitta ett sätt att förena de två, så kan vi försöka. Vi skulle till och med kunna försöka få &MCOP; att prata <acronym +>IIOP</acronym +>, då skulle vi ha en <acronym +>CORBA</acronym +> <acronym +>ORB</acronym +> ;). </para> + +<para +>Jag pratade en del med Matthias Ettrich om framtiden med de två protokollen, och vi fann många sätt som saker kunde gå vidare. &MCOP; skulle till exempel kunna hantera meddelandekommunikationen i &DCOP;, och på så sätt föra protokollen närmare varandra. </para> + +<para +>Några möjliga lösningar skulle vara: </para> + +<itemizedlist> +<listitem> +<para +>Skriva en portal mellan &MCOP; och &DCOP; (vilket bör vara möjligt, och skulle möjliggöra samkörning). Observera att det finns en experimentell prototyp, om du skulle vilja arbeta med det. </para> +</listitem> + +<listitem> +<para +>Integrera allt &DCOP;-användare förväntar sig i &MCOP;, och försöka bara använda &MCOP; - man skulle kunna lägga till en <quote +>man i mitten</quote +> möjlighet i &MCOP; också ;) </para> +</listitem> + +<listitem> +<para +>Basera &DCOP; på &MCOP; istället för libICE, och långsamt börja integrera saker tätare tillsammans. </para> +</listitem> +</itemizedlist> + +<para +>Den sämsta möjligheten är kanske inte att använda varje protokoll för allt det som det var avsett för (det finns några stora skillnader i målen med deras konstruktion), och inte försöka slå ihop dem till ett. </para> + +</sect1> +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/midi.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/midi.docbook new file mode 100644 index 00000000000..f8e13ed2f60 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/midi.docbook @@ -0,0 +1,524 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="midi"> +<title +>&MIDI;</title> + +<sect1 id="midi-overview"> +<title +>Översikt</title> + +<!-- what-to-say-here: aRts has three roles + * moving midi events around between applications + * abstracting the hardware + * synthesizer --> + +<para +>&MIDI;-stödet i &arts; kan göra ett antal olika saker. För det första, tillåter det <emphasis +>kommunikation</emphasis +> mellan olika delar av programvaran som producerar eller konsumerar &MIDI;-händelser. Om du till exempel har en sequencer och en samplingsenhet som båda använder &arts;, kan &arts; skicka &MIDI;-händelser från sequencern till samplingsenheten. </para> + +<para +>För det andra, kan &arts; också hjälpa program att <emphasis +>växelverka med hårdvaran</emphasis +>. Om en programvarudel (till exempel samplingen) fungerar tillsammans med &arts;, kan den dessutom ta emot &MIDI;-händelser från ett externt &MIDI;-keyboard. </para> + +<para +>Till slut, så utgör &arts; en utmärkt <emphasis +>modulär synthesizer</emphasis +>. Den är konstruerat att göra just detta. Man kan alltså bygga instrument av små moduler med aRts-byggaren, och sedan använda instrumenten för att komponera eller spela musik. Syntes betyder inte nödvändigtvis bara ren syntes, utan det finns moduler som kan användas för att spela upp samplingar. På så sätt kan &arts; vara både en samplingsenhet eller synt, och eftersom den är fullständigt modulär, är den mycket lätt att utöka, mycket lätt att experimentera med, kraftfull och flexibel. </para> +</sect1> + +<sect1 id="midi-manager"> +<title +>&MIDI;-hanteraren</title> +<!-- what-to-say-here: + * how to use artscontrol - view midimanager + * what does autorestore do? (not yet implemented - so not yet documented) --> + +<para +>Den centrala komponenten i &arts; som håller reda på vilka program som är anslutna och hur midi-händelser ska skickas mellan dem är midi-hanteraren. För att se eller påverka vad den gör, starta artscontrol. Välj sedan <menuchoice +><guilabel +>Visa</guilabel +><guilabel +>Visa midihanterare</guilabel +> </menuchoice +> i menyn. </para> + +<para +>Till vänster ser man <guilabel +>Midi-inmatning</guilabel +>. Där listas alla objekt som skapar &MIDI;-händelser, som en extern &MIDI;-port som skickar data från ett anslutet &MIDI;-keyboard, en sequencer som spelar en sång och så vidare. Till höger ser man <guilabel +>Midi-utmatning</guilabel +>. Där listas allting som konsumerar &MIDI;-händelser, som en simulerad samplingsenhet (programvara), eller den externa &MIDI;-porten som en hårdvarusamplingsenhet är ansluten till utanför din dator. Nya program, som en sequencer eller liknande, registrerar sig själva, så att listan ändras med tiden. </para> + +<para +>Du kan ansluta ingångar och utgångar om du markerar en ingång i listan till vänster och en utgång till höger, och väljer <guilabel +>Anslut</guilabel +> med knappen nedanför. <guilabel +>Koppla från</guilabel +> fungerar på samma sätt. Du ser vad som är anslutet som små linjer mellan ingångar och utgångar, mitt i fönstret. Observera att du kan ansluta en ingång till mer än en utgång (och tvärtom). </para> + +<para +>Program (som sequencern Brahms) läggs till av sig själv när de startas och tas bort från listan när de avslutas. Men du kan också lägga till nya enheter med menyn <guilabel +>Lägg till</guilabel +>. </para> + +<variablelist> +<varlistentry> +<term +><guimenuitem +>System midi port (OSS)</guimenuitem +></term> +<listitem> +<para +>Det här skapar ett nytt &arts;-objekt som kommunicerar med en extern midi-port. </para> + +<para +>Eftersom externa midi-portar både kan skicka och ta emot data, så läggs både en ingång och utgång till med det här valet. Med &Linux;, ska du antingen ha en <acronym +>OSS</acronym +>-drivrutin (eller <acronym +>OSS</acronym +>/Free, som följer med &Linux;-kärnan) eller en <acronym +>ALSA</acronym +>-drivrutin installerad för ditt ljudkort, för att det här ska fungera. Du blir tillfrågad om enhetens namn. Det här är oftast <filename class="devicefile" +>/dev/midi</filename +> eller <filename class="devicefile" +>/dev/midi00</filename +>. </para> + +<para +>Om du har mer än en &MIDI;-enhet eller en &MIDI;-återkopplingsenhet installerad, kan det dock finnas fler alternativ. För att visa information om midi-portar, starta inställningscentralen, och välj <menuchoice +><guilabel +>Information</guilabel +> <guilabel +>Ljud</guilabel +></menuchoice +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>aRts syntes midi utmatning</guimenuitem +></term> +<listitem> +<para +>Det här lägger till en ny &MIDI;-utgång med ett &arts; syntinstrument. Om du väljer menyalternativet, dyker en dialogruta upp som låter dig ange ett instrument. Du kan skapa nya instrument med aRts-byggaren. Alla <literal role="extension" +>.arts</literal +>-filer med ett namn som börjar med <filename +>instrument_</filename +> visas här. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="brahms"> +<title +>Att använda &arts; & Brahms</title> + +<para +>I själva verket är det riktigt lätt att komma igång. Du behöver en version av Brahms som fungerar med &kde; 2.1, som finns i <literal +>kmusic</literal +> <acronym +>CVS</acronym +>-modulen. Det finns också information om hur man skaffar &brahms; på <ulink url="http://www.arts-project.org/" +>aRts hemsida</ulink +> i avsnittet om nerladdning. </para> + +<para +>När du har startat programmet, syns det i &MIDI;-hanteraren. Om du vill använda syntes, lägg helt enkelt till ett &MIDI;-instrument med <menuchoice +><guilabel +>Lägg till</guilabel +><guilabel +>aRts syntes midi utmatning</guilabel +></menuchoice +>. </para> + +<para +>Välj ett instrument (till exempel <guilabel +>organ2</guilabel +>). Anslut instrumentet med knappen <guilabel +>Anslut</guilabel +>. Därefter kan du börja komponera i &brahms;, och resultatet syntetiseras med &arts;. </para> + +<para +>Det är oftast en god ide att ha &artscontrol;-fönstret öppet, och se till att volymen inte är för hög (ljudkvaliteten blir sämre när staplarna når den övre gränsen). Nu kan du börja skriva en ny &arts; demo, och när du är klar kan du få den publicerad 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 +> är ett litet program som låter dig skicka &MIDI;-händelser från skalet. Det registreras som en klient precis som alla andra program. Det enklaste sättet att använda det är att skriva <screen +><prompt +>%</prompt +> <userinput +><command +>midisend</command +> <option +>-f</option +> <parameter +><replaceable +>/dev/midi00</replaceable +></parameter +></userinput +> </screen +> som gör ungefär samma sak som att lägga till en &MIDI;-port i &artscontrol;. (Inte riktigt, därför att <command +>midisend</command +> skickar bara händelser). Skillnaden är att det är till exempel lätt att starta <command +>midisend</command +> på olika datorer (och på det sättet använda nätverkstransparens). </para> + +<para +>Det är också möjligt att låta <command +>midisend</command +> skicka data från <filename class="devicefile" +>stdin</filename +>, vilket du kan använda för att skicka data från program som inte stöder &arts;, så här: <screen +><prompt +>%</prompt +> <userinput +><command +><replaceable +>program_som_skickar_MIDI_händelser_på_standardutmatning</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 +>Att skapa instrument</title> + +<para +>Sättet som &arts; utför midi-syntes är följande: Det finns strukturer som har ett antal ingångar, där de hämtar frekvensen, anslagsstyrkan (volymen) och en parameter som anger om tangenten fortfarande är nertryckt. Strukturen ska nu syntetisera exakt den tonen med den volymen, och reagera på parametern pressed (där pressed = 1 betyder att användaren håller nere tangenten och pressed = 0 betyder att användaren har släppt tangenten). </para> + +<para +>När &MIDI;-händelser anländer, skapar &arts; nya strukturer för tonerna efter behov, anger parametrarna, och rensar bort dem när de är klara. </para> + +<para +>För att skapa och använda en sådan struktur, ska du göra följande: </para> + +<itemizedlist> +<listitem> +<para +>För att komma igång är det bekvämaste sättet att öppna <filename +>template_Instrument.arts</filename +> i Arts-byggaren. </para> + +<para +>Det här kan åstadkommas genom att använda <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Öppna exempel...</guimenuitem +></menuchoice +> och välja <guimenuitem +>template_Instrument</guimenuitem +> i fildialogrutan. Det här skapar en tom struktur med de nödvändiga parametrarna, som du bara behöver <quote +>fylla i</quote +>. </para> +</listitem> + +<listitem> +<para +>För att hantera parametern "pressed", är det praktiskt att använda Synth_ENVELOPE_ADSR, eller om en wav-fil med trumma spelas, spela bara upp den ändå och ignorera parametern. </para> +</listitem> + +<listitem> +<para +>Strukturen ska indikera när den inte behövs längre med utgången <quote +>done</quote +>. Om done är <returnvalue +>1</returnvalue +>, antar &arts; att strukturen kan tas bort. Praktiskt nog så tillhandahåller ADSR-enveloppen en parameter som anger när den är färdig, så du behöver bara ansluta den till done-utgången för strukturen. </para> +</listitem> + +<listitem> +<para +>Du bör döpa om din struktur till något namn som börjar med <filename +>instrument_</filename +>, som <filename +>instrument_piano.arts</filename +> - du bör spara filen med samma namn i katalogen <filename class="directory" +>$<envar +>HOME</envar +>/arts/structures</filename +> (där aRts-byggaren normalt sparar filer). </para> +</listitem> + +<listitem> +<para +>Till sist, när du väl har sparat den, kan du använda den med &artscontrol; i &MIDI;-hanteraren.</para> +</listitem> + +<listitem> +<para +>Och din struktur ska förstås spela ljuddata som den skapar via vänster och höger utgång för strukturen, som sedan spelas med ljudhanteraren (du kan se det här i &artscontrol;), så att du till slut kan höra ljudet (eller efterbehandla det med ljudeffekter). </para> +</listitem> +</itemizedlist> + +<para +>Ett bra sätt att lära sig hur man skapar instrument är att öppna ett befintligt instrument med <menuchoice +><guilabel +>Arkiv</guilabel +><guilabel +>Öppna Exempel</guilabel +> </menuchoice +> och se hur det fungerar ;) </para> +</sect1> + +<sect1 id="mapped-instruments"> +<title +>Instrumentkartor</title> + +<para +>Instrumentkartor är instrument som beter sig olika beroende på tonhöjden, programmet, kanalen eller anslagsstyrkan. Man kan till exempel skapa ett piano med fem oktaver, och använda en sampling för varje oktav (med tonhöjden förskjuten i motsvarande mån). Det här låter mycket bättre än att bara använda en sampling. </para> + +<para +>Man kan också bygga en trumkarta, som spelar en särskild trumsampling för varje tangent. </para> + +<para +>Till sist är det mycket användbart om man kombinerar helt olika ljud i en instrumentkarta för olika program. På det här sättet kan man använda sin sequencer, externa keyboard eller en annan &MIDI;-källa för att byta mellan ljud utan att behöva manipulera &arts; under arbetets gång. </para> + +<para +>Ett bra exempel på det här är <filename +>arts_all</filename +>, som helt enkelt kombinerar alla instrument som levereras med &arts; i en karta. På så sätt behöver man bara ange att detta <quote +>instrument</quote +> ska användas en gång i &artscontrol;, och sedan kan man komponera en hel sång i en sequencer utan att överhuvudtaget bry sig om &arts;. Behövs ett annat ljud? Ändra helt enkelt programmet i sequencern, och &arts; tillhandahåller ett nytt ljud. </para> + +<para +>Att skapa sådana kartor är ganska rättframt. Man behöver bara skapa en textfil, och skriva regler som ser ut så här: </para> + +<programlisting +>ON <replaceable +>[ villkor ...]</replaceable +> DO structure=<replaceable +>någon_struktur</replaceable +>.arts +</programlisting> + +<para +>Villkoren kan vara ett eller flera av följande: </para> + +<variablelist> + +<varlistentry> +<term +><option +>pitch</option +></term> + +<listitem> +<para +>Tonhöjden som spelas. Man använder det här om man vill dela instrumentet beroende på tonhöjd. I vårt ursprungliga exempel, skulle ett piano som använder olika samplingar för olika oktaver använda det här som villkor. Man kan ange en enkel tonhöjd, som <userinput +><option +>pitch</option +>=<parameter +>62</parameter +></userinput +> eller ett intervall av tonhöjder, som <userinput +><option +>pitch</option +>=<parameter +>60</parameter +>-<parameter +>72</parameter +></userinput +>. De möjliga tonhöjderna går mellan <parameter +>0</parameter +> och <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>program</option +></term> +<listitem> +<para +>Programmet som är aktivt på kanalen som tonen spelas upp i. Oftast låter sequencern dig välja <quote +>instrument</quote +> via programinställningen. Enkla program eller intervall är tillåtna, dvs. <userinput +><option +>program</option +>=<parameter +>3</parameter +></userinput +> eller <userinput +><option +>program</option +>=<parameter +>3</parameter +>-<parameter +>6</parameter +></userinput +>. Möjliga program går mellan <parameter +>0</parameter +> och <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>channel</option +></term> +<listitem> +<para +>Kanalen som tonen skickas på. Enkla kanaler eller intervall är tillåtna, dvs. <userinput +><option +>channel</option +>=<parameter +>0</parameter +></userinput +> eller <userinput +><option +>channel</option +>=<parameter +>0</parameter +>-<parameter +>8</parameter +></userinput +>. Möjliga kanaler går mellan <parameter +>0</parameter +> och <parameter +>15</parameter +>. </para> +</listitem> + +</varlistentry> +<varlistentry> +<term +><option +>velocity</option +></term> +<listitem> +<para +>Anslagsstyrkan (volymen) som tonen har. Enkla anslagsstyrkor (vem skulle använda det?) eller intervall är tillåtna, dvs. <userinput +><option +>velocity</option +>=<parameter +>127</parameter +></userinput +> eller <userinput +><option +>velocity</option +>=<parameter +>64</parameter +>-<parameter +>127</parameter +></userinput +>. Möjliga anslagsstyrkor går mellan <parameter +>0</parameter +> och <parameter +>127</parameter +>. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Ett fullständigt exempel för en karta kan vara (det här kommer från den nuvarande <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äljs strukturen beroende på programmet. För program 11, syns en <quote +>trumkarta</quote +> (med två poster), som spelar en <quote +>deepdrum</quote +> med C-5 (tonhöjd = 60), och en <quote +>chirpdrum</quote +> med C#5 (tonhöjd = 61). </para> + +<para +>För att kartfiler automatiskt ska synas i &artscontrol; som ett alternativ bland instrumenten, måste de heta <filename +>instrument_<replaceable +>någonting</replaceable +>.arts-map</filename +> och antingen finnas i din hemkatalog i <filename class="directory" +>$<envar +>HOME</envar +>/arts/structures</filename +>, eller i &kde;-katalogen i <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/artsbuilder/examples</filename +>. Strukturer som används av kartan kan antingen anges med en absolut sökväg, eller relativt till katalogen som kartfilen finns i. </para> + +<para +>Att utöka arts_all map eller till och med göra en fullständigt generell &MIDI;-karta för &arts; är en bra idé för att göra &arts; lättare att använda direkt som det är. Fundera gärna på att bidra med intressanta instrument som du skapar, så att de kan inkluderas i framtida versioner av &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-sv/docs/tdemultimedia/artsbuilder/midiintro.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/midiintro.docbook new file mode 100644 index 00000000000..b03d13181bd --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/midiintro.docbook @@ -0,0 +1,16 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<appendix id="midi-introduction"> + +<title +>Introduktion till <acronym +>MIDI</acronym +></title> + +<para +>Ännu inte skrivet. </para> + +</appendix> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/modules.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/modules.docbook new file mode 100644 index 00000000000..16f789108e6 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/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 +>Inledning</title> + +<para +>Det här kapitlet beskriver alla standardmodulerna i &arts;. En av de mest kraftfulla funktionerna i &arts; är att moduler kan kopplas ihop till strukturer som implementerar nya funktioner som ljudeffekter och instrument. </para> + +<para +>Moduler delas upp i två kategorier. Syntesmoduler används för att implementera <quote +>rörmokeriet</quote +> som manipulerar multimediadataflöden för att skapa nya effekter, instrument, mixrar och program. Visuella moduler låter dig skapa ett grafiskt gränssnitt för att styra ljudstrukturer som byggs upp med syntesmodulerna. </para> + +</sect1> + +<sect1 id="synth-modules-reference"> +<title +>Referens till syntesmoduler</title> + + +<sect2 id="mcat-synth-arithmetic-mixing"> +<title +>Aritmetik + mixning</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 +>Den här adderar två 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 +>Den här multiplicerar signalen med en faktor. Du kan använda det här för att skala ner (0 < faktor < 1) eller upp (faktor > 1) signaler eller invertera signaler (faktor < 0). Observera att faktorn kan vara en signal och behöver inte vara konstant (t.ex. envelopper eller flyttalssignaler). </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 +>Den här dividerar signalen med en faktor. Du kan använda det här för att dividera en signal med en annan, eller ange invärde1 som 1, så får du inversen av invärde2 som utvärde. Försäkra dig om att invärde2 aldrig når 0, annars får du problem med division med noll. </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 +>Den här adderar ett godtyckligt antal signaler. Om du behöver summera vågformer som skapas av fyra olika oscillatorer, kan du till exempel ansluta alla deras utgångar till en Synth_MULTI_ADD-modul. Det här är effektivare än att använda 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 +>Den här övertonar två signaler. Om procentingången är -1, hörs bara vänstra signalen, om den är 1, hörs bara den högra. Om den är 0, hörs båda signalerna med samma volym. </para> + +<para +>Den här gör att du kan försäkra dig om att signalen stannar inom ett väldefinierat område. Om du har två signaler som är mellan -1 och 1 innan övertoningen, kommer de att vara i samma område efteråt. </para> +</sect3> + +<sect3 id="mref-synth-autopanner-sect"> +<title +>Synth_AUTOPANNER</title> +<anchor id="mref-synth-autopanner"/> + +<para +>Motsatsen till övertoning. Den här tar en monosignal och delar den till en stereosignal. Den används för att automatiskt panorera insignalen mellan vänster och höger utgång. Det här gör mixningen mer levande. En standardtillämpning kan vara en gitarr- eller sololjud. </para> + +<para +>Anslut en <acronym +>LFO</acronym +>, till exempel en sinus eller sågtandsvåg till inlfo, och välj en frekvens mellan 0,1 och 5 Hz för att få en traditionell effekt eller ännu mer för specialeffekter (<acronym +>FX</acronym +>). </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-busses"> +<title +>Bussar</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 +>En upplänk till en buss. Ange signaler till vänster och höger, och namnet på bussen som data ska skickas till på <quote +>buss</quote +> porten. Den kombinerade signalen från alla upplänkar med det här namnet hamnar på varje nerlänk på den <quote +>bussen</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 +>Hämtar (summan av) all data som skickas på en viss buss (med namnet du anger på <quote +>buss</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 +>Fördröjningar</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 +>Den här fördröjer insignalen en viss tid. Tidsangivelsen måste vara mellan 0 och maxdelay för en fördröjning mellan 0 och maxdelay sekunder. </para> + +<para +>Den här sortens fördröjning <emphasis +>kan inte användas</emphasis +> i återmatningsstrukturer. Det här beror på att det är en varierbar fördröjning. Det går att ändra längden medan den kör, och även sätta den till noll. Men eftersom den egna utgången behövs för att beräkna nästa sampling i en återmatningsstruktur, kan en fördröjning med ett värde som kan gå ner till noll under syntes leda till en låsningssituation. </para> + +<para +>Använd CDELAY:er i sådana situationer, eller kombinera en kort konstant fördröjning (av 0,001 sekunder) med en variabel fördröjning. </para> + +<para +>Man kan också kombinera en CDELAY och en DELAY för att åstadkomma en fördröjning med variabel längd i en återkoppling. Försäkra dig bara om att du har med en CDELAY. </para> + +</sect3> + +<sect3 id="mref-synth-cdelay-sect"> +<title +>Synth_CDELAY</title> +<anchor id="mref-synth-cdelay"/> + +<mediaobject> +<imageobject +><imagedata fileref="images/Synth_CDELAY.png" +format="PNG"/></imageobject> +<textobject +><phrase +>Synth_CDELAY</phrase +></textobject> +</mediaobject> + +<para +>Den här fördröjer insignalen en viss tid. Tidsangivelsen måste vara större än 0 för en fördröjning av 0 sekunder eller mer. Fördröjningen är konstant under beräkningen, vilket betyder att den inte kan ändras. </para> + +<para +>Det här sparar beräkningstid eftersom ingen interpolation görs, och är användbart för rekursiva strukturer. Se beskrivningen ovan (Synth_DELAY). </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-envelopes"> +<title +>Envelopper</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 +>Den här är ett klassiskt <acronym +>ADSR</acronym +>-envelopp, som betyder att du anger: </para> + +<variablelist> +<varlistentry> +<term +>active</term> +<listitem> +<para +>Om användaren håller nere tangenten just nu. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>invalue</term> +<listitem> +<para +>Insignalen. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>attack</term> +<listitem> +<para +>Tiden som ska förflyta mellan användaren trycker på tangenten och signalen når sin maximala amplitud (i sekunder). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>decay</term> +<listitem> +<para +>Tiden som ska förflyta mellan signalen nått sin maximala amplitud och signalen går tillbaka till någon konstant nivå (i sekunder). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>sustain</term> +<listitem> +<para +>Den konstanta nivån som hålls för signalen efteråt, till användaren släpper tangenten. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>release</term> +<listitem> +<para +>Tiden som ska förflyta efter användaren har släppt tangenten till signalen går ner till noll (i sekunder). </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Du får den behandlade signalen som utvärde. När <acronym +>ASDR</acronym +>-enveloppen är klar, sätter den done till 1. Du kan använda det här för att tillhandahålla utgången <quote +>done</quote +> för ett instrument (som gör att instrumentstrukturen tas bort av &MIDI;-reläobjektet när ljudet väl har upphört). </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 +>Modulen Synth_PSCALE anpassar ljudflödet som skickas genom den från volymen 0 (tyst) till 1 (ursprunglig volym) tillbaka till 0 (tyst), enligt positionen (hämta positionen från en Synth_SEQUENCE). Positionen där toppen ska vara kan anges som top. </para> + +<para +>Att till exempel sätta top till 0,1 betyder att efter 10 % av tonen har spelats, har volymen nått maximalt värde, och börjar sedan avta. </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 +>Det här är en efterklangseffekt. I den nuvarande implementeringen är det tänkt att skicka en stereosignal genom modulen, och den lägger till efterklangseffekten i signalen. </para> + +<note> +<para +>Det här betyder att den också kan användas inne i en StereoEffectStack. </para> +</note> + +<para +>Insignalen ska anslutas till (inleft, inright), och utsignalen blir (outleft, outright). </para> + +<para +>Parametrarna som du kan ställa in är: </para> + +<variablelist> +<varlistentry> +<term +>roomsize</term> +<listitem> +<para +>Storleken på rummet som efterklangseffekten simulerar (område: 0 .. 1, där 1 är det största möjliga rummet). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>damp</term> +<listitem> +<para +>Det här anger ett filter som gör att det simulerade rummet absorberar höga frekvenser (område 0 .. 1, där 1 betyder absorbera höga frekvenser i stor utsträckning). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>wet</term> +<listitem> +<para +>Storleken på efterklangsignalen (dvs. den del av signalen som ska ändras av filtret, och orsaka ett <quote +>vått</quote +> ljud, dvs. ett <quote +>efterklangsljud</quote +>). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>dry</term> +<listitem> +<para +>Storleken på ren signal som skickas igenom, som orsakar ett eko (eller kombinerad fördröjning) istället för 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 +>Storleken på utökad stereoeffekt som efterklangsalgoritmen lägger till i efterklangseffekten, för att göra efterklangsljudet bredare i stereoljudbilden (område 0 .. 1). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mode</term> +<listitem> +<para +>[ATT GÖRA: Jag tror att om mode är 1, behåller efterklangen den nuvarande ljudbilden för ljudet, medan 0 är 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 +>Tremolomodulen modulerar amplituden enligt en <acronym +>LFO</acronym +>-vågform. Traditionellt använder man en sinusvåg, men varför begränsa sig? Vad man får är en mycket intensiv effekt som skär igenom de flesta arrangemang på grund av sitt stora dynamiska omfång. Tremoloeffekten är fortfarande en favoriteffekt bland gitarrister, även om den inte är så populär som på 1960-talet. </para> + +<para +>[ATT GÖRA: för närvarande implementeras detta som invalue + abs(inlfo) - kanske skulle det vara vettigare att implementera det som invalue * (1+inlfo*depth), där depth skulle vara en parameter mellan 0 .. 1 - det här bestäms efter &kde;2.1. Om du har en kommentar, skicka e-post till &arts; e-postlista ;). ] </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 fläns är en tidsvariabel fördröjningseffekt. För att göra utveckling av komplexa flänseffekter enklare, tillhandahålls den här modulen som innehåller kärnan av en enkanals flänsenhet. </para> + +<para +>Den har följande portar:</para> + +<variablelist> +<varlistentry> +<term +>invalue</term> +<listitem> +<para +>Signalen som du vill behandla. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>lfo</term> +<listitem> +<para +>Helst en sinusvåg som modulerar fördröjningstiden inne i flänsen (-1 .. 1). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mintime</term> +<listitem> +<para +>Minimala värdet för tiden inne i flänsen i millisekunder. Föreslagna värden: försök med något nära 1 ms. Använd helst värden < 1000 ms. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>maxtime</term> +<listitem> +<para +>Maximala värdet för tiden inne i flänsen i millisekunder. Föreslagna värden: försök med något nära 5 ms. Använd helst värden < 1000 ms. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>outvalue</term> +<listitem> +<para +>Utsignalen. Det är viktigt att du blandar den här med originalsignalen (innan flänsen) för att få den önskade effekten. </para> +</listitem> +</varlistentry> +</variablelist> + +<tip> +<para +>Du kan använda den här som en grund för köreffekter. </para> +</tip> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-filters"> +<title +>Filter</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 +>Den här tonhöjdsförändrande effekten ändrar frekvensen på insignalen utan att påverka hastigheten. En tillämpning av detta är att till exempel ändra tonhöjden på din röst medan du spelar in (och spelar upp) den i realtid. </para> + +<para +>Parametern <emphasis +>speed</emphasis +> är den relativa hastigheten som signalen spelas upp med. Så att med hastigheten två blir ljudet dubbelt så högt (dvs. en infrekvens på 440 Hz ger en utfrekvens på 880 Hz). </para> + +<para +>Parametern <emphasis +>frequency</emphasis +> används internt för att ändra mellan olika kornighet i signalen. Den är anpassningsbar, och beroende på valet kommer tonhöjdsförändringen låta mer eller mindre realistisk vid en viss användning. Ett bra värde att börja med är någonting 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 +>Filtrerar bort alla frekvenser över klippningsfrekvensen. </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 +>Den här modulen klipper en signal så att den passar i området [-1;1]. Den gör ingenting för att begränsa distorsionen som uppstår när en stark signal klipps av. Man kan använda det här som en ljudeffekt (till exempel för att skapa en något avklippt sinusvåg). Det är dock oftast en god idé att låta signalen gå genom ett lågpassfilter efteråt om du gör detta, för att få ljudet att låta mindre skärande. </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 +>Den här är ett trevligt byggblock för en parametriserbar tonkontroll. Dess parametrar är: </para> + +<variablelist> +<varlistentry> +<term +>Invärde, utvärde</term> +<listitem> +<para +>Signalen som filtreras av tonkontrollen. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>low</term> +<listitem> +<para +>Hur låga frekvenser ska ändras. Värdet anges i dB, medan 0 betyder att låga frekvenser inte ska ändras, skulle -6 betyda att de dämpas med 6 dB, och +6 betyder öka dem med 6 dB. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>mid</term> +<listitem> +<para +>Hur mittfrekvenser ska ändras av tonkontrollen i dB (se low). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>high</term> +<listitem> +<para +>Hur höga frekvenser ska ändras av tonkontrollen i dB (se low). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>frekvens</term> +<listitem> +<para +>Det här är mittfrekvensen för tonkontrollen i Hz, mittfrekvensen befinner sig omkring detta spektrum, med de låga och höga frekvenserna nedanför och ovanför. Observera att frekvensen inte kan vara högre än halva samplingsfrekvensen, oftast är den 22050 Hz, och inte lägre än 1 Hz. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>q</term> +<listitem> +<para +>Det här påverkar hur brett mittspektrat är. Det måste vara ett positivt tal > 0. Värdet ett är rimligt, högre värden på q betyder ett smalare spektrum av mittfrekvenser. Lägre värden än ett betyder ett bredare 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 +>Ett dämpat resonansfilter som filtrerar alla frekvenser omkring något högsta värde. Det finns inget användbart sätt att ange en mittfrekvens (som inte skulle klippas), eftersom indata är två underliga konstanter f och b. Koden är mycket gammal, från synthesizerns tidigaste dagar, och kommer troligen att bytas ut mot ett nytt filter som har en frekvens och ett resonansvärde som parametrar. </para> + +<para +>Försök med något som liknar b=5, f=5 or b=10, f=10 or b=15, f=15 i alla fall. </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 +>Filtrerar bort alla frekvenser ovanför klippningsfrekvensen (det är ett 24 dB fyrpoligt filter, som filtrerar 24 dB per oktav ovanför klippningsfrekvensen), men tillhandahåller en ytterligare parameter för att anpassa filtrets resonans, där 0 betyder ingen resonans och 4 betyder självsvängning. </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-midi-sequencing"> +<title +>Midi + sekvensiering</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 +>Den här modulen laddar en instrumentstruktur från en fil, och registrerar sig som en midi-utgång med &arts; &MIDI;-hanterare. Toner som skickas till den här utgången gör att instrumentröster skapas. </para> + +<note> +<para +>Du kan ställa in något sådant här på ett bekvämare sätt i &artscontrol; istället för manuellt i aRts-byggaren. </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 +>Spelar en sekvens av toner om och om igen. Tonerna anges i spårnotation, och separeras av semikolon. Ett exempel är <literal +>A-3;C-4;E-4;C-4;</literal +>. Hastigheten anges som sekunder per ton, så om du vill ange 120 slag per minut, anger du troligen 0,5 sekunder/ton, som 60 sekunder/0,5 sekunder per ton = 120 slag per minut. </para> + +<para +>Du kan ge varje ton en längd i förhållande till hastigheten genom att använda ett kolon efter tonen följt av längden. <literal +>A-3:2;C-4:0.5;D-4:0.5;E-4;</literal +> visar detta. Som du kan se, tenderar midi-tonsättningsprogram att ge mer bekvämlighet ;) </para> + +<para +>Synth_SEQUENCE ger ytterligare information om positionen för tonen som spelas just nu, där 0 betyder precis påbörjad och 1 betyder avslutad. Den här informationen kan man använda med Synth_PSCALE (se nedan). </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 +>Den här modulen fungerar precis som Synth_SEQUENCE, med den enda skillnaden att du inte skriver in notnamn utan frekvenser. </para> + +</sect3> + +</sect2> + +<sect2 id="mcat-synth-samples"> +<title +>Samplingar</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 +>Den här spelar en <literal role="extension" +>wav</literal +>-fil. Den är bara tillgänglig om du har libaudiofile på datorn. Vågformsfilen spelas så fort modulen skapas. </para> + +<para +>Den stannar så fort den är klar, och done sätts till 1. Hastighetsparametern kan användas för att spela upp filen snabbare eller långsammare, där 1.0 är den normala (inspelade) hastigheten. </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 +>Ljud-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 inte den här modulen, om man inte skriver självständiga program. Inne i &artsd;, finns det redan en Synth_PLAY modul, och att skapa en till fungerar inte. </para> +</important> + +<para +>Modulen Synth_PLAY-matar ut ljudsignalen till ljudkortet. Vänster och höger kanal ska innehålla <emphasis +>normaliserad</emphasis +> indata för kanalerna. Om indata inte är mellan -1 och 1, får man klippning. </para> + +<para +>Som redan har nämnts, får det bara finnas en Synth_PLAY modul, eftersom den direkt kommer åt ljudkortet. Använd bussar för att blanda ihop mer än ett ljudflöde innan uppspelning. Använd modulen Synth_AMAN_PLAY för att få något som liknar en utmatning inne i &artsd;. </para> + +<para +>Observera att Synth_PLAY också kontrollerar tidbasen för hela strukturen. Det här betyder: ingen Synth_PLAY = ingen källa för tidbas = inget ljud. Så det behövs (exakt) ett 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 inte den här modulen, om man inte skriver självständiga program. Inne i artsd, finns det redan en Synth_RECORD modul, och att skapa en till fungerar inte. </para> +</important> + +<para +>Modulen Synth_RECORD spelar in en signal från ljudkortet. Vänster och höger kanal innehåller indata för kanalerna (mellan -1 och 1). </para> + +<para +>Som redan har nämnts, får det bara finnas en Synth_RECORD modul, eftersom den direkt kommer åt ljudkortet. Använd bussar för att använda det inspelade ljudflödet på mer än ett ställe. Använd modulen Synth_AMAN_RECORD för att få något som liknar en ingång inne i artsd. För att det här ska fungera måste &artsd; köra <emphasis +>med full duplex aktiverad</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 +>Modulen Synth_AMAN_PLAY-matar ut ljudsignalen. Det är bra (men inte nödvändigt) att utdata är en normaliserad signal (mellan -1 och 1). </para> + +<para +>Den här modulen använder ljudhanteraren för att ange var signalen spelas upp. Ljudhanteraren kan styras genom &artscontrol;. För att göra det mer intuitivt att använda, är det bra att namnge signalen som spelas upp. Det kan åstadkommas genom att ange <emphasis +>title</emphasis +>. En annan funktion i ljudhanteraren är att kunna komma ihåg var en signal spelades upp sist. För att kunna göra det här måste den kunna skilja på signaler. Därför ska man ange något unikt värde för <emphasis +>autoRestoreID</emphasis +> också. </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 +>Modulen Synth_AMAN_RECORD-spelar in en ljudsignal från en extern källa (dvs linje in/mikrofon) inne i &artsd;. Utdata kommer att vara en normaliserad signal (mellan -1 och 1). </para> + +<para +>Den här modulen använder ljudhanteraren för att ange var signalen spelas upp. Ljudhanteraren kan styras genom artscontrol. För att göra det mer intuitivt att använda, är det bra att namnge signalen som spelas upp. Det kan åstadkommas genom att ange <emphasis +>title</emphasis +>. En annan funktion i ljudhanteraren är att kunna komma ihåg var en signal spelades in sist. För att kunna göra det här måste den kunna skilja på signaler. Därför ska man ange något unikt värde för <emphasis +>autoRestoreID</emphasis +> också. </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 +>Modulen Synth_CAPTURE skriver en ljudsignal till en vågformsfil på hårddisken. Filen heter alltid <filename +>/tmp/mcop-<replaceable +>användarnamn</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 +>Den här gör ingenting. Den är mycket användbar 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 använda den här för avlusning. Den skriver ut värdet för signalen invalue med regelbundna intervall (cirka 1 sekund), tillsammans med kommentaren som angivits. På det här sättet kan man ta reda på om vissa signaler förblir inom vissa områden, eller om de finns överhuvudtaget. </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 använda den här för att avlusa hur &MIDI;-händelser verkligen kommer in i &arts;. </para> + +<para +>När en MIDI_DEBUG kör, skriver &artsserver; ut rader 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örsta raden talar om att 100753 ms (dvs. 100 sekunder) efter MIDI_DEBUG startade, kom en &MIDI;-händelse "on" på kanal 0. Den här midi-händelsen hade anslagsstyrkan (volymen) 127, den högsta möjliga. Nästa rad visar midi-händelsen när tangenten släpps. [ATT GÖRA: det här fungerar inte för närvarande, få det att fungera, och gör det via &MIDI;-hanteraren]. </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 +>Det här skapar en signal med ett konstant värde. </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 inte en frekvens som indata, utan istället en position i vågformen. Positionen ska vara mellan 0 och 1, som i ett standardobjekt Synth_WAVE_SIN översätts till området 0 .. 2*Pi. För att skapa oscillerande värden från en frekvens, används en 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 +>Den här används för frekvensmodulering. Ange frekvensen med ingången frequency och anslut en annan signal till moduleringsingången. Ställ därefter in modlevel till någonting, säg 0,3. Frekvensen moduleras sedan med moduleringen. Prova det. Fungerar bra om man lägger till en återkoppling, vilket betyder att man tar en kombination av den fördröjda utsignalen från Synth_FM_SOURCE (man måste skicka det till en oscillator eftersom den bara fungerar som Synth_FREQUENCY) och någon annan signal för att få bra resultat. </para> + +<para +>Fungerar bra tillsammans med Synth_WAVE_SIN oscillatorer. </para> +</sect3> + +</sect2> + +<sect2 id="mcat-synth-waveforms"> +<title +>Vågformer</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. Ange en pos signal från Synth_FREQUENCY eller Synth_FM_SOURCE som insignal, och få en sinusvåg som utsignal. Signalen pos anger positionen i vågformen, området 0 .. 1 omvandlas till 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 +>Triangelvågsoscillator. Ange en pos signal från Synth_FREQUENCY eller Synth_FM_SOURCE som insignal, och få en triangelvåg som utsignal. Signalen pos anger positionen i vågformen, området 0 .. 1 omvandlas till 0 .. 2*Pi internt. Var försiktig. Insignalen <emphasis +>måste</emphasis +> vara i området 0 .. 1 för att utsignalen ska ge bra 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 +>Brusgenerator. Den här skapar en slumpmässig signal mellan -1 och 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 +>Fyrkantvågsoscillator. Ange en pos signal från Synth_FREQUENCY eller Synth_FM_SOURCE som insignal, och få en fyrkantvåg som utsignal. Signalen pos anger positionen i vågformen, området 0 .. 1 omvandlas till 0 .. 2*Pi internt. Var försiktig. Insignalen <emphasis +>måste</emphasis +> vara i området 0 .. 1 för att utsignalen ska ge bra 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 +>Mjuk sågtandsvåg, som liknar Synth_WAVE_TRI oscillatorn till utseende. Ange en pos signal från Synth_FREQUENCY eller Synth_FM_SOURCE som insignal, och få en mjuk sågtandsvåg som utsignal. Signalen pos anger positionen i vågformen, området 0 .. 1 omvandlas till 0 .. 2*Pi internt. Var försiktig. Insignalen <emphasis +>måste</emphasis +> vara i området 0 .. 1 för att utsignalen ska ge bra 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. Andemeningen med den här modulens liknar den rektangulära oscillatorn (Synth_WAVE_RECT), men den tillhandahåller ett anpassningsbart upp/ner-förhållande, genom parametern <emphasis +>dutycycle</emphasis +>. Ange en pos signal från Synth_FREQUENCY eller Synth_FM_SOURCE som insignal, och få en pulsvåg som utsignal. Signalen pos anger positionen i vågformen, området 0 .. 1 omvandlas till 0 .. 2*Pi internt. Var försiktig. Insignalen <emphasis +>måste</emphasis +> vara i området 0 .. 1 för att utsignalen ska ge bra 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 +>Den här modulen reducerar det dynamiska omfånget hos en signal. Reduktion är till exempel användbart för att kompensera för de stora variationer i ljudstyrka när någon pratar i en mikrofon. </para> + +<para +>Så fort indatanivån överstiger en viss nivå (tröskeln) så reduceras signalen. Den multiplicerar helt enkelt allt ovanför tröskeln med ratio, som ska vara ett värde mellan 0 och 1. Till sist multipliceras hela signalen med utdatafaktorn. </para> + +<para +>Argumenten attack och release fördröjer starten och slutet på reduktionen. Använd det här om du till exempel fortfarande vill höra den starka början av en bastrumma. Argumenten anges i millisekunder, och en attack eller release på 0 ms är möjlig, men kan resultera i ett visst brus. </para> + +</sect3> +</sect2> +</sect1> + +<sect1 id="visual-modules-reference"> +<title +>Referens till visuella moduler</title> + +<para +>ATT GÖRA när visuella moduler är "färdigare". </para> +</sect1> + +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/porting.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/porting.docbook new file mode 100644 index 00000000000..4cec99f2c2b --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/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 +>Ändra program för att passa &arts;</title> + +<sect1 id="using-artsdsp"> +<title +>Att använda &artsdsp;</title> + +<para +>Verktyget &artsdsp;, <link linkend="artsdsp" +>tidigare beskrivet</link +>, låter de flesta äldre ljudprogram som pratar direkt med ljudenheter fungera riktigt med &arts;. Program som är skrivna för att använda Enlightenment Sound Daemon (<application +>esd</application +>) fungerar också i de flesta fall genom att köra <application +>esd</application +> med &artsdsp;. </para> + +<para +>Det här ger en bra lösning på kort sikt för att ändra befintliga program för &kde;. Det här låter dock inte programmet direkt dra nytta av hela &arts; kraftfulla funktioner, som att använda moduler och andra multimediatyper än digitalljud. Om programmet gör mer än att bara helt enkelt spela ljudfiler, är det oftast vettigt att lägga till inbyggt stöd för &arts; i programmet. </para> + +<para +>Att använda &arts; betyder också att programmet inte behöver göra så mycket arbete - det kan dra nytta av funktioner i &arts; för att hantera saker som kodning för olika mediaformat och kontroll av ljudhårdvara. </para> + +</sect1> + +<sect1 id="adding-native-arts-support"> +<title +>Lägga till inbyggt stöd för &arts;</title> + +<para +>När du använder &arts;, finns det ett antal olika <link linkend="arts-apis" +>programmeringsgränssnitt</link +> (<acronym +>API</acronym +>) att välja bland. Beslutet om vilket som ska användas beror på ett antal olika faktorer, bland annat vilket sorts medietyp som används (ljud, &MIDI;, ljud-CD, etc.), de funktioner som krävs av gränssnittet, och om programmet är skrivet i C++. I de flesta fall bör valet vara ganska klart baserat på de nödvändiga funktionerna. </para> + +<para +>För flyttbarhet mellan plattformar kan inte program som måste kunna köra i andra miljöer än &kde; förlita sig på att &arts; är tillgängligt. Att använda en insticksprogramparadigm är ett bra sätt att stödja olika multimediamiljöer. Att göra ett insticksprogram-<acronym +>API</acronym +> öppet och dokumenterat (särskilt för program utan tillgång till källkod) har också fördelen att någon annan än programutvecklaren kan implementera insticksprogram till &arts;. </para> + +</sect1> + +</chapter> + diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/references.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/references.docbook new file mode 100644 index 00000000000..b41e3531d4f --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/references.docbook @@ -0,0 +1,61 @@ +<!-- <?xml version="1.0" ?> +<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"> +To validate or process this file as a standalone document, uncomment +this prolog. Be sure to comment it out again when you are done --> + +<chapter id="references"> +<title +>Referenser</title> + +<variablelist> + +<varlistentry> +<term +><ulink +url="http://multimedia.kde.org" +>http://multimedia.kde.org</ulink +></term> +<listitem> +<para +>Det här är den huvudsakliga webbplatsen för &kde;-relaterad multimediainformation. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><ulink +url="http://www.arts-project.org" +>http://www.arts-project.org</ulink +></term> +<listitem> +<para +>Det här är &arts;-projektets hemsida. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>&kde; 2.0 Development</term> +<listitem> +<para +>Kapitel 14 i den här utgivna boken täcker multimedia, inklusive &arts;. Den är tillgänglig i tryck eller på nätet med anteckningar 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 +>Den här platsen har en uttömmande lista på ljud- och &MIDI;-program för &Linux;. </para> +</listitem> +</varlistentry> + +</variablelist> + +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/artsbuilder/tools.docbook b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/tools.docbook new file mode 100644 index 00000000000..9ce4c2ed33c --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/artsbuilder/tools.docbook @@ -0,0 +1,997 @@ +<!-- +<?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;-verktyg</title> + +<para +>Ett antal verktyg levereras tillsammans med &arts; för att styra och anpassa dess beteende. Du behöver känna till de flesta av de här verktygen lite grand för att kunna använda &arts; på ett effektivt sätt. Det här avsnittet beskriver vart och en av verktygen och deras kommandoväljare. </para> + +<sect1 id="kde-control-center"> +<title +>Inställningscentralen</title> + +<para +>När man kör &arts; med &kde;, tillhandahåller inställningscentralen en grupp med inställningar i kategorin <guilabel +>Ljud</guilabel +>. Vissa av de här används av &arts;. Man kan också binda ljud till olika fönsterhanterings- och &kde;-händelser med dialogrutan <menuchoice +><guilabel +>Ljud</guilabel +><guilabel +>Systemunderrättelser</guilabel +></menuchoice +>. Se handboken för inställningscentralen för mer information om hur dialogrutans inställningar används. </para> + +</sect1> + +<sect1 id="artsd"> +<title +>&artsd;</title> + +<para +>Tillgången till ljudhårdvaran kontrolleras av &artsd;, ljudservern för &arts;. Det här tillåter att flera program samtidigt skickar en begäran till servern, där de kan blandas och spelas upp. Utan en central ljudserver skulle ett enstaka program som använder en ljudenhet förhindra andra program från att använda den. </para> + +<para +>För att använda &arts; ska det finnas en och endast en kopia av &artsd; som kör. Den startas typiskt när &kde; startas om detta är aktiverat i inställningscentralens <guilabel +>Ljudserver</guilabel +> modul. </para> + +<para +>Programmet accepterar följande väljare:</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 +>audiomethod</replaceable +></option +> <option +>-r <replaceable +>sampling rate</replaceable +></option +> <option +>-b <replaceable +>bits</replaceable +></option +> <option +>-d</option +> <option +>-D <replaceable +>devicename</replaceable +></option +> <option +>-F <replaceable +>fragments</replaceable +></option +> <option +>-S <replaceable +>size</replaceable +></option +> <option +>-s <replaceable +>seconds</replaceable +></option +> <option +>-m <replaceable +>appName</replaceable +></option +> </group +> <group choice="opt" +> <option +>-h</option +> <option +>-A</option +> <option +>-v</option +> <option +>-l <replaceable +>level</replaceable +></option +> </group +> </cmdsynopsis> + +<variablelist +><varlistentry> +<term +><option +>-r <replaceable +>sampling rate</replaceable +></option +></term> +<listitem> +<para +>Ställ in samplingsfrekvens som ska användas.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Visa kommandoanvändning.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-n</option +></term> +<listitem> +<para +>Aktivera nätverkstransparens.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-p <replaceable +>port</replaceable +></option> +</term> +<listitem> +<para +>Ange <acronym +>TCP</acronym +>-port som ska användas (förutsätter <option +>-n</option +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-u</option +></term> +<listitem> +<para +>Öppen, ingen identifiering (farligt).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-d</option +></term> +<listitem> +<para +>Aktivera full duplex.</para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-D <replaceable +>devicename</replaceable +></option +></term> +<listitem> +<para +>Ange ljudenhet (vanligtvis <filename +>/dev/dsp</filename +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-F <replaceable +>fragments</replaceable +></option +></term> +<listitem> +<para +>Ange antal fragment.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-S <replaceable +>size</replaceable +></option +></term> +<listitem> +<para +>Ange fragmentstorlek i byte.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-s <replaceable +>seconds</replaceable +></option +></term> +<listitem> +<para +>Ställ in fördröjningen innan vänteläget aktiveras i sekunder. Värdet noll stänger av vänteläget.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-m <replaceable +>appName</replaceable +></option +></term> +<listitem> +<para +>Ange namnet på ett program som används för att visa fel, varningar och informationsmeddelanden. Om du kör KDE kan du använda verktyget <application +>artsmessage</application +> för det här.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-N</option +></term> +<listitem> +<para +>Öka storleken av nätverksbuffrarna till ett värde som är lämpligt för att köra med ett 10 Mbps lokalt nätverk. Det här är samma som att använda väljaren -w 5 (se nedan). </para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-w <replaceable +>n</replaceable +></option +></term> +<listitem> +<para +>När <application +>artsd</application +> körs via en nätverksanslutning till en annan värddator vill man ofta använda en stor buffer för att undvika pauser. aRts föreslår en minimal bufferstorlek för program. Utan det här alternativet baseras den förvalda storleken på fragmentstorleken * antalet fragment. Med det här alternativet kan man öka storleken från den förvalda med en faktor <replaceable +>n</replaceable +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-l <replaceable +>level</replaceable +></option +></term> +<listitem> +<para +>Ställ in informationsnivå: 3 (tyst), 2 (varningar), 1 (info), 0 (avlusning).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-v</option +></term> +<listitem> +<para +>Visa versionsnivå.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>I de flesta fall är det nog att bara köra &artsd;. </para> +</sect1> + +<sect1 id="artswrapper"> +<title +>&artswrapper;</title> + +<para +>För att ge bra realtidsegenskaper körs &artsd; oftast som en realtidsprocess (på plattformar där realtidsprioriteter stöds). Det här kräver <systemitem class="username" +>root</systemitem +>-behörighet, så för att minimera säkerhetspåverkan, kan &artsd; startas med det lilla omgärdande programmet &artswrapper; som helt enkelt byter till realtidsprioritet (medan det kör som <systemitem class="username" +>root</systemitem +>) och sedan startar &artsd; som en annan användare än <systemitem class="username" +>root</systemitem +>. </para> + +<para +>Om du gör &artswrapper; SUID <systemitem class="username" +>root</systemitem +>, kommer det troligen förbättra kvaliteten på ljudåtergivningen genom att reducera uppehåll i musiken. Dock ökar det också risken att ett fel i koden, eller en användare med uppsåt att skada kan krascha eller skada datorn på något sätt. Dessutom, att prioritera hög ljudkvalitet på fleranvändardatorer kan orsaka försämrad prestanda för användare som försöker använda datorn på ett <quote +>produktivt</quote +> sätt.</para> + +</sect1> + +<sect1 id="artsshell"> +<title +>&artsshell;</title> + +<para +>Kommandot &artsshell; är avsett som ett verktyg för att utföra diverse funktioner som hör ihop med ljudservern. Förmodligen kommer verktyget att utökas med nya kommandon i framtiden (se kommentarerna i källkoden för några idéer). </para> + +<para +>Kommandot accepterar följande 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 [väljare] <replaceable +>kommando</replaceable +> [<replaceable +>kommandoalternativ</replaceable +>] </para> + +<para +>Följande väljare stöds: </para> + +<variablelist> + +<varlistentry> +<term +><option +>-q</option +></term> +<listitem> +<para +>Undertryck all utmatning.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Visa kommandoanvändning.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>Följande kommandon stöds:</para> + +<variablelist> + +<varlistentry> +<term +><option +>suspend</option +></term> +<listitem> +<para +>Ange att ljudservern ska gå till vänteläget. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>status</option +></term> +<listitem> +<para +>Visa statusinformation för ljudservern.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>terminate</option +></term> +<listitem> +<para +>Avsluta ljudservern. Det här kan förvirra och/eller krascha alla program som för närvarande använder den. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>autosuspend</option +> <parameter +>secs</parameter +></term> +<listitem> +<para +>Ställ in fördröjningen för aktivering av vänteläget till det angivna antalet sekunder. Ljudservern går till vänteläget om den är inaktiv så länge. Värdet noll stänger av vänteläget. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>networkbuffers</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Ställer in storleken på nätverksbuffrarna till en faktor <parameter +>n</parameter +> gånger den förvalda storleken. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>volume</option +> [<replaceable +>volume</replaceable +>]</term> +<listitem> +<para +>Ställer in volymskalning för ljudserverns utmatning av ljud. Parametern <replaceable +>volume</replaceable +> är ett flyttal. Utan parameter visas nuvarande volym. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect list</option +></term> +<listitem> +<para +>Visa alla tillgängliga stereoeffektmodulerna.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect insert [top|bottom]</option +> <replaceable +>namn</replaceable +></term> +<listitem> +<para +>Infoga en stereoeffekt i stereoeffektstacken. Returnerar en identifierare som senare kan användas för att ta bort den. Effekten kan installeras längst upp eller längs ner (normalvärdet).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>stereoeffect remove</option +> <replaceable +>id</replaceable +></term> +<listitem> +<para +>Tar bort stereoeffekten med identifieraren <replaceable +>id</replaceable +> från effektstacken.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="artsplay"> +<title +><application +>artsplay</application +></title> + +<para +>Programmet <application +>artsplay</application +> är ett enkelt verktyg för att spela en ljudfil. Det accepterar en enda parameter som motsvarar namnet på ljudfilen som skickas till ljudservern för att spelas. Ljudfilen kan vara vilken vanlig ljudfiltyp som helst, såsom <literal role="extension" +>wav</literal +> eller <literal role="extension" +>au</literal +>. Det här verktyget är bra för att prova om ljudservern fungerar. Genom att köra två kommandon parallellt eller i snabb följd kan man demonstrera hur ljudservern blandar mer än en ljudkälla.</para> + +</sect1> + +<sect1 id="artsdsp"> +<title +><application +>artsdsp</application +></title> + +<para +>Ljudservern hanterar bara program som stöder &arts;. Många gamla program vill komma åt ljudenheten direkt. Kommandot &artsdsp; tillhandahåller en interimlösning som låter de flesta av dessa program köra oförändrade. </para> + +<para +>När ett program körs med &artsdsp; fångas alla försök att komma åt ljudenheten <filename class="devicefile" +>/dev/dsp</filename +> och omvandlas till anrop till &arts; programmeringsgränssnitt. Även om enhetsemuleringen inte är perfekt, så fungerar de flesta program på det här sättet, fastän med en viss försämring i prestanda och latenstid. </para> + +<para +>Kommandot &artsdsp; följer formatet: </para> + +<!-- LW: FIX THIS --> +<para +>artsdsp [<replaceable +>väljare</replaceable +>] <replaceable +>program väljare</replaceable +> </para> + +<para +>Följande väljare känns igen: </para> + +<variablelist> + +<varlistentry> +<term +><option +>-h</option +>, <option +>--help</option +></term> +<listitem> +<para +>Visa kortfattad hjälp.</para> +</listitem> +</varlistentry> +<varlistentry> +<term +><option +>-n</option +> <option +>--name</option +> = <replaceable +>namn</replaceable +></term> +<listitem> +<para +>Använd <replaceable +>namn</replaceable +> för att identifiera en spelare för <command +>artsd</command +>.</para> + +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-m</option +> <option +>--mmap</option +></term> +<listitem> +<para +>Emulera minnesmappning (t.ex för <application +>Quake</application +>).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-v</option +> <option +>--verbose</option +></term> +<listitem> +<para +>Visa väljare.</para> +</listitem> +</varlistentry> + +</variablelist> + +<para +>Ett typiskt anrop är: </para> + +<para> +<userinput +><command +>artsdsp</command +> <option +>-v</option +> <option +>-m</option +> <parameter +>realplay <replaceable +>song.mp3</replaceable +></parameter +></userinput> +</para> + +<para +>Vissa program fungerar bättre med väljaren <option +>--mmap</option +>. Ljudenhetens alla funktioner är inte fullständigt emulerade, men de flesta program bör fungera. Om du hittar ett som inte gör det, skicka in en detaljerad felrapport så kan utvecklarna fixa det. Återigen, kom ihåg att det här är en intermediär lösning och något av en ful snabbfix. Den bästa lösningen är att lägga till inbyggt stöd för &arts; i programmen. Om ditt favoritljudprogram inte har stöd för &arts;, be utvecklaren att tillhandahålla det. </para> + +</sect1> + +<sect1 id="artscat"> +<title +><application +>artscat</application +></title> + +<para +>Det här är ett enkelt verktyg för att skicka råljuddata till ljudservern. Man måste ange dataformatet (samplingsfrekvens, samplingsstorlek och antal kanaler). Det här är troligen inte ett verktyg som man behöver använda ofta, men det kan vara bekvämt för provändamål. Kommandosyntaxen är: </para> + +<!-- LW: FIX THIS --> + +<para +>artscat [ <replaceable +>väljare</replaceable +> ] [ <replaceable +>filnamn</replaceable +> ] </para> + +<para +>Om inget filnamn anges läser programmet från standardinmatningen. Följande väljare stöds: </para> + +<variablelist> +<varlistentry> +<term +><option +>-r</option +> <parameter +>samplingsfrekvens</parameter +></term> +<listitem> +<para +>Ställ in samplingsfrekvens som används. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-b</option +> <parameter +>bitar</parameter +></term> +<listitem> +<para +>Ställ in samplingsstorlek som används (8 eller 16). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-c</option +> <parameter +>kanaler</parameter +></term> +<listitem> +<para +>Välj antal kanaler (1 eller 2). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Visa kommandoanvändning och avsluta. </para> +</listitem> +</varlistentry> + +</variablelist> +</sect1> + +<sect1 id="artscontrol"> +<title +>&artscontrol;</title> + +<para +>Det här är ett grafiskt verktyg för att utföra ett antal uppgifter som hör ihop med ljudservern. Det förvalda fönstret visar två volymnivåvisare och ett skjutreglage för att ställa in den generella uppspelningsvolymen. Från menyn <guimenu +>Visa</guimenu +> kan du välja andra funktioner: </para> + +<variablelist> + +<varlistentry> +<term +><guimenuitem +>FFT-mätare</guimenuitem +></term> +<listitem> +<para +>Öppnar ett fönster som visar en skärm med en realtidsspektrumanalysator. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Ljudhanterare</guimenuitem +></term> +<listitem> +<para +>Visar aktiva ljudkällor och låter dig ansluta dem till alla tillgängliga bussar. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>aRts status</guimenuitem +></term> +<listitem> +<para +>Visar om ljudservern kör och om realtidsschemaläggning används. Anger när servern kommer att gå till vänteläget och låter dig gå till vänteläget omedelbart. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Midihanterare</guimenuitem +></term> +<listitem> +<para +>Visar aktiva &MIDI; in- och utgångar och låter dig göra förbindelser [ATT GÖRA: fungerar det här ännu? Behöver mera detaljer]. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>FreeVerb</guimenuitem +></term> +<listitem> +<para +>Ansluter en FreeVerb efterklangseffekt till stacken av &arts; utmatningseffekter och låter dig kontrollera ljudeffektinställningarna grafiskt. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Leds liknande volymvisning</guimenuitem +></term> +<listitem> +<para +>Ändrar volymindikeringen i huvudfönstret att använda ett visningsformat med färgade lysdioder istället för staplar. </para> +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="artsc-config"> +<title +><application +>artsc-config</application +></title> + +<para +>Det här verktyget är till för att hjälpa utvecklare som använder C-programmeringsgränssnittet i &arts;. Det matar ut de riktiga kompilator- och länkarväljare som behövs när man kompilerar och länkar med &arts;. Det är tänkt att användas i make-filer för att hjälpa till med flyttbarhet. Kommandot accepterar tre väljare: </para> + +<variablelist> +<varlistentry> +<term +><option +>--cflags</option +></term> +<listitem> +<para +>Visar kompilatorväljare som behövs när man kompilerar med &arts; C-programmeringsgränssnitt. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>--libs</option +></term> +<listitem> +<para +>Visar länkarväljare som behövs när man länkar med &arts; C-programmeringsgränssnitt. </para> +</listitem> +</varlistentry> +<varlistentry> +<term +><acronym +>---version</acronym +></term> +<listitem> +<para +>Visar versionen av kommandot <command +>artsc-config</command +>. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Typisk utmatning från kommandot visas nedan:</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 ska kunna använda det här verktyget i en make-fil med en regel 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 +>Kommandot &mcopidl; är &IDL;-fil kompilatorn för &MCOP;, multimedia-kommunikationsprotokollet som används av &arts;. Gränssnitt i &arts; definieras med &IDL;, ett språkoberoende gränssnittsdefinitionsspråk. Verktyget &mcopidl; accepterar en &IDL;-fil som indata och skapar C++ deklarations- och källkodsfiler för en klass som implementerar gränssnittet. Kommandot accepterar följande syntax: </para> + +<!-- LW: FIX THIS --> + +<para +>mcopidl [ <replaceable +>väljare</replaceable +> ] <replaceable +>filnamn</replaceable +> </para> + +<para +>Giltiga väljare är:</para> +<variablelist> +<varlistentry> +<term +><option +>-I</option +> <parameter +>katalog</parameter +></term> +<listitem> +<para +>Sök i <parameter +>katalog</parameter +> efter deklarationsfiler. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-e</option +> <parameter +>namn</parameter +></term> +<listitem> +<para +>Hoppa över en struct, gränssnitt eller uppräkningstyp <parameter +>namn</parameter +> vid kodgenerering. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-t</option +></term> +<listitem> +<para +>Skapa också <literal role="extension" +>.mcoptype</literal +>/<literal role="extension" +>.mcopclass</literal +> filer som innehåller typinformation för &IDL;-filen. </para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Mer information om &MCOP; och &IDL; finns i avsnittet <link linkend="interfaces" +>Gränssnitt och &IDL;</link +>. </para> + +</sect1> + +</chapter> diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/juk/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/juk/Makefile.in new file mode 100644 index 00000000000..808ee92b70d --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/juk +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/juk/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=juk-adv-search.png search-playlist.png index.docbook juk-main.png juk-file-renamer.png juk-tag-guesser.png index.cache.bz2 history-playlist.png normal-playlist.png Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) juk-file-renamer.png normal-playlist.png juk-main.png juk-tag-guesser.png index.docbook history-playlist.png juk-adv-search.png search-playlist.png + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk + @for base in juk-file-renamer.png normal-playlist.png juk-main.png juk-tag-guesser.png index.docbook history-playlist.png juk-adv-search.png search-playlist.png ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + done + +uninstall-nls: + for base in juk-file-renamer.png normal-playlist.png juk-main.png juk-tag-guesser.png index.docbook history-playlist.png juk-adv-search.png search-playlist.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/juk/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in juk-file-renamer.png normal-playlist.png juk-main.png juk-tag-guesser.png index.docbook history-playlist.png juk-adv-search.png search-playlist.png ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/juk/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/juk/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/history-playlist.png b/tde-i18n-sv/docs/tdemultimedia/juk/history-playlist.png Binary files differnew file mode 100644 index 00000000000..15152b6ff52 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/history-playlist.png diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/juk/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..b5a625e7063 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/index.docbook b/tde-i18n-sv/docs/tdemultimedia/juk/index.docbook new file mode 100644 index 00000000000..37e0f802dc3 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/index.docbook @@ -0,0 +1,2409 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY package "tdemultimedia"> + <!ENTITY kappname "&juk;"> + <!ENTITY juk "<application +>JuK</application +>"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Swedish "INCLUDE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Handbok &juk;</title> + +<authorgroup> +<author +>&Lauri.Watts; &Lauri.Watts.mail;</author> +<author +><firstname +>Michael</firstname +> <surname +>Pyne</surname +> <affiliation +> <address +><email +>michael.pyne@kdemail.net</email +></address> +</affiliation> +</author> + +<othercredit role="developer" +><firstname +>Scott</firstname +> <surname +>Wheeler</surname +> <affiliation +> <address +>&Scott.Wheeler.mail;</address> +</affiliation> +</othercredit> + +<othercredit role="translator" +><firstname +>Stefan</firstname +><surname +>Asserhäll</surname +><affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +><contrib +>Översättare</contrib +></othercredit +> + +</authorgroup> + +<copyright> +<year +>2001</year> +<year +>2002</year> +<year +>2004</year> +<holder +>&Scott.Wheeler;</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2004-05-06</date> +<releaseinfo +>2.1</releaseinfo> + +<abstract> +<para +>&juk; är en jukebox, tagg- och musiksamlingshanterare. </para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>ljud</keyword> +<keyword +>taggning</keyword> +<keyword +>spelare</keyword> +<keyword +>jukebox</keyword> +<keyword +>JuK</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Inledning</title> + +<para +>&juk; är, just precis, en jukebox. Liksom många andra jukeboxprogram, gör &juk; det möjligt att redigera ljudfilernas <quote +>taggar</quote +>, och hantera samlingar och spellistor. </para> +</chapter> + +<chapter id="using-juk"> +<title +>Att använda &juk;</title> + +<para> +<screenshot> +<screeninfo +>Här är en skärmbild av &juk;</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-main.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av &juk; i arbete.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>&juk; hanterar en lista med alla kända filer. Den kallas <guilabel +>samlingslistan</guilabel +>. Samlingslistan tillhör bara &juk;, och delas inte med andra program.</para> + +<para +>Spellistorna är oberoende av samlingslistan. Du kan ha hur många spellistor som helst. Du kan använda spellistor skapade i &juk; med andra mediaspelare (som &noatun; eller <application +>xmms</application +>), och du kan hantera spellistor som skapats av dessa program inne i &juk;.</para> + +<para +>Du kan lägga till enskilda filer i samlingslistan, med <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Öppna...</guimenuitem +></menuchoice +> och välja dem med en vanlig &kde; fildialogruta. Du kan lägga till hela kataloger med <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Lägg till katalog...</guimenuitem +></menuchoice +>. Kataloger som läggs till på detta sätt, söks igenom igen varje gång &juk; startas. Du kan tvinga att katalogerna genomsöks igen genom att högerklicka på samlingslistans ikon och välja <guimenuitem +>Uppdatera</guimenuitem +>.</para> + +<para +>När en sång läggs till i en spellista, läggs filen automatiskt till i samlingslistan, men att lägga till en fil i samlingslistan gör inte att den automatiskt läggs till i någon spellista.</para> + +<para +>Du kan snabbt skapa en spellista av hela samlingslistan, genom att högerklicka på ikonen <guilabel +>Samlingslista</guilabel +>, och välja <guimenuitem +>Duplicera</guimenuitem +>. Spellistan som skapas är en normal spellista, och redigering i den påverkar inte <guilabel +>samlingslistan</guilabel +>.</para> + +<para +>Du kan lägga till enskilda spellistor som skapats utanför &juk; genom att välja dem med <menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Öppna fil...</guimenuitem +></menuchoice +>. Alla spellistor som hittas i kataloger du lägger till med <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Öppna katalog...</guimenuitem +></menuchoice +> läggs också automatiskt till.</para> + +<para +>Du kan skapa en ny spellista genom att välja <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Ny</guimenuitem +></menuchoice +>, eller ikonen <guiicon +>Ny</guiicon +> i verktygsraden. Du blir tillfrågad om ett namn, och därefter visas en ikon för spellistan i rutan med spellistor. Nu kan du dra och släppa filer från samlingslistan till den nya spellistan. Använd ikonen <guiicon +>Spara</guiicon +> eller <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Spara</guimenuitem +></menuchoice +> för att när som helst spara spellistan.</para> + +<sect1 id="collection-list-gui"> +<title +>Sånglistan</title> + +<para +>När du tittar på samlingslistan, innehåller huvudfönstret alla filer som &juk; känner till. När du tittar på en spellista, visas bara sångerna i den spellistan. I båda fallen är utseendet och beteendet hos listan likadant.</para> + +<para +>Varje sång upptar en rad i listan. Det finns en kolumn för varje datafält som &juk; hanterar. Kolumnerna motsvarar fälten som är tillgängliga i taggeditorn.</para> + +<para +>Du kan ordna om listan när som helst genom att vänsterklicka på kolumnrubriken. Det sorterar först filerna i stigande ordning baserat på kolumnens innehåll. Om du vänsterklickar på samma rubrik, sorteras filerna om i fallande ordning.</para> + +<para +>Kolumnerna är breda nog att visa det längsta värdet som finns. Du kan ändra storlek på kolumnerna genom att placera muspekaren på gränsen mellan två kolumner. När markören ändras från en pekare, vänsterklicka och dra i den riktning som du vill ändra storleken på kolumnerna.</para> + +<para +>Du kan ordna om kolumnerna genom att vänsterklicka på en rubrik och dra den åt vänster eller höger. Du kan dock inte dra förbi fönsterkanten när du gör det, så du kan behöva rulla lite åt vänster eller höger, och dra rubriken igen, till du har placerat den där du vill ha den.</para> + +<para +>Du kan dölja eller visa kolumner igen genom att högerklicka på en kolumnrubrik, och klicka på kolumnens namn som ska ändras.</para> + +<para +>Ett dubbelklick med vänster musknapp på en fil spelar den med den inbyggda spelaren. Om en annan sång redan håller på att spelas upp, stoppas den, och den nya sången spelas upp.</para> + +<para +>Högerklick på en fil ger dig flera alternativ:</para> + +<variablelist> +<varlistentry> +<term +><guimenuitem +>Spela nästa</guimenuitem +></term> +<listitem> +<para +>Det här börjar spela filen så fort nuvarande sång är klar. Om ingen sång spelas för tillfället, börjar filen spelas nästa gång du trycker på knappen <guiicon +>Spela</guiicon +>. Om du redan har valt alternativet Spela nästa för en annan fil, överskrider den här filen det valet.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Klipp ut</guimenuitem +></term> +<term +><guimenuitem +>Kopiera</guimenuitem +></term> +<term +><guimenuitem +>Klistra in</guimenuitem +></term> +<listitem> +<para +>...</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Töm</guimenuitem +></term> +<listitem> +<para +>Om du använder samlingslistan, tas filen bort från listan med <guimenuitem +>Töm</guimenuitem +>, och från alla motsvarande rader för sången i alla spellistor. Observera att om den här filen finns i en katalog som &juk; söker igenom vid start, så läggs den till i samlingslistan igen nästa gång &juk; startas, men den läggs inte automatiskt till i någon spellista.</para> +<para +>Om du tittar i en spellista, så tar <guimenuitem +>Töm</guimenuitem +> helt enkelt bort sången från spellistan.</para> + +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Redigera</guimenuitem +></term> +<listitem> +<para +>Låter dig redigera den markerade sången, i kolumnen som du klickade. Om du till exempel inte har taggeditorn synlig, och du är upptagen med att skapa en spellista, men ser ett stavfel i artistnamnet, kan du redigera det direkt med detta menyalternativ.</para> +<para +>Ändringar som görs på detta sätt, sparas alltid omedelbart så fort du klickar någon annanstans och är klar med redigeringen.</para> +<para +>Menyalternativet inaktiveras om &juk; detekterar att spåret du har markerat är skrivskyddat.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Uppdatera objekt</guimenuitem +></term> +<listitem> +<para +>Det här laddar om tagginformationen för markerade filer, om filerna har ändrats under tiden &juk; körde.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Ta bort från disk</guimenuitem +></term> +<listitem> +<para +>Det här tar bort filen från samlingslistan, tar bort alla rader med sången i alla spellistor, och tar bort filen från disk. Du kan inte ångra detta, men du blir tillfrågad om att bekräfta ditt val. Använd med försiktighet.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guisubmenu +>Gissa tagginformation</guisubmenu +></term> +<listitem> +<para +>Det här gör att &juk; försöker gissa information som artist och titel för en sång. &juk; använder olika sätt att gissa: <variablelist> + + <varlistentry +><term +><guimenuitem +>Från filnamn</guimenuitem +></term> + <listitem +><para +>&juk; försöker gissa sångens taggar baserat på dess filnamn. Till exempel ett sångnamn som <filename +>Roxette - You've Got the Look.mp3</filename +> skulle gissa Roxette som artist och You've Got the Look som titel. Du kan justera sättet som &juk; gissar taggar genom att välja <menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Gissning av taggar...</guimenuitem +></menuchoice +>, som visar <link linkend="juk-tag-guesser-configuration" +>Dialogrutan för gissning av taggar</link +>. &juk; ersätter inte taggar som inte kunde gissas från filnamnet.</para> + </listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Från Internet</guimenuitem +></term> + <listitem +><para +>&juk; försöker gissa sångens taggar genom att använda programmet MusicBrainz. Du måste ha installerat MusicBrainz för att kommandot ska fungera. </para> + </listitem> + </varlistentry> + + </variablelist> +</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Byt namn på fil</guimenuitem +></term> +<listitem> +<para +>Det här byter namn på markerade filer så att de följer ett visst format. Du måste välja sättet som du vill byta namn på filerna först genom att välja <menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Filnamnbyte...</guimenuitem +></menuchoice +>. Det slutliga namnet för varje fil baseras på dess metadatataggar. Till exempel skulle Ogg Vorbis sången <quote +>The Theme (Metroid)</quote +> av Stemage kunna ge resultatet <filename +>/usr/share/music/Stemage/The Theme (Metroid).ogg</filename +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Skapa spellista från valda objekt</guimenuitem +></term> +<listitem> +<para +>Det här låter dig snabbt skapa en spellista från sånger i din samlingslista. Funktionen frågar dig efter ett namn på den nya spellistan, och infogar därefter alla sånger som är markerade i den nya spellistan.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Lägg till markerade objekt i K3b-projekt</guimenuitem +></term> +<listitem> +<para +>Det här låter dig snabbt skapa ett K3b projekt för att bränna en cd från markerade sånger. &juk; frågar om du vill skapa ett ljud-cd projekt eller data-cd projekt, om K3b inte redan har ett projekt öppnat.</para> + +<para +>Om K3b inte redan kör, starta &juk; det åt dig. Därefter läger &juk; till de markerade filerna i nuvarande K3b-projekt. Därefter kan du spara projektet i K3b för att bränna senare, eller bränna cd:n direkt. </para> + +</listitem> +</varlistentry> + +</variablelist> + +</sect1> + +<sect1 id="juk-playlists"> +<title +>Spellistor i &juk;</title> +<para +>En spellista är helt enkelt en samling sånger grupperade enligt någon kategori. Du kan till exempel ha en spellista med sånger som du lyssnar på medan du kodar, medan du försöker sova, eller till och med när du behöver ett gott skratt. &juk; stöder flera olika sorters spellistor. </para> + +<variablelist> + +<varlistentry> +<term id="juk-normal-playlists" +>Normala spellistor</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="normal-playlist.png"/></imageobject +></inlinemediaobject +> Det här är den vanligaste sortens spellista. Det är en spellista som består av filer, precis som samlingslistan.</para +></listitem> +</varlistentry> + +<varlistentry> +<term id="juk-history-playlists" +>Historikspellistan</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="history-playlist.png"/></imageobject +></inlinemediaobject +> Om du aktiverar spellistan (genom att aktivera <menuchoice +><guimenu +>Visa</guimenu +> <guimenuitem +>Visa historik</guimenuitem +></menuchoice +>) lagrar den varje sång som &juk; spelar. Spellistan har en extra kolumn, <guilabel +>Tid</guilabel +>, som anger exakt datum och tid då sången spelades. Spellistan börjar dock inte följa historiken förrän den aktiveras. </para +></listitem> +</varlistentry> + +<varlistentry> +<term id="juk-search-playlists" +>Sökspellistor</term> +<listitem +><para +><inlinemediaobject +><imageobject +><imagedata format="PNG" fileref="search-playlist.png"/></imageobject +></inlinemediaobject +> Det här är en spellista som är baserad på en sökning. Du kan skapa en sådan spellista genom att klicka på <menuchoice +><guimenu +>Arkiv</guimenu +> <guisubmenu +>Ny</guisubmenu +> <guimenuitem +>Sökspellista</guimenuitem +></menuchoice +>, eller genom att klicka på knappen <link linkend="juk-advanced-search-dialog" +>Avancerad sökning</link +> i <link linkend="search-bar" +>Sökraden</link +>.</para> +<para +>Efter spellistan har skapats, håller den reda på vilka sånger som motsvarar dina villkor, och uppdaterar innehållet automatiskt på motsvarande sätt så fort samlingslistan ändras.</para +></listitem> +</varlistentry> + +</variablelist> + +<para +>Spellistor är organiserade i <guilabel +>Rutan med spellistor</guilabel +>, som är den vertikala rutan till vänster. I rutan finns en ikon för varje spellista som du har. Det finns olika visningslägen för rutan, som kan väljas i menyn <guimenu +>Visa</guimenu +> <guisubmenu +>Visningslägen</guisubmenu +>. <variablelist> + +<varlistentry> +<term id="juk-viewmode-default" +>Förvalt visningsläge</term> +<listitem> +<para +>Det här är förvalt visningsläge. I det här läget visas alla spellistor som stora ikoner, ovanför varandra i visningsläget. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="juk-viewmode-compact" +>Kompakt visningsläge</term> +<listitem> +<para +>Det här läget liknar det vanliga visningsläget, med undantaget att spellistorna representeras av horisontella rader med små ikoner istället för fyrkanter. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term id="juk-viewmode-tree" +>Trädvisningsläge</term> +<listitem> +<para +>Det här läget är det kraftfullaste. Det är precis som kompakt läge, utom att samlingslistan nu är roten på ett träd med virtuella spellistor. Samlingslistan har tre underliggande grenar, Album, Artister och Genrer. Var och en av dessa grenar innehåller alla poster i den specifika kategorin. Om din samlingslista till exempel innehåller musik från fyra olika artister, har du fyra poster under artistgrenen.</para> +<para +>En användbar funktion i trädvisningsläget är något som kallas omtaggning med drag och släpp. Markera helt enkelt några filer i spårlistan, och dra dem till en av posterna under album, artister eller genrer i samlingslistan. Sångerna taggas automatiskt om så att de matchar posten du släppte dem på. Om du till exempel drar och släpper en grupp med spår på en genre som heter "Rock", ändras alla spårens genretagg till Rock. </para> +</listitem> +</varlistentry> + +</variablelist> + +</para> + +</sect1> + +<sect1 id="juk-tagger"> +<title +>&juk;s taggeditor</title> + +<para +>Det är praktiskt att använda filnamnet för att beskriva filens innehåll, för många filformat. <quote +><filename +>Rapport till styrelsen - Juni 2003.doc</filename +></quote +>, kan till exempel vara all information som behövs för att hitta filen igen. Att försöka fånga all användbar information om en särskild sång, kan ge filnamn som det här: <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 Artists_15_The Smithsonian Collection of Classic Jazz Volume II_Jimmie Lunceford & His Orchestra - Organ Grinder's Swing.mp3</filename +></quote +>. Detta är varken särskilt praktiskt att använda, eller innehåller all användbar information som du kan ha skaffat om sången. Att till exempel lägga till album och spårnummer i det första filnamnet, skulle göra det ännu längre och ohanterligare, medan du fortfarande inte direkt skulle kunna se året sången släpptes, eller vilken musikstil det är, om du inte känner till artisten.</para> + +<para +>Lösningen är alltså att lagra den här sortens extra data inne i själva filerna. MP3- och OGG-filer kan också innehålla små textsnuttar som kan användas för att beskriva filernas innehåll. Det finns flera olika format, men &juk; döljer skillnaderna mellan dem, och ger ett standardsätt att redigera en standardiserad delmängd med välkända taggar för alla ljudfiler.</para> + +<para +>&juk; fullständiga taggeditor låter dig redigera taggar i både MP3- och OGG-filer. Du kan redigera enstaka filer eller flera filer, och du kan välja en blandning av MP3- och OGG-filer att redigera. Det enda kravet är att du kan skriva till själva filerna. Du kan till exempel inte redigera taggar för en fil som är monterad från en &CD-ROM;.</para> + +<sect2 id="tagging-a-single-file"> +<title +>Redigera taggar i en ensam fil</title> + +<para +>För att redigera taggen i en enstaka fil, markera den antingen i samlingslistan eller någon rad där den finns i en spellista. Om taggeditorn inte är synlig, aktivera den genom att välja <menuchoice +><guimenu +>Visa</guimenu +><guimenuitem +>Visa taggeditor</guimenuitem +></menuchoice +>. Taggeditorn syns längst ner i listvyn.</para> + +<para +>Skriv helt enkelt i något av de redigeringsbara fälten för att ändra informationen. När du är klar, vänsterklicka tillbaka i listan, så blir du tillfrågad om att spara ändringarna.</para> + +<para +>Du kanske märker att taggeditorn förblir inaktiverad när du klickar på en fil. Det inträffar om &juk; har detekterat att spåret är skrivskyddat.</para> + +<variablelist> +<title +>Tageditorns fält</title> +<varlistentry> +<term +><guilabel +>Artistnamn:</guilabel +></term> +<listitem> +<para +>Namn på artisten eller artisterna som gett ut sången.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Spårtitel:</guilabel +></term> +<listitem> +<para +>Sångens namn.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Albumnamn:</guilabel +></term> +<listitem> +<para +>Namnet på albumet där sången gavs ut.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Genre:</guilabel +></term> +<listitem> +<para +>Musikens <quote +>stil</quote +>. &juk; tillhandahåller en lista som ungefär motsvarar den informella ID3-standarden, men du kan fritt skriva in egna värden i listan.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Filnamn:</guilabel +></term> +<listitem> +<para +>Filnamnet på den verkliga filen på disk. Du kan direkt redigera detta, och när du sparar så byter filen namn.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Spår:</guilabel +></term> +<listitem> +<para +>Platsen för spåret på originalinspelningen.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>År:</guilabel +></term> +<listitem> +<para +>Året sången gavs ut.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Längd:</guilabel +></term> +<listitem> +<para +>Det här kan inte redigeras, utan visas bara som information.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Takt:</guilabel +></term> +<listitem> +<para +>Det här kan inte redigeras, utan visas bara som information.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guilabel +>Kommentar:</guilabel +></term> +<listitem> +<para +>Du kan lägga till egna fria textkommentarer här, med ytterligare anteckningar etc.</para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Du kan uttryckligen och omedelbart spara dina ändringar när som helst, med menyalternativet <menuchoice +><guimenu +>Taggning</guimenu +> <guimenuitem +>Spara</guimenuitem +></menuchoice +> eller genom att trycka på <keycombo +>&Ctrl;<keycap +>T</keycap +></keycombo +>.</para> + +</sect2> + +<sect2 id="tagging-multiple-files"> +<title +>Redigera taggar i flera filer</title> + +<para +>Du kan välja flera filer i listfönstret, och redigera en eller flera fält i taggarna för alla filer på en gång.</para> + +<para +>Använd <keycap +>skift</keycap +> och vänster musknapp för att välja en lista med intilliggande filer, och &Ctrl; och vänster musknapp för att välja enskilda filer som inte är i en följd.</para> + +<para +>Om taggeditorn inte är synlig, kan du aktivera den genom att välja <menuchoice +><guimenu +>Visa</guimenu +><guimenuitem +>Visa taggeditor</guimenuitem +></menuchoice +>. Taggeditorn visas längst ner i listvyn.</para> + +<para +>Taggeditorn beter sig något annorlunda när du har valt flera filer.</para> + +<para +>Varje fält i taggeditorn har nu en intilliggande kryssruta som heter <guilabel +>Aktivera</guilabel +>. Alla fält som har exakt samma innehåll för alla filer du markerade, visar det innehållet, och är aktiverade för att redigeras, med kryssrutan <guilabel +>Aktivera</guilabel +> markerad.</para> + +<!-- put screeny here --> + +<para +>Alla fält som inte har motsvarande innehåll i alla markerade filer kan inte redigeras från början, och visar inte något innehåll alls.</para> + +<para +>För att ändra innehåll i något fält, markera kryssrutan <guilabel +>Aktivera</guilabel +> om den inte redan är det, och redigera fältet på vanligt sätt.</para> + +<para +>När du är klar, vänsterklicka tillbaka i listvyn så blir du tillfrågad om att spara ändringarna. Dialogrutan visar en lista med filer som påverkas, så att du har en möjlighet att kontrollera att du verkligen ändrade filerna du avsåg.</para> + +<para +>Du kan uttryckligen och omedelbart spara dina ändringar när som helst, med menyalternativet <menuchoice +><guimenu +>Taggning</guimenu +> <guimenuitem +>Spara</guimenuitem +></menuchoice +> eller genom att trycka på <keycombo +>&Ctrl;<keycap +>T</keycap +></keycombo +>.</para> + +</sect2> + +</sect1> + +<sect1 id="juk-rename-dialog"> +<title +>Dialogrutan för filnamnsbyte</title> +<para> +<screenshot> +<screeninfo +>Dialogrutan för filnamnsbyte</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-file-renamer.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av dialogrutan för filnamnsbyte.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>Inställningsdialogrutan för filnamnsbyte används för att anpassa alternativet Byt namn på fil, som byter namn på sånger baserat på informationen som finns i dess metadatataggar. Först ändras taggarna enligt de olika texter som kan ändras, och därefter används texterna för att skapa filnamnet enligt <guilabel +>Filnamnschemat</guilabel +>. </para> + +<para +>Den viktigaste delen av dialogrutan är rutan <guilabel +>Filnamnschema</guilabel +>. Du kan skriva in ett filnamnschema här som &juk; använder för att byta namn på filerna. Sättet det fungerar på är att vissa tecken är speciella. </para> + +<para +><variablelist> +<varlistentry> +<term +>%t</term> +<listitem +><para +>Det här ersätts med titeltexten vid utvärdering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%a</term> +<listitem +><para +>Det här ersätts med artisttexten vid utvärdering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%A</term> +<listitem +><para +>Det här ersätts med albumtexten vid utvärdering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%T</term> +<listitem +><para +>Det här ersätts med spårtexten vid utvärdering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>%c</term> +<listitem +><para +>Det här ersätts med kommentartexten vid utvärdering.</para> +</listitem> +</varlistentry> + +</variablelist> +</para> + +<para +>Varje textfält kan innehålla %s, som ersätts med den verkliga taggen, och vilken annan text som helst du vill ha, inklusive snedstreck (/). Om ett textfält innehåller ett snedstreck, anger det en katalogavskiljare. Det vore förstås möjligt att helt enkelt skriva in katalogavskiljare direkt på raden <guilabel +>Filnamnschema</guilabel +>.</para> + +<para +>Genom att använda textfälten kan vi dock fullständigt ignorera taggar som är tomma. Om du markerar kryssrutan <guilabel +>Värde behövs</guilabel +>, ignoreras textfältet om motsvarande tagg är tom. Du kan till exempel använda det för att skilja på filer med kommentarer och de utan genom att lägga till något som liknar <replaceable +>har-kommentar/%s</replaceable +> i textrutan <guilabel +>Kommentartext</guilabel +>.</para> + +<para +>Du kan testa filnamnschemat genom att använda redigeringsraden <guilabel +>Aktuellt filnamn</guilabel +> längst ner i dialogrutan. Skriv in ett filnamn för en musikfil, så visar raden <guilabel +>Nytt filnamn</guilabel +> vad &juk; skulle ändra filens namn till med nuvarande inställningar. </para> +</sect1> + +<sect1 id="juk-tag-guesser-configuration"> +<title +>Inställningsdialogrutan för gissning av taggar</title> +<para> +<screenshot> +<screeninfo +>Inställningsdialogrutan för gissning av taggar</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-tag-guesser.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av inställningsdialogrutan för gissning av taggar.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>Inställningsdialogrutan för gissning av taggar används för att ställa in kommandot Gissa från filnamn.</para> + +<para +>Du ser en lista med olika filnamnscheman till vänster i dialogrutan. &juk; innehåller en omfattande uppsättning standardmönster som matchar de flesta vanliga sätt att namnge filer. Om du vill lägga till ett nytt schema, klicka på knappen <guibutton +>Lägg till</guibutton +>, skriv in schemat och klicka därefter på <guibutton +>Ok</guibutton +>. Du kan använda samma platsmarkörer med procenttecken som definieras under <link linkend="juk-rename-dialog" +>Dialogrutan för filnamnsbyte</link +>. </para> + +<para +>&juk; försöker med de scheman du har listat, ett i taget, med början längst upp i listan. Det första schema som matchar är det som används för att gissa sångens taggar. Vissa sånger kan matcha mer än ett schema. Du kan försäkra dig om att det riktiga schemat matchar först genom att markera schemat i listrutan och därefter använda pilknapparna för att flytta det överst i listan. </para> + +<para +>Du kan också redigera eller ta bort ett schema från listan. Markera bara schemat i listan, och använd knappen <guibutton +>Ändra</guibutton +> för att ändra schemat, eller knappen <guibutton +>Ta bort</guibutton +> för att ta bort schemat från listan. </para> +</sect1> + +<sect1 id="juk-advanced-search-dialog"> +<title +>Den avancerade sökdialogrutan</title> +<para> +<screenshot> +<screeninfo +>Den avancerade sökdialogrutan</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="juk-adv-search.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av den avancerade sökdialogrutan.</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> + +<para +>Den avancerade sökdialogrutan används för att skapa <link linkend="juk-search-playlists" +>Sökspellistor</link +>. Den gör det möjligt att skapa en finkornig sökning bland de olika taggarna i din sångsamling.</para> + +<para +>Längst upp i dialogrutan kan du skriva in namnet på sökspellistan. Därefter kan du definiera sökvillkor under <guilabel +>Sökvillkor</guilabel +>. </para> + +<para +>Längst upp i rutan <guilabel +>Sökvillkor</guilabel +> finns två knappar, <guilabel +>Matcha någon av de följande</guilabel +> och <guilabel +>Matcha alla följande</guilabel +>. Om du väljer <guilabel +>Matcha någon av de följande</guilabel +> inkluderas sången i spellistan om den matchar något av villkoren du anger. Annars måste varje villkor du anger matcha för att sången ska inkluderas i spellistan. </para> + +<para +>Under villkorsknapparna finns definitionerna av villkoren. Du kan lägga till fler villkor genom att använda knappen <guibutton +>Mer</guibutton +>, och ta bort villkor genom att använda knappen <guibutton +>Mindre</guibutton +>. Alla villkor som du lämnar tomma ignoreras, så du behöver inte använda <guibutton +>Mindre</guibutton +> för att eliminera tomma villkor. </para> + +<para +>Varje villkorsdefinition har tre delar. Taggväljarlistan till vänster, listan med matchningstyper till höger och söktexten i mitten. Taggväljaren talar om för &juk; vilken tagg du vill ska sökas i efter texten. Om du väljer specialtaggen "<Alla synliga>" blir alla taggar som syns i samlingslistans fönster kandidater för att matcha söktexten. </para> + +<para +>Listan med matchningstyper talar om för &juk; vilken sökmetod som ska användas. Sökmetoderna du kan använda är följande: <variablelist> +<varlistentry> +<term +>Normal matchning</term> +<listitem +><para +>Det här är den normala matchningstypen. Den söker efter angiven text var som helst i den valda taggen, och ignorerar skillnader i skiftläge. En sökning efter mode med artisttaggen skulle till exempel matcha Depeche Mode.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +>Skiftlägeskänslig</term> +<listitem +><para +>Den här sökningen är precis som normal matchning, utom att söktexten måste matcha textens skiftläge exakt.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +>Mönstermatchning</term> +<listitem +><para +>Det här är den kraftfullaste sökmetoden. Söktexten som du skriver in definierar ett reguljärt uttryck som används för att söka i taggen. Reguljära uttryck är utanför det här dokumentets omfattning, men programmet &kregexpeditor; kan hjälpa dig att skapa ett reguljärt uttryck. &juk; använder &Qt;:s variant av reguljära uttryck.</para +></listitem> +</varlistentry> + +</variablelist> + +</para> + +<para +>Välj helt enkelt villkoren du vill ta med i sökningen, och klicka på <guibutton +>Ok</guibutton +> för att skapa din sökspellista. </para> +</sect1> + +<sect1 id="juk-cover-manager"> + +<title +>Omslagshantering i &juk;</title> + +<para +>&juk; 2.3 (en del av &kde; 3.5) innehåller förbättrad kod för hantering av omslag som introducerar några nya möjligheter för användare jämfört med &juk; 2.2 (som levererades med &kde; 3.4). Den kan också ändra arbetsflödet något för dig om du är van vid hur omslag hanterades i &juk; 2.2. Låt oss alltså först repetera hur det var förut.</para> + +<sect2 id="covers-in-juk-2.2"> +<title +>Hur omslag fungerade i &juk; 2.2</title> + +<para +>I &juk; 2.2 var ett spårs omslag hård knutet till informationen om dess <guilabel +>artist</guilabel +> och <guilabel +>album</guilabel +>. Även om det visade sig vara användbart nog, och hade några fördelar, var det inte ett perfekt sätt att organisera omslagen. Om man ville använda ett omslag för ett annat spår, var man antingen tvungen att byta namn på spårets taggar, eller duplicera omslaget, och slösa med hårddiskutrymme. Och om spåret inte hade någon information om <guilabel +>artist</guilabel +> eller <guilabel +>album</guilabel +>, förhindrade &juk; att man angav ett omslag, eftersom det inte fanns någon information att knyta det till. Det fungerade, men kunde ha varit bättre.</para> + +</sect2> + +<sect2 id="covers-in-juk-2.3"> + +<title +>Hur omslag fungerar i &juk; 2.3</title> + +<para +>I &juk; 2.3 konstruerades koden om för att lägga till en komponent i kärnan som ansvarar för omslagsbilder. Istället för att titta på hårddisken efter en bildfil med ett specifikt namn som i &juk; 2.2, kopplar omslagshanteringen i &juk; 2.3 ihop varje omslag med en identifikationstagg, och använder därefter taggen med spåren. Det är fortfarande inte perfekt, men det fungerar och kan spara tid, samtidigt som det tillåter att fler saker åstadkoms.</para> + +<sect3 id="examples-adding-covers"> + +<title +>Exempel på att lägga till omslag</title> + +<para +>Som ett exempel, låt oss anta att du ville ange ett omslag för spår som du just lagrat från en cd. Vi använder <quote +>Alabama - Greatest Hits III</quote +> för beskrivningen. I &juk; 2.2 kunde du helt enkelt bara markera något av spåren, och importera ett omslag från Internet genom att högerklicka på spåret och använda kommandot <menuchoice +><guimenu +>Taggning</guimenu +> <guisubmenu +>Omslagshantering</guisubmenu +> <guimenuitem +>Hämta omslag från Internet </guimenuitem +></menuchoice +>. Som en sidoeffekt av hur &juk; fungerade, användes omslaget omedelbart för <emphasis +>alla</emphasis +> spåren på <quote +>Alabama - Greatest Hits III</quote +>, <emphasis +>vare sig du ville det eller inte</emphasis +>.</para> + +<para +>I &juk; 2.3 är proceduren exakt likadan, med ett undantag. Du ska först markera alla spår som du vill att omslaget ska gälla. Du skulle alltså markera alla spår på <quote +>Alabama - Greatest Hits III</quote +> innan du använder kommandot <menuchoice +><guimenuitem +>Hämta omslag från Internet</guimenuitem +></menuchoice +>. Eller om du bara skulle vilja ange en omslagsbild för hälften av spåren, skulle du bara markera hälften av spåren innan du utför kommandot <menuchoice +><guimenuitem +>Hämta omslag från Internet</guimenuitem +></menuchoice +>. Bekymra dig inte heller om att duplicera omslag: &juk; är smart nog att återanvända samma bild, så du får inte 14 duplicerade <literal role="extension" +>.png</literal +>-bilder som skräpar ner hårddisken.</para> +</sect3> + +<sect3 id="reusing-old-covers"> + +<title +>Återanvända gamla omslag</title> + +<para +>Men vad händer om du glömmer att markera alla spår du ville ge en tagg? Du skulle kunna markera dem och upprepa processen, men det skulle lämna ett duplicerat omslag på hårddisken eftersom &juk; inte snabbt kan avgöra att omslaget du hittar är samma som du redan har. Men det är inga problem, eftersom du kan tala om för &juk; att använda omslaget från ett annat spår.</para> + +<para +>Det finns två sätt att göra det:</para> + +<para +>1. Öppna dialogrutan <guilabel +>Omslagshantering</guilabel +> med menyn <guimenu +>Taggning</guimenu +> (<menuchoice +><guimenu +>Taggning</guimenu +> <guisubmenu +>Omslagshantering</guisubmenu +> <guimenuitem +>Visa omslagshantering</guimenuitem +></menuchoice +>). Omslagshanteringen visar en lista till höger med alla omslag som &juk; känner till, och efter de har laddats kan du snabbt reducera listan med sökraden längst upp, eller genom att använda listan med artister till vänster. När du väl ser omslaget du vill använda, kan du dra och släppa det på ett spår för att får det att gälla. Det ska ske nästan omedelbart, eftersom &juk; återanvänder samma omslag (och du ser dessutom omslaget medan du drar det). Tyvärr kan det ta en stund att ladda omslagen från början, och omslagshanteringen är inte användbar för mycket annat förutom detta.</para> + +<para +>2. Jag föredrar att använda den här metoden eftersom den är ganska enkel. Allt du behöver göra är att dubbelklicka på ett spår som har omslaget du vill ha, för att börja spela det. Det gör att omslaget visas på raden <interface +>Spelar nu</interface +>, och du kan dra och släppa omslaget på spåret som du vill ändra precis som du skulle gjort med omslagshanteringen.</para> + +</sect3> + +<sect3 id="dragging-covers"> + +<title +>Dra omslag till mer än ett spår åt gången</title> + +<para +>Observera också att du kan använda drag och släpp för att snabbt ange omslag för mer än ett spår. Markera bara spåren du vill att omslaget ska gälla, och dra omslaget till något av de markerade spåren.</para> +</sect3> + +<sect3 id="old-covers"> + +<title +>Vad händer med mina gamla omslag?</title> + +<para +>Du kanske funderar på vad &juk; gör om du redan har omslag från &juk; 2.2. Vad som händer är att &juk; automatiskt konverterar de gamla omslagen och sammanfogar dem i omslagshanteringssystemet.</para> + +<para +>Eftersom det är en tidsödande process, sker det inte på en gång. Istället konverteras bara det gamla omslaget när omslaget behöver visas på skärmen. När konverteringsprocessen utförs, känner &juk; igen vilka spår som skulle ha visat omslaget som konverteras, och låter automatiskt det nya omslaget gälla för dessa spår. Slutresultatet är att det inte ska uppstå några synliga ändringar. &juk; behåller samma omslag som spåren alltid har haft, utom att du nu omedelbart kan dra fördel av de nya funktionerna för omslagshantering.</para> + +</sect3> +<sect3 id="removing-covers"> + +<title +>Ta bort omslag</title> + +<para +>En annan sidoeffekt är att du nu kan ta bort ett omslag från ett spår utan att samtidigt ta bort det från alla andra spår med samma <guilabel +>artist </guilabel +> och <guilabel +>album</guilabel +>.</para> + +<para +>I &juk; 2.3 tar kommandot för borttagning av omslag bara bort omslagen från markerade spår. </para> + +</sect3> +<sect3 id="suggested-use"> + +<title +>Föreslagen användning:</title> + +<para +>1. Du kan nu använda samma omslag för spår med album som har <quote +>Skiva 1</quote +>, <quote +>Skiva 2</quote +>, etc. vilket du inte kunde göra i &juk; 2.2 utan att duplicera omslaget.</para> + +<para +>2. Använda ett generellt omslag för spår om du helt enkelt måste ha ett omslag för alla spår, eller om du har låtar som inte har givits ut som ett album, men passar bra i en genre. Du skulle kunna skapa ett omslag för den musiktypen och använda det för låtarna ifråga.</para> + +</sect3> +</sect2> +</sect1> + +</chapter> + +<chapter id="toolbar-reference"> +<title +>Verktygsraden i &juk;</title> + +<sect1 id="main-toolbar"> +<title +>Huvudverktygsraden</title> + +<screenshot> +<screeninfo +>Verktygsraden i &juk;</screeninfo> +<mediaobject> +<imageobject> +<imagedata format="PNG" fileref="toolbar.png"/> +</imageobject> +<textobject> +<phrase +>Verktygsraden i &juk;</phrase> +</textobject> +<caption +><para +>Verktygsraden i &juk;</para +></caption> +</mediaobject> +</screenshot> + +<para +>Från vänster till höger i skärmbilden ovan, är ikonerna i standardverktygsraden följande:</para> + +<variablelist> +<varlistentry> +<term +><guiicon +>Ny</guiicon +></term> +<listitem +><para +>Skapa en ny spellista. Om du håller nere knappen, dyker en meny upp som låter dig välja olika sorters spellistor att skapa. </para> + <variablelist> + <varlistentry +><term +><guimenuitem +>Tom spellista...</guimenuitem +></term> + <listitem +><para +>Det här frågar dig efter namnet på en spellista, och infogar den sedan bland spellistorna. Spellistan är helt tom från början.</para +></listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Spellista från katalog...</guimenuitem +></term> + <listitem +><para +>Det här frågar dig efter katalogen som ska öppnas, och skapar därefter en spellista som innehåller musiken i katalogen och eventuella underkataloger. Den skapade spellistans namn är samma som den valda katalogens namn.</para +></listitem> + </varlistentry> + + <varlistentry +><term +><guimenuitem +>Sökspellista...</guimenuitem +></term> + <listitem +><para +>Det här visar den avancerade sökdialogrutan, som låter dig skapa en <quote +>virtuell spellista</quote +>. Alla sånger i samlingslistan som matchar de sökvillkor som du anger i den avancerade sökdialogrutan läggs till i den nya spellistan. När samlingslistan ändras, ändras också den nya spellistan. Om du till exempel skapade en spellista med alla dina sånger av Depeche Mode, och du därefter lägger till en ny sång av Depeche Mode i samlingslistan, visas den i spellistan med sånger av Depeche Mode utan att du behöver göra något särskilt. </para +></listitem> + </varlistentry> + + </variablelist> +</listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Öppna</guiicon +></term> +<listitem +><para +>Lägg till en fil i samlingslistan (om den är aktiv) eller i den markerade spellistan. Läggs en fil till i en spellista, läggs den också automatiskt till i samlingslistan, men inte vice versa.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Spara</guiicon +></term> +<listitem +><para +>Spara den markerade spellistan. För att spara en tagg som du har redigerat, välj antingen ett annat objekt, eller tryck istället på <keycombo action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +>.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Klipp ut</guiicon +></term> +<listitem +><para +>Om en spellista eller sång är markerad, klipp ut (ta bort) den från listan. Om taggeditorn är aktiv, fungerar det som klipp ut i vilken editor som helst, och tar bort den markerade texten, men behåller en kopia på klippbordet.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Kopiera</guiicon +></term> +<listitem +><para +>Om taggeditorn är aktiv, fungerar detta som kopiera i vilken editor som helst, och placerar en kopia av den markerade texten på klippbordet.</para> +<para +>Om du använder kopiera för en sång i samlingslistan, läggs webbadressen på klippbordet, så du kan klistra in den. Du skulle till exempel kunna klistra in webbadressen i en texteditor, &konqueror; eller någon annan spellista.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Klistra in</guiicon +></term> +<listitem +><para +>Om du antingen klippte ur eller kopierade en webbadress tidigare från samlingslistan, kan du klistra in webbadressen igen i en ny spellista. Du skulle också kunna klistra in en webbadress som du kopierat i &konqueror; eller något annat program. Om du använder taggeditorn, klistras texten på klippbordet in i det markerade fältet.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Visa sökrad</guiicon +></term> +<listitem +><para +>Visa eller göm <link linkend="search-bar" +>sökraden</link +>.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guiicon +>Visa taggeditor</guiicon +></term> +<listitem +><para +>Visa eller göm <link linkend="tagging-a-single-file" +>taggeditorn</link +>.</para +></listitem> +</varlistentry> + +<varlistentry id="play-toolbar"> +<term +>Uppspelningsknappar</term> +<listitem> +<para +>De fungerar som för alla vanliga mediaspelare som du kan ha stött på. Knapparna är <guiicon +>Spela</guiicon +>, <guiicon +>Paus</guiicon +>, <guiicon +>Stoppa</guiicon +>, <guiicon +>Gå bakåt</guiicon +> till föregående sång och <guiicon +>Gå framåt</guiicon +> till nästa sång.</para> +<para +>Det finns också ett skjutreglage, som visar hur länge (relativt) den nuvarande sången har spelats. Du kan dra reglaget med musen för att gå framåt eller bakåt i ett spår.</para> +<para +>Till sist finns en volymkontroll. Som man kan vänta sig, höjer och sänker den volymen. <quote +>Högt</quote +> är till höger, och <quote +>lågt</quote +> till vänster.</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="search-bar"> +<title +>Sökraden</title> + +<para +>Sökraden låter dig snabbt leta efter en sång i samlingslistan eller en spellista.</para> + +<para +>Genom att helt enkelt skriva in text i sökraden, minskas den synliga listan med sånger till de som innehåller texten i någon kolumn som visas. Genom att trycka på returtangenten spelas den översta som matchar i spellistan upp.</para> + +<para +>Sökningen börjar omedelbart när texten skrivs in i sökfältet. Sökningen är inkrementell, det vill säga när du skriver in varje tecken i textfältet, begränsas sökningen ytterligare. Det är användbart för att till exempel hitta en sång där du bara kommer ihåg en del av namnet.</para> + +<para +>Om du skulle vilja göra en finkornigare sökning, kan du klicka på knappen Avancerad sökning till höger om sökraden, vilket låter dig skapa en virtuell spellista. Om du vill avbryta sökningen, kan du helt enkelt klicka på knappen Rensa till vänster om sökraden.</para> + +</sect1> + +</chapter> + +<chapter id="menu-and-command-reference"> +<title +>Meny och kommandoreferens</title> + +<sect1 id="menus"> +<title +>Menyer</title> + +<sect2 id="menu-file"> +<title +>Menyn <guimenu +>Arkiv</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +> </shortcut +> <guimenu +>Arkiv</guimenu +><guisubmenu +>Ny</guisubmenu +> <guimenuitem +>Tom spellista...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Skapa en ny spellista</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +> </shortcut +> <guimenu +>Arkiv</guimenu +><guisubmenu +>Ny</guisubmenu +> <guimenuitem +>Spellista från katalog...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Skapar en ny spellista som innehåller alla musikfiler i en katalog och eventuella underkataloger. Eventuell musik i filer med spellistor som &juk; känner igen läggs också till.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +> </shortcut +> <guimenu +>Arkiv</guimenu +><guisubmenu +>Ny</guisubmenu +> <guimenuitem +>Sökspellista...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Skapar en ny <link linkend="juk-search-playlists" +>sökspellista</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +> </shortcut +> <guimenu +>Arkiv</guimenu +> <guimenuitem +>Öppna...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Välj en fil (eller filer) som ska läggas till i samlingslistan. Om du väljer en fil med en spellista, läggs alla filer i spellistan till.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Lägg till katalog...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Välj en katalog (eller kataloger) som ska läggas till i samlingslistan. Katalogerna söks igenom igen så fort &juk; startas, eller alternativet <menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Uppdatera</guimenuitem +></menuchoice +> väljes.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Byt namn...</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Byt namn på en spellista.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Duplicera...</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Skapa en duplicerad spellista från den markerade spellistan, och fråga efter ett nytt namn. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Uppdatera</guimenuitem +></menuchoice> +</term> +<listitem +><para +>Laddar om tagginformationen för alla filer i den markerade spellistan. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Ta bort</guimenuitem +></menuchoice +></term> +<listitem +><para +>Ta bort den markerade spellistan.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Arkiv</guimenu +><guimenuitem +>Spara</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Spara den markerade spellistan.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Spara som...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Sparar den markerade spellistan med ett annat namn.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-edit"> +<title +>Menyn <guimenu +>Redigera</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Redigera</guimenu +> <guimenuitem +>Rensa</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Ta bort de markerade sångerna från spellistan.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-view"> +<title +>Menyn <guimenu +>Visa</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Visa</guimenu +> <guimenuitem +>Visa sökrad</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är en växlande åtgärd som anger om <link linkend="search-bar" +>Sökraden</link +> visas eller inte.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Visa</guimenu +> <guimenuitem +>Visa taggeditor</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är en växlande åtgärd som anger om <interface +>Taggeditorn</interface +> visas eller inte.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Visa</guimenu +> <guimenuitem +>Visa historik</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är en växlande åtgärd som anger om <link linkend="juk-history-playlists" +>Historikspellistan</link +> visas eller inte.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Visa</guimenu +> <guisubmenu +>Visningslägen</guisubmenu +> <guimenuitem +>Förval</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Byter till <link linkend="juk-viewmode-default" +>Förvalt visningsläge</link +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Visa</guimenu +> <guisubmenu +>Visningslägen</guisubmenu +> <guimenuitem +>Träd</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Byter till <link linkend="juk-viewmode-compact" +>Kompakt visningsläge</link +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Visa</guimenu +> <guisubmenu +>Visningslägen</guisubmenu +> <guimenuitem +>Träd</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Byter till <link linkend="juk-viewmode-tree" +>Trädvisningsläge</link +>. </para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-player"> +<title +>Menyn <guimenu +>Spelare</guimenu +></title> + +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Spelare</guimenu +> <guimenuitem +>Spela slumpmässigt</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är ett växlande alternativ som styr inställningen av slumpmässig uppspelning. Om Spela slumpmässigt är aktiverat, väljer &juk; slumpmässigt en sång i den nuvarande spellistan när sången som för närvarande spelar är klar.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Spelare</guimenu +> <guimenuitem +>Upprepa spellista</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är ett växlande alternativ som styr inställningen för att upprepa spellistan. Om Upprepa spellista är aktiverat börjar &juk; spela från början när uppspelningen av alla sånger i den nuvarande spellistan är klar.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Spelare</guimenu +> <guimenuitem +>Spela</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot börjar spela sången som för närvarande är markerad, eller återupptar uppspelning av sången vid paus.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Spelare</guimenu +> <guimenuitem +>Paus</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot gör paus för sången som för närvarande spelas. Använd kommandot Spela för att återuppta uppspelning.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Spelare</guimenu +> <guimenuitem +>Stoppa</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot stoppar uppspelning av sången som för närvarande spelas. Därefter kan du inte längre återuppta uppspelningen från nuvarande position.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Spelare</guimenu +> <guimenuitem +>Föregående spår</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot spelar sången som spelades innan sången som för närvarande spelas.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Spelare</guimenu +> <guimenuitem +>Nästa spår</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot går till nästa sång att spela i spellistan.</para> +</listitem> +</varlistentry> + +</variablelist> +</sect2> + +<sect2 id="menu-tagger"> +<title +>Menyn <guimenu +>Taggning</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>T</keycap +></keycombo +></shortcut +> <guimenu +>Taggning</guimenu +> <guimenuitem +>Spara</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot sparar alla ändringar av taggarna som du redigerar. Normalt sparas inte ändringar förrän du avmarkerar filen du redigerar.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Taggning</guimenu +> <guimenuitem +>Ta bort</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot tar bort filer som för närvarande är markerade från samlingslistan och alla spellistor som innehåller dem, och tar därefter bort markerade filer från disk. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>I</keycap +></keycombo +></shortcut +> <guimenu +>Taggning</guimenu +><guisubmenu +>Gissa tagginformation</guisubmenu +><guimenuitem +>Från filnamn</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot försöker gissa taggarna för markerade filer genom att avsöka filnamnet. Du kan ställa in mönstren som används för att gissa, genom att välja <menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Gissning av taggar...</guimenuitem +></menuchoice +>, som visar <link linkend="juk-tag-guesser-configuration" +>Inställningsdialogrutan för gissning av taggar</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +><keycombo action="simul" +><keycap +>Ctrl</keycap +><keycap +>I</keycap +></keycombo +></shortcut +> <guimenu +>Taggning</guimenu +><guisubmenu +>Gissa tagginformation</guisubmenu +><guimenuitem +>Från Internet</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot försöker gissa taggar för markerade filer genom att använda programmet <application +>trm</application +> som tillhandahålls med <ulink url="http://www.musicbrainz.org/" +>MusicBrainz</ulink +>.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect2> + +<sect2 id="menu-settings"> +<title +>Menyn <guimenu +>Inställningar</guimenu +></title> + +<variablelist> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Verktygsrader</guimenuitem +> <guimenuitem +>Visa huvudverktygsrad</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot visar eller döljer <link linkend="main-toolbar" +>Huvudverktygsraden</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Verktygsrader</guimenuitem +> <guimenuitem +>Visa uppspelningsverktygsrad</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot visar eller döljer <link linkend="play-toolbar" +>Uppspelningsverktygsraden</link +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Visa startskärm vid start</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är ett växlande alternativ. Om aktiverat visar &juk; en informationsskärm vid start medan din musiksamling laddas.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Docka i systembrickan</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är ett växlande alternativ. &juk; visar en ikon i din systembricka. Du kan använda ikonen i systembrickan för att avgöra om &juk; spelar, och för att styra uppspelning.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Bli kvar i systembrickan vid stängning</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är ett växlande alternativ. &juk; fortsätter att köra om du stänger huvudfönstret. Alternativet Docka i systembrickan måste också vara aktiverat. För att avsluta &juk; använd kommandot <menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Avsluta</guimenuitem +></menuchoice +> i huvudfönstret, eller kommandot <guimenuitem +>Avsluta</guimenuitem +> i systembrickans sammanhangsberoende meny.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Visa meddelande om spår</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här är ett växlande alternativ. Om aktiverat visar &juk; ett meddelande så fort en sång börjar spelas, med information om artisten och titeln, och med knappar som snabbt låter dig byta till en annan sång. Alternativet Docka i systembrickan måste också vara aktiverad.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Gissning av taggar...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot visar <link linkend="juk-tag-guesser-configuration" +>Inställningsdialogrutan för gissning av taggar</link +>, där du kan ändra mönstret som används för att gissa tagginformation från filnamn.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Filnamnbyte...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här kommandot visar <link linkend="juk-rename-dialog" +>Dialogrutan för filnamnsbyte</link +>, där du kan ändra sättet som &juk; byter namn på filer åt dig.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Anpassa genvägar...</guimenuitem +> </menuchoice> +</term> +<listitem +><para +>Det här visar &kde;:s vanliga dialogruta där du kan anpassa snabbtangenter för &juk;. Några rimliga förval ingår också, inklusive multimediatangenter för de som har multimediatangentbord.</para> +</listitem> +</varlistentry> + +</variablelist> + +</sect2> + +</sect1> + +<sect1 id="keybindings"> +<title +>Tangentbindningsreferens</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 +>Tangentkombination</entry> +<entry +>Åtgärd</entry> +</row> +</thead> +<tbody> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>A</keycap +></keycombo +></entry> +<entry +>Markera alla</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>C</keycap +></keycombo +></entry> +<entry +>Kopiera</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>R</keycap +></keycombo +></entry> +<entry +>Byt namn på fil</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>I</keycap +></keycombo +></entry> +<entry +>Gissa taggar från Internet.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +></entry> +<entry +>Gissa taggar från filnamnet.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>F</keycap +></keycombo +></entry> +<entry +>Ny <link linkend="juk-search-playlists" +>sökspellista</link +>.</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>G</keycap +></keycombo +></entry> +<entry +>Gissa taggvärden baserat på filnamn</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>N</keycap +></keycombo +></entry> +<entry +>Ny tom spellista</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>D</keycap +></keycombo +></entry> +<entry +>Ny spellista från katalog.</entry> +</row> +<row> +<entry +><keycombo +action="simul" +>&Ctrl;<keycap +>T</keycap +></keycombo +></entry> +<entry +>Spara ändringar av redigerade taggar.</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +</sect1> +</chapter> + +<chapter id="credits-and-licenses"> +<title +>Tack till och licenser</title> + +<para +>&juk; Copyright © 2002, 2003, 2004 &Scott.Wheeler;.</para> + +<para +>&juk; utvecklas och underhålls av &Scott.Wheeler; &Scott.Wheeler.mail;.</para> + +<para +>Många tack till följande personer som har bidragit till &juk;:</para> + +<itemizedlist> +<listitem +><para +>&Daniel.Molkentin; &Daniel.Molkentin.mail; för dockning i systembrickan, taggredigering <quote +>på plats</quote +>, felrättningar, missionering, moraliskt stöd.</para> +</listitem> +<listitem +><para +>Tim Jansen <email +>tim@tjansen.de</email +> för överföring till <application +>GStreamer</application +></para> +</listitem> + +<listitem +><para +>Stefan Asserhäll <email +>stefan.asserhall@telia.com</email +> för stöd för globala snabbtangenter.</para> +</listitem> + +<listitem +><para +>Stephen Douglas <email +>stephen_douglas@yahoo.com</email +> för meddelanden om spår.</para> +</listitem> + +<listitem +><para +>&Frerich.Raabe; &Frerich.Raabe.mail; för automagisk gissning av spårdata, och felrättningar.</para> +</listitem> + +<listitem +><para +>Zack Rusin <email +>zack@kde.org</email +> för fler automagiska saker, inklusive stöd för MusicBrainz.</para> +</listitem> + +<listitem +><para +>Adam Treat <email +>manyoso@yahoo.com</email +> för att ha varit sammansvuren i trollkonster med MusicBrainz.</para> +</listitem> + +<listitem +><para +>Matthias Kretz <email +>kretz@kde.org</email +> för att ha varit grannskapets vänlige &arts;-guru.</para> +</listitem> + +<listitem +><para +>Maks Orlovich <email +>maksim@kde.org</email +> för att ha gjort &juk; mer lättanvänt för personer med flera terabyte musik.</para> +</listitem> + +<listitem +><para +>Antonio Larrosa Jimenez <email +>larrosa@kde.org</email +> för &DCOP;-gränssnittet.</para> +</listitem> + +</itemizedlist> + +<para +>Dokumentation Copyright © 2003, &Lauri.Watts;, och copyright © 2004 Michael Pyne.</para> + +<para +>Översättning Stefan Asserhäll <email +>stefan.asserhall@comhem.se</email +></para +> +&underFDL; &underGPL; </chapter> + +&documentation.index; + +</book> +<!-- +Local Variables: +mode: sgml +sgml-minimize-attributes:nil +sgml-general-insert-case:lower +sgml-indent-step:0 +sgml-indent-data:nil +End: +--> diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/juk-adv-search.png b/tde-i18n-sv/docs/tdemultimedia/juk/juk-adv-search.png Binary files differnew file mode 100644 index 00000000000..d942f5a7a6b --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/juk-adv-search.png diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/juk-file-renamer.png b/tde-i18n-sv/docs/tdemultimedia/juk/juk-file-renamer.png Binary files differnew file mode 100644 index 00000000000..ed8d9196436 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/juk-file-renamer.png diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/juk-main.png b/tde-i18n-sv/docs/tdemultimedia/juk/juk-main.png Binary files differnew file mode 100644 index 00000000000..57d7468dbeb --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/juk-main.png diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/juk-tag-guesser.png b/tde-i18n-sv/docs/tdemultimedia/juk/juk-tag-guesser.png Binary files differnew file mode 100644 index 00000000000..5541e1c7540 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/juk-tag-guesser.png diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/normal-playlist.png b/tde-i18n-sv/docs/tdemultimedia/juk/normal-playlist.png Binary files differnew file mode 100644 index 00000000000..47891ad751c --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/normal-playlist.png diff --git a/tde-i18n-sv/docs/tdemultimedia/juk/search-playlist.png b/tde-i18n-sv/docs/tdemultimedia/juk/search-playlist.png Binary files differnew file mode 100644 index 00000000000..22f231cb15e --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/juk/search-playlist.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaboodle/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kaboodle/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaboodle/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kaboodle/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kaboodle/Makefile.in new file mode 100644 index 00000000000..9e88f64f29c --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaboodle/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kaboodle +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kaboodle/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaboodle/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kaboodle/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kaboodle/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/kaboodle/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/kaboodle/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..86823b99499 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaboodle/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/kaboodle/index.docbook b/tde-i18n-sv/docs/tdemultimedia/kaboodle/index.docbook new file mode 100644 index 00000000000..641c474b1fb --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaboodle/index.docbook @@ -0,0 +1,110 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "<application +>kaboodle</application +>"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Swedish "INCLUDE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Handbok &kappname;</title> + +<authorgroup> +<author +><firstname +></firstname +> <othername +></othername +> <surname +></surname +> <affiliation +> <address +><email +></email +></address> +</affiliation> +</author> +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit +> +</authorgroup> + +<legalnotice +>&FDLNotice;</legalnotice> + +<!-- Date and version information of the documentation +Don't forget to include this last date and this last revision number, we +need them for translation coordination ! +Please respect the format of the date (YYYY-MM-DD) and of the version +(Major.minor.lesser), it could be used by automation scripts --> + +<date +>2000-09-02</date> +<releaseinfo +>0.00.00</releaseinfo> + +<!-- Abstract about this handbook --> + +<abstract> +<para +>&kaboodle; är en snabb mediaspelare för &kde;, som spelar upp en fil </para> +</abstract> + + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>Kapp</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction" +> <title +>Inledning</title +> <para +>Tyvärr, men dokumentationen för &kappname; var inte klar när &kde; installerades på den här datorn.</para +> <para +>Om du behöver hjälp, titta på <ulink url="http://www.kde.org" +>&kde;:s hemsida</ulink +> för uppdateringar, eller skicka din fråga till <ulink url="mailto:kde@kde.org" +>&kde;:s e-postlista för användare</ulink +>.</para +> <para +><emphasis +>&kde;-gruppen</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-sv/docs/tdemultimedia/kaudiocreator/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/Makefile.in new file mode 100644 index 00000000000..d71f7263b8f --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kaudiocreator +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kaudiocreator/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=cddbconfigurationlookup.png cdinserted.png cddbconfigurationsubmit.png kaudiocreatormainwindow800.png index.docbook encodernotfound.png encoderconfiguration.png index.cache.bz2 readytorip.png rippingandencoding.png jobcontrol.png cdconfiguration.png generalconfiguration.png ripperconfiguration.png Makefile.in rippingandencoding2.png entersong1.png startalbumeditor.png jobshavestarted.png Makefile.am lameconfiguration.png + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) cddbconfigurationlookup.png startalbumeditor.png lameconfiguration.png encoderconfiguration.png rippingandencoding.png cddbconfigurationsubmit.png index.docbook jobcontrol.png encodernotfound.png rippingandencoding2.png jobshavestarted.png cdinserted.png ripperconfiguration.png cdconfiguration.png generalconfiguration.png readytorip.png kaudiocreatormainwindow800.png entersong1.png + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/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 cddbconfigurationlookup.png startalbumeditor.png lameconfiguration.png encoderconfiguration.png rippingandencoding.png cddbconfigurationsubmit.png index.docbook jobcontrol.png encodernotfound.png rippingandencoding2.png jobshavestarted.png cdinserted.png ripperconfiguration.png cdconfiguration.png generalconfiguration.png readytorip.png kaudiocreatormainwindow800.png entersong1.png ; 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 cddbconfigurationlookup.png startalbumeditor.png lameconfiguration.png encoderconfiguration.png rippingandencoding.png cddbconfigurationsubmit.png index.docbook jobcontrol.png encodernotfound.png rippingandencoding2.png jobshavestarted.png cdinserted.png ripperconfiguration.png cdconfiguration.png generalconfiguration.png readytorip.png kaudiocreatormainwindow800.png entersong1.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kaudiocreator/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in cddbconfigurationlookup.png startalbumeditor.png lameconfiguration.png encoderconfiguration.png rippingandencoding.png cddbconfigurationsubmit.png index.docbook jobcontrol.png encodernotfound.png rippingandencoding2.png jobshavestarted.png cdinserted.png ripperconfiguration.png cdconfiguration.png generalconfiguration.png readytorip.png kaudiocreatormainwindow800.png entersong1.png ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kaudiocreator/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kaudiocreator/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cdconfiguration.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cdconfiguration.png Binary files differnew file mode 100644 index 00000000000..3996461136f --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cdconfiguration.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cddbconfigurationlookup.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cddbconfigurationlookup.png Binary files differnew file mode 100644 index 00000000000..3cba05e12a4 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cddbconfigurationlookup.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cddbconfigurationsubmit.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cddbconfigurationsubmit.png Binary files differnew file mode 100644 index 00000000000..f9a28f087de --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cddbconfigurationsubmit.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cdinserted.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cdinserted.png Binary files differnew file mode 100644 index 00000000000..a347b3f27a4 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/cdinserted.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/encoderconfiguration.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/encoderconfiguration.png Binary files differnew file mode 100644 index 00000000000..da9ba0e837d --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/encoderconfiguration.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/encodernotfound.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/encodernotfound.png Binary files differnew file mode 100644 index 00000000000..c6bfe8b5a00 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/encodernotfound.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/entersong1.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/entersong1.png Binary files differnew file mode 100644 index 00000000000..e349963c76d --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/entersong1.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/generalconfiguration.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/generalconfiguration.png Binary files differnew file mode 100644 index 00000000000..57ad0f8c60f --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/generalconfiguration.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..e8b6526a6cb --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/index.docbook b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/index.docbook new file mode 100644 index 00000000000..1e827fa942c --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/index.docbook @@ -0,0 +1,1690 @@ +<?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 "tdemultimedia" +><!-- tdebase, tdeadmin, etc --> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Swedish "INCLUDE" +><!-- change language only here --> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Handbok &kaudiocreator;</title> + +<authorgroup> +<author> +<surname +>alan</surname> +<affiliation> +<address +><email +>tyvärr@ingen.e-post</email +>ingen e-post, tyvärr.</address> +</affiliation> +</author> +<othercredit role="translator" +><firstname +>Stefan</firstname +><surname +>Asserhäll</surname +><affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +><contrib +>Översättare</contrib +></othercredit +> +</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; är ett lagringsprogram av ljud-cd för &kde;. </para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>kaudiocreator</keyword> +<keyword +>cd</keyword> +<keyword +>lagringsprogram</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Inledning</title> + +<para +>&kaudiocreator; är ett lagringsprogram av ljud-cd för &kde;. Du kan enkelt lagra dina ljud-cd som mp3- eller ogg-filer, eller andra format, beroende på vilka kodningsprogram du har installerat på systemet.</para> + +<para +>&kaudiocreator; är ett gränssnitt till cdparanoia (för att lagra cd-data som wav-filer på hårddisken) och många kodningsprogram som kodar (komprimerar) dessa wav-filer. För närvarande stöds lame för mp3, oggenc för ogg och flac (förlustfri komprimering) direkt vid leverans (du kan dock behöva installera dessa kodningspaket från din distribution). Men du kan lägga till fler kodningsprogram till programmet (om du har installerat dem).</para> + +<para +>I allmänhet är lagring av en ljud-cd en process som består av två steg: <itemizedlist> + <listitem +><para +>först lagras cd-spåren eller sångerna på datorn som wav-filer (förlustfritt, utan komprimering) och därefter</para +></listitem> + <listitem +><para +>i ett andra steg komprimeras wav-filerna (oftast en per sång) till mp3- eller ogg-format, eller till andra format som det förlustfria flac-formatet.</para +></listitem> + </itemizedlist> +</para> + +<para +>&kaudiocreator; använder cdparanoia för det första steget, lagringen av cd:n. Nästan alla distributioner har ett förkompilerat paket, så installera det om du inte redan har gjort det.</para> + +<para +>För det andra steget behöver lame (mp3), oggvorbis (för ogg) eller andra kodningsprogram vara installerade. Alla dessa program tillhandahålls oftast för vilken distribution av Linux du än har, så det är troligen inte nödvändigt att kompilera något själv. Du kan bara behöva installera något av dessa paket. Du behöver bara installera kodningspaketet du kommer att behöva. Om du till exempel inte behöver flac, finns det ingen anledning att installera det.</para> + +<para +>Vilket kodningsprogram eller filformat ska man använda? Kapitlet <link linkend="what_encoder" +>Vilken kodning ska man använda</link +> ger en kort introduktion om kodning, ljudkvalitet och komprimeringsfaktorer.</para> + +<para +>Några ord om kopieringsskyddade cd: Som redan nämnts, använder &kaudiocreator; cdparanoia för att lagra ljuddata från cd:n. Programmet är inte konstruerat för att knäcka kopieringsskydd. Så om inte din cd- eller dvd-spelares fasta program går förbi skyddet, kommer du att misslyckas med lagring av skyddade ljud-cd. Hur som helst kan inte &kaudiocreator; själv hantera eller gå förbi någon skyddsmekanism. Det är ditt problem: Köp helt enkelt inte kopieringsskyddade ljud-cd, så kommer marknadskrafterna få sådana stolligheter att tyna bort!</para> + +<para +>Minsann, läser du fortfarande? Även om du bara klickade på hjälpalternativet när du startade programmet för första gången, och inte hade en aning om hur man fortsätter från den ganska tomma skärmen och ovanligt korta menyn (särskilt om någon ljud-cd inte redan var inmatad i enheten när programmet startades)?</para> + +<para +>Oroa dig inte, den här handboken kommer att tala om för dig hur du lagrar en cd med programmet. Förutom den vanliga förklaringen av programmets kommandon och inställningar, finns ett särskilt avsnitt med <link linkend="Example" +>ett fullständigt stegvis exempel</link +>. Först får du lära dig hur man ställer in allmänna inställningar. Det omfattar din cd-enhet (enhetsidentifikation), katalogen för tillfälliga filer, huvudkatalogen för resultat, där underkataloger som namnges enligt vad du väljer från cd-parametrarna skapas för varje cd, kodningsprogrammet att använda (som lame för mp3-filer och oggvorbis för ogg-filer), och bland andra inställningar om du vill använda freedb för att hämta data om cd:n från Internet eller om du vill skriva in all data för hand (paranoia, inte cdparanoia).</para> +<para +>Medan inställningen bara behöver göras en gång (du kan dock justera den så ofta du vill ända till du hittar en lämplig inställning som passar dig), kommer du därefter att lära dig det dagliga jobbet att lagra en cd på hårddisken. Det är (förhoppningsvis) då du förstår och lär dig tycka om gränssnittets enkla utgångspunkt, som du först kanske var tveksam över.</para> + +<para +>En sista anmärkning: &kaudiocreator; är ett mycket flexibelt program som kan anropa många kodningsprogram. Därför täcker handboken (för närvarande) inte alla möjliga kommandon och inställningar. Använd den som en utgångspunkt för att själv utforska programmet om du har behov av mer än vad som täcks här. Oftast kan mer information om kodningsprogrammen (programnamn), som &kaudiocreator; anropar, erhållas genom att starta en terminal och skriva <command +>man programnamn</command +>, <command +>programnamn -help</command +>, <command +>programnamn --help</command +> eller <command +>programnamn -h</command +>.</para> + +<para +>Och nu: ha det så kul...</para> +</chapter> + +<chapter id="using-kaudiocreator"> +<title +>Använda &kaudiocreator;</title> + +<para +>Vad är det vi pratar om? Nå, du läser ju detta, så du har troligtvis redan startat programmet. Det bör se ut ungefär så här: </para> +<para> + +<screenshot> +<screeninfo +>Här är en skärmbild av &kaudiocreator;</screeninfo> + <mediaobject> + <imageobject> + <imagedata fileref="kaudiocreatormainwindow800.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av huvudfönstret i &kaudiocreator;</phrase> + </textobject> + </mediaobject> +</screenshot> +</para> +<para +>Huvudfönstret efter programmet har startats. </para> + +<sect1 id="kaudiocreator-features"> +<title +>En kort lista med funktionerna i &kaudiocreator;</title> + +<itemizedlist> + <listitem +><para +>Kan koda många format, beroende på vilka kodningsprogram som du har installerat (mp3, ogg, flac, etc.)</para +></listitem> + <listitem +><para +>Kan hämta cd-information från freedb via Internet, eller du kan arbeta helt nerkopplad, och skriva in allt för hand</para +></listitem> + <listitem +><para +>Kan lägga till taggar i filerna som skapas, beroende på vilket format du kodar till</para +></listitem> + <listitem +><para +>Ange katalognamn och sångnamn enligt fritt anpassningsbara kombinationer av cd-information</para +></listitem> +</itemizedlist> + +</sect1> +</chapter> + +<chapter id="commands"> +<title +>Kommandoreferens</title> + +<para +>Det här är bara en kortfattad lista med kommandon i huvudfönstret. Se <link linkend="Example" +>det fullständiga stegvisa exemplet</link +> för mer detaljinformation om hur programmet används, och skärmbilder med beskrivningar av programmets inställningsflikar.</para> + +<sect1 id="kaudiocreator-mainwindow"> +<title +>Huvudfönstret i &kaudiocreator;</title> + +<sect2> +<title +>Menyn <guimenu +>Arkiv</guimenu +></title> +<para> +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Mata ut cd</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Öppnar enheten och matar ut cd:n.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>CDDB-uppslagning</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Startar CDDB-uppslagning av cd-data enligt inställningarna under fliken <guilabel +>Slå upp</guilabel +> på sidan <guilabel +>CDDB</guilabel +>. (Kan vara lokal eller uppkopplad. I det senare fallet måste du först ansluta till Internet.)</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Redigera album...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Öppnar albumredigeringsfönstret.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Markera alla spår</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Markerar alla spår för behandling (lagring, och om inställt, kodning).</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Avmarkera alla spår</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Avmarkerar alla spår för behandling.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Lagra markerade</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Börjar lagringen, och om ett kodningsprogram är valt under fliken <guilabel +>Kodningsinställning</guilabel +> i inställningsdialogrutan, kodningen.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>S</keycap +></keycombo +> </shortcut +> <guimenu +>Arkiv</guimenu +> <guisubmenu +>Lagra markerade</guisubmenu +> </menuchoice +></term> +<listitem +><para +><action +>Öppnar en undermeny med en lista över tillgängliga kodningsprogram, så att du kan lagra en markering med ett annat kodningsprogram än det vanliga. Observera att kodningsprogrammet ska ha ställts in under fliken <guilabel +>Kodningsinställning</guilabel +> i inställningsdialogrutan.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Ta bort färdiga jobb</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Tar bort färdiga jobb från jobbfönstret.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Koda fil...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Öppnar en filbläddrare så att du kan välja en fil som redan lagrats att koda istället för att först lagra och därefter koda en hel cd.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><shortcut +> <keycombo action="simul" +>&Ctrl;<keycap +>Q</keycap +></keycombo +> </shortcut +> <guimenu +>Arkiv</guimenu +> <guimenuitem +>Avsluta</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Avslutar &kaudiocreator;.</action +></para +></listitem> +</varlistentry> +</variablelist> +</para> + +</sect2> + +<sect2> +<title +>Menyn <guimenu +>Inställningar</guimenu +></title> +<para> +<variablelist> +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Visa/Dölj verktygsrad</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Visar eller döljer verktygsraden.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Visa/Dölj statusrad</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Visar eller döljer statusraden.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Anpassa genvägar...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Öppnar inställningsfönstret för att ställa in genvägar (tangentkoder) för menykommandon.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Anpassa verktygsrader...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Öppnar inställningsfönstret för att anpassa verktygsraden.</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Anpassa meddelanden...</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Öppnar inställningsfönstret för att anpassa meddelandetypen (som loggar, pip) för programhändelser (som klar med cd-lagring).</action +></para +></listitem> +</varlistentry> + +<varlistentry> +<term +><menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Anpassa &kaudiocreator;</guimenuitem +> </menuchoice +></term> +<listitem +><para +><action +>Öppnar den huvudsakliga inställningsdialogrutan i &kaudiocreator; med flera flikar (som Kodare, för inställning av kodningsprogram). Du måste gå hit innan du kan använda programmet med lyckat resultat!</action +></para +></listitem> +</varlistentry> +</variablelist> +</para> + +</sect2> + +<sect2> +<title +>Menyn <guimenu +>Hjälp</guimenu +></title> +&help.menu.documentation; </sect2> + +</sect1> +</chapter> + +<chapter id="what_encoder"> +<title +>Vilket kodningsprogram och filformat man ska använda: Om ljudkvalitet, kodningsprogram och komprimeringsgrader</title> + +<para +>Vilken kodning ska man använda?</para> + +<para +>Om du inte vill förlora någon ljudinformation behöver du ett förlustfritt ljudformat. Förutom flac finns det andra som shorten eller monkey, som kan vara tillgängliga i din distribution. Nackdelarna är att komprimeringsgraden är låg och att nästan inga kommersiella spelare kan spela filerna.</para> + +<para +>Bland ljudformat som förlorar information på grund av datakomprimering enligt sin psykoakustiska modell, är mp3 och ogg de vanligaste. Idag kanske ogg har en viss fördel framför mp3 i ljudkvalitet vid lägre bithastigheter (upp till 128 kbit/s), men ovanför den hastigheten blir skillnaderna mindre viktiga, eftersom båda kodningsprogrammen producerar mycket bra ljudkvalitet.</para> + +<para +>I korthet:</para> + +<para +>flac <itemizedlist> + <listitem +><para +>+ förlustfri komprimering</para +></listitem> + <listitem +><para +>+ fri</para +></listitem> + <listitem +><para +>+ mycket bra ljudkvalitet (utan förlust)</para +></listitem> + <listitem +><para +>- låg komprimeringsgrad (troligen bara omkring 2,x)</para +></listitem> + <listitem +><para +>- stöd i musikspelare saknas (så vitt jag vet)</para +></listitem> + </itemizedlist> +</para> + +<para +>ogg <itemizedlist> + <listitem +><para +>- förlust av ljudinformation (hur mycket beror på slutlig bithastighet)</para +></listitem> + <listitem +><para +>+ fri</para +></listitem> + <listitem +><para +>+ bra till mycket bra ljudkvalitet (vid höga bithastigheter)</para +></listitem> + <listitem +><para +>+ hög komprimeringsgrad (beroende på resultatets ljudkvalitet)</para +></listitem> + <listitem +><para +>- dåligt stöd i musikspelare</para +></listitem> + </itemizedlist> +</para> + +<para +>mp3 <itemizedlist> + <listitem +><para +>- förlust av ljudinformation (hur mycket beror på slutlig bithastighet)</para +></listitem> + <listitem +><para +>'inte särskilt' fri, lame levereras fritt med de flesta distributioner, men det finns licensproblem</para +></listitem> + <listitem +><para +>+ bra till mycket bra ljudkvalitet (vid höga bithastigheter), men dock något sämre vid låga bithastigheter jämfört med ogg</para +></listitem> + <listitem +><para +>+ hög komprimeringsgrad (beroende på resultatets ljudkvalitet)</para +></listitem> + <listitem +><para +>+ bra stöd i musikspelare</para +></listitem> + </itemizedlist> +</para> + +<para +>Som tidigare nämnts, är både mp3 och ogg ljudformat där du i slutändan förlorar ljudinformation. Du kan inte återgå till originalet när du väl har mp3- eller ogg-filer. Du kan skapa wav-filer från dem, och till och med bränna dem på en cd igen för att spela dem på en cd-spelare (medan dvd-spelare oftast kan spela både wav och mp3, men oftast inte ogg), men wav-filerna som skapas från mp3 eller ogg är inte lika bra som originalet. I verkligheten, beroende på ditt hifi-system och komprimeringsgraden du valde när du skapade mp3- eller ogg-filerna, kanske du inte ens hör någon skillnad. Om du dock inte vill förlora någon ljudinformation men ändå vill komprimera dina wav-filer, bör du ta en titt på flac, shorten eller monkey. Men dessa kodningsprogram komprimerar inte mycket bättre än en faktor 2,x.</para> + +<para +>Om du inte är en absolut fanatiker väljer du troligen mellan ogg och mp3. Välj:</para> + +<para +>ogg - om du bara vill lyssna på musiken via datorn eller en datorbaserad musikserver och/eller du redan har någon av de få spelarna som spelar upp ogg.</para> + +<para +>mp3 - om du dessutom vill lyssna på musik på andra enheter, som vanliga dvd-spelare, portabla spelare (USB-stickor, minneskort, HD) eller särskilda bilstereoanläggningar. För närvarande, i början av 2005, stöder de flesta av dessa enheter bara mp3-format.</para> + +<para +>Kvalitetsmässigt bör båda ljudformaten vara bra nog, beroende på komprimeringsgraden du väljer. För mp3 (och troligen också för ogg) ger bithastigheten 128 kbit/s komprimeringsgraden 11 jämfört med de ursprungliga wav-filerna som är lagrade på cd:n. Det kan vara bra under resor, men är inte tillräckligt för ett bra hifi hemmasystem. Värdet 192 kbit/s är en bra kompromiss till och med för hifi-systemet i vardagsrummet. Det ger komprimeringsgraden 7,3.</para> + +<para +>Redan för flera år sedan kunde inte experter skilja en 256 kbit/s mp3-fil från cd-originalet, och det gällde en blindtest med ett hifi-system som du troligen aldrig kommer att ha råd med. Det reducerar ändå lagringsutrymmet för den ursprungliga wav-filen med faktorn 5,5, vilket är riktigt bra. Du kan också använda variabla bithastigheter på de flesta moderna system. Då varierar kodaren bithastighet beroende på musikens komplexitet, enligt dess psykoakustiska modell. Inställningen '--preset extreme' i lame skapar en fil med variabel bithastighet (VBR) i motsats till en konstant bithastighet (CBR) på 224 till 256 kbit/s, beroende på musikens komplexitet. Det komprimerar originalet med upp till faktorn 6,3 och kan spelas på nästan allt som för närvarande finns på marknaden.</para> + +<para +>Om du inte har ytterst dyr utrustning (vi talar om tiotusentals kronor) och ett ytterst upptränat musiköra, kan du troligen inte höra skillnad mot den maximala konstanta bithastigheten på 320 kbit/s, tro mig. Till och med den skulle ge komprimeringsgraden 4,4. Inställningen '--preset extreme' använder förresten 320 kbit/s för komplexa delar av musiken, medan mindre komplex musik komprimeras mycket mer för att nå medelbithastigheten 224 till 256 kbit/s.</para> + +<para +>En kort lista med ljudkvalitetsparametrar och resulterande komprimeringsgrad för lame (mp3) (använd lame --help för flera): <itemizedlist> + <listitem +><para +>'--preset extreme' = 224 till 256 kbit/s variabel bithastighet, komprimeringsgrad upp till 6,3. Använder upp till 320 kbit/s för komplexa delar av musiken och mycket mindre för mindre komplexa delar av en sång. Bra nog för hifi hemmasystem med hög kvalitet. Bästa valet!</para +></listitem> + <listitem +><para +>'--preset extreme -b 256' = 256 kbit/s konstant bithastighet, komprimeringsgrad omkring 5,5. Använder alltid 256 kbit/s för komplexa och mindre komplexa delar av en sång. Bra nog för hifi hemmasystem med hög kvalitet.</para +></listitem> + <listitem +><para +>'-h' = 128 kbit/s konstant bithastighet gemensam stereo, ungefär komprimeringsgrad 11. 128 kbit/s för sångens alla delar. Bra nog för barnens musik, portabla spelare och, ja, bilstereoanläggningar. Dock inte bra nog för bättre hifi hemmasystem.</para +></listitem> + </itemizedlist> +</para> + +</chapter> + + +<chapter id="parameters"> +<title +>Informationsparametrar för cd</title> + +<para +>Informationen om cd:n som du skriver in eller programmet automatiskt hämtar från freedb via Internet är tillgänglig som en lista parametrar i programmet, vilken kan tolkas av och användas i &kaudiocreator; och kodningsprogrammen för att skapa katalog och filnamn, och/eller skapa taggar i sångfilerna.</para> + +<para +>När de används med kodningsprogram måste du ofta använda en kombination av väljare från kodningsprogrammet och parametrarna här. Kodningsprogrammets manual eller hjälp ger dig information om programmets väljare.</para> + +<para +>För att till exempel lägga till cd-titeln i en tagg när mp3 kodas med lame, måste du lägga till väljaren -tt från lame följt av titelns parameter från &kaudiocreator;. Resultatet ser då ut som '... -tt {title} ...' .</para> + +<para +>Här är en summering av parametrarna i &kaudiocreator; som du kan använda (namnet på knappen i guiden):</para> +<itemizedlist> + <listitem +><para +>%{albumartist} - albumets artist (Artist)</para +></listitem> + <listitem +><para +>%{albumtitle} - albumets titel (Album)</para +></listitem> + <listitem +><para +>%{artist} - sångens artist (Spårartist)</para +></listitem> + <listitem +><para +>%{albumcomment} - kommentar om albumet (Kommentar)</para +></listitem> + <listitem +><para +>%{comment} - kommentar om sång (Spårkommentar)</para +></listitem> + <listitem +><para +>%{extension} - filändelse som mp3 eller ogg (Filändelse)</para +></listitem> + <listitem +><para +>%{genre} - musikgenre (Genre)</para +></listitem> + <listitem +><para +>%{title} - nuvarande spårs sångtitel (Spårtitel)</para +></listitem> + <listitem +><para +>%{number} - nuvarande spårets nummer (Spårnummer)</para +></listitem> + <listitem +><para +>%{~} - vanlig genväg till användarens hemkatalog i Linux (Hemkatalog)</para +></listitem> +</itemizedlist> + +</chapter> + + +<chapter id="freedb"> +<title +>Vad är freedb?</title> + +<para +>Du är inte ensam om önskan att lyssna på din musik oberoende av ljud-cd. Folk över hela världen lagrar sina cd och konverterar dem till ett annat format. Alla har samma erfarenhet: Den mest tidsödande delen av processen är att mata in cd-data. Några smarta personer fick idén att det skulle vara mycket effektivare om bara en person gjorde det för varje cd, och alla andra kunde hämta cd-data och bespara sig inmatningsarbetet.</para> + +<para +>Det är vad freedb är. En fri databas där lagringsprogram av cd kan mata in eller ladda upp information om en cd, så att alla andra kan ladda ner informationen istället för att skriva in den själv i datorn var och en. Observera att vi bara pratar om text här: cd-titel, artist, sångnamn, etc., inte själva ljudfilen.</para> + +<para +>Är det lagligt och säkert att använda?</para> + +<para +>Ja, det bör vara lagligt, men jag är inte en jurist. Dock kan ingen hindra dig från att lämna cd-information som ändå är öppet tillgänglig på cd:n. Ännu bättre, är att informationen är mer eller mindre meningslös utan cd:n, så ingen skada kan åsamkas artisten eller skivbolagen. Du kan ändå hämta all information genom att besöka en cd-försäljare, fysiskt eller på nätet.</para> + +<para +>Säkert att använda? För att hämta cd-information behöver du alltså inte avslöja någon personlig data själv. Det finns spegelplatser av freedb i många länder och du kan till och med ladda ner databasen för att arbeta i nerkopplat läge. (Varning, nu i början av 2005 är den redan en 370 Mibyte tar.bz2-fil!). Du blir tillfrågad om att ställa in en e-postadress för att hämta data, men den kan vara förfalskad. Jag skulle i själva verket rekommendera det, för att försäkra dig om att din e-postadress inte av misstag läcker ut till allmänheten och att slutresultatet blir att du får mängder med skräppost. De som tillhandahåller tjänsten hävdar att de inte spårar eller lagrar data (så varför frågar de efter den ändå?), och dessutom är många av spegelplatserna i händerna på pålitliga institutioner.</para> + +<para +>Du måste aktivt markera en ruta i &kaudiocreator; för att aktivera SMTP (att skicka en adress) och du kan ange en annan (förfalskad) adress att använda med freedb, som skiljer sig från den som systemet är inställd med. Enligt sättet som inställningen är konstruerad, verkar det som om e-postadressen inte används när data hämtas från servern. (Men jag är inte programmeraren, och har inte kontrollerat koden.)</para> + +<para +>För att kunna ge gensvar, ber dock initiativtagarna till freedb att om du skickar in data (om en ny, ännu inte listad cd eller en korrigering av en befintlig post), ska du göra det med en giltig e-postadress. Det är en utmärkt tjänst, så respektera denna önskan om du vill bidra och har något att bidra med. Det bör inte vara något att oroa sig för förutom det faktum att din e-postadress kan komma i fel händer och du får ta emot (mer) skräppost. (Du kanske inte bara vill använda din bästa adress). Läs motsvarande vanliga frågor och handledningar på freedb.org om du tror att du har en cd vars data ännu inte har skickats in till databasen.</para> + +<para +>Det finns spegelplatser av huvuddatabasen i många länder. När du ställer in &kaudiocreator; att använda freedb, välj då spegelplatsen närmast dig. Det sparar bandbredd på nätet och balanserar lasten mellan servrarna.</para> + +<para +>Besök freedb.org för att hämta en aktuell lista med spegelplatser för att hämta cd-information varje gång du lagrar en cd, eller för att ladda ner hela databasen eller (oftast månadsvis skapade) uppdateringar av databasen.</para> + +<para +>Jaha, hur fungerar det?</para> + +<para +>Beroende på en del magi skapas en (inte helt) unik identifikation automatiskt från cd-data när den matas in eller finns i enheten. Det kan vara antal spår och deras längd och/eller annat. Se freedb.org för mer information. Konstigt nog, men tyvärr, verkar identifikationen som skapas inte vara unik för varje cd. Ibland måste en cd sorteras i fel kategori av de 11 som definieras av freedb, eftersom det redan finns en cd med samma nyckel i databasen under den riktiga kategorin. För att fungera med befintlig data vill de inte ändra hur nycklar skapas. Dock bör det bara ske i undantagsfall. Kontrollera kategorierna på freedb.org innan du skickar in något. Kategorin Rock innehåller dessutom pop och rap, och det verkar inte finnas någon kategori för pop eller rap.</para> + +</chapter> + + +<chapter id="faq"> +<title +>Vanliga frågor</title> +&reporting.bugs; &updating.documentation; <qandaset id="faqlist"> +<qandaentry> +<question> +<para +>Vilket lagringsprogram används för att lagra sångerna från cd:n som wav-filer på datorn?</para> +</question> +<answer> +<para +>Nå, jag har inte sökt igenom källkoden, men ryktet säger att cdparanoia används för det. Det har alltid varit det bästa valet för att lagra ljud-cd. Observera att du måste installera paketet cdparanoia från din distribution, om det inte redan är gjort.</para> +<para +>Under tiden har cdda2wav hunnit ifatt, och det kan finnas områden där det har gått förbi cdparanoia, som cd med blandat läge. För enkel lagring av cd, använder nu cdda2wav samma bibliotek som cdparanoia. Dock är inte den här informationen så mycket värd för dig, eftersom du inte kan ändra cd-lagringsprogrammet i &kaudiocreator;. Om du har problem med att lagra en cd, och vill prova cdda2wav, måste du använda ett annat program såsom grip, ett program som använder gtk, och som låter dig definiera lagringsprogrammet du vill använda.</para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Vilken kodning och filformat stöds? Kan jag skapa mp3- eller ogg-filer?</para> +</question> +<answer> +<para +>Du kan välja kodningsprogram och på så sätt filformat som du vill omvandla de lagrade wav-filerna till. När du först öppnar den hittar du fördefinierade poster för lame (mp3), oggenc (ogg) och flac (ett ljudformat för förlustfri komprimering) under inställningsfliken för kodare, men du kan också lägga till andra kodningsprogram under fliken.</para> +<para +>Observera att du först måste installera kodningspaketet från din distribution för kodningsprogrammet som du vill använda, innan du kan använda det. (Det krävs också för de fördefinierade kodningsprogrammen!). Ta en titt i kapitlet <link linkend="what_encoder" +>Vilken kodning</link +> för mer information om kodningsprogram.</para> +<para +>Efter installation av ett kodningsprogram kan du få mer information om dess väljare genom att skriva något som liknar <command +>lame -help</command +> eller <command +>lame --help</command +> i en terminal (t.ex. konsole), där 'lame' måste ersättas av namnet på kodningsprogrammet som du har installerat.</para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Det finns inte mycket som fungerar här, eller hur?</para> +</question> +<answer> +<para +>Ja, det finns tusentals möjliga orsaker till det. Kontrollera inställningen av cd- eller dvd-enhetens enhetsidentifikation, åtkomsträttigheter och läsrättigheter och om du har installerat cdparanoia och ljudkodaren du har valt (lame för mp3, oggenc för ogg, flac etc.). Försök att anropa båda från kommandoraden i en terminal. Det kan ge dig ett tips om vad som är fel.</para> +<para +>Å, du försöker väl inte lagra en kopieringsskyddad ljud-cd, eller hur? Kontrollera på cd:ns omslag. Det fungerar inte! Det är ditt problem: Köp en oskyddad ljud-cd nästa gång.</para> +<para +>Det finns ett kapitel med <link linkend="Example" +>ett fullständigt stegvis exempel</link +>. Även om du vill använda andra inställningar, kan det ge dig tips om hur du kan fortsätta.</para> +</answer> +</qandaentry> +</qandaset> +</chapter> + + +<chapter id="Example"> + +<title +>Exempel från första start via grundläggande inställningar till lagring av den första cd:n</title> + +<para +>Har du läst hela handboken, förstått allting och ändå på något sätt är osäker på vad du ska göra? Nå, det är inget problem. Följ det här stegvisa exemplet så får du nog med information för att justera de alternativ som får programmet att göra exakt vad du vill.</para> + +<para +>I exemplet startar vi programmet för första gången, ställer in allting, och lagrar vår första cd. Vi använder lame '--preset extreme' för att skapa mp3-filer med variabel bithastighet (VBR), med mellan 224 och 256 kbit/s i medeltal, och ID3V1-taggar.</para> + +<para +>Du måste ha installerat cdparanoia och lame på systemet. Båda programmen ska finnas tillgängliga som förkompilerade paket för din distribution av Linux. Du måste kanske dock använda en söktjänst för att hitta ett lämpligt paket för lame, eftersom det ibland inte anses vara helt fritt. Hur som helst, kanske du inte behöver kompilera från källkod, något som du förstås ändå alltid kan göra.</para> + +<para +>Strukturen som vi använder för att organisera musiken på hårddisken är: <itemizedlist> + <listitem +><para +>Huvudkatalognamn för alla cd: /usr/share/cd</para +></listitem> + <listitem +><para +>I den en underkatalog för varje cd som heter: cdartist - cdtitel - år</para +></listitem> + <listitem +><para +>I underkatalogen sångnamnen: spårnummer - spårtitel</para +></listitem> + </itemizedlist> +</para> +<para +>Sammanfattningsvis: /usr/share/cd/cdartist - cdtitel - år/spårnummer - spårtitel</para> +<para +>Försäkra dig om att katalogen <filename +>/usr/share/cd</filename +> finns och att du har skrivrättigheter till den (försök t.ex. kopiera någonting till den med Konqueror).</para> + +<para +>Exemplet är uppdelat i två avsnitt: <itemizedlist> + <listitem +><para +>Det första täcker grundläggande inställning av &kaudiocreator;, något som du kanske bara gör en gång, och</para +></listitem> + <listitem +><para +>Det andra som beskriver processen för att göra själva lagringen av en cd, som du måste upprepa för varje cd du lagrar.</para +></listitem> + </itemizedlist> +</para> + +<para +>Nu sätter vi igång...</para> + +<sect1 id="Basic-Setup"> + <title +>E 1 Grundläggande inställning</title> + + <para +>Här ställer vi in kodaren att använda för att komprimera musiken (lame) och alltså ljudfilformatet (mp3) samt resultatets ljudkvalitet(--preset extreme = +> variabel bithastighet 224 till 256 kbit/s). Du definierar var filerna hamnar och vilken struktur som används för att lagra dem. Ställ in programmet att använda freedb för att hämta cd-data från Internet, eftersom vi är lata.</para> + + <para +>Även om du alltid kan ändra någon av inställningarna, ändrar du troligen inte dem varje gång du lagrar en cd när du väl hittat en bekväm inställning.</para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.1 Steg 01: Ställa in enhetsidentifikation för cd- eller dvd-enhet/brännare</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>I huvudfönstret:</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="kaudiocreatormainwindow800.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av huvudfönstret i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>ställ in <guilabel +>Enhet:</guilabel +> till <filename +>/dev/cdrom</filename +></para> + <para +>Enhetsidentifikationen tolkas för lagringsprogrammet så att det kan läsa data och sånger från cd:n.</para> + <para +>Ofta är /dev/cdrom en symbolisk länk till enhetens verkliga enhetsidentifikation. Om det inte fungerar, eller du har fler än en cd- eller dvd-enhet, kan du ange exakt enhetsidentifikation. Om du kan komma åt enheten med andra program, ta en titt i /etc/fstab och försök med enhetsposterna för cd-rom och/eller dvd-enheter som listas där.</para> + <para +>Ingenting där, otur?</para> + <para +>Om du kör version 2.6 av kärnan:</para> + <para +>Om du råkar ha en av de vanliga &ATAPI; (eller IDE)-enheterna, kommer enhetsidentifikationen finnas i intervallet /dev/hda till /dev/hdd. Huvudenheten på kanal 2 är en bra startpunkt: den är /dev/hdc. Om alla dina hårddiskar använder S-ATA, gör troligen /dev/hda susen. Inbyggda SCSI-enheter börjar på /dev/sda om du inte har S-ATA hårddiskar, som är först i listan, så beroende på antal diskar börjar cd- eller dvd-enheten på /dev/sdb eller /dev/sdc.</para> + <para +>Om du kör version 2.4 av kärnan:</para> + <para +>Åtkomst av cd- och dvd-enheter sker via SCSI, så enheterna börjar på /dev/sda.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.2 Steg 02: Inställningsfliken Allmänt</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Inställningar -> Anpassa Kaudiocreator... -> Allmänt</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="generalconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av inställningsfliken Allmänt i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Inställningsfliken <guilabel +>Allmänna inställningar</guilabel +>. Inte så mycket att göra här. Du skulle dock kunna definiera ytterligare formatering. I vårt exempel, skriv bara in eller lämna allt som det visas på skärmbilden. </para> + <para +>Markera bara <guilabel +>Fråga om information inte är fullständig</guilabel +> så att du blir informerad om viss information för att skapa taggar inte är tillgänglig.</para +></listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.3 Steg 03: Inställningsfliken Cd</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Inställningar -> Anpassa Kaudiocreator... -> Cd</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="cdconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av inställningsfliken Cd i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Fliken <guilabel +>Cd-inställning</guilabel +>. Markera bara båda posterna. Vi är lata och vill att cd-data hämtas automatiskt via Internet från en freedb-server.</para> + <para +>Observera att du måste vara uppkopplad när du lagrar cd:n för att kunna komma åt freedb-servern.</para> + <para +>Den andra rutan är bekväm, eftersom om en cd-post hittas, lagras cd:n omedelbart. Det är riskfritt, eftersom om du senare inte är nöjd med databasposten och resulterande katalog- och filnamn eller taggposter, kan du enkelt ändra dem. Katalog- och filnamn med Konqueror -> Byt namn och ID3-taggar med kid3, &kde;:s taggningsprogram.</para> + <para +>En ytterligare anmärkning utanför exemplet: Om du vill skriva in allting för hand, avmarkera rutorna så används inte freedb. Du kan använda freedb lokalt i nerkopplat läge om du laddar ner databasen i förväg. Den är dock mer än 370 Mibyte, så tänk efter om det verkligen är värt det. För att använda freedb i nerkopplat läge, måste du markera rutorna här, åtminstone den första. Läget ställs in under följande flik.</para +></listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.4 Steg 04: Inställningsfliken CDDB Slå upp</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Inställningar -> Anpassa Kaudiocreator... -> CDDB -> Slå upp</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="cddbconfigurationlookup.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av inställningsfliken CDDB Slå upp i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>CDDB är freedb för oss. Inställningarna som används för datauppslagning, för att hämta cd-informationen från freedb-servern via Internet. Hur vet systemet vilken data som ska hämtas? Läs <link linkend="freedb" +>avsnittet om freedb</link +>. Ställ bara in allting som på skärmbilden.</para> + <para +>Kort förklaring:</para> + <para +>Läge: Vi har inte laddat ner databasen, så vi vill bara arbeta med fjärrservern på Internet.</para> + <para +>CDDB-server: SNÄLLA (ja, jag insisterar!), gå till freedb.org och slå upp en spegelplats nära dig. På så sätt balanseras lasten mellan spegelservrarna. Dock för ett första försök bör den här inställningen fungera, men SNÄLLA...</para> + <para +>Port och överföring: Det finns två kombinationer, som även spegelplatser bör förstå.</para> + <itemizedlist> + <listitem +><para +>Port=80 och Överföring=&HTTP;</para +></listitem> + <listitem +><para +>Port=8880 och Överföring=CDDB</para +></listitem> + </itemizedlist> + <para +>Båda fungerar lika med avseende på servern, men eftersom många brandväggar normalt blockerar port 8880, kan du ha större tur med port 80, eftersom &HTTP;-porten oftast är öppen för att kunna bläddra på Internet.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.5 Steg 05: Inställningsfliken CDDB Skicka</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Inställningar -> Anpassa Kaudiocreator... -> CDDB -> Skicka</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="cddbconfigurationsubmit.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av inställningsfliken CDDB Skicka i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>I det här exemplet vill vi inte skicka in någon cd-data till freedb-servern. Avmarkera den första rutan, och det ska vara allt.</para> + <para +>En ytterligare anmärkning utanför exemplet: Om du hittar en cd någon gång som ännu inte är känd av freedb-servern, eller om du hittar ett fel i en cd-post, kan du skicka in ny eller uppdaterad information. Markera första rutan längst upp under fliken och använd därefter antingen en e-postadress som är känd i ditt system, och som &kaudiocreator; redan har detekterat, eller välj den nedre alternativknappen och skriv in en ny e-postadress. Läs först <link linkend="freedb" +>avsnittet om freedb</link +>. Du blir tillfrågad om att tillhandahålla en e-postadress när du skickar in ny eller uppdaterad information till servern, och du bör läsa informationen på freedb.org om versionsuppräkning när du skickar in uppdaterad information i fallet då du hittat ett fel.</para +></listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.6 Steg 06: Inställningsfliken Lagring</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Inställningar -> Anpassa &kaudiocreator;... -> Lagring</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="ripperconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av inställningsfliken Lagring i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Ta bara inställningarna från skärmbilden. (Försäkra dig om att katalogen <filename +>/tmp</filename +> finns på ditt system!)</para> + <para +><guilabel +>Ljudsignal efter varje lagring klar</guilabel +>: markera det för att få en hörbar återmatning av förloppet.</para> + <para +><guilabel +>Antal spår som ska lagras på en gång</guilabel +>: Kan tyvärr inte tänka mig en anledning att göra mer än en med en enhet? Läsning och kodning i parallell? Vet inte, försök själv.</para> + <para +><guilabel +>Mata automatiskt ut cd efter sista sången har lagrats</guilabel +>: Nåja, så att du vet att det är klart. Gör som du vill.</para> + <para +><guilabel +>Normal tillfällig katalog</guilabel +>: Om du markerar det kan och måste du ange sökvägen eller katalogen där wav-filerna lagras. Det kan vara praktiskt om du bara har utrymme på en annan enhet. Om det inte markeras, skapas filerna i din hemkatalog. Kom ihåg sökvägen om du vill göra någonting med själva wav-filerna.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.7 Steg 07: Inställningsfliken Kodare</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Inställningar -> Anpassa Kaudiocreator... -> Kodare</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="encoderconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av inställningsfliken Kodare i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Till sist inställningen av kodningsprogrammet. Vi använder lame. Här har vi lite till att göra:</para> + <para +>Klicka på <guilabel +>Lame</guilabel +></para> + <para +>Klicka på knappen <guibutton +>Anpassa...</guibutton +></para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="lameconfiguration.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av Lame-inställning i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Ojdå, skriv in allting som på skärmbilden. Kommandoraden är ganska lång, så du kan behöva panorera en bit åt höger.</para> + <para +>Inställningarna är mer eller mindre självförklarliga. Det finns ett mellanslag mellan '--preset' och 'extreme'.</para> + <para +>'--preset extreme' definierar ljudkvaliteten hos mp3-filerna. Som tidigare nämnts är det en inställning för mycket bra ljudkvalitet, tillräcklig även för mycket bra hifi stereosystem. Resultatets bithastighet är omkring 224 till 256 kbit/s i medeltal. Den uppnådda komprimeringsgraden är 6,3 . En bra balans mellan ljudkvalitet och utrymmeskrav. Lagringsutrymme och minne är billigt nu för tiden, inte sant?</para> + <para +>Observera väljaren '--id3v1-only' för att begränsa skapade taggar till version 1- eller version 1.1-taggar. Ta bort den om du också vill ha ID3V2-taggar. Programmet kid3 är ett mycket bra ID3-taggningsprogram för &kde; ifall du senare vill behandla taggar. De interna variablerna för indatafilen (inklusive fullständig sökväg) och utdatafilnamnet (inklusive fullständig sökväg) ska vara %f och %o .</para> + <para +>Klicka på <guibutton +>Ok</guibutton +> för att stänga dialogrutan och verkställa ändringarna.</para> + <para +><guilabel +>Kodad filplats</guilabel +>: Tillbaka under inställningsfliken <guilabel +>Kodningsinställning</guilabel +>, definierar vi här resultatkatalogen inklusive katalognamnet för filerna från cd:n som lagras. Det är variabler som fylls i med motsvarande cd-data varje gång du lagrar en cd. Data för cd:n kan matas in för hand eller hämtas via Internet (CDDB). Vi använder freedb och hämtar data automatiskt, vilket redan har ställts in i exemplet. Prova guiden, men i slutändan ska värdet vara följande för vårt exempel:</para> + <para +>'/usr/share/cd/%{albumartist} - %{albumtitle} - %{year}/%{number} - %{title}.%{extension}'</para> + <para +>Ställ in resten som på skärmbilden. Några kommentarer om framtida användning utanför själva exemplet:</para> + <para +><guilabel +>Antal wav-filer som ska kodas samtidigt</guilabel +>: Varför skulle man vilja koda mer än en wav-fil åt gången? Multiprocessordatorer? Nå, de dyker snart upp, så om du redan har en när du läser det här, gör ett försök.</para> + <para +><guilabel +>Kodningsprioritet</guilabel +>: För fanatiker, lek med den om du känner för det. Högre är snabbare, antar jag!</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para +>Det är allt, vi har just slutfört den grundläggande inställningen av Kaudiocreator. Inställningen används normalt för alla cd som lagras. Om du har valt sätt att organisera musiken förståndigt, kommer du aldrig att behöva ändra den igen.</para> + +</sect1> + +<sect1 id="Ripping-a-CD"> + <title +>E 2 Lagra en cd</title> + + <para +>Klar att dundra igång! Det här avsnittet beskriver lagringsprocessen av en cd på hårddisken. Vi kommer att skapa mp3-filer. Katalogstrukturen, sättet som musiken är organiserad på hårddisken, beskrevs och ställdes in i föregående avsnitt. Anslut till Internet nu, eftersom vi är lata och vill hämta cd-data från freedb. Processen som beskrivs i det här avsnittet måste upprepas för varje cd som du vill lagra.</para> + <para +>Eftersom vi använder en cd som ännu inte är listad i freedb, kan skärmbilderna se något annorlunda ut jämfört med de som du stöter på för en cd som kunde hämtas från freedb med lyckat resultat. Därför får du lära dig hur man matar in cd-data för hand istället för att hämta det från Internet, men kommentarer ges för att påpeka skillnaderna.</para> + <para +>Ansträng dig inte alltför mycket för att leta rätt på cd:n vi använder i exemplet. Den är en av handboksförfattarens 'specialeditioner'. Ledsamt nog, vet man inte riktigt nu för tiden ...</para> + <para +>Nu sätter vi igång...</para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 2.1 Steg 01: Lagra en cd.</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Huvudfönstret med en ljud-cd i enheten:</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="cdinserted.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av huvudfönstret i &kaudiocreator; med inmatad cd</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Om du inte redan har gjort det, mata in cd:n i enheten med enhetsidentifikationen som du angav här i huvudfönstret.</para> + <para +>Efter ett kort ögonblick ska spår och deras längd listas i fönstret, som på skärmbilden. Det vill säga om cd:n kunde identifieras som en ljud-cd och läsas av cdparanoia.</para> + <para +>Om det inte sker, titta i avsnittet <link linkend="faq" +>Vanliga frågor</link +> för hjälp, eller gå tillbaka till föregående avsnitt som täcker grundläggande inställning.</para> + <para +>Observera: Om cd:n kunde hämtas från freedb med lyckat resultat, är alla sångtitlar redan ifyllda och ovanför spårlistan visas artist och albumnamn.</para> + <para +>Om det finns mer än en post i databasen som motsvarar den 'unika' cd-nyckeln för din cd, visas ett meddelandefönster och du kan välja databasposten som du tror passar bäst för din cd.</para> + <para +>Om du inte har markerat rutan för att automatiskt fråga freedb (<guilabel +>Cd-inställning</guilabel +>), kan du starta det manuellt med den första knappen i verktygsraden. Om du inte har en lokal databas, utan hämtar från Internet, måste du vara ansluten till nätet.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 1.2 Steg 02: Albumeditorn - Mata in albumdata och den första sångtiteln</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Dubbelklicka var som helst i den första blåa markerade raden (spår 1):</action> + </para> + <para +>Albumeditorns fönster dyker upp.</para> + <para> + <screenshot> + <mediaobject> + <imageobject +><imagedata fileref="startalbumeditor.png" format="PNG"/></imageobject> + <textobject +><phrase +>Skärmbild av albumeditorn i &kaudiocreator;</phrase +></textobject> + </mediaobject> + </screenshot> + </para> + <para +>Skriv in albumdata för cd:n enligt mönstret på nästa skärmbild. Sångtiteln på raden Spår 1 i rutan Aktuellt spår, resten av informationen om cd:n i rutan Album.</para> + <para +>Det finns inget behov av att mata in artisten i rutan med aktuellt spår, utom om du har en samlingsskiva med olika artister för varje sång.</para> + <para +>Det övre kommentarfältet kan användas för individuella kommentarer om varje sång, medan albumkommentarfältet kan användas för kommentarer som ska vara samma för alla sånger.</para> + <para +>Observera: När du har hämtat data från freedb med lyckat resultat, är förstås inte albumeditorn tom utan innehåller redan data som visas på följande skärmbild. Det är dock alltid en god idé att öppna albumeditorn en gång för att kontrollera att du är nöjd, inte bara med artisten och albumnamnet (t.ex. att alla ord börjar med stora bokstäver eller inte...) men för att kontrollera om det finns några oönskade kommentarer.</para> + <para> + <screenshot> + <mediaobject> + <imageobject +><imagedata fileref="entersong1.png" format="PNG"/></imageobject> + <textobject +><phrase +>Skärmbild av inskrivning av titel för sång 1 och albumdata i &kaudiocreator;</phrase +></textobject> + </mediaobject> + </screenshot> + </para> + <para +>Observera: I exemplet använder vi bara ID3V1-taggar. Det begränsar fältens längder till 30 tecken för artist, album och sångtitel och bara 28 tecken för kommentarfältet. Om du vill skapa ID3V2-taggar kan du använda obegränsad fältlängd, ja åtminstone vad &kaudiocreator; tillåter här. Har inte kontrollerat det. Du ställer in alternativet under inställningsfliken för kodare. Ta en titt i avsnittet om grundläggande inställningar för mer om det.</para> + <para +>Du kan ändra tagginformation för de skapade filerna senare när som helst med en taggeditor. Kid3 är en bra sådan för mp3-filer, som du också kan skapa ID3V2-taggar med.</para> + <para +>Taggar kanske inte stöds av alla kodningsprogram och filformat. Titta i kodningsprogrammets hjälp för mer information om detta.</para> + + <para +>Efter att ha klickat på <guibutton +>Ok</guibutton +>, dyker ett bekräftelsemeddelande upp:</para> + <para> + <screenshot> + <mediaobject> + <imageobject +><imagedata fileref="confirmartistcarryover.png" format="PNG"/></imageobject> + <textobject +><phrase +>Skärmbild av bekräftelse vid ändring av albumdata i &kaudiocreator;</phrase +></textobject> + </mediaobject> + </screenshot> + </para> + <para +>Vi ändrade allmän albumdata, så ett meddelande dyker upp som frågar om vi vill låta ändringen gälla för övriga sånger. Ja, det vill vi. Sparar en del arbete. Klicka på Ja.</para> + <para +>Observera: Meddelandefönstret visas inte om du till exempel ändrar albumnamn i albumrutan. Dock är ändringen också giltig för de andra sångerna.</para> + + <para +>Och ett annat meddelandefönster:</para> + <para> + <screenshot> + <mediaobject> + <imageobject +><imagedata fileref="setalbumcategory.png" format="PNG"/></imageobject> + <textobject +><phrase +>Skärmbild av inställning av albumkategori i &kaudiocreator;</phrase +></textobject> + </mediaobject> + </screenshot> + </para> + <para +>Vi blir tillfrågade om att välja en musikkategori för albumet. Blanda inte ihop det med genren för ID3-taggarna.Detta är de 11 kategorier som är definierade av freedb för att sortera cd-identifikationer i förväg. Eftersom vår cd inte finns i någon databas (hur skulle den kunna vara det, med det sätt vi använder programmet), måste vi välja en så om vi vill skicka in cd-data, kommer det att sorteras in på rätt sätt i freedb-databasen.</para> + <para +>Välj bara en av posterna som verkar stämma med stilen hos cd:n som du lagrar. Det är inte viktigt för exemplet, vi skickar ändå inte in cd-data. För mer information, gå till freedb.org och läs om kategorierna. Pop eller rap listas till exempel under Rock.</para> + <para +>Efter du klickat på Ok kommer du tillbaka till huvudfönstret igen. Dubbelklicka bara på det andra spårets rad.</para> + <para +>Återigen dyker albumeditorns fönster upp och du kan se att albumrutan redan är ifylld med data som skrevs in för det första spåret. Skriv bara in fältposterna i rutan för aktuellt spår. Definitivt sångtiteln och övrig information om du vill.</para> + <para +>Klicka på nästa rad på huvudskärmen och fortsätt på samma sätt till du har skrivit in spårdata för alla spår på cd:n.</para> + <para +>Observera: Det här meddelandefönstret visas inte om du har hämtat data från freedb. Den har redan sorterats in i en av kategorierna i databasen.</para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 2.3 Steg 03: Börja lagring</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Klicka på knappen <guibutton +>Lagra markerade</guibutton +> som visas på skärmbilden</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="readytorip.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild när lagringsprocessen påbörjas i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Det är den tredje knappen i verktygsraden. Observera att artist och album visas ovanför spårlistan.</para> + <para +>Observera dessutom att nu finns en bock framför varje spår. Bara spåren som är markerade på så sätt kommer att behandlas. Ett enkelklick på spårraden ändrar spårets markering. Försäkra dig om att alla spår är markerade eller använd knappen <guibutton +>Markera alla spår</guibutton +> längst ner på skärmen (visas inte på skärmbilden) för att markera alla spår på en gång.</para> + + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="jobshavestarted.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av meddelande om att jobb har startat i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>När du väl har startat lagringsprocessen genom att klicka på knappen <guibutton +>Lagra markerade</guibutton +>, dyker det här bekräftelsefönstret upp. Klicka på Ok, och därefter tar vi en titt på jobbfönstret för att följa vad som pågår.</para> + + </listitem> + </varlistentry> + </variablelist> + </para> + + <para> + <variablelist> + <varlistentry> + <term> + <menuchoice> + <guimenuitem +>E 2.4 Steg 04: Följa förloppet i jobbfönstret</guimenuitem> + </menuchoice> + </term> + <listitem> + <para> + <action +>Klicka på fliken <guilabel +>Jobb</guilabel +> för att byta till jobbfönstret. Den är längst upp till vänster på skärmen, precis under verktygsraden med knapparna.</action> + </para> + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="jobcontrol.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av jobbstyrningsfönstret i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Det är jobbstyrningsfönstret. Det första spåret har precis lagrats på hårddisken. Programmets status visas längst ner till vänster på skärmen i statusraden.</para> + + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="encodernotfound.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild när kodare inte hittas i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Å, nej! Skit! Helt plötsligt detta. RTFM (läs den förbannade manualen)! Jag skrev den! Jag måste vara inkompetent. Det här är vad du ser när du försöker koda med eller anropa ett kodningsprogram som du ännu inte har installerat. Spår som inte kunde kodas med lyckat resultat markeras också med ett rött 'X' i jobblistan.</para> + <para +>Förresten, ser du hur jag fuskade? Sökvägen till den tillfälliga filen och resultatsökvägen är inte vad vi ställde in här i exemplet. Jag borde skämmas, men du har väl kontrollerat att du har skrivåtkomst till både katalogen för tillfälliga filer och resultatkatalogen, inte sant?</para> + <para +>Låt oss göra det igen...</para> + + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="rippingandencoding.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av lagring och kodning i &kaudiocreator;</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Jaha, nu kan man förstå varför felet uppstod precis när lagringen av den första sången var klar.</para> + <para +>Ser du? Jobb 1, lagring av det första spåret, är borta (färdigt) men vi har en ny post: Jobb 4 som är kodning av spår 1 till mp3. Så lagring och kodning utförs parallellt. Titta på statusmeddelandet längst ner i fönstret, det är nu utökat.</para> + <para +>Jag kunde inte hitta en inställning för att få bort beteendet. Det enda som verkar kunna ställas in är antal parallella lagringar och kodningar. Häftigt, ännu fler jobb i parallell? Jag vet inte vad det betyder för datorer med låg kapacitet. Den AMD64 som används här verkar inte ha några problem med att lagra och koda ett spår (dock två olika) samtidigt.</para> + + <para> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="rippingandencoding2.png" format="PNG"/> + </imageobject> + <textobject> + <phrase +>Skärmbild av lagring och kodning i &kaudiocreator; 2</phrase> + </textobject> + </mediaobject> + </screenshot> + </para> + <para +>Ja, cykeln fortsätter. Nu lagrar vi det sista spåret medan ett annat kodas och ett finns i kodningskön. Efter det sista spåret har kodats, visas en liten meddelanderuta längst upp till vänster i fönstret en kort stund.</para> + <para +>Det är allt. Klar för nästa cd. Njut av att lyssna på din musik...</para> + </listitem> + </varlistentry> + </variablelist> + </para> + +</sect1> + +</chapter> + + +<chapter id="credits"> + +<title +>Tack till och licens</title> + +<para +>&kaudiocreator; </para> +<para +>Program copyright 2003-2007 Benjamin Meyer <email +>ben+kaudiocreator@meyerhome.net</email +> </para> +<para +>Bidragsgivare: <itemizedlist +> <listitem +><para +>Hittills en enmansshow! <email +>nej@ingen.e-post</email +></para +></listitem> +</itemizedlist> +</para> + +<para +>Dokumentation copyright 2005-2007 alan <email +>tyvärr@ingen.e-post</email +> </para> +<para +>Som dåligt exempel, tyvärr ingen e-postadress. Jag kan inte underhålla handboken. Den är dock en första start som handbok för Kaudiocreator. Vem som helst som kommer på något användbart att lägga till eller ändra, kan göra det. Ja, åtminstone efter författaren först har kontaktats, antar jag. Och om du läser det här, lämnade han kvar det här avsnittet och håller därför med om förslaget. </para> + +<para +>Översättning Stefan Asserhäll <email +>stefan.asserhall@comhem.se</email +></para +> +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="getting-kaudiocreator"> +<title +>Hur man skaffar &kaudiocreator;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>För att använda &kaudiocreator; med lyckat resultat behöver du &kde; 3.x och cdparanoia. Om du vill skapa komprimerade ljudfiler som mp3 eller ogg, behöver du också kodningsprogrammet du valt.</para> + +<para +>&kaudiocreator; underhålls idag i &kde;:s CVS-arkiv som en del av paketet tdemultimedia. Om du känner till CVS kan du göra en anonym utcheckning därifrån. Dock levereras de flesta distributioner med förkompilerade paket, i synnerhet eftersom &kaudiocreator; är den del av ett huvudpaket i &kde;. Installera paketet tdemultimedia från din distribution. Om du läser det här, har du troligen redan hittat det ... </para> + +</sect1> + +<sect1 id="compilation"> +<title +>Kompilering och installation</title> + +<para +>Konstigt, om du lyckades checka ut källkoden från &kde;:s SVN-arkiv behöver du inte informationen här, men ...</para> +&install.compile.documentation; </sect1> + +<sect1 id="configuration"> +<title +>Anpassning</title> + +<para +>Nå, det här avsnittet är troligen avsett för de som bygger från källkod och inte användare som använder förkompilerade paket från en distribution.</para> + +<para +>Tyvärr finns det för närvarande ingen hjälp om inställningsalternativ innan källkoden kompileras.</para> + +<para +>Om du letar efter hjälp att ställa in programmet efter dina behov när det väl kör, är det följande för dig:</para> + +<para +>Eftersom detta är ett program som kan anropa många olika andra program finns det mycket att ställa in. Det är bäst att läsa <link linkend="Example" +>det fullständiga stegvisa exemplet</link +> för att bekanta dig med inställningsalternativen. Det innehåller skärmbilder av de olika inställningsflikarna och tillhandahåller kommentarer också för alternativ som inte används i exemplet.</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-sv/docs/tdemultimedia/kaudiocreator/jobcontrol.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/jobcontrol.png Binary files differnew file mode 100644 index 00000000000..246d94c184b --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/jobcontrol.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/jobshavestarted.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/jobshavestarted.png Binary files differnew file mode 100644 index 00000000000..23f0c10cd46 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/jobshavestarted.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/kaudiocreatormainwindow800.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/kaudiocreatormainwindow800.png Binary files differnew file mode 100644 index 00000000000..df200dad875 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/kaudiocreatormainwindow800.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/lameconfiguration.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/lameconfiguration.png Binary files differnew file mode 100644 index 00000000000..9fad6113474 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/lameconfiguration.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/readytorip.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/readytorip.png Binary files differnew file mode 100644 index 00000000000..4b8a89dc3e5 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/readytorip.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/ripperconfiguration.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/ripperconfiguration.png Binary files differnew file mode 100644 index 00000000000..382d56a61c0 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/ripperconfiguration.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/rippingandencoding.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/rippingandencoding.png Binary files differnew file mode 100644 index 00000000000..5a21bc3021a --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/rippingandencoding.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/rippingandencoding2.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/rippingandencoding2.png Binary files differnew file mode 100644 index 00000000000..90def3404c4 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/rippingandencoding2.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/startalbumeditor.png b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/startalbumeditor.png Binary files differnew file mode 100644 index 00000000000..db8d3286491 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kaudiocreator/startalbumeditor.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kcontrol/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kcontrol/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kcontrol/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kcontrol/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kcontrol/Makefile.in new file mode 100644 index 00000000000..0d8a98f05dd --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kcontrol/Makefile.in @@ -0,0 +1,587 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kcontrol +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. kmixcfg +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kcontrol/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=Makefile.in Makefile.am + +#>+ 2 +docs-am: + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kcontrol/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.am new file mode 100644 index 00000000000..fe1ac3f0629 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = kcontrol/kmixcfg +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in new file mode 100644 index 00000000000..62d3870ec91 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kcontrol/kmixcfg +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = kcontrol/kmixcfg +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kcontrol/kmixcfg/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kcontrol/kmixcfg/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kcontrol/kmixcfg/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..e76f651ee23 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/index.docbook b/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/index.docbook new file mode 100644 index 00000000000..23549997472 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kcontrol/kmixcfg/index.docbook @@ -0,0 +1,97 @@ +<?xml version="1.0" ?> +<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" +"dtd/kdex.dtd" [ +<!ENTITY % addindex "IGNORE"> +<!ENTITY % Swedish "INCLUDE" +> <!-- change language only here --> +]> + +<article lang="&language;"> +<articleinfo> + +<authorgroup> +<author +><firstname +>Mike</firstname +> <surname +>McBride</surname +> </author> +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit +> +</authorgroup> + +<date +>2002-02-12</date> +<releaseinfo +>3.00.00</releaseinfo> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>Kcontrol</keyword> +<keyword +>mixer</keyword> +</keywordset> +</articleinfo> + +<sect1 id="mixer"> + +<title +>Mixer</title> + +<para +>Den här modulen kan användas för att ställa in några av de mest grundläggande inställningarna i &kmix; (&kde;:s mixer).</para> + +<para +>Den första delen hör ihop med förinställda volymer. I den här delen kan du spara nuvarande volymnivåer som förinställda. Du kan också ladda de förinställda volymnivåerna (och därigenom återställa dem till sina förinställda lägen).</para> + +<para +>Genom att välja "<guilabel +>Ladda volymer vid inloggning</guilabel +>", kan du tala om för &kde; att de förinställda volymerna automatiskt ska laddas när &kde; startas.</para> + +<para +>Nästa del låter dig ange vilken hårdvara som &kmix; ska leta efter.</para> + +<para +>Skjutreglaget som heter "<guilabel +>Maximalt antal mixrar som ska avsökas</guilabel +>" avgör när &kmix; slutar leta efter ljudkort. Om du har ett ljudkort i din dator, bör du sätta den till ett. Om du använder ett högre värde, betyder det att &kmix; fortsätter att leta efter ett andra ljudkort, som förlänger uppstartstiden för &kmix;.</para> + +<para +>Skjutreglaget som heter <guilabel +>Maximalt antal enheter som ska avsökas per mixer</guilabel +> avgör hur många enheter &kmix; försöker avsöka på varje ljudkort. Om det finns fler enheter på ditt ljudkort än &kmix; visar vid uppstart, ska du öka det här värdet.</para> + +<sect2 id="mixer-author"> +<title +>Avsnittsförfattare</title> + +<para +>Det här avsnittet är skrivet av Mike McBride <email +>mpmcbride7@yahoo.com</email +> </para> +<para +>Översättning Stefan Asserhäll <email +>stefan.asserhall@comhem.se</email +></para +> + +</sect2> +</sect1> + +</article>
\ No newline at end of file diff --git a/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/Makefile.in new file mode 100644 index 00000000000..e65065e14e6 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/Makefile.in @@ -0,0 +1,613 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kio_audiocd +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kio_audiocd/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=audiocd.docbook Makefile.in Makefile.am + +#>+ 2 +docs-am: audiocd.docbook + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kio_audiocd + @for base in audiocd.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kio_audiocd/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kio_audiocd/$$base ;\ + done + +uninstall-nls: + for base in audiocd.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kio_audiocd/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in audiocd.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kio_audiocd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kio_audiocd/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/audiocd.docbook b/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/audiocd.docbook new file mode 100644 index 00000000000..478118ba5a5 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kio_audiocd/audiocd.docbook @@ -0,0 +1,327 @@ +<article lang="&language;" id="audiocd"> +<title +>audiocd</title> +<articleinfo> +<authorgroup> +<author +>&Rik.Hemsley; &Rik.Hemsley.mail;</author> +<author +><personname +><firstname +>Benjamin</firstname +><surname +>Meyer</surname +></personname +></author> +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit +> +</authorgroup> + +<date +>2004-09-16</date> +<releaseinfo +>2.30.00</releaseinfo> + +</articleinfo> + +<para +>Tillåter att en ljud-<acronym +>cd</acronym +> behandlas som ett <quote +>riktigt</quote +> filsystem, där spår representeras som filer, och när de kopieras från katalogen, extraheras digitalt från <acronym +> cd</acronym +>:n. Det här garanterar en perfekt kopia av ljuddata.</para> + +<para +>För att se hur slaven fungerar, stoppa in en ljud-<acronym +>cd</acronym +> i din cd-romspelare och skriv <userinput +>audiocd:/</userinput +> i &konqueror;. Inom några få sekunder bör du se en lista på spår och några kataloger.</para> + +<para +>En ljud-<acronym +>cd</acronym +> har egentligen inte kataloger, men I/O-slaven tillhandahåller dem för bekvämlighetens skull. Om du tittar inne i dessa kataloger kommer du att se att de alla innehåller samma antal spår. Om du är ansluten till Internet, kommer en del kataloger visa de verkliga titlarna på spåren som filnamn.</para> + +<para +>Orsaken till att de här olika katalogerna finns, är för att du ska kunna välja vilket format du vill lyssna på (eller kopiera) spåren på <acronym +>cd</acronym +>:n.</para> + +<para +>Om du drar ett spår från <filename class="directory" +>Ogg Vorbis</filename +>-katalogen och släpper det i ett annat &konqueror;-fönster som är öppet och visar din hemkatalog, ser du ett förloppsfönster som visar dig att spåret extraheras från <acronym +>cd</acronym +>:n och sparas på en fil. Observera att Ogg Vorbis är ett komprimerat format, så filen i din hemkatalog blir väsentligt mindre än den skulle varit om du hade kopierat rådata.</para> + +<para +>Mekanismen bakom det här är ganska enkel. När I/O-slaven får en begäran att hämta ett spår från <filename class="directory" +>Ogg Vorbis</filename +>-katalogen, börjar den extrahera digital ljuddata från <acronym +>cd</acronym +>:n. Medan den skickar över data till filen i din hemkatalog, kodar den det samtidigt i Ogg Vorbis-format (<acronym +>cd</acronym +>-ljud har ett okomprimerat format från början).</para> + +<para +>Du kan också försöka att dra en fil som slutar med <literal role="extension" +>.wav</literal +> och släppa den på &kde;:s mediaspelare, &noatun;. I det här fallet är proceduren som sker bakom ridån liknande, utom att istället för att koda ljuddata i Ogg Vorbis-format, så genomgår det en mycket enkel konvertering, från binär rådata (som <literal role="extension" +>.cda</literal +>-filerna i toppnivåkatalogen representerar) till <quote +>RIFF WAV</quote +>-format, ett okomprimerat format som de flesta mediaspelare förstår.</para> + +<para +>&noatun; bör helt glatt spela <literal role="extension" +>.wav</literal +>-filen, men om det uppstår problem, kan du försöka använda parametern <option +>paranoia_level</option +>, som förklaras nedan.</para> + +<variablelist> +<title +>Alternativ</title> + +<varlistentry> +<term +><option +>enhet</option +></term> +<listitem> +<para +>Ställer in sökvägen till ljud-<acronym +>cd</acronym +>-enheten, t ex <userinput +>audiocd:/<option +>?device</option +>=<parameter +>/dev/sdc </parameter +></userinput +>. I/O-slaven försöker normalt hitta en <acronym +>cd</acronym +>-spelare med en ljud-<acronym +>cd</acronym +> inmatad, men om den misslyckas eller om du har mer än en <acronym +>cd</acronym +>-spelare, kanske du vill försöka med den här parametern. Observera att inställningsdialogrutan låter dig ange ett standardvärde för den här parametern.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>fileNameTemplate</option +></term> +<listitem> +<para +>Ange filnamnsmallen, t.ex. <userinput +>audiocd:/<option +>?fileNameTemplate</option +>=<parameter +>Track %{nummer}</parameter +></userinput +>. Observera att inställningsdialogrutan låter dig ange ett förvalt värde för alternativet. Varning för att om du anger den som en tom sträng visas inga filer.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>albumNameTemplate</option +></term> +<listitem> +<para +>Ange albumnamnsmallen, t.ex. <userinput +>audiocd:/<option +>?albumNameTemplate</option +>=<parameter +>%{albumartist} %{albumtitel}</parameter +></userinput +>. Observera att inställningsdialogrutan låter dig ange ett förvalt värde för alternativet.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>niceLevel</option +></term> +<listitem> +<para +>Anger processens snällhetsnivå för kodare, t.ex. <userinput +>audiocd:/<option +>?niceLevel</option +>=<parameter +>10</parameter +></userinput +>. Observera att inställningsdialogrutan låter dig ange ett förvalt värde för alternativet.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>paranoia_level</option +></term> +<listitem> +<para +>Ställ in mängden felidentifiering och felkorrigering som används när data extraheras.</para> + +<variablelist> +<varlistentry> +<term +>Nivå 0</term> +<listitem> +<para +>Ingen identifiering eller korrigering. Bara användbart om du har en perfekt <acronym +>cd</acronym +>-spelare (inte troligt).</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Nivå 1</term> +<listitem> +<para +>Aktivera grundläggande feldetektering och felkorrigering.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Nivå 2</term> +<listitem> +<para +>Förvalt. Anger att bara en perfekt extrahering accepteras.</para> +</listitem> +</varlistentry> +</variablelist> + +<para +>Observera att det finns en nackdel med nivå 2. Extraheringen kan vara mycket långsam, så att uppspelning i realtid kanske inte fungerar som den ska. Om du har en <acronym +>cd</acronym +>-spelare med bra kvalitet (observera att dyrare inte nödvändigtvis betyder bättre kvalitet) kommer du troligen inte att råka ut för mycket långsam extrahering, men en dålig spelare kan ta dagar (!) för att extrahera ljudet från en <acronym +>cd</acronym +>.</para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>cddbChoice</option +></term> +<listitem> + +<para +>Ange vilken <acronym +>cd</acronym +>-databaspost på Internet som ska användas. En ljud-<acronym +>cd</acronym +> har inte spårnamn, men <acronym +>cd</acronym +>-databasen på Internet är ett smart system som använder en särskild unik identifiering som skapas från antalet spår och deras längd på varje <acronym +>cd</acronym +> för att ge en korsreferens till en spårlistning. Spårlistningar bidras med av Internet-gemenskapen och görs tillgängliga för alla. Ibland finns det flera poster. Du kan ange vilken som ska användas.</para> + +<para +>Du kan skicka in dina egna spårlistor med &kscd;, som är &kde;:s <acronym +>cd</acronym +>-spelare.</para> + +<para +>Normalt försöker audiocd välja den bästa.</para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title +>Exempel</title> +<varlistentry> +<term +><userinput +>audiocd:/?device=/dev/scd0&paranoia_level=0&cddbChoice=0</userinput +></term> +<listitem> +<para +>Ger en listning av spåren på en ljud-<acronym +>cd</acronym +> som matats in i <filename class="devicefile" +>/dev/scd0</filename +>, som anger den första <acronym +>SCSI</acronym +> cd-romenheten på &Linux;. Om du kopierar spår från en <acronym +>cd</acronym +>, utförs digital extrahering utan felkorrektion eller detektering. Databasposten 0 från <acronym +>CDDB</acronym +> används.</para> +</listitem> +</varlistentry> +</variablelist> + +<qandaset> +<title +>Vanliga frågor</title> +<qandaentry> +<question> +<para +>Jag får <errorname +>Filen eller katalogen / finns inte</errorname +>. Hur fixar jag det? Jag har en ljud-<acronym +>cd</acronym +> i min enhet!</para> +</question> + +<answer> +<para +>Försök att köra <userinput +><command +>cdparanoia</command +> <option +>-vsQ</option +></userinput +> som dig själv (inte <systemitem class="username" +>root</systemitem +>). Ser du en spårlista? Om inte, försäkra dig om att du har behörighet att komma åt <acronym +> cd</acronym +>-spelaren. Om du använder <acronym +>SCSI</acronym +>-emulering (vilket är möjligt om du har en <acronym +>IDE</acronym +> <acronym +>cd</acronym +>-inspelningsenhet) försäkra dig om att du har läs- och skrivrättighet för den generella <acronym +>SCSI</acronym +>-enheten, som troligen är <filename class="devicefile" +>/dev/sg0</filename +>, <filename class="devicefile" +>/dev/sg1</filename +>, etc. Om det fortfarande inte fungerar, försök att skriva <userinput +>audiocd:/?device=/dev/sg0</userinput +> (eller liknande) för att tala om för I/O-slaven vilken enhet som är din cd-rom.</para +> +</answer> +</qandaentry> +</qandaset> + + +</article> diff --git a/tde-i18n-sv/docs/tdemultimedia/kmid/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kmid/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmid/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kmid/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kmid/Makefile.in new file mode 100644 index 00000000000..c75b1307323 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmid/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kmid +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmid/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmid/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmid/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmid/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/kmid/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/kmid/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..b172adcf7b9 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmid/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/kmid/index.docbook b/tde-i18n-sv/docs/tdemultimedia/kmid/index.docbook new file mode 100644 index 00000000000..a5d28a09f5a --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmid/index.docbook @@ -0,0 +1,1402 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kmid;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % Swedish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Handbok &kmid;</title> +<authorgroup> +<author +><firstname +>Antonio</firstname +> <surname +>Larrosa Jiménez</surname +> <affiliation +> <address +><email +>larrosa@kde.org</email +></address> +</affiliation> +</author> +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit +> +</authorgroup> + +<copyright> +<year +>1999</year +><year +>2001</year> +<holder +>Antonio Larrosa Jiménez</holder> +</copyright> + +<date +>2002-02-05</date> +<releaseinfo +>2.00.00</releaseinfo> + +<abstract> +<para +>&kmid; är en MIDI/Karaoke filspelare </para> +</abstract> + +<keywordset> +<keyword +>KMid</keyword> +<keyword +>midi</keyword> +<keyword +>karaoke</keyword> +<keyword +>multimedia</keyword> +<keyword +>mid</keyword> +<keyword +>kar</keyword> +<keyword +>spelare</keyword> +<keyword +>musik</keyword> +<keyword +>ljud</keyword> +<keyword +>fm</keyword> +<keyword +>awe</keyword> +<keyword +>gus</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Inledning</title> + +<para +>&kmid; är &kde;s MIDI och Karaoke multimediaspelare. Den tillhandahåller några funktioner som inte finns i någon annan &UNIX; MIDI-spelare, som bland annat realtidsgrafik och markering av Karaoke-text. </para> + +<para +>Det har rapporterats att &kmid; kör på operativsystemen &Linux; och FreeBSD. Den använder <acronym +>OSS</acronym +>-ljuddrivrutinen, så den bör köra på alla system där &kde; och <acronym +>OSS</acronym +> kan kompileras. &kmid; stöder också &Linux; Ultrasound Project Driver, som krävs för att få ljud med <acronym +>GUS</acronym +>-kort. Jag planerar stöd för <acronym +>ALSA</acronym +>-drivrutinen så snart som den stöder en sequencerenhet. </para> + +<para +>&kmid; visar sångtexten på skärmen med en färg som ändrar sig samtidigt som musiken spelar, så det är väldigt lätt att följa sångens melodi. </para> + +<para +>Hoppas att du tycker att &kmid; är lika rolig att använda som jag tyckte det var att utveckla den. </para> + +<para +>Antonio Larrosa Jiménez <email +>larrosa@kde.org</email +> </para> + +<sect1 id="kmids-features"> +<title +>&kmid;s funktioner</title> + +<para +>Det här är några av &kmid;s viktigaste funktioner: </para> + +<itemizedlist> +<listitem> +<para +>Den har ett mycket <emphasis +>användarvänligt gränssnitt</emphasis +> för att visa Karaoke med markering av sångtext <emphasis +>i realtid</emphasis +>. </para> +</listitem> +<listitem> +<para +>Den har en funktion som grafiskt visar vad som spelas på varje midi-kanal, genom att markera tangenterna som trycks ner på ett (virtuellt) keyboard. </para> +</listitem> +<listitem> +<para +>Den kraftfullaste <emphasis +>hanteringen av Midi-kartor</emphasis +> som finns för något operativsystem. </para> +</listitem> +<listitem> +<para +><emphasis +>Dra & släpp</emphasis +> så att du kan släppa vilken midi-fil som helst i &kde; från ett &konqueror;-fönster. </para> +</listitem> +<listitem> +<para +>Du kan <emphasis +>ändra tempo</emphasis +> på sånger för att spela dem långsammare eller snabbare om du vill. </para> +</listitem> +<listitem> +<para +>Den visar lampor som följer sångens rytm. </para> +</listitem> +<listitem> +<para +><emphasis +>Anpassningsbara teckensnitt</emphasis +> för Karaoke-texten som ska visas. </para> +</listitem> +<listitem> +<para +>Stöder de två standardsätten att infoga sångtexter i midi-filer, dvs. sångtexter eller texthändelser (och gissar automatiskt vad en sång använder). </para> +</listitem> +<listitem> +<para +>Sessionshantering. Om en sång spelas när du loggar ut från &kde;, så börjar samma sång spelas nästa gång du loggar in. </para> +</listitem> +<listitem> +<para +><emphasis +>Justerbar volym</emphasis +> i realtid. </para> +</listitem> +<listitem> +<para +>Den kan spela felaktiga midi-filer som får andra spelare att göra minnesdumpar! </para> +</listitem> +<listitem> +<para +>Den kan öppna <emphasis +>komprimerade MIDI/Karaoke-filer</emphasis +> precis som vilken annan fil som helst. </para> +</listitem> +<listitem> +<para +>Använder ungefär <emphasis +>0,1 %</emphasis +> av min <acronym +>CPU</acronym +> (beroende på sångens komplexitet). </para> +</listitem> +<listitem> +<para +>Stöder extern midi-syntes, <acronym +>AWE</acronym +>-, <acronym +>FM</acronym +>- och <acronym +>GUS</acronym +>-kort (för det sistnämnda behöver du installera <acronym +>LUP</acronym +>-drivrutinen och gusd). </para> +</listitem> +<listitem> +<para +>Kör på &Linux; och FreeBSD (och kanske också andra Unix-system...). </para> +</listitem> +</itemizedlist> + +</sect1> +</chapter> + +<chapter id="general-usage"> +<title +>Allmän användning</title> + +<sect1 id="opening-songs"> +<title +>Att öppna sånger</title> + +<para +>Du kan öppna en sång på flera olika sätt. </para> + +<para +>Först kan du välja <guimenuitem +>Öppna...</guimenuitem +> i menyn <guimenu +>Arkiv</guimenu +>, så visas en standarddialogruta för att öppna filer, där du kan välja sången som du vill öppna. </para> + +<para +>Du kan dra en fil från ett &konqueror;-fönster och släppa den i &kmid;-fönstret. Du kan också dra & släppa flera sånger på samma gång. </para> + +<para +>Om du anger en sång på kommandoraden när du startar &kmid;, kommer den också att öppnas. </para> + +<para +>Och det sista sättet är att välja sången från listan på sånger i den nuvarande samlingen. </para> + +</sect1> + +<sect1 id="playing-songs"> +<title +>Att spela sånger</title> + +<para +>För att spela en sång, öppna den först, och tryck sedan på knappen <guiicon +>Spela</guiicon +> i verktygsraden, välj <guimenuitem +>Spela</guimenuitem +> i menyn <guimenu +>Sång</guimenu +>, eller tryck på tangenten <keycap +>mellanslag</keycap +>. </para> + +<para +>Observera att när du öppnar en fil med dra & släpp, börjar &kmid; automatiskt spela den (om du släpper mer än en fil, läggs de till i en samling och spelas i turordning). </para> + +<para +>När &kmid; väl spelar en sång, kan du flytta tidsreglaget för att gå till en angiven position, genom att trycka med musens mittenknapp. </para> + +<para +>Om en sång spelas för snabbt eller för långsamt för dig, kan du trycka på knapparna på båda sidorna om Tempo <acronym +>LCD</acronym +>:n och får den att spelas snabbare eller långsammare. För att återställa det förvalda tempot, dubbelklicka bara på Tempo <acronym +>LCD</acronym +>:n. </para> + +<para +>Tangenten <keycap +>mellanslag</keycap +> används för två saker. När musik spelas och du trycker på <keycap +>mellanslag</keycap +>, fungerar den som om du tryckte på knappen <guiicon +>Paus</guiicon +> eller valde <guimenuitem +>Paus</guimenuitem +> i menyn <guimenu +>Sång</guimenu +>, dvs. den stannar musiken. Om du trycker på <keycap +>mellanslag</keycap +> när musik inte spelas, börjar &kmid; spela. </para> + +</sect1> + +<sect1 id="displaying-lyrics"> +<title +>Att visa sångtexter</title> + +<para +>Det finns två sätt att lagra sångtext i en sång, genom att använda <guimenuitem +>Texthändelser</guimenuitem +> eller <guimenuitem +>Sångtexthändelser</guimenuitem +>, vissa sånger använder det första sättet, vissa det andra, vissa använder båda, och en del innehåller inte sångtext alls :-) </para> + +<para +>&kmid; låter dig välja vilka händelser som ska visas, och ännu bättre, den har ett alternativ att automatiskt välja händelsetypen som en sång använder, så att du inte behöver ändra typ manuellt. På så sätt, om du aktiverar <guimenuitem +>Automatisk Textväljare</guimenuitem +> i menyn <guimenu +>Inställningar</guimenu +>, väljs Karaoke-texten automatiskt, men du kan fortfarande ändra inställningen om du vill se den andra sorten. </para> + +<para +>För att välja vilken sort som visas, kan du använda det passande valet i menyn <guimenu +>Inställningar</guimenu +>, eller bara trycka på tangenterna <keycap +>1</keycap +> eller <keycap +>2</keycap +> på tangentbordet för att visa <guimenuitem +>Texthändelser</guimenuitem +> eller <guimenuitem +>Sångtexthändelser</guimenuitem +>. </para> + +</sect1> + +</chapter> + +<chapter id="collections"> +<title +>Samlingar</title> + +<para +>En samling är en mängd midi-filer som du lagrar i en lista, och som spelas en i taget. Det här avsnittet hjälper dig att använda samlingar, och ger dig några användbara tips för att använda dem på ett bra sätt. </para> + +<sect1 id="creating-a-collection"> +<title +>Att skapa en samling</title> + +<para +>För att skapa en samling, öppna först dialogrutan <guilabel +>Samlingshanteraren</guilabel +>, genom att välja <guimenuitem +>Organisera...</guimenuitem +> i menyn <guimenu +>Samlingar</guimenu +>. Klicka sedan på knappen <guibutton +>Ny</guibutton +>, och skriv in namnet du vill att samlingen ska ha. </para> + +<para +>Du kan också kopiera en fullständig samling genom att välja den och sedan trycka på knappen <guibutton +>Kopiera</guibutton +>, som frågar efter namnet på den nya samlingen. Från början kommer den nya samlingen att ha samma sånger som den ursprungliga. </para> + +<para +>När du väl har mer än en samling, kan du ändra den aktiva samlingen från <guilabel +>Samlingshanteraren</guilabel +>, genom att markera den. </para> + +</sect1> +<sect1 id="the-temporary-collection"> +<title +>Temporary Collection</title> + +<para +>Samlingen "Temporary Collection" är en samling som används för att lagra sånger som du vill spela, men inte vill lägga till i någon samling. </para> + +<para +>Den här samlingen <emphasis +>sparas inte</emphasis +> när du avslutar programmet, så kom ihåg det om du lägger till många sånger i den. </para> + +<para +>Fortsätt läsa det här avsnittet för att förstå "Temporary Collection" bättre. </para> + +</sect1> + +<sect1 id="adding-songs-to-a-collection"> +<title +>Att lägga till sånger i en samling</title> +<subtitle +>Att använda <guimenuitem +>Lägg till automatiskt i samling</guimenuitem +></subtitle> + +<para +>Det finns ett antal olika sätt att lägga till en sång i en samling. </para> + +<para +>Du måste först av allt ha markerat samlingen där du vill lägga till sånger i <guilabel +>Samlingshanteraren</guilabel +> för alla sätt. Därefter kan du trycka på knappen <guibutton +>Lägg till</guibutton +> för att lägga till en sång. Då visas en dialogruta för att öppna en fil så att du kan välja sången som ska läggas till. </para> + +<para +>Övriga sätt att lägga till en sång beror på tillståndet hos alternativet <guimenuitem +>Lägg till automatiskt i samling</guimenuitem +>. </para> + +<para +>Om <guimenuitem +>Lägg till automatiskt i samling</guimenuitem +> är aktiverad, och du öppnar en sång (med <menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Öppna...</guimenuitem +></menuchoice +> eller dra & släpp) läggs den (de) till i den aktiva samlingen utan påverkan från användaren. </para> + +<para +>Om <guimenuitem +>Lägg till automatiskt i samling</guimenuitem +> inte är aktiverad, och du öppnar en sång så väljs och rensas "Temporary Collection", och de öppnade sångerna läggs till i den. </para> + +</sect1> + +<sect1 id="removing-songs-from-collections"> +<title +>Att ta bort sånger från samlingar</title> + +<para +>För att ta bort en sång från en samling, öppna bara <guilabel +>Samlingshanteraren</guilabel +>, markera samlingen, och sången som du vill ta bort, och klicka sedan på knappen <guibutton +>Ta bort</guibutton +>. </para> + +</sect1> + +<sect1 id="playing-order"> +<title +>Spela i turordning eller slumpmässigt</title> + +<para +>Du kan välja ordningen som sånger spelas. När du väljer läget <guimenuitem +>I ordning</guimenuitem +> från undermenyn <guisubmenu +>Spelordning</guisubmenu +> i menyn <guimenu +>Samlingar</guimenu +>, spelas sånger i samma ordning som de har lagts till i samlingen. </para> + +<para +>När du väljer läget <guimenuitem +>Blanda</guimenuitem +>, så skapar &kmid; en slumpvariabel med en diskret likformig fördelning för att verkligen spela sångerna i samlingen slumpmässigt. Den ger värden till den här slumpvariabeln medan den skapar listan med ordningen som sångerna spelas (du vill säkert spela slumpmässiga sånger, men vill inte spela samma sång två gånger, och vill spela den senaste sången när du trycker på knappen <guibutton +>Föregående sång</guibutton +>, inte sant? :-) ). </para> + +<para +>Den slumpmässiga ordning som samlingen spelas med skapas om varje gång som du lägger till eller tar bort en fil i den aktiva samlingen, och när du väljer <guimenuitem +>Blanda</guimenuitem +> i menyn. </para> + +</sect1> + +<sect1 id="selecting-from-a-collection"> +<title +>Att välja en sång från en samling</title> + +<para +>Du kan välja en sång att spela i <guilabel +>Samlingshanteraren</guilabel +>, eller genom att använda kombinationsrutan ovanför Karaoke-texten. </para> + +<para +>Du kan också byta till nästa sång genom att använda <literal +>Nästa sång</literal +> i menyn <literal +>Sång</literal +>, knappen <literal +>Nästa sång</literal +> i verktygsraden, eller genom att trycka på tangenten <literal +>högerpil</literal +>. </para> + +<para +>För att byta till föregående sång, använd <literal +>Föregående sång</literal +> i menyn <literal +>Sång</literal +>, knappen <literal +>Föregående sång</literal +> i verktygsraden, eller genom att trycka på tangenten <literal +>vänsterpil</literal +> på tangentbordet. </para> + +</sect1> + +<sect1 id="deleting-a-collection"> +<title +>Att ta bort en samling</title> + +<para +>För att ta bort en samling, öppna helt enkelt <guilabel +>Samlingshanteraren</guilabel +>, markera samlingen som du vill ta bort, och klicka på <guibutton +>Ta bort</guibutton +>. Enkelt, inte sant? </para> + +<para +>Kom ihåg att du inte kan ta bort "Temporary Collection", men det spelar inte någon roll eftersom den inte sparas när du avslutar &kmid;. </para> + +</sect1> + +</chapter> + +<chapter id="midi-maps"> +<title +>Midi-kartor</title> + +<sect1 id="what-is-a-midimap"> +<title +>Vad är en midi-karta?</title> + +<para +>En midi-karta är någonting som översätter midi-händelser till andra midi-händelser. </para> + +<para +>Den är fullständigt nödvändig om en synthesizer inte förstår standardhändelserna (dvs. om en synthesizer inte uppfyller General Midi), i det här fallet översätter en midi-karta General Midi-händelser till händelser som synthesizern förstår. </para> + +<para +>Du kan till exempel skapa en midi-karta som ändrar alla händelser <literal +>Ändra patch till piano</literal +>, till <literal +>Ändra patch till trumpet</literal +>, så att när en sång försöker spela ett piano, så spelas en trumpet istället. </para> + +<para +>Det här kan låta konstigt (varför spela en trumpet när sången är gjord för att spela ett piano?), men det är mycket användbart. <acronym +>GM</acronym +>-standarden anger att ett midi-keyboard ska byta till <literal +>flygel</literal +> när det tar emot en händelse för att byta patch till <literal +>0</literal +>, men en äldre synthesizer ändrar till exempel till en <literal +>elektrisk gitarr</literal +> när den tar emot <literal +>0</literal +>. Det här äldre keyboardet behövde ta emot <literal +>3</literal +> (till exempel) för att byta till ett <literal +>piano</literal +>. Här träder midi-kartan in och byter alla <literal +>ändra patch till 0</literal +> mot <literal +>ändra patch till 3</literal +> och på så sätt spelas verkligen det riktiga instrumentet när det ska. </para> + +</sect1> + +<sect1 id="do-i-need-a-midi-map"> +<title +>Behöver jag en midi-karta?</title> + +<para +>I korthet, om du inte har en extern synt, <emphasis +>nej</emphasis +>! </para> + +<para +>Om du bara har ett ljudkort, behövs inte midi-kartor eftersom alla ljudkort stöder <acronym +>GM</acronym +> (det här innefattar AWE-kort, <acronym +>GUS</acronym +>-kort, <acronym +>FM</acronym +>-enheter och så vidare). </para> + +<para +>Om du spelar musik genom en extern syntheziser, och den inte stöder GM, måste du göra en midi-karta för ditt midi-keyboard. Även om det kan ta dig en hel eftermiddag att skapa kartfilen, och prova olika värden för alla alternativ, får du belöningen när du är klar med den, eftersom då märker du alla dolda möjligheter med ditt keyboard. Jag har till exempel en billig Yamaha PSS-790, som inte stöder <acronym +>GM</acronym +>, och inte har så många instrument som en <acronym +>GM</acronym +>-synthesizer, men med &kmid;s hantering av midi-kartor, låter den till och med bättre än många ljudkort (inklusive AWE :-)), beroende på ljudkvaliten som externa syntar har (även de som inte stöder <acronym +>GM</acronym +>). </para> + +</sect1> + +<sect1 id="creating-a-midi-map"> +<title +>Att skapa en midi-karta</title> + +<para +>Det finns inget program för att skapa midi-kartor, så du måste redigera en fil för hand (med din favorittexteditor). </para> + +<para +>En midi-karta är en textfil som innehåller alla nödvändiga översättningar som görs när musiken spelas upp. </para> + +<para +>Den består av fyra delar: <literal +>PATCHMAP</literal +>, <literal +>KEYMAP</literal +>, <literal +>CHANNELMAP</literal +> och <literal +>OPTIONS</literal +>. </para> + +<para +>Varje del får bara förekomma en gång, utom <literal +>KEYMAP</literal +>-delen som kan förekomma så många gånger som behövs, under förutsättning att varje förekomst använder en annorlunda TextID (fortsätt läsa för mer detaljer). </para> + +<para +>Den allmänna strukturen för en kartfil är: </para> + +<screen +>DEFINE PATCHMAP +... +END + +DEFINE KEYMAP "Namn på tangentkarta" +... +END + +DEFINE KEYMAP "En annan tangentkarta" +... +END + +DEFINE CHANNELMAP +... +END + +OPTIONS +... +END +</screen> + +<para +>Du kan se att nyckelordet <literal +>DEFINE</literal +> används för att ange vilken del som inleds (utom för <literal +>OPTIONS</literal +>), och <literal +>END</literal +> skrivs vid slutet av varje del. </para> + +<para +>Du kan ange kommentarer genom att inleda raden med ett <literal +>#</literal +> tecken. </para> + +<para +>Var snäll glöm inte bort att skicka mig din kartfil med e-post, så att framtida utgåvor av &kmid; innehåller stöd för flera keyboards som inte stöder General Midi. </para> + +<sect2 id="the-patchmap-section"> +<title +><literal +>PATCHMAP</literal +> delen</title> + +<para +>Den här delen används för att ange hur patcher ska översättas från GM till specifikationen för ditt keyboard. Den allmänna användningen är: </para> + +<screen +>(Namn på GM-patch)=(<replaceable +>N</replaceable +>) [AllKeysTo M] +</screen> + +<para +>Där <replaceable +>N</replaceable +> är talet som ditt keyboard behöver ta emot för att ändra patchen till samma som GM-standarden använder. </para> + +<para +>Observera att vänstersidan om likhetstecknet ignoreras, så att <acronym +>GM</acronym +>-patcher antas vara i ordning (från 0 till 127), och du får inte ändra ordningen på raderna eller utesluta något av de 128 instrumenten. </para> + +<para +>Den valfria <literal +>AllKeysTo M</literal +> används för att översätta alla toner som använder det instrumentet till tangenten <literal +>M</literal +>. Antag till exempel att ditt midi-keyboard inte har ett pistolskottsljud (GM patch 127), så du vill översätta det till ett trumma i slagverket (dvs. tangent 60), som låter likt ett pistolskott. För att göra detta kan du skriva följande på den 127:de raden i <literal +>PATCHMAP</literal +> delen: </para> + +<screen +>Pistolskott =100 AllKeysTo 60</screen> + + +<para +>Så om en midi-fil försöker spela en ton med patch 127 (pistolskott), så översätts det till patchen 100 (ditt keyboards slagverkspatch) och spelar tonen 60 (oberoende av tonen som skulle spelats). </para> + +<para +>Observera att när jag använder uttrycket <quote +>Slagverkspatch</quote +>, menar jag patchen där varje tangent spelar en särskild trumma, cymbal, tom-tom, maracas och så vidare, och inte ett möjligt ljud som vissa keyboard har som spelar en annan ton med samma trumma för varje tangent. </para> + +</sect2> + +<sect2 id="The-keymap-section"> +<title +><literal +>KEYMAP</literal +> delen</title> + +<para +><literal +>KEYMAP</literal +>-delen används för att ange hur tangenter översätts, för en given kanal eller instrument. Det används så här: </para> + +<screen +>DEFINE KEYMAP "Namn på tangentkartan" +C 0 =0 +C#0 =1 +D 0 =2 +... +END +</screen> + +<para +>Som för <literal +>PATCHMAP</literal +>-delen, är radernas ordning mycket viktigt, och att alla finns där (128 tangenter). </para> + +<para +>Eftersom du kan ange flera tangentkartor för olika kanaler och instrument, måste du ange ett unikt namn för var och en på den första raden. </para> + +<para +>Tangentkartor används i huvudsak för att översätta tangenter för slagverkskanalen. Titta i de medföljande kartorna för att se några exempel. </para> + +</sect2> + +<sect2 id="the-channelmap-section"> +<title +><literal +>CHANNELMAP</literal +> delen</title> + +<para +>Den här delen kan användas för att översätta några kanaler till andra. Om du till exempel vill byta första och andra kanalen, kan du enkelt göra detta i <literal +>CHANNELMAP</literal +>-delen. </para> + +<para +>Det är dock mer användbart för ett keyboard som måste ha slagverkskanalen som en särskild kanal (GM-standarden använder kanal 10, andra använder kanal 16 eller 9). </para> + +<para +>Observera att midi-enheter använder 16 kanaler, så att <literal +>CHANNELMAP</literal +>-delen har 16 rader, från 0 till 15, som den här: </para> + +<screen +>(N) = (M) [Keymap "Namn"] [ForcePatch x] +</screen> + +<para +>Där <literal +>N</literal +> är kanalen som översätts till kanalen <literal +>M</literal +>. Om alternativet <literal +>Keymap</literal +> anges, kommer tangentkartan med namnet <literal +>Namn</literal +> att användas för den här kanalen (den här tangentkartan ska anges tidigare i kartfilen!). Om alternativet <literal +>ForcePatch</literal +> anges, kommer alla händelser som försöker ändra patchen som används för den här kanalen att ignoreras, och patchen <literal +>x</literal +> kommer att användas istället. </para> + +<para +><literal +>ForcePatch</literal +> alternativet kan vara användbart för att till exempel alltid använda slagverkspatchen på slagverkskanalen. </para> + +</sect2> + +<sect2 id="the-options-section"> +<title +><literal +>OPTIONS</literal +> delen</title> + +<para +><literal +>OPTIONS</literal +> delen har en del allmänna alternativ som kan vara mycket användbara: </para> + +<screen +>OPTIONS +PitchBenderRatio = r +MapExpressionToVolumeEvents +END +</screen> + +<para +>Du kan ange båda alternativen, bara ett, eller inget av dem. </para> + +<para +>Värdet <literal +>PitchBenderRatio r</literal +>, anger förhållandet som tonhöjdsförändringar kommer att multipliceras med. Dvs. när en midi-fil försöker skicka en midi-händelse med en tonhöjdsförändring som har värdet <literal +>n</literal +>, kommer det riktiga värdet som skickas att vara <literal +>n*(r/4096)</literal +> (värdet <literal +>4096</literal +> finns för att inte behöva ange decimalkomman i kartfilen). </para> + +<para +>Det här används för att <acronym +>GM</acronym +>-standarden säger att när ett midi-keyboard tar emot en tonhöjdsförändring med datavärdet 4096, ska det ändra tonen till nästa högre ton, men vissa midi-keyboard försöker ändra initialtonen till två eller fler toner högre (till och med en oktav högre!) när de tar emot 4096. Detta kan lätt fixas genom att försöka med olika värden, så att istället för att skicka 4096, så skickar KMid det lämpliga värdet. </para> + +<para +>När alternativet <literal +>MapExpressionToVolumeEvents</literal +> anges i kartfilen, och en midi-fil försöker skicka en uttryckshändelse, skickar KMid en volymhändelse, som förstås av fler keyboards som inte följer GM, och som har en liknande effekt. Det finns många midi-filer som använder uttryckshändelser för att dämpa ljudet i slutet på en sång, så om du vill att musiken ska låta tystare och tystare, kan du aktivera det här alternativet och se om det är vad du behöver, eftersom din midi-synthesizer kanske ignorerar uttryckshändelserna därför att den inte förstår dem. </para> + +</sect2> + +</sect1> + +<sect1 id="using-midimaps"> +<title +>Att använda midi-kartor</title> + +<para +>För att använda en midi-karta, öppna helt enkelt dialogrutan <guilabel +>Konfigurera midi-enheter</guilabel +> genom att välja <guimenuitem +>Inställningar för midi...</guimenuitem +> i menyn <guimenu +>Inställningar</guimenu +>. </para> + +<para +>Klicka sedan på <guilabel +>Bläddra...</guilabel +>, välj kartfilen i dialogrutan och njut av musiken! :-) </para> +</sect1> +</chapter> + +<chapter id="advanced-features"> +<title +>Avancerade funktioner</title> + +<sect1 id="the-channel-view"> +<title +>Kanalvisaren</title> + +<para +>Kanalvyn är ett fönster där flera keyboard visas (ett för varje midi-kanal). På varje keyboard markeras tonerna som spelas för varje instrument, så att du kan se vad varje instrument spelar. </para> + +<sect2 id="changing-instruments"> +<title +>Att byta instrument</title> + +<para +>Du kan använda kanalvyn för att ändra instrumentet som varje kanal spelar. För varje kanal finns en kombinationsruta där det kan väljas. När du väl har ändrat det, blir den gröna knappen intill röd för att visa att det här inte är det förvalda instrumentet. </para> + +<para +>Om du vill välja det förvalda instrumentet igen, klicka på den röda knappen, och det väljs automatiskt. </para> + +</sect2> + +<sect2 id="changing-the-look"> +<title +>Att byta utseendeläge</title> + +<para +>Kanalvyn har två olika sätt att visa spelade toner (för närvarande), som du kan välja från <guimenuitem +>Kanal Vyinställningar...</guimenuitem +> i menyn <guimenu +>Inställningar</guimenu +>. </para> + +<para +>Du kan välja ett läge där spelade tangenter trycks ner, som om det var ett vanligt piano (<guilabel +>3D-utseende</guilabel +>), eller ett läge där tangenter också fylls i med röd färg, så att nertryckta tangenter lätt känns igen (<guilabel +>3D - fylld</guilabel +>). Om du spelar piano, eller något annat musikinstrument, kan du använda den här vyn för att lära dig att spela en sång själv. Jag har använt den här tekniken, och det är ett utmärkt sätt att lära sig nya melodier (tillsammans med ett reducerat tempo). </para> + +</sect2> + +</sect1> + +<sect1 id="the-tempo-lcd"> +<title +>Tempo <acronym +>LCD</acronym +></title> + +<para +>Det här visar tempot som en sång spelas med, dvs. sångens hastighet. Ju högre det här talet är, desto snabbare spelas sången. </para> + +<para +>Du kan också ändra sångens tempo, så om en sång spelas för snabbt för att du ska kunna följa sångtexten, kan du få den att spelas långsammare. Du kan använda pilarna som syns på varje sida om <acronym +>LCD</acronym +>:n för att ändra tempo. </para> + +<para +>När du väl har ändrat tempo, kan du få tillbaka det förvalda genom att dubbelklicka på <acronym +>LCD</acronym +>:n. </para> + +</sect1> + +</chapter> + +<chapter id="key-bindings"> +<title +>Tangentbindningar</title> + +<informaltable> +<tgroup cols="2"> +<thead> +<row> +<entry +>Tangent</entry> +<entry +>Åtgärd</entry> +</row> +</thead> +<tbody> +<row> +<entry +><keycap +>Mellanslag</keycap +></entry> +<entry +>Spela sången som är inladdad om den inte spelas, eller pausa den om den redan spelas.</entry> +</row> +<row> +<entry +><keycap +>Backsteg</keycap +></entry> +<entry +>Stoppa uppspelning</entry> +</row> +<row> +<entry +><keycap +>Högerpil</keycap +></entry> +<entry +>Nästa sång i den nuvarande samlingen</entry> +</row> +<row> +<entry +><keycap +>Vänsterpil</keycap +></entry> +<entry +>Föregående sång i den nuvarande samlingen</entry> +</row> +<row> +<entry +><keycap +>Uppåtpil</keycap +></entry> +<entry +>Rulla sångtexten en rad uppåt</entry> +</row> +<row> +<entry +><keycap +>Neråtpil</keycap +></entry> +<entry +>Rulla sångtexten en rad neråt</entry> +</row> +<row> +<entry +><keycap +>Sida upp</keycap +></entry> +<entry +>Rulla sångtexten en sida uppåt</entry> +</row> +<row> +<entry +><keycap +>Sida ner</keycap +></entry> +<entry +>Rulla sångtexten en sida neråt</entry> +</row> +<row> +<entry +><keycap +>1</keycap +></entry> +<entry +>Visa texthändelser</entry> +</row> +<row> +<entry +><keycap +>2</keycap +></entry> +<entry +>Visa sångtexthändelser</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>O</keycap +></keycombo +></entry> +<entry +>Öppna en sång</entry> +</row> +<row> +<entry +><keycombo action="simul" +>&Ctrl;<keycap +>Q</keycap +></keycombo +></entry> +<entry +>Avsluta &kmid;</entry> +</row> +<row> +<entry +><keycap +>F1</keycap +></entry> +<entry +>Öppna det här dokumentet</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +</chapter> + +<chapter id="frequently-asked-questions"> +<title +>Vanliga frågor</title> + +<qandaset> +<qandaentry> +<question> +<para +>Exakt vad är en midi-fil? </para> +</question> + +<answer> +<para +>En midi-fil är en fil som innehåller information om hur en sång ska spelas, dvs. den innehåller helt enkelt noterna, rytmen, hastigheten, etc. Detta betyder att samma midi-fil som spelas i två olika enheter, kan ge mycket olika resultat, precis som ett givet nothäfte kan spelas mycket olika av två musiker. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jag kan få bättre ljud med en mp3/wav-spelare, varför ska jag då använda &kmid;? </para> +</question> +<answer> +<para +>Nåja, jag kan inte tvinga någon att använda &kmid;, men en typisk midi-fil upptar 50 Kibyte, medan en typisk mp3-fil upptar 4 Mibyte (och det är med en komprimeringsfaktor 1:80). Med en bra synthesizer kan du också få jämförbar ljudkvalitet. Dessutom kan du ändra individuella instrument, ändra hastigheten på en sång, etc. med en midi-fil, så du har större möjligheter att styra musiken. </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jag får inte mitt AWE-kort att fungera med KMid, vad kan jag göra? </para> +</question> +<answer> +<para +>Det här kan inträffa om du skaffat en binärdistribution (rpm, deb) av &kmid;. Det inträffar därför att &kmid; kompilerades utan AWE-stöd. Om det inte fungerar, måste du ladda ner en källkodsdistribution (till exempel, från <ulink url="http://www.arrakis.es/~rlarrosa/kmid.html" +>&kmid;s hemsida</ulink +>) </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jag vill lägga till en hel katalog i en samling, men att behöva lägga till midi-filerna en i taget är inte roligt. </para> +</question> + +<answer> +<para +>Jag håller med. Det är därför som &kmid; stöder dra och släpp. Öppna bara katalogen som du vill lägga till i &konqueror;, välj alla filerna, dra dem och släpp i &kmid;. </para> +<para +>Försäkra dig om att alternativet <guimenuitem +>Lägg till automatiskt i samling</guimenuitem +> är aktiverat, så att filerna läggs till i den nuvarande samlingen. Om du inte gör detta, kommer filerna att läggas till i "Temporary Collection". </para> +</answer> +</qandaentry> + +<qandaentry> +<question> +<para +>Jag kan inte följa med i sångtexten, den spelas för snabbt! </para> +</question> +<answer> +<para +>Du kan trycka på vänsterpilen i Tempo <acronym +>LCD</acronym +>:n för att få den att spela långsammare. Kom ihåg att du kan dubbelklicka på <acronym +>LCD</acronym +>:n för att få det förvalda tempot. </para +> +</answer> +</qandaentry> +</qandaset> + +</chapter> + +<chapter id="final-notes"> +<title +>Slutanmärkningar</title> + +<sect1 id="some-tips-and-tricks"> +<title +>Några tips och trick</title> + +<para +>Jag inkluderar några tips så att du kan dra fördel av alla funktioner i &kmid; i full utsträckning: </para> + +<variablelist> +<varlistentry> +<term +>Öppna filer</term> +<listitem> +<para +>Jag har alltid ett &kde;-skrivbord med ett &konqueror;-fönster som visar min huvudkatalog med midi-filer, och &kmid; på skrivbordet (om jag spelar en midi-fil) eller på alla skrivbord (om jag spelar en Karaoke-fil :-)). Om jag vill spela några filer när den aktiva samlingen avslutas, kan jag på det här sättet bara gå till &konqueror;-fönstret, välja de önskade filerna och dra & släppa dem i &kmid;s fönster. </para> + +<para +>Antag att du vill spela några midi-filer, men inte vill lägga till dem i någon samling. Stäng då bara av <guimenuitem +>Lägg till automatiskt i samling</guimenuitem +> i menyn <guimenu +>Samlingar</guimenu +>, och öppna filerna, så läggs de till i "Temporary Collection". </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Ett annat sätt att skapa en ny samling</term> +<listitem> +<para +>Antag att du har midi-filerna <filename +>A.mid</filename +>, <filename +>B.mid</filename +> och <filename +>C.mid</filename +>. Först vill du bara spela den första midi-filen, så du stänger av <guimenuitem +>Lägg till automatiskt i samling</guimenuitem +> och öppnar <filename +>A.mid</filename +>. Då får du en "Temporary Collection" med bara en midi-fil. </para> +<para +>Därefter bestämmer du dig för att också spela B och C, och göra en samling med allihop. Vad gör du då? </para> +<para +>Lätt, välj <guimenuitem +>Lägg till automatiskt i samling</guimenuitem +> och öppna <filename +>B.mid</filename +> och <filename +>C.mid</filename +> (med någon av de olika metoderna), så läggs de automatiskt till i "Temporary Collection", som nu innehåller <filename +>A.mid</filename +>, <filename +>B.mid</filename +> och <filename +>C.mid</filename +>. Öppna nu dialogrutan <guilabel +>Samlingshanteraren</guilabel +>, markera "Temporary Collection", och klicka på knappen <literal +>Kopiera</literal +>, ange namnet på den nya samlingen, och du är klar. Du har direkt en ny samling som innehåller midi-filerna A, B och C, som inte tas bort när du avslutar &kmid;. </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> + +<sect1 id="hall-of-kmids-friends"> +<title +>Galleri med &kmid;s vänner</title> + +<para +>Det här är några av de personer som har skickat midi-filer eller ett vykort till mig, tack allesamman! Att höra de här sångerna eller titta på vykorten får mig att fortsätta programmera mer och mer med &kmid;. </para> + +<itemizedlist> +<listitem> +<para +>Ola Sigurdson - <literal +>Taking Care of Business</literal +> (Bachman Turner Overdrive)</para> +</listitem> +<listitem> +<para +>EG Lim - Ett verkligt trevligt vykort från Penang.</para> +</listitem> +<listitem> +<para +>Guenther Starnberger - <literal +>Amadeus</literal +> (Falco) och <literal +>Schrei Nach Liebe</literal +> (Die Ärzte)</para> +</listitem> +<listitem> +<para +>Leandro Terrés - <literal +>All That She Wants</literal +> och <literal +>The Sign</literal +> (Ace of Base)</para> +</listitem> +<listitem> +<para +>Nick Stoic - Två midi-filer</para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="about-the-author"> +<title +>Om upphovsmannen</title> + +<para +>&kmid; har tagits fram av Antonio Larrosa Jiménez, i Málaga (Spanien). Jag studerar matematik vid Málagas universitet, och håller för närvarande på med tredje kursen, så jag har inte så mycket ledig tid för mina hobbyer, men jag försöker alltid skaffa mig lite :-) . Mina hobbyer inkluderar: programmering, samla midi-filer, spela musik och bevisa teorem ;-). </para> + +<para +>Om du vill veta var man kan ladda ner Midi/Karaoke-filer, eller du har en fråga, en felrapport, en ide eller en funktion som du skulle vilja se i &kmid; eller bara vill glädja mig, tveka inte att skicka e-post till <email +>larrosa@kde.org</email +> eller <email +>antlarr@arrakis.es</email +> </para> + +<para +>eller skriv till mig med vanlig post: </para> + +<literallayout +>Antonio Larrosa Jimenez +Rio Arnoya 10 5B +Malaga (Spanien) +</literallayout> + +<para +>Du gör mig glad om du skickar mig ett vykort från din hemort, eller en MIDI/Karaoke-fil från en lokal musikgrupp från ditt land. Alla som skickar mig ett vykort eller en midi-fil får sitt namn i galleriet med &kmid;s vänner i den här filen (under förutsättning att de inte motsätter sig detta). Var snäll att kontakta mig innan du skickar mig några midi-filer, eftersom jag kanske redan har dem. </para> + +<para +>Jag vill poängtera att &kmid; har tagits fram helt på fritid, utan finansiellt stöd från något företag eller enskild. Kom därför ihåg, när du använder det, att det enda som får mig att fortsätta arbeta med det är att få gensvar från användare (ett vykort, eller bara e-post). </para> + +<para +>Jag skulle vilja tacka följande personer för deras hjälp med att utveckla &kmid;: </para> + +<itemizedlist> +<listitem> +<para +>Paul J. Leonard <email +>P.J.Leonard@bath.ac.uk</email +> - stöd för AWE-kort </para> +</listitem> +<listitem> +<para +>Sebestyen Zoltan <email +>szoli@digo.inf.elte.hu</email +>- flyttning till FreeBSD och test av AWE </para> +</listitem> +<listitem> +<para +>Christian Esken <email +>esken@kde.org</email +> - för att ha organiserat ansträngningarna med KDE:s multimedia </para> +</listitem> +<listitem> +<para +>Stephan Kulow <email +>coolo@kde.org</email +>- konfigurationsskript och hjälp med <command +>automake</command +> och <command +>CVS</command +> </para> +</listitem> +<listitem> +<para +>Jaroslav Kysela - hjälp med att ta fram stöd för &Linux; Ultrasound Project drivrutin </para> +</listitem> +<listitem> +<para +>Takashi Iwai och Joseph H. Buehler - fixar för att tonhöjden på AWE-kort var för hög </para> +</listitem> +<listitem> +<para +>Adrian Knoth - för att ha gett mig goda nyheter och många förslag </para> +</listitem> +<listitem> +<para +>Kevin Street - programfix för att stöda FreeBSD 3.0 </para> +</listitem> +<listitem> +<para +>Tack också till Jose Luis Sanchez för test av GUS-stöd, Ignacio Garcia för test av AWE-stöd, Hans Petter Bieker, Ola Sigurdson, Marc Diefenbruch, Peter Gritsch, Magnus Pfeffer, Urko Lusa, Peter-Paul Witta, Thorsten Westheider, Ulrich Cordes och alla som skickat en patch till mig, en felrapport eller bara e-post för att uppmuntra mig. </para> +</listitem> +<listitem> +<para +>Och förstås till alla fantastiska musiker på nätet som fortsätter att ge oss alla underbara MIDI- och Karaoke-filer. </para> +</listitem> +</itemizedlist> + +<para +>Översättning Stefan Asserhäll <email +>stefan.asserhall@comhem.se</email +></para +> + +</sect1> + +<sect1 id="copyright-and-license"> +<title +>Copyright och licens</title> + +<para +>&kmid; är copyright Antonio Larrosa Jiménez, 1999-2001</para> + +<para +>Dokumentation är copyright Antonio Larrosa Jiménez 1999, 2001</para> +&underFDL; &underGPL; </sect1> + +</chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="how-to-obtain-kmid"> +<title +>Hur man skaffar &kmid;</title> +&install.intro.documentation; <para +>Dessutom finns &kmid; på sin egen hemsida, som finns på <ulink url="http://www.arrakis.es/~rlarrosa/kmid.html" +> http://www.arrakis.es/~rlarrosa/kmid.html</ulink +>. På hemsidan kan du följa utvecklingen, se en del information om programmet, några skärmbilder, en lista på webbplatser där du kan ladda ner fler Karaoke-sånger, etc. </para> + +</sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>För att fungera kräver &kmid;:</para> + +<itemizedlist> +<listitem> +<para +>&kde;. Nå, du har troligen redan det :-) </para> +</listitem> +<listitem> +<para +>Ett ljudkort. Ett bra ljudkort och/eller extern synthesizer rekommenderas, eftersom ljudkvalitén i stor utsträckning beror på ljudkortet, det är inte samma sak att spela musiken med en FM-enhet, som att använda ett AWE-kort. </para> + +<para +>Om du inte har ett ljudkort, kan du fortfarande kompilera &kmid; med <literal +>MODE_DEMO_ONLYVISUAL</literal +> definierad och den kör som om du hade ett kort (med du hör förstås ingen musik :-( ). </para> +</listitem> +</itemizedlist> + +</sect1> + +<sect1 id="compilation-and-installation"> +<title +>Kompilering och installation</title> +&install.compile.documentation; <para +>Jag har bifogat några exempel som installeras i <filename class="directory" +>$<envar +>KDEDIR</envar +>/share/apps/kmid</filename +>. </para> + +<para +>Om du stöter på något problem, tveka inte att kontakta någon av &kde;:s e-postlistor, eller skicka en rapport direkt till mig. </para> + +</sect1> + +</appendix> + +</book> +<!-- +Local Variables: +mode: sgml +sgml-omittag: nil +sgml-shorttag: t +End: +--> diff --git a/tde-i18n-sv/docs/tdemultimedia/kmidi/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kmidi/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmidi/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kmidi/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kmidi/Makefile.in new file mode 100644 index 00000000000..4b6aade0f93 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmidi/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kmidi +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmidi/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kmidi/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmidi/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmidi/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmidi/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)/kmidi + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmidi/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmidi/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmidi/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmidi/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-sv/docs/tdemultimedia/kmidi/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/kmidi/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..5372a166b62 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmidi/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/kmidi/index.docbook b/tde-i18n-sv/docs/tdemultimedia/kmidi/index.docbook new file mode 100644 index 00000000000..b2f72a1c732 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmidi/index.docbook @@ -0,0 +1,1473 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ +<!ENTITY kappname "&kmidi;"> +<!ENTITY package "tdemultimedia"> +<!ENTITY timidity "<application +>TiMidity</application +>"> +<!ENTITY % addindex "IGNORE"> +<!ENTITY % Swedish "INCLUDE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>Handbok &kmidi;</title> +<authorgroup> +<author +><firstname +>Bernd Johannes</firstname +> <surname +>Wuebben</surname +> <affiliation +> <address +><email +>wuebben@kde.org</email +></address> +</affiliation> +</author> +<author +><firstname +>Greg</firstname +> <surname +>Lee</surname +> <affiliation +> <address +><email +>lee@hawaii.edu</email +></address> +</affiliation> +</author> +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit> +</authorgroup> + +<copyright> +<year +>1999</year> +<year +>2000</year> +<holder +>Greg Lee</holder> +</copyright> + +<date +>2000-12-16</date> +<releaseinfo +>1.03.00</releaseinfo> +<abstract> +<para +>&kmidi; spelar midi-filer med användning av instrumentpatcher. Den gör samma sak med programvara som ett ljudkort som GUS (Gravis UltraSound) eller Sound Blaster AWE gör i maskinvara. </para> + +</abstract> +<keywordset> +<keyword +>KMidi</keyword> +<keyword +>Midi</keyword> +<keyword +>Spelare</keyword> +<keyword +>Timidity</keyword> +<keyword +>Midi</keyword> +<keyword +>till</keyword> +<keyword +>Wav</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Inledning</title> + +<para +>&kmidi; spelar midi-filer med användning av instrumentpatcher. Den gör samma sak med programvara som ett ljudkort som <acronym +>GUS</acronym +> (Gravis UltraSound) eller Sound Blaster AWE gör i maskinvara. Därför är den enda utrustning som du behöver ett enkelt ljudkort eller krets. Även om du har ett <acronym +>GUS</acronym +> eller AWE, kanske du vill prova &kmidi; ändå, eftersom den låter rätt bra. </para> + +<para +>Och den har fördelen att om du vill att den ska låta bättre, kan du bara kavla upp ärmarna och skriva om den, eftersom du förstås får källkoden gratis. </para> + +<para +>Den behöver dock en del <acronym +>CPU</acronym +>-tid. Jag märker att öppna nya fönster eller ibland bara rulla skärmen orsakar pauser i musiken. Dessutom vill du nog skaffa några instrumentuppsättningar (se nedan). De är för omfattande (10-12 Mibyte) för att följa med den vanliga &kde;-distributionen, så jag har bara tagit med fem patcher som exempel. &kmidi; kan hantera 257 banker med 128 instrument vardera. </para> + +<para +>&kmidi; är baserat på Tuukka Toivonens underbara program <application +>TiMidity</application +>, som gör det mesta arbetet. &kmidi; är ett grafiskt gränssnitt för <application +>TiMidity</application +>, och <application +>TiMidity</application +> själv, med andra alternativa användargränssnitt, ingår i källkodsdistributionen av &kmidi;. Tack, Tuukka! </para> + +<para +>&kmidi; stöder följande plattformar för närvarande (version 1.3): </para> + +<itemizedlist> +<listitem> +<para +>&Linux;</para> +</listitem> +<listitem> +<para +>FreeBSD</para> +</listitem> +<listitem> +<para +>DEC OSF/1 </para> +</listitem> +<listitem> +<para +>&HP-UX;</para> +</listitem> +<listitem> +<para +>SunOS</para> +</listitem> +<listitem> +<para +>Sun &Solaris;</para> +</listitem> +</itemizedlist> + +<para +>Flyttning till andra plattformar bör vara enkel. Var snäll kontakta mig om du har flyttat &kmidi; till en annan plattform. </para> + +<para +>För detaljer om användning som inte täcks av den här handboken, se manualsidan för <command +>timidity</command +>. </para> + +<para +>Kom ihåg att midi-filer är typiskt omkring 50 Kibyte eller mindre och är därför så lätta att ladda ner att du aldrig får slut på bra filer att spela. </para> + +<para +>Lycka till med &kmidi;! </para> + +<para +>Bernd Johannes Wuebben <email +>wuebben@kde.org</email +> </para> + +</chapter> + +<chapter id="usage"> +<title +>Användning </title> + +<sect1 id="getting-started"> +<title +>Att komma igång </title> + +<para +>Om du inte har använd &kmidi; tidigare, ser du namnet på en av midi-exempelfilerna jag inkluderat i det svarta fönstret. Klicka på uppspelningsknappen för att spela den. Flytta omkring muspekaren från knapp till knapp för att få en kort beskrivning med ett verktygstips om vad varje knapp gör när den klickas. </para> + +<para +>Klicka på <guiicon +>KMidi</guiicon +>-logotypen överst till vänster för att visa den nedre panelen. Där syns ett svart fönster, <interface +>kanalvisaren</interface +>, som visar ett stapeldiagram med toner som spelas på de 16 midi-kanalerna. Till vänster finns en väljare av instrumentuppsättning och en sångväljare. Klicka på sångväljaren för att visa en lista med de övriga midi-exempelfilerna som jag inkluderade i &kmidi;-distributionen. Klicka på en annan, om du vill, för att spela den. </para> + +<para +>Klicka på <guiicon +>Info</guiicon +>knappen för att se information om midi-filen som du spelar och <quote +>Karaoke</quote +>-sångtext (om midi-filen har någon). </para> + +<para +>Klicka på knappen <guiicon +>spellista</guiicon +> för att leta omkring i filsystemet efter midi-filer och sammanställa en egen lista på filer som ska spelas. Om du inte klickar på filterknappen, visas bara midi-filer (vare sig de har filändelsen <literal role="extension" +>.mid</literal +> eller <literal role="extension" +>.kar</literal +>). Dubbelklicka på ett filnamn till vänster på skärmen för att lägga till filen i spellistan (som visas till höger). </para> + +<para +>Bli inte överraskad eller förtretad om en del midi-filer ger lite eller inget ljud. Det finns ett ynkligt litet antal instrumentpatcher med i distributionen av &kmidi;. Ledsen för det. Titta gärna i avsnittet om hur man skaffar instrumentuppsättningar från nätet i det här dokumentet. </para> + +</sect1> + +<sect1 id="playlists"> +<title +>Spellistor</title> + +<para +>Klicka på knappen <guiicon +>mata ut</guiicon +> för att öppna spellisthanteraren. Till vänster syns innehållet i katalogen som du sist befann dig i när du redigerade spellistan. Till höger syns den nuvarande spellistan. Välj en midi-fil till vänster för att lägga till den i spellistan genom att dubbelklicka på den. Eller enkelklicka, och välj sedan <guibutton +>Lägg till</guibutton +>. </para> + +<para +>De enda filer som visas till vänster är midi-filer. Komprimerade midi-filer känns tyvärr inte igen, så om du har använd till exempel <command +>gzip</command +> för att komprimera filerna, kan du behöva stänga av knappen <guibutton +>Filter</guibutton +> längst ner. Då blir alla filer synliga. &kmidi; avgör inte om en fil är en midi-fil eller inte genom att titta på namnet, utan istället läser den en liten del av filen för att se om den verkar vara en midi-fil. Därför är det inte nödvändigt att döpa dina midi-filer med filändelsen <literal role="extension" +>.mid</literal +>. </para> + +<para +>Längst ner på skärmen finns de nuvarande spellistorna. När du först startar, finns det bara en, som heter <guilabel +>default</guilabel +>, med midi-exemplen från &kmidi;s distribution. Innehållet kan ändras genom att enkelklicka på namnet <guilabel +>default</guilabel +> (om det inte redan är markerat) och sedan välja <menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Spara</guimenuitem +></menuchoice +> för att byta ut spellistefilens innehåll mot den nuvarande spellistan. Eller välj <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Lägg till</guimenuitem +></menuchoice +> för att lägga till innehållet i den nuvarande spellistan sist i spellistans fil. Välj istället <menuchoice +><guimenu +>Arkiv</guimenu +><guimenuitem +>Spara som...</guimenuitem +></menuchoice +> för att skapa en ny spellista, och fyll i det nya namnet du valt i den lilla rutan som dyker upp. Dubbelklicka på en spellistefils namn för att byta ut din nuvarande spellista mot innehållet på den som du har sparat. Det här kan också göras från huvudpanelen genom att enkelklicka på en spellistas namn i rutan <guilabel +>Välj spellista</guilabel +>. </para> + +<para +>Ta bort en spellista genom att klicka på namnet, och välj sedan <menuchoice +><guimenu +>Arkiv</guimenu +> <guimenuitem +>Ta bort</guimenuitem +> </menuchoice +>. </para> + +<para +>Den vertikala linjen som skiljer kataloglistan från spellistan kan dras från vänster till höger med musen. Den horisontella linjen som avdelar de här två från spellistenamnen kan dras uppåt och neråt. </para> + +</sect1> + +<sect1 id="midi-filenames"> +<title +>Midi-filnamn </title> + +<para +>Namnen på midi-filer som syns på huvudpanelen kan skilja sig lite grand från de verkliga filnamnen. Av läsbarhetsskäl, byter &kmidi; ut alla <quote +>_</quote +> i midi-filnamnet mot mellanslag, och hugger av filändelsen <literal role="extension" +>.mid</literal +>/<literal role="extension" +>.MID</literal +> om den finns. </para> + +</sect1> + +<sect1 id="configuring"> +<title +>Anpassa </title> + +<para +>Genom att klicka på knappen Anpassa i panelen visas en inställningsdialogruta där du kan välja bakgrundsfärg för panelens två fönster och <acronym +>LED</acronym +>-färgen. För närvarande kan inte färgen som används för slaginstrument i kanalmätaren anpassas, den är alltid gul. </para> + +</sect1> + +<sect1 id="patchsets"> +<title +>Instrumentuppsättningar </title> + +<para +>I nedre panelen, längst upp till vänster, finns valet av instrumentuppsättning. Det finns tre uppsättningar med &kmidi;s distribution: <guilabel +>piano+gitarr</guilabel +>, <guilabel +>piano</guilabel +>, och <guilabel +>gitarr</guilabel +>. Det finns ingen riktig anledning att välja uppsättningarna piano eller gitarr, de finns bara med som exempel. När du skaffar flera instrumentuppsättningar, kan du ställa in så att du kan byta mellan dem i panelen. Det här görs på följande sätt: </para> + +<para +>Skapa en <literal role="extension" +>cfg</literal +>-fil för varje instrumentuppsättning som beskriver patcherna och deras bank- och instrumentnummer (midi-program). Skriv sedan in raden <userinput +>source <replaceable +>filnamn</replaceable +></userinput +> och <userinput +>if <replaceable +>n</replaceable +></userinput +> på föregående rad, i filen <filename +>timidity.cfg</filename +>, där <replaceable +>filnamn</replaceable +> är namnet som du angav för filen som beskriver patcherna, och <replaceable +>n</replaceable +> är raden som <replaceable +>filnamn</replaceable +> ska visas i &kmidi;s panel i rutan <guilabel +>Välj instrumentuppsättning</guilabel +>. Genom att klicka på det här namnet så väljs instrumentuppsättningen. Numreringen av uppsättningarna börjar på 0. </para> + +<para +>Banker/trummor och namn på patcher måste anges i <literal role="extension" +>cfg</literal +>-filer, eftersom de som inte anges inte kommer att laddas från filer (<acronym +>GUS</acronym +>-patchfiler eller ljudteckensnitt) även om patcherna är tillgängliga. På det här sättet är det lätt att utesluta vissa patcher från ett ljudteckensnitt för att ladda bättre från ett senare teckensnitt. Deklarera dem bara inte innan du bett att teckensnittet ska laddas. </para> + +<para +>När samma patch för samma bank eller trummor anges mer än en gång, räknas bara den första. Ange därför de bästa teckensnitten först. </para> + +<para +>Det finns ett verktyg <command +>sf2cfg</command +> för att skapa en <literal role="extension" +>cfg</literal +>-fil för ett <literal role="extension" +>sbk</literal +>/<literal role="extension" +>sf2</literal +>-ljudteckensnitt, som ger ifrån sig alla patcher som finns i teckensnittet. Jag har också inkluderat exempel på <literal role="extension" +>cfg</literal +>-filer för <filename +>chaos8m.sf2</filename +> och <filename +>chaos12m.sf2</filename +>. </para> + +</sect1> + +<sect1 id="polyphony"> +<title +>Polyfoni </title> + +<para +>Hör du pauser i musiken? Det är möjligt att &kmidi; inte hinner med att göra alla de beräkningar som behövs för att justera tonhöjden för instrumentpatcher, filtrera signalen, kombinera toner, och så vidare. Om detta inträffar, kan du kanske förbättra situationen genom att använda nummerinmatningsrutan till höger i den nedre panelen. Den justerar maximala antalet polyfoniska <quote +>röster</quote +> som används samtidigt. När du minskar den maximala polyfonin, lättar du bördan för &kmidi; på bekostnad av en del korus eller ekoeffekter, eller att vissa toner huggs av eller utelämnas helt (i vissa fall skapar &kmidi; extra toner för att åstadkomma köreffekter och eko). </para> + +</sect1> + +<sect1 id="effects"> +<title +>Ljudeffekter </title> + +<para +>Ljudeffekter ändrar ljudet på olika sätt, som jag inte alltid har helt klart för mig. Det finns fyra sätt ljudeffekter kan begäras, och två sätt som de kan styras. </para> + +<para +>En midi-sång kan ange en ljudeffekt för alla instrument som spelar på vilken som helst av de 16 midi-kanalerna. Eller så kan den ange flera effekter för flera kanaler. När du trycker in panelens knapp <guibutton +>eff</guibutton +>, filtreras signalen för att åstadkomma midi-effekterna: korus, eko, celeste och phaser. Men det blir inga effekter om inte sången i midi-filen begär det. Två av standardeffekterna, harmoni och klarhet, är ännu inte implementerade med filter (Filtren kodades av Nicolas Witczak). </para> + +<para +>Om du inte trycker in knappen <guibutton +>eff</guibutton +>, får du fortfarande några korus- och ekoeffekter på kanaler där det begärs, men det åstadkoms på ett annat sätt. Istället för att använda filter, skapas nu extra toner. De är något ostämda för koruseffekten, och något fördröjda för eko. Några justeringar till tonenveloppen och vibratot görs också. Med <guibutton +>eff</guibutton +> avstängd, fås inga kanaler med celeste eller phasereffekter. </para> + +<para +>Ett annat sätt som ljudeffekter kan begäras är via en patch. Det vill säga att en instrumentpatch kan innehålla förslag på korus- och/eller ekonivå. AWE patcher anger i allmänhet effekter, medan Gravis-Forte patcher inte gör det (detta är orsaken till att AWE instrumentuppsättningar har en tendens att låta lite fylliga). Ljudeffekter som begärs på det här sättet skapas med metoden med extra toner, och påverkas inte av knappen <guibutton +>eff</guibutton +>. </para> + +<para +>Som tredje metod, kan du begära effekter. Observera de fyra kryssrutorna till höger i panelen. Var och en av dem har tre tillstånd: normal (förvalt), extra, och av. De två kryssrutorna i mitten styr <guilabel +>korus</guilabel +> och <guilabel +>eko</guilabel +>. Om de ställs in till <guilabel +>normal</guilabel +>, hanteras ljudeffekter som beskrivits ovan. När de ställs in till <guilabel +>extra</guilabel +>, skapas extra toner för korus eller eko för alla instrument och alla kanaler, oavsett de effektfilter som begärs genom att klicka på <guilabel +>eff</guilabel +>. När de ställs in till <guilabel +>av</guilabel +>, skapas inga extra korus- eller ekotoner. </para> + +<para +>Till sist, kan effekter begäras av ett systemspecifikt midi-meddelande i en midi-fil, en så kallad <quote +>sysex</quote +>. Detta är avsett för att för att styra maskinvaran för en speciell synthesizer. &kmidi; avkodar i viss utsträckning olika sysex för Roland GS och Yamaha XG syntar och gör sitt bästa för att ändra ljudet i enlighet med dem. Korus, eko och variationer av de här görs med metoden med <quote +>extra toner</quote +> och kan stängas av med kryssrutorna som just nämnts. Om celestevariation av koruseffekten begärs av en XG sysex, så används dock Witczaks celestefilter, under förutsättning att knappen <guibutton +>eff</guibutton +> är intryckt. </para> + +</sect1> + +<sect1 id="command-line-options"> +<title +>Kommandoradsväljare</title> + +<para +>Förutom att ange namnen på en eller flera midi-filer på kommandoraden, är nog inte innehållet i det här avsnittet särskilt användbart att känna till. Om du behöver de här väljarna, föredrar du nog att använda kommandoradversionen av det här programmet: <application +>timidity</application +>. </para> + +<cmdsynopsis +><command +>kmidi</command +> <group +><option +>options</option +> <arg +>filnamn</arg +> </group +> </cmdsynopsis> + +<para +>Använd "-" som filnamn för att läsa en midi-fil från <filename class="devicefile" +>standardinmatningen</filename +>. </para> + +<variablelist> +<title +>Väljare:</title> +<varlistentry> +<term +><option +>-o</option +> <parameter +>filnamn</parameter +></term> +<listitem> +<para +>Skicka utmatning till filnamnet, som kan vara en fil, enhet eller HP-UX ljudserver, beroende på utmatningsläget som anges med väljaren <option +>-O</option +>. Det speciella filnamnet ``-'' gör att utmatningen skickas till <filename class="devicefile" +>standardutmatningen</filename +>. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-O</option +> <parameter +>läge</parameter +></term> +<listitem> +<para +>Väljer utmatningsläget bland de alternativ som har tagits med vid kompileringen. Läget måste börja med en av identifierarna för utmatningslägen som stöds. Kör <application +>TiMidity</application +> med väljaren <option +>-h</option +> för att visa en lista. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-s</option +> <parameter +>frek</parameter +></term> +<listitem> +<para +>Ställ in samplingsfrekvensen till <parameter +>frek</parameter +> (Hz eller kHz). Alla ljudenheter klarar inte av alla frekvenser, en ungefärlig frekvens kan väljas, beroende på implementeringen. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-a</option +></term> +<listitem> +<para +>Aktivera utjämningsfiltret. Samplingar körs genom ett lågpassfilter innan de spelas, som minskar störningar vid låga omsamplingsfrekvenser. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-f</option +></term> +<listitem> +<para +>Aktivera läget för snabb avklingning. Växlar snabba envelopper. Vissa midi-filer låter bättre när toner avklingar långsammare, det ger ett intryck av efterklang. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-p</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Ställer in polyfoni (maximalt antal samtidiga röster). </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-A</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Förstärk volymen med <parameter +>n</parameter +> procent (kan orsaka klippning) </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-C</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Ställer in förhållandet mellan samplings- och styrfrekvenser. Det här avgör hur ofta envelopper beräknas om, små förhållanden ger bättre kvalitet men använder mer <acronym +>CPU</acronym +>-tid. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-E</option +></term> +<listitem> +<para +>Aktiverar Witczaks effektfiler för körljud, ekoeffekter, fasning och celeste. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-#</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Välj instrumentuppsättning </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-L</option +> <parameter +>kat</parameter +></term> +<listitem> +<para +>Lägg till katalog till sökvägen </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-c</option +> <parameter +>fil</parameter +></term> +<listitem> +<para +>Läs extra anpassningsfil </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-I</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Använd program <parameter +>n</parameter +> som standardvärde </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-P</option +> <parameter +>fil</parameter +></term> +<listitem> +<para +>Använd patchen <parameter +>fil</parameter +> för alla program </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-D</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Spela trummor på kanal <parameter +>n</parameter +> </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-Q</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Ignorera kanal <parameter +>n</parameter +> </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-F</option +></term> +<listitem> +<para +>Aktivera snabbpanorering </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-U</option +></term> +<listitem> +<para +>Tag bort instrument från minnet mellan midi-filer </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-i</option +> <parameter +>läge</parameter +></term> +<listitem> +<para +>Välj användargränssnitt (se <link linkend="user-interfaces" +>nedan</link +> för en lista) </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-B</option +> <parameter +>n</parameter +></term> +<listitem> +<para +>Ange antal buffertfragment. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-h</option +></term> +<listitem> +<para +>Visa hjälpmeddelandet </para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title +>Tillgängliga utmatningslägen (<option +>-0</option +>)</title> +<varlistentry> +<term +><option +>-O</option +> <parameter +>d</parameter +></term> +<listitem> +<para +>&Linux; <filename class="devicefile" +>dsp</filename +>-enhet </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-O</option +> <parameter +>w</parameter +></term> +<listitem> +<para +>RIFF WAVE-fil </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><option +>-O</option +> <parameter +>r</parameter +></term> +<listitem> +<para +>obehandlad vågformsdata </para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title +>Val av utmatningsformat (lägg till för <option +>-O</option +>)</title> +<varlistentry> +<term +><parameter +>`8'</parameter +></term> +<listitem> +<para +>8-bitars samplingsbredd </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`1'</parameter +></term> +<listitem> +<para +>16-bitars samplingsbredd </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`U'</parameter +></term> +<listitem> +<para +>kodning med uLaw </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`l'</parameter +></term> +<listitem> +<para +>linjär kodning </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`M'</parameter +></term> +<listitem> +<para +>mono </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`S'</parameter +></term> +<listitem> +<para +>stereo </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`s'</parameter +></term> +<listitem> +<para +>utmatning med tecken </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`u'</parameter +></term> +<listitem> +<para +>utmatning utan tecken </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`x'</parameter +></term> +<listitem> +<para +>utmatning med växlade byte </para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title +>Tillgängliga gränssnitt (lägg till för <option +>-i</option +>)</title> +<varlistentry> +<term +><parameter +>q</parameter +></term> +<listitem> +<para +>&kmidi; &Qt;-gränssnitt </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>d</parameter +></term> +<listitem> +<para +>enkelt gränssnitt </para> +</listitem> +</varlistentry> +</variablelist> + +<variablelist> +<title +>Gränssnittsalternativ (lägg till för <option +>-i</option +><parameter +>?</parameter +> väljaren)</title> +<varlistentry> +<term +><parameter +>`v'</parameter +></term> +<listitem> +<para +>fler utskrifter (samlas på) </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`q'</parameter +></term> +<listitem> +<para +>mindre utskrifter (samlas på) </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>`t'</parameter +></term> +<listitem> +<para +>spåra uppspelning </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +><parameter +>-i</parameter +></term> +<listitem> +<para +>välj användargränssnitt (se nedan för en lista) </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1> +</chapter> + +<chapter id="questions-and-answers"> +<title +>Vanliga frågor</title> + +<qandaset> +<qandaentry> +<question> +<para +>Var skaffar jag en fullständigt instrumentuppsättning? </para> +</question> +<answer> +<para +>Var god se motsvarande <link linkend="patches" +>avsnitt</link +> i &kmidi;s installationskapitel. </para> +</answer> +</qandaentry> +</qandaset> + +</chapter> + +<chapter id="design"> +<title +>Konstruktion </title> + +<sect1 id="processes"> +<title +>Processer </title> + +<para +>&kmidi; är användargränssnittet som hanterar skärmvisningen och knapptryckningar, etc. Det kör som en separat process från &timidity;, som läser och spelar midi-filer. </para> +</sect1> + +<sect1 id="synthesis-model"> +<title +>Syntesmodell</title> + +<para +>&timidity; har en tongenerator, två enveloppgeneratorer, tre lågfrekventa sinusvågsoscillatorer, ett lågpassfilter, och en ljudeffektenhet. (Lågpassfiltret används bara om &kmidi;s fjärde interpolationsläge väljs och knappen <quote +>filt</quote +> är intryckt, för närvarande fungerar det inte bra). </para> + +<para +>Tongeneratorn samplar om instrumentpatcher för grundfrekvenserna som är lämpliga för enskilda toner som spelas (Interpolationsalgoritmen som används kan väljas med de fyra kryssrutorna i den övre panelen). </para> + +<para +>Enveloppgeneratorerna modulerar varje ton med i tur och ordning: en attackfas, en hållfas, en avklingning och en släppfas. En av generatorerna påverkar ljudstyrkan, och de andra påverkar tonhöjden och/eller klippningsfrekvensen på lågpassfiltret. </para> + +<para +>Lågfrekvensoscillatorerna modulerar ljudstyrkan (för tremolo), frekvensen (för vibrato), och lågpassfiltrets klippningsfrekvens (XG <quote +>rezosvep</quote +>). </para> + +<para +>Effektenheten tillhandahåller eko, ostämda toner, efterklang, koruseffekt, celeste och phasereffekt. Eko (som görs genom att skapa extra ekotoner) och efterklang (som görs med ett filter) skapar midi-ekoeffekter. Ostämda toner (som görs genom att skapa extra toner med ändrad tonhöjd) och koruseffekt (som görs med ett filter) skapar midi-korus (Effektfilter är bara aktiverade när &kmidi;s knapp <guibutton +>eff</guibutton +> är intryckt. Eko och ostämt kan styras med de två kryssrutorna i mitten till höger i den nedre panelen, och från menyerna Korus och Ekoeffekter). </para> + +<para +>Instrument kan ha antingen ett eller två tonelement, och för vart och ett av dessa, kan en instrumentuppsättning tillhandahålla separata patcher för olika tonstyrkeområden (vanligt för pianon) och för olika tonhöjdsområden. GUS instrumentuppsättningar tillhandahåller dock bara ett tonelement, och ett styrkeområde per instrument (Om du klickar på kryssrutan längst till höger i den nedre panelen, visar &kmidi;s informationsfönster namnen på patcherna, <computeroutput +>(2)</computeroutput +> om de har två tonelement, och tonstyrkeområdet när de laddas). </para> +</sect1> + +<sect1 id="midi-implementation"> +<title +>Midi-implementering </title> + +<para +>Nästan alla midi-meddelanden och styrenheter som jag känner till är implementerade på något sätt (vilket betyder att de gör att något händer, men inte nödvändigtvis det som ska hända). NRPN-styrenheter för att ange attack- och avklingningstid är inte implementerade, eftersom jag ännu inte har hittat några midi-filer som använder dem. Flänsstyrenheten är inte implementerad (även om flänsning som begärs av en XG sysex är det). Bara ett fåtal av de maskinvaruorienterade styrenheterna i Roland- och Yamahaspecifika dumpar är implementerade. </para> + +<para +>&timidity; kan hantera midi-filer som är avsedda att spelas på upp till fyra syntar, och hålla isär de fyra uppsättningarna med 16 kanaler för varje synt. I midi-filen måste syntarna dock väljas med portkommandon (antingen med Roland-GS eller Yamaha-XG sysex dumpar). Vissa midi-filer som är avsedda för flera syntar har inte portkommandon (Info-fönstret visar portkommandon om de finns). </para> + +<para +>De vertikala staplarna i &kmidi; som visar kanalaktivitet är begränsad till två uppsättningar med 16 kanaler. Kanaldiagrammet med horisontella staplar för patcher är begränsad till bara en uppsättning med 16 kanaler. </para> +</sect1> + +<sect1 id="volume"> +<title +>Volym </title> + +<para +>Jag har minskat volymnivåerna som &timidity; skapar en hel del, jämfört med den ursprungliga implementeringen. Det här minimera klippning och ger ett ökat dynamiskt omfång (Nu kan det tyvärr finnas vissa störningar vid låga volymer). Om du behöver högre volym, föreslår jag att du ökar den någon annanstans, antingen med &kmix; för att öka linjevolymen, mixervolymen för <filename class="devicefile" +>/dev/dsp</filename +>, eller öka volymen i hörlurar, förstärkta högtalare, eller något annat. </para> +</sect1> + +<sect1 id="computation-issues"> +<title +>Beräkningshänsyn</title> + +<para +>&timidity; kan bli efter med att beräkna data att skicka till ljuddrivrutinen, och då uppstår pauser i musiken. &timidity; försöker förutse möjligheten för en paus genom att övervaka tillståndet för sina utmatningsbuffrar och buffrarna i ljuddrivrutinen, och när det inte finns mycket i dem försöker den komma ifatt genom att minimera beräkningarna som måste göras: den använder en grövre interpolationsrutin i återsamplingen, slutar göra extra eko- och ostämda toner för eko- och koruseffekter, och börjar avsluta toner tidigare, eller hoppar till och med över toner helt och hållet. Därför, beroende på midi-sång, instrumentuppsättning, hur snabbt systemet är, även om du inte hör pauser, kan du märka en kvalitetsförlust när &timidity; belastas mer. Lamporna i &kmidi;s huvudpanel ger en bild av hur desperat &timidity; har blivit i sina försök att hålla musiken igång. Tecken på desperation: bufferlampan går från hälsosamt grön till upptaget orange, interpolationslampan släcks (vilket betyder att linjär interpolation används för återsampling), ekolampan släcks, eller körlampan släcks (vilket betyder att inga extra eko eller ostämda toner spelas). </para> + +<para +>Att övervaka utmatningsbuffrarna innebär att ljuddrivrutinen måste anropas för att ta reda på hur mycket data som har buffrats. Jag vet hur detta görs med Hannu Savolainens <acronym +>OSS</acronym +>-drivrutin (&Linux; och vissa andra system), kanske för äldre Sun-maskiner (det fungerade förut), men inte med andra drivrutiner. </para> + +<para +>Man kan minska beräkningsbördan för &timidity; med olika manövrar: </para> + +<orderedlist> +<listitem> +<para +>Reducera den tillåtna polyfonin (nummerinmatningsrutan i den nedre panelen). </para> +</listitem> +<listitem> +<para +>Stänga av knappen <guibutton +>eff</guibutton +>. </para> +</listitem> +<listitem> +<para +>Välja enklare återsamplingsinterpolation (en av kryssrutorna på den övre panelen, längs till vänster). </para> +</listitem> +<listitem> +<para +>Stänga av eko, ostämt, eller stereo, med de vänstra tre kryssrutorna på den nedre panelen. </para> +</listitem> +<listitem> +<para +>Välja inställningen <guimenuitem +>Torr</guimenuitem +> på menyn <guimenu +>Ekoeffekter</guimenu +>. </para> +</listitem> +</orderedlist> + +<para +>Naturligtvis blir det i allmänhet någon motsvarande kvalitetsförlust. Att ha knappen <guibutton +>filt</guibutton +> intryckt kostar ingenting om du inte också har valt interpolationsinställningen <guibutton +>cspline</guibutton +> + <guibutton +>filter</guibutton +>. </para> + +</sect1> + +<sect1 id="memory-issues"> +<title +>Minneshänsyn </title> + +<para +>Det är möjligt att &timidity; kan använda en överdrivet stor mängd minne för patcher. Symptom på detta är att fönstersystemet blir mycket slött, eller kraschar. Det här är troligen bara ett problem om stora sf2 ljudteckensnitt med mer än 30 Mibyte används. Pianopatcherna i Personal Choice's PC400 ljudteckensnitt kan till exempel uppta 25 Mibyte vardera. Efter att ha spelat en lista med midi-filer som använder tre sådana pianon, så har 75 Mibyte minne används bara så där. I inställningsdialogrutan låter &kmidi; dig ange det maximala antalet Mibyte som används för att behålla patcher som använts för att spela tidigare midi-filer. När detta maximum överskrids, frigör &timidity; de patcher som inte har används på längst tid, och återger minne till systemet. Det förvalda maximala värdet är 60 Mibyte, som fungerar bra på mitt system (Jag har 48 Mibyte minne och 196 Mibyte cache). Att ställa in det här till ett lägre värde betyder att fler patcher måste laddas om från patchfiler när du spelar en lista med midi-sånger, som gör allt långsammare. Om du har gott om minne, kan du ställa in <guilabel +>no limit</guilabel +>. </para> + +<para +>Om du tillåter tillräckligt med utrymme, läses hela ljudteckensnitt på en gång, istället för en patch i taget. Att ställa in det maximala värdet för lågt kan motverka sitt eget syfte, eftersom en hel ljudteckensnittsfil upptar mycket mindre minne totalt sett när hela filen läses, än när patcher läses individuellt (jag vet inte varför). </para> + +<para +>För system med minst signifikant byte först, som x86, så används minnesmappning istället. Det här är mycket snabbare vid uppstart. Jag har inte kommit på ett sätt att göra detta för system med mest signifikant byte först. </para> + +<para +>Efter att ha spelat varje midi-fil, rapporterar &kmidi; om hur mycket minne som för närvarande används av patcher i info-fönstret. </para> + +<para +>Om du inte har mycket huvudminne eller cacheminne, kanske inte ett lågt maximalt värde för patchminnet förhindrar att &kmidi; kraschar systemet. Var därför försiktig med att använda stora ljudteckensnitt. </para> +</sect1> + +</chapter> + +<chapter id="license-and-credits"> +<title +>Licenser och tack till</title> + +<para +>&kmidi; använder Tuukka Toivonen's &timidity; 0.2i ljudmotor Copyright (C) 1995 Tuukka Toivonen <email +>toivonen@clinet.fi</email +>. I själva verket ingår en utökad version av Tuukkas originalprogram med fem andra alternativa användargränssnitt i &kmidi;s distribution (Se nedan för information om hur &timidity; kompileras). </para> + +<para +>&kmidi; och &timidity; använder utökningen för AWE ljudteckensnitt gjord av Takashi Iwai <email +>iwai@dragon.mm.t.u-tokyo.ac.jp</email +> och utökningen för <acronym +>AMD</acronym +>-InterWave gjord av Greg Lee <email +>lee@hawaii.edu</email +> som gör att ljudteckensnitt (<literal role="extension" +>.sbk</literal +>/<literal role="extension" +>.sf2</literal +>-filer) och <acronym +>IW</acronym +> instrumentuppsättningar (<literal role="extension" +>.fff</literal +>/<literal role="extension" +>.dat</literal +>-filer) kan användas förutom Gravis/Forte <literal role="extension" +>.pat</literal +>-filer. </para> + +</chapter> + +<chapter id="copyright"> +<title +>Copyright </title> + +<para +>&kmidi; Copyright 1997 Bernd Johannes Wuebben <email +>wuebben@kde.org</email +> </para> + +<para +>&kmidi; använder Tuukka Toivonen's &timidity; 0.2i spelmotor, Copyright © 1995 Tukka Toivonen <email +>toivonen@clinet.fi</email +>. </para> +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="how-to-obtain-kmidi"> +<title +>Hur man skaffar &kmidi;</title> + +<para +>&kmidi; är en del av &kde;-projektet <ulink url="http://www.kde.org" +>http://www.kde.org</ulink +>. &kmidi; finns på <ulink url="ftp://ftp.kde.org/pub/kde/" +>ftp://ftp.kde.org/pub/kde/</ulink +>, &kde;-projektets huvudsakliga &FTP;-plats. </para> +</sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>För att kompilera &kmidi; med lyckat resultat, behöver du lämpliga versioner av programbiblioteken i <literal +>tdelibs</literal +>. Alla bibliotek som krävs samt &kmidi; själv finns på <ulink url="ftp://ftp.kde.org/pub/kde/" +>ftp://ftp.kde.org/pub/kde</ulink +>. </para> + +<para +>Alla standardtyper av &UNIX;-system ska fungera för att kompilera det <quote +>enkla</quote +> kommandoradgränssnittet för &timidity;. De övriga gränssnitten har särskilda krav (se de olika <filename +>README</filename +>-filerna i distributionen). &Motif;-gränssnittet fungerar förhållandevis bra med <application +>Lesstif</application +>, men bättre med &Motif;. </para> + +</sect1> + +<sect1 id="compilation-and-installation"> + +<title +>Kompilering och installation</title> + +<para +>Om du har installerat &kmidi; tidigare, är det förnuftigt att flytta konfigurationskatalogen (troligen <filename +>$<envar +>KDEDIR</envar +>/share/apps/kmidi/config/</filename +>) innan den nya versionen installeras, eftersom filerna som ska finnas där har ändrats, och du säkert vill använda eller åtminstone titta på de nya versionerna. På samma sätt, innan versionen av &timidity; som inte stöder &kde; installeras, säkerhetskopiera <filename class="directory" +>/usr/local/lib/timidity/</filename +>. Å andra sidan, för en fullständigt ny installation ska du ta bort alla filer i de här två katalogerna, eftersom de gamla filerna kanske inte ersätts av nya versioner. </para> + +<para +>Om du har hela tdemultimedia-distributionen, byt katalog till katalogen tdemultimedia och skriv </para> + +<screen +><prompt +>%</prompt +><userinput +><command +>./configure</command +></userinput +></screen> + +<para +>Som ett alternativ, för att inkludera alla andra användargränssnitt: <anchor id="user-interfaces"/> </para> + +<screen +><prompt +>%</prompt +><userinput +><command +>./configure</command> +<option +>--enable-interface</option +>=<parameter +>ncurses</parameter +>,<parameter +>xaw</parameter +>,<parameter +>gtk</parameter +>,<parameter +>tcltk</parameter +>,<parameter +>slang</parameter +>,<parameter +>motif</parameter +></userinput +></screen> + +<para +>Därefter, för att bygga alla multimediaprogram, stanna kvar i katalogen, eller för att bara bygga &kmidi;, <command +>cd</command +> till katalogen <filename class="directory" +>kmidi</filename +>, och skriv </para> + +<screen +><prompt +>%</prompt +> <userinput +><command +>make</command +></userinput> +<prompt +>%</prompt +> <userinput +><command +>make</command +> <option +>install</option +></userinput +> +</screen> + +<para +>Versionen av &timidity; som inte stöder &kde;, <command +>timidity</command +>, kompileras och installeras samtidigt som &kmidi;. Manualsidan <filename +>timidity.1</filename +> installeras dock inte automatiskt i <filename class="directory" +>/usr/man/man1/</filename +>. </para> + +</sect1> + +<sect1 id="patches"> +<title +>Var kan man skaffa en fullständig uppsättning patcher?</title> + +<para +>Det finns två sorters patcher som &kmidi;/&timidity; kan använda: <acronym +>GUS</acronym +>-patcher och AWE32 ljudteckensnitt (<literal role="extension" +>sf2</literal +>-filer). En uppsättning samplingar och parametrar för ett enstaka instrument, en patch, finns i en separat fil för <acronym +>GUS</acronym +>-patcher, men AWE ljudteckensnitt lägger allt i en enda <literal role="extension" +>.sf2</literal +>-fil (eller <literal role="extension" +>.sbk</literal +>). </para> + +<para +>Jag rekommenderar <literal role="extension" +>.sf2</literal +> ljudteckensnitt, och bland dessa, Chaos-teckensnitten som nämns nedan, i turordning. </para> + +<para +>Öppna &kmidi;s inställningsdialogruta för att se länkar till några webbsidor med instrumentuppsättningar. Här är några andra ställen att skaffa patcher: </para> + +<para +>Dan Hollis <email +>goemon@anime.net</email +> har sammanställt en instrumentuppsättning. Besök gärna hans sida på <ulink url="http://www.anime.net/~goemon/timidity" +>http://www.anime.net/~goemon/timidity</ulink +> och hjälp honom göra den här till den bästa tillgängliga uppsättningen. </para> + +<para +><emphasis +>Nyhet:</emphasis +> Jag har laddat upp den ovanstående uppsättningen till ftp.kde.org. Den finns för närvarande på <ulink url="ftp://fiwi02.wiwi.uni-tuebingen.de/pub/kde/stable/Beta2/apps/multimedia/sound/" +>ftp://fiwi02.wiwi.uni-tuebingen.de/pub/kde/stable/ Beta2/apps/multimedia/sound/</ulink +>, men jag förväntar mig att vi flyttar omkring den lite grand tills vi hittar en bra plats för den. Så leta bara runt lite grand på ftp.kde.org, om uppsättningen inte lägre finns på platsen som anges ovan, när du väl läser det här.</para> + +<para +>Patcher finns också paketerade som deb- eller rpm-moduler på Sunsite-arkivet:</para> + +<para +><itemizedlist> +<listitem> +<para +>Debian: <ulink url="ftp://sunsite.unc.edu/pub/Linux/distributions/debian/bo/source/sound/timidity-patches_0.1.tar.gz" +>timidity-patches_0.1.tar.gz</ulink +></para> +</listitem> +<listitem> +<para +>RPM: <ulink url="ftp://sunsite.unc.edu/pub/Linux/distributions/redhat/contrib/oldrpms/contrib-2.0.x/RPMS/timidity-patches-1-1.i386.rpm" +>timidity-patches-1-1.i386.rpm</ulink +></para> +</listitem> +<listitem> +<para +>RPM: <ulink url="ftp://sunsite.unc.edu/pub/Linux/distributions/redhat/contrib/oldrpms/contrib-2.0.x/SRPMS/timditiy-patches-1-1.src.rpm-try2" +>timidity-patches-1-1.src.rpm-try2</ulink +></para> +</listitem> +</itemizedlist> +</para> + +<para +>Jag har inte (ännu) provat de ovanstående, och använder personligen Midia-uppsättningen tillsammans med några ytterligare patcher och ett antal ytterligare trummor. Midia-uppsättningen finns på: <ulink url="ftp://archive.cs.umbc.edu/pub/midia/" +>ftp://archive.cs.umbc.edu/pub/midia/</ulink +>.</para> + +<para +>För ytterligare patcher och trummor: (skaffa gsdrum- och wow-patcherna) <ulink url="ftp://ftp.cdrom.com/pub/gus/sound/patches/files/" +>ftp://ftp/cdrom.com/pub/gus/sound/patches/files/</ulink +>.</para> + +<para +>Vincent Pagel har sammanställt en uppsättning med patcher. Den här länken kan bara nås nattetid (Paris). <ulink url="ftp://sig.enst.fr/pub/midi/instruments/" +>ftp://sig.enst.fr/pub/midi/instruments/</ulink +>. Konfigurationsfilen som hör ihop med hans instrumentuppsättning finns <ulink url="ftp://sig.enst.fr/pub/midi/timidity_pagel.cfg" +>här</ulink +>.</para> + +<para +>Titta också på <ulink url="http://www.clinet.fi/~toivonen/timidity/" +>Timiditys hemsida</ulink +>.</para> + +<para +>Titta på <ulink url="bahamut.mm.t.u-tokyo.ac.jp/~iwai/midi.html#TiMidity" +>Takashis hemsida</ulink +>. Takashis hemsida rekommenderar AWE32 ljudteckensnittet på 8 Mibyte <literal +>chaos8m.sf2</literal +> och AWE32 ljudteckensnittet på 12 Mibyte <literal +>chaos12m.sf2</literal +>, tillgängliga på <ulink url="http://soback.kornet.nm.kr/~chaos/sbawe32/sbawe32.htm" +></ulink +>, som är mycket trevliga (de är paketerade som självuppackande <literal +>.exe</literal +>-filer).</para> + +<sect2 id="patch-set-installation"> +<title +>Installera instrumentuppsättningar</title> + +<para +>Vissa av de ovanstående instrumentuppsättningarna levereras med en <literal role="extension" +>.cfg</literal +>-konfigurationsfil som liknar de .cfg-filer som levereras med KMidi och finns i <filename class="directory" +>KDEDIR/share/apps/kmidi/config</filename +>. &kmidi; har färdiga konfigurationsfiler för ett antal vanliga instrumentuppsättningar, som Midia-uppsättningen. För <literal role="extension" +>.sf2</literal +> ljudteckensnitt, tillhandahålls ett verktyg, <literal role="extension" +>sf2cfg</literal +>, som skapar en <literal role="extension" +>.cfg</literal +>-fil från ett <literal role="extension" +>.sf2</literal +>-teckensnitt. Det kompileras samtidigt som &timidity;.</para> + +<para +>Det är inte nödvändigt att ge <literal role="extension" +>.cfg</literal +>-filer namn med filändelsen <literal role="extension" +>.cfg</literal +>. De är vanliga textfiler med en struktur som beskrivs i ett annat avsnitt i den här handboken.</para> + +<para +>För att avsluta installationen av en fullständig instrumentuppsättning, redigera filen <filename +>timidity.cfg</filename +> och ange lämpliga konfigurationsfiler för uppsättningarna som laddades ner. Titta i <filename +>timidity.cfg</filename +> för ett exempel. Det är allt. Nu kan du fortsätta och spela övriga midi-filer som finns med i &kmidi;-distributionen (och förstås alla andra också).</para> + +</sect2> + +<sect2 id="miscellaneous"> +<title +>Diverse</title> + +<para +>Ibland märker du att &kmidi; inte kan hitta en patch för ett visst instrument (öppna info-fönstret för att se den här informationen). Om så är fallet, är allt du behöver göra att skaffa den saknade patchen och installera den genom att flytta patchen till katalogen patch/ och redigera instrumentuppsättningen i <literal role="extension" +>.cfg</literal +>-filen för att tala om för &kmidi; att nu är den nya patchen tillgänglig. </para> + +<para +>Ibland låter ett visst instrument inte alls särskilt bra. Om så är fallet, skaffa helt enkelt en annan patch från någon av Ultrasound-arkiven och byt ut den mindre bra patchen mot en bättre. Som du förstår, är det helt din egen sak hur bra varje instrument låter. Du kan till och med göra dina egna patcher med verktyget <command +>pat2wav</command +>, som ingår i &kmidi;-distributionen.</para> +</sect2> +</sect1> +</appendix> + +</book> +<!-- +Local Variables: +mode: sgml +sgml-omittag: nil +sgml-shorttag: t +End: +--> + diff --git a/tde-i18n-sv/docs/tdemultimedia/kmix/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kmix/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmix/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kmix/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kmix/Makefile.in new file mode 100644 index 00000000000..dbc91029527 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmix/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kmix +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmix/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook kmix-window.png index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) kmix-window.png 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 kmix-window.png 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 kmix-window.png index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kmix/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in kmix-window.png index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kmix/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kmix/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/kmix/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/kmix/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..a91f5bcada7 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmix/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/kmix/index.docbook b/tde-i18n-sv/docs/tdemultimedia/kmix/index.docbook new file mode 100644 index 00000000000..49453dbc4b3 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmix/index.docbook @@ -0,0 +1,948 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kmix;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % Swedish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Handbok &kmix;</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 +>Utvecklare</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Helio</firstname +> <surname +>Chissini de Castro</surname +> <affiliation +><address +><email +>helio@kde.org</email +></address +></affiliation> +<contrib +>Utvecklare</contrib> +</othercredit> + + +<othercredit role="developer" +><firstname +>Stefan</firstname +> <surname +>Schimanski</surname +> <affiliation +><address +><email +>1Stein@gmx.de</email +></address +></affiliation> +<contrib +>Utvecklare</contrib> +</othercredit> + +<othercredit role="reviewer" +><firstname +>Lauri</firstname +> <surname +>Watts</surname +> <affiliation +><address +>&Lauri.Watts.mail;</address +></affiliation> +<contrib +>Granskare</contrib> +</othercredit> +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit +> +</authorgroup> + +<copyright> +<year +>1996</year +><year +>2005</year> +<holder +>Christian Esken och &Matt.Johnston;</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2007-01-05</date> +<releaseinfo +>2.6.1</releaseinfo> + +<abstract +><para +>&kmix; är ett program som låter dig ändra volym för ditt ljudkort.</para +></abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>KMix</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>ljud</keyword> +<keyword +>volym</keyword> +<keyword +>mixer</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Inledning</title> + +<para +>&kmix; är &kde;:s ljudkortsmixerprogram. Även om det är litet, har det alla funktioner. Programmet ska ge möjlighet att kontrollera alla dina ljudkort.</para> + +<para +>&kmix; stöder flera olika plattformar och ljuddrivrutiner:</para> + +<itemizedlist> +<listitem +><para +>Ljudkortsdrivrutinen ALSA.</para +></listitem> +<listitem +><para +>Alla Open Sound System plattformar. &Linux;, FreeBSD, NetBSD och BSDI. är uttryckligen provade.</para +></listitem> +<listitem +><para +>&Solaris;-baserade maskiner.</para +></listitem> +<listitem +><para +>&IRIX;-baserade maskiner.</para +></listitem> +<listitem +><para +>&HP-UX;-baserade maskiner.</para +></listitem> +</itemizedlist> + +<para +>Om du både har installerat ALSA och Open Sound System drivrutiner, använder &kmix; ALSA-drivrutinen.</para> + +</chapter> + +<chapter id="working-with-kmix"> +<title +>Att arbeta med &kmix;</title> + +<sect1 id="basic-usage"> +<title +>Grunderna</title> + +<para +>Att använda &kmix; är rättframt. Varje mixerreglage som ditt ljudkort tillhandahåller representeras av ett volymreglage. Monoenheter har ett enda skjutreglage, stereoenheter har antingen ett eller två skjutreglage beroende på vad du väljer. Dessutom finns det ett balansreglage längst ner i &kmix;-fönstret. Om du har flera ljudkort, visas en lista längst upp i fönstret där du kan välja mellan ljudkorten. <screenshot> +<screeninfo +>&kmix; huvudfönster</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-window.png" format="PNG"/></imageobject> +<textobject +><phrase +>&kmix; huvudfönster</phrase +></textobject> +</mediaobject> +</screenshot> + +</para> + + +<para +>Fönstret kan ha upp till tre flikar med olika ljudkortskontroller: <guilabel +>Utmatning</guilabel +>, <guilabel +>Inmatning</guilabel +> och <guilabel +>Omkopplare</guilabel +>. Flikarna innehåller volymreglage, omkopplare för att aktivera eller inaktivera inspelning och uppspelning, samt flervalsomkopplare. <simplelist> +<member +><guilabel +>Utmatning</guilabel +>: Den innehåller kontroller som troligtvis har med uppspelning att göra, som volymkontrollen <guilabel +>Master</guilabel +>.</member> +<member +><guilabel +>Inmatning</guilabel +>: Den innehåller alla kontroller som troligtvis har med inspelning att göra, som <guilabel +>Capture</guilabel +>.</member> +<member +><guilabel +>Omkopplare</guilabel +>: Den innehåller alla kontroller som låter dig stänga av eller sätta på någon funktion (som "Mic Boost (+20dB)"), och flervalskontroller (som <guilabel +>Mic Select</guilabel +>: <guilabel +>Mic1</guilabel +> eller <guilabel +>Mic2</guilabel +>).</member> +</simplelist> +</para> + +<para +>Förutom volymkontroller, innehåller &kmix; också lysdioder. Den allmänna färgläggningsregeln är:</para> +<simplelist> +<member +>Grön: En lysdiod som har med uppspelning att göra</member> +<member +>Röd: En lysdiod som har med inspelning att göra</member> +<member +>Gul: En lysdiod som har med särskilda funktioner på ljudkortet att göra</member> +</simplelist> +<para +>De tre färgerna har två varianter: En tänd lysdiod betyder PÅ, och en släckt lysdiod betyder AV.</para> +</sect1> + +<sect1 id="volume-sliders"> +<title +>Volymreglage</title> + +<para +>Volymkontrollerna under flikarna <guilabel +>Utmatning</guilabel +> och <guilabel +>Inmatning</guilabel +> består av (uppifrån och ner): <screenshot> +<screeninfo +>Volymkontroll (fliken <guilabel +>Inmatning</guilabel +>)</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-channel-playback.png" format="PNG"/></imageobject> +<textobject +><phrase +>Volymkontroll (fliken <guilabel +>Inmatning</guilabel +>)</phrase +></textobject> +</mediaobject> +</screenshot> + +<simplelist> +<member +>En ikon som representerar kontrollens funktion.</member> +<member +>En indikering av volymens värde (valfri).</member> +<member +>En grön lysdiod för tyst, som låter dig stänga av en kontroll (ljuset släcks, blir mörkt) eller sätta på den igen (ljuset tänds, blir upplyst).</member> +<member +>Ett skjutreglage för volymkontroll (tips: du kan dölja skjutkontrollens namn, till exempel om mixern tar upp för mycket utrymme på skärmen).</member> +<member +>Om en kontroll stöder inspelning finns en röd inspelningslysdiod. Om dioden är tänd (ljust röd), är kontrollen vald för inspelning. Om den inte är tänd (mörkt röd), är kontrollen INTE vald för inspelning.</member> +</simplelist> + +<screenshot> +<screeninfo +>Volymkontroll med inspelningsomkopplare (fliken <guilabel +>Utmatning</guilabel +>)</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kmix-channel-record.png" format="PNG"/></imageobject> +<textobject +><phrase +>Volymkontroll med inspelningsomkopplare (fliken <guilabel +>Utmatning</guilabel +>)</phrase +></textobject> +</mediaobject> +</screenshot> + +</para> + + +<para +>Många av reglagen har en sammanhangsberoende meny, som visas genom att högerklicka på reglaget eller enhetsikonen. Flera alternativ är tillgängliga i den sammanhangsberoende menyn, men bara de som passar in visas. </para> + +<variablelist> +<varlistentry> +<term +><guimenuitem +>Dela kanaler</guimenuitem +></term> +<listitem +><para +>Visa antingen en eller två skjutreglage. Det här gäller bara stereoenheter. Det högra reglaget kontrollerar högersidans volym, och det vänstra kontrollerar vänstersidans volym.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Tyst</guimenuitem +></term> +<listitem +><para +>Tyst eller ljud från enheten</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Dölj</guimenuitem +></term> +<listitem +><para +>Om du inte är intresserad av att reglera enheten, kan du dölja den med detta alternativ. Om du vill visa den igen, kan du bara göra det genom att välja alternativet <guimenuitem +>Kanaler</guimenuitem +> (se nedan).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Anpassa globala genvägar...</guimenuitem +></term> +<listitem +><para +>Du kan styra en enhet med tangentbordet. Använd menyalternativet för att visa &kde;:s dialogruta <guilabel +>Anpassa genvägar</guilabel +>. Här kan du ange tangenter för att öka eller minska volymen och för att stänga av ljudet från enheten. Tangenterna är globala, och fungerar också när &kmix; är minimerat eller dockat.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Kanaler</guimenuitem +></term> +<listitem +><para +>En dialogruta visas där du kan ställa in vilka kanaler du vill se under varje flik (<guilabel +>Utmatning</guilabel +>, <guilabel +>Inmatning</guilabel +>, <guilabel +>Omkopplare</guilabel +>).</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><guimenuitem +>Visa/Dölj menyrad</guimenuitem +></term> +<listitem +><para +>Det här alternativet är inte specifikt för en viss enhet, utan påverkar mixerfönstret. Du kan dölja eller visa menyraden med alternativet. Du kan också göra det med snabbtangenten (oftast <keycombo action="simul" +>&Ctrl;<keycap +>M</keycap +></keycombo +>).</para +></listitem> +</varlistentry> + +</variablelist> +</sect1> + +<sect1 id="switches"> +<title +>Omkopplare och flervalskontroller</title> + +<para +>Kontrollerna under fliken <guilabel +>Omkopplare</guilabel +> består av en lysdiod och en kort etikett som beskriver funktionen. Fliken <guilabel +>Omkopplare</guilabel +> kan också innehålla flervalskontroller. Observera att dessa kontroller oftast är mycket speciella och oftast inte behöver ändras av en vanlig användare. Den sammanhangsberoende menyn innehåller alternativen <guilabel +>Kanaler</guilabel +> och <guilabel +>Visa/Dölj menyrad</guilabel +> som redan beskrivits. <screenshot +><screeninfo +>Omkopplare och flervalskontroller (fliken <guilabel +>Omkopplare</guilabel +>)</screeninfo +> <mediaobject +> <imageobject +> <imagedata fileref="kmix-channel-switches.png" format="PNG"/></imageobject +> <textobject +><phrase +>Omkopplare och flervalskontroller (fliken <guilabel +>Omkopplare</guilabel +>)</phrase +></textobject +> </mediaobject +></screenshot +> Kom ihåg att röda lysdioder har med inspelning att göra, gula lysdioder styr specialfunktioner på ljudkortet. Skärmbilderna ovan visar från vänster till höger en släckt <guilabel +>IEC958 Output</guilabel +> lysdiod (gul = specialkontroll), en tänd <guilabel +>Mix</guilabel +> lysdiod (röd = inspelningsrelaterad), en släckt inspelningsrelaterad lysdiod, en tänd specialkontroll och en flervalskontroll (<guilabel +>PCM Out Path & Mute</guilabel +>). Om du är osäker på beydelsen av en kontroll, fråga leverantören av ljudkortsdrivrutinen (för de flesta nuvarande &Linux;-distributioner är det <ulink url="http://www.alsa-project.org" +>ALSA</ulink +>). </para> + +</sect1> + +<sect1 id="panning-slider"> +<title +>Höger/vänster balans</title> + +<para +>Med det här skjutreglaget kan du styra fördelningen av volym mellan vänster och höger högtalare. Det här reglaget ger övergripande reglering, som påverkar huvudvolymen. Mittläget är förvalt. Genom att dra reglaget åt vänster minskas volymen i höger högtalare, och vice versa genom att dra det åt höger. Vänster och höger kan förstås vara bytta om dina högtalare inte är riktigt placerade.</para> +<para +>Var medveten om att för surround-system styr huvudenheten ofta bara de främre högtalarna. Det är en begränsning i ljudkortets drivrutin.</para +> +<para +>Om ljudkortet inte har en huvudenhet, kan någon annan enhet väljas av &kmix;. För de flesta är det <guilabel +>Wave</guilabel +>-kontrollen (eller <guilabel +>PCM</guilabel +>-kontrollen).</para> + +</sect1> + +<sect1 id="configuration-options"> +<title +>Inställningsalternativ</title> + +<para +>Använd <menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Anpassa &kmix;...</guimenuitem +></menuchoice +> i menyraden för att välja inställningar. Alternativen är:</para> + +<variablelist> +<varlistentry> +<term +><guilabel +>Docka i panel</guilabel +></term> +<listitem +><para +>Om markerad, dockas &kmix; i systembrickan när knappen för att stänga fönstret klickas. Annars, avslutas &kmix; när knappen klickas. Observera: Efter du har avslutat, kommer du inte kunna ändra volymen, om du har tilldelat tangenter för att göra det.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Aktivera volymkontroll i systembrickan</guilabel +></term> +<listitem +><para +>Om aktiverad, visar ett vänsterklick på &kmix; dockade ikon ett fönster med en volymkontroll för enheten som föredras. (Tips: För närvarande kan du inte ändra enheten - &kmix; väljer den själv.) Om alternativet är inaktiverat visas &kmix; huvudfönster vid vänsterklick på &kmix; dockade ikon.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Visa gradering</guilabel +></term> +<listitem +><para +>Visa linjer som markerar positionen för skjutreglagen.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Visa etiketter</guilabel +></term> +<listitem +><para +>Visar en etikett för varje ljudenhet. Vare sig det här alternativet är markerat eller inte, kan du se den här informationen genom att hålla musen över ikonen för varje enhet.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Återställ volymer vid inloggning</guilabel +></term> +<listitem +><para +>Låt &kde; återställa volymer när du loggar in. Det återställer dina personliga volymnivåer, som lagrades när du senast loggade ut. Om operativsystemet sparar ljudnivåer, kanske du inte behöver alternativet (men på en dator med flera användare behövs den ändå).</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Volymvärden:</guilabel +></term> +<listitem +><para +>Välj om och hur volymvärden visas: <guilabel +>Inga</guilabel +>, <guilabel +>Absoluta</guilabel +> eller <guilabel +>Relativa</guilabel +>.</para +></listitem> +</varlistentry> +<varlistentry> +<term +><guilabel +>Skjutreglagens orientering</guilabel +></term> +<listitem +><para +>Du kan vända &kmix; huvudfönster 90 grader med det här alternativet. Skjutreglage, text och allt annat (om tillämpligt) roteras. Det finns vissa undantag till regeln, i första hand menyraden, mixerväljaren (om den visas överhuvudtaget), panoreringsreglaget och flervalskontrollerna.</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + + +</chapter> + + +<chapter id="working-with-kmixapplet"> +<title +>Panelminiprogrammet &kmix;</title> + +<para +>&kmix; panelminiprogram är ett alternativt gränssnitt för &kmix;. Du kan lägga till det i &kde;:s panel genom att välja <guimenuitem +>Lägg till miniprogram i panelen...</guimenuitem +> i <guimenu +>Panelmeny</guimenu +> eller den sammanhangsberoende menyn. Välj <guilabel +>Ljudmixer</guilabel +> och klicka på <guibutton +>Lägg till i panelen</guibutton +> eller dubbelklicka på <guilabel +>Ljudmixer</guilabel +>. </para> + +<para +>Du kan arbeta med &kmix; miniprogram som beskrivs för <link linkend="working-with-kmix" +>huvudfönstret</link +>, inklusive den sammanhangsberoende menyn. Beroende på det begränsade utrymmet i panelen, finns det skillnader: <simplelist> +<member +>Ingen huvudmeny tillgänglig.</member> +<member +>Om du har flera ljudkort, kan du inte ändra vald mixer efter det ursprungliga valet.</member> +<member +>Ingen dockningsikon. Om du vill använda dockningsalternativet, måste du dessutom starta &kmix; från <menuchoice +><guimenu +>K-menyn</guimenu +><guisubmenu +>Multimedia</guisubmenu +> <guimenuitem +>&kmix; Ljudmixer</guimenuitem +></menuchoice +>.</member> +<member +>Ikoner bara tillgängliga när panelen är stor nog.</member> +<member +>Inga enhetsnamn är tillgängliga.</member> +<member +>Anpassning görs via panelmenyn. Där kan du ställa in färger och reglageriktning.</member> +<member +>Volymer sparas inte automatiskt. Om du vill att volymer ska sparas när du loggar ut för att senare återställas, måste du också starta &kmix; från K-menyn.</member> +</simplelist> + +</para> +</chapter> + + +<chapter id="advanced-kmix"> +<title +>Avancerade funktioner i &kmix;</title> + +<warning +><para +>Det här kapitlet beskriver &kmix; funktioner som är avsedda för den erfarne användaren. De flesta användare har aldrig behov av dessa funktioner, så du kan hoppa över kapitlet om du vill.</para +></warning> + +<sect1 id="dcop-overview"> +<title +>&DCOP;-gränssnittet</title> + +<para +>Ibland vill du utföra speciella funktioner. Saker som att styra mixern från ett annat program, eller stänga av ljudet från huvudenheten varje dag klockan 22. &kmix; har ett &DCOP;-gränssnitt, som låter dig åstadkomma mycket med minimalt arbete. Du kan starta ett skal och skriva <userinput +><command +>dcop kmix</command +></userinput +>, för att börja utforska &kmix; &DCOP;-gränssnitt. De särskilda gränssnitten i &kmix; är följande:</para> + +<variablelist> +<varlistentry> +<term +><userinput +><command +>Mixer0</command +></userinput +></term> +<listitem +><para +>Möjliggör manipulering av den första mixern. Du kan ställa in volymnivåer, stänga av ljudet för enheten, ändra balans, hämta mixerns namn, och mycket mer. Skriv <userinput +><command +>dcop kmix Mixer0</command +></userinput +> om du vill utforska alla funktioner. Det finns fler poster som <userinput +><command +>Mixer1</command +></userinput +>, om fler ljudkort är installerade.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +><command +>kmix-mainwindow#1</command +></userinput +></term> +<listitem +><para +>Det grafiska fönstret kan styras med kommandot. Du kan dölja och visa fönstret, ändra storlek på det, och mycket mer. Skriv <userinput +><command +>dcop kmix kmix-mainwindow#1</command +></userinput +> om du vill utforska alla funktioner.</para +></listitem> +</varlistentry> +</variablelist> + +</sect1> + + +<sect1 id="dcop-examples"> +<title +>&DCOP;-exempel</title> + +<variablelist> +<varlistentry> +<term +><userinput +><command +>dcop kmix kmix-mainwindow#1 hide</command +></userinput +></term> +<listitem +><para +>Döljer det grafiska fönstret. Använd <userinput +><command +>dcop kmix kmix-mainwindow#1 show</command +></userinput +> eller dockningsikonen för att visa det igen.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +><command +>dcop kmix kmix-mainwindow#1 resize 1 1</command +></userinput +></term> +<listitem +><para +>Ändrar storlek på det grafiska fönstret till den minsta möjliga storleken. Det är storleken som gör att alla skjutreglage (och andra grafiska element) passar i fönstret.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +><command +>dcop kmix Mixer0 mixerName</command +></userinput +></term> +<listitem +><para +>Anger namnet på den första mixern, till exempel <computeroutput +>Sound Fusion CS46xx</computeroutput +>.</para +></listitem> +</varlistentry> + +<varlistentry> +<term +><userinput +><command +>dcop kmix Mixer1 setVolume 0 10</command +></userinput +></term> +<listitem +><para +>Ställer in volymen för den andra mixern, enhet 0, till 10 procent. Enhet 0 är ofta huvudenheten, men inte alltid. Om du vill tysta den (första) huvudenheten på ditt andra ljudkort, kan du använda <userinput +><command +>dcop kmix Mixer1 setMasterVolume 0</command +></userinput +>.</para +></listitem> +</varlistentry> +</variablelist> + +<para +>Du kan direkt köra dessa kommandon från ett skal som du startat inne i &kde;. Om du behöver köra DCOP-kommandon någon annanstans, till exempel från ett crontab-skript, måste du definiera miljövariabeln <envar +>DCOPSERVER</envar +> (som visas på första raden i filen <filename +>~/.DCOPserver_hostname_:0</filename +>), till exempel:</para> + +<programlisting +>#!/bin/sh +DCOPSERVER=`cat /home/dinhemkatalog/.DCOPserver_dinvärddator_:0 | grep local` +export DCOPSERVER +dcop kmix Mixer0 setMasterVolume 0 +</programlisting> +</sect1> + +<sect1 id="tips-and-tricks"> +<title +>Tips och trick</title> +<sect2> +<title +>Använda ALSA- och OSS-drivrutiner samtidigt</title> +<para +>På &Linux; kan &kmix; antingen använda ALSA-drivrutinen eller OSS-drivrutinen, inte båda. Om du verkligen måste använda båda drivrutinerna samtidigt (en mycket sällsynt situation), kan du göra det som följer. Avsluta &kmix; och lägg till följande rad i din <filename +>kmixrc</filename +>-fil i avsnittet för globala inställningar.</para> +<programlisting +>MultiDriver=true</programlisting> +<para +>Starta &kmix; igen. Om du klickar på <menuchoice +><guimenu +>Hjälp</guimenu +> <guimenuitem +>Hårdvaruinformation</guimenuitem +></menuchoice +> bör du se <guilabel +>Ljuddrivrutiner som används: ALSA0.9 + OSS</guilabel +> och <guilabel +>Experimental multiple-Driver mode activated</guilabel +>.</para> + +<warning +><para +>Du ser troligen alla din mixrar dubblerade.</para> +<para +>Det finns inget stöd för den här sortens konfiguration.</para +></warning> +</sect2> + +</sect1> + +</chapter> + +<chapter id="credits"> +<title +>Tack till och licens</title> + +<para +>Huvudutvecklare</para> + +<itemizedlist> +<listitem +><para +>Copyright 1996-2000 Christian Esken</para +></listitem> +<listitem +><para +>Copyright 2000-2003 Christian Esken & Stefan Schimanski</para +></listitem> +<listitem +><para +>Copyright 2003-2005 Christian Esken & Helio Chissini de Castro</para +></listitem> +</itemizedlist> + +<para +>Bidragsgivare:</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 +> - översättning till &SGI;</para +></listitem> +<listitem +><para +>Sebestyen Zoltan <email +>szoli@digo.inf.elte.hu</email +> - FreeBSD-fixar</para +></listitem> +<listitem +><para +>Faraut Jean-Louis <email +>jlf@essi.fr</email +> - &Solaris;-fixar</para +></listitem> +<listitem +><para +>Nick Lopez <email +>kimo_sabe@usa.net</email +> - översättning till ALSA</para +></listitem> +<listitem +><para +>&Helge.Deller; <email +>deller@gmx.de</email +> - översättning till &HP;-UX</para +></listitem> +<listitem +><para +>Lennart Augustsson <email +>augustss@cs.chalmers.se</email +> - *BSD-fixar</para +></listitem> +</itemizedlist> + +<para +>Dokumentation Copyright 2000 &Matt.Johnston; &Matt.Johnston.mail;</para> + +<para +>Updaterad 2003 för att motsvara &kmix; version1.91 av Christian Esken <email +>esken@kde.org</email +></para> + +<para +>Uppdaterad 2005 för att motsvara &kmix; version 2.2 av Christian Esken <email +>esken@kde.org</email +></para> + +<para +>Uppdaterad 2005-07 för att motsvara &kmix; version 2.6 av Christian Esken <email +>esken@kde.org</email +></para> + +<para +>Baserad på dokumentation av Christian Esken <email +>esken@kde.org</email +></para> +<para +>Översättning Stefan Asserhäll <email +>stefan.asserhall@comhem.se</email +></para +> +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="getting-kmix"> +<title +>Hur man skaffar &kmix;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>Uppenbarligen är &kmix; bara till nytta om du har ett ljudkort. &kmix; stöder flera olika plattformar och ljuddrivrutiner:</para> + +<itemizedlist> +<listitem +><para +>Alla Open Sound System plattformar. &Linux;, FreeBSD, NetBSD och BSDI. är uttryckligen provade.</para +></listitem> +<listitem +><para +>&Solaris;-baserade maskiner.</para +></listitem> +<listitem +><para +>&IRIX;-baserade maskiner.</para +></listitem> +<listitem +><para +>Ljudkortsdrivrutinen ALSA.</para +></listitem> +<listitem +><para +>&HP-UX;-baserade maskiner.</para +></listitem> +</itemizedlist> + +</sect1> + +<sect1 id="compilation"> +<title +>Kompilering och installation</title> +&install.compile.documentation; </sect1> + +</appendix> + +</book> +<!-- +Local Variables: +mode: sgml +sgml-omittag: nil +sgml-shorttag: t +End: +--> + diff --git a/tde-i18n-sv/docs/tdemultimedia/kmix/kmix-window.png b/tde-i18n-sv/docs/tdemultimedia/kmix/kmix-window.png Binary files differnew file mode 100644 index 00000000000..b30b6d0002f --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kmix/kmix-window.png diff --git a/tde-i18n-sv/docs/tdemultimedia/krec/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/krec/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/krec/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/krec/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/krec/Makefile.in new file mode 100644 index 00000000000..c0322c284e6 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/krec/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/krec +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/krec/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=krec-keramik.png index.docbook krec-configuration.png index.cache.bz2 Makefile.in krec-new_file_properties.png Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) krec-configuration.png index.docbook krec-keramik.png krec-new_file_properties.png + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec + @for base in krec-configuration.png index.docbook krec-keramik.png krec-new_file_properties.png ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + done + +uninstall-nls: + for base in krec-configuration.png index.docbook krec-keramik.png krec-new_file_properties.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/krec/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in krec-configuration.png index.docbook krec-keramik.png krec-new_file_properties.png ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/krec/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/krec/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/krec/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/krec/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..b582005d253 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/krec/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/krec/index.docbook b/tde-i18n-sv/docs/tdemultimedia/krec/index.docbook new file mode 100644 index 00000000000..6d710c6fc16 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/krec/index.docbook @@ -0,0 +1,649 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&krec;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % addindex "IGNORE"> + <!ENTITY % Swedish "INCLUDE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>Handbok &krec;</title> + +<authorgroup> +<author +><firstname +>Arnold</firstname +> <surname +>Krille</surname +> <affiliation +> <address +><email +>arnold@arnoldarts.de</email +></address> +</affiliation> +</author> +</authorgroup> + +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit +> + +<copyright> +<year +>2002</year> +<year +>2003</year> +<year +>2004</year> +<holder +>Arnold Krille</holder> +</copyright> +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2004-03-01</date> +<releaseinfo +>0.5.1</releaseinfo> + +<!-- + vim: tw=80 et sw=2 ts=2 +--> +<abstract> +<para +>&krec; är ett inspelningsprogram för &arts;. Det kan användas för att spela in alla ljud som skickas in i eller ut från datorn. Vissa dynamiska effekter är implementerade, samt möjlighet att samtidigt spela upp det som spelas in. </para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>Krec</keyword> +<keyword +>aRts</keyword> +<keyword +>inspelning</keyword> +<keyword +>gränssnitt</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 +>Inledning</title> + +<sect1 id="why-krec"> +<title +>Varför jag skrev &krec;</title> + +<para +>Efter att har arbetat en del med &arts;, insåg jag att det inte fanns något ljudinspelningsprogram för det, utom kommandoradverktyget <command +>artsrec</command +>. Jag skulle spela in en radiopjäs som några av mina vänner ville att jag skulle mixa, och jag ville använda &Linux; för inspelningen. Alltså började jag skriva &krec;. </para> +</sect1> + +<sect1 id="what-krec-does"> +<title +>Vad &krec; gör</title> + +<para +>&krec;'s function is quite simple. It connects to the &arts; server and records what is routed to it into files. These files are in a special KRec format but it is possible to export to wave, ogg and mp3 files. </para> +<para +>Men &krec; har många fler funktioner. Du kan göra flera inspelningar i en fil även med överlagringsfunktionen. </para> +</sect1> + +<sect1 id="bugs_and_info"> +<title +>Skaffa mer information</title> +<para +>&reporting.bugs; &updating.documentation;</para +> </sect1> + +</chapter> + +<chapter id="first_glance"> +<title +>En första titt 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 +>Här är en skärmbild av &krec;.</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-keramik.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Här är en skärmbild av &krec; precis efter det har startat.</phrase> +</textobject> +</mediaobject> +</screenshot> + +<sect1 id="first_glance_items"> +<title +>Detaljbild av huvudfönstret i &krec;</title> + +<itemizedlist> +<listitem +><para +>Längst upp finns <emphasis +>menyraden</emphasis +> och två <emphasis +>verktygsrader</emphasis +>. Den första verktygsraden innehåller några användbara alternativ från menyn <guimenu +>Arkiv</guimenu +>, och den andra verktygsraden levereras med viktiga funktioner från menyn <guimenu +>Spela</guimenu +>.</para +></listitem> +<listitem +><para +>I mitten finns de viktiga delarna: Till vänster är VU-mätaren som visar volymen för ljudsignalen som för närvarande spelas in eller spelas upp tillsammans med en volymkontroll för att justera nivån.</para +></listitem> +<listitem +><para +>Huvuddelen visar filen och består av fyra delar. Den första längst upp är filens namn. Den andra visar inspelade delar i kronologisk ordning och skalenlig längd. Den gör det också möjligt att inaktivera eller ta bort delar via den sammanhangsberoende menyn. Nedanför finns tidslinjen där du kan se nuvarande position och (genom att klicka) gå till vilken position du vill. Längst ner i den här delen finns två grafiska komponenter som visar nuvarande position och längden med önskat tidsformat.</para +></listitem> +<listitem +><para +>Längs hela nederkanten finns en annan verktygsrad som innehåller komprimering för att redigera dynamiken i inspelningen, och en statusrad som visar olika sorters meddelanden.</para +></listitem> +</itemizedlist> + +<para +>Se <xref linkend="krec_explained"/> för mer information. </para> + +</sect1> +</chapter> + +<chapter id="recording_howtos"> +<title +>Hur man spelar in</title> + +<para +>Det här kapitlet innehåller några stegvisa handledningar som visar dig hur man bär sig åt för att skapa bra inspelningar med &krec;. </para> + +<sect1 id="recording_from_music"> +<title +>Spela in från intern musik</title> + +<orderedlist> +<listitem +><para +>Det första vi ska göra är att spela in från favoritspelaren i &kde;. Starta alltså &noatun;, &juk; eller &kaboodle;. Vi skulle kunna använda andra spelare, men de måste använda &arts; för utmatning, annars är inspelningen lite mer komplicerad och utanför det här avsnittets omfattning. Så sätt igång och välj en sång att spela i någon av de tre spelarna (alla levereras med tdemultimedia där du skaffade &krec;). </para +></listitem> +<listitem +><para +>Välj alternativet <guimenuitem +>Ljudhanterare</guimenuitem +> i menyn <guimenu +>Verktyg</guimenu +> i &krec;. Då ser du åtminstone en rad för &krec;::In och en rad för &krec;::Out. Den andra kolumnen anger vilken typ objektet har, antingen <emphasis +>spela</emphasis +> eller <emphasis +>spela in</emphasis +>. Den sista kolumnen anger var objektets ljud kommer från eller går till. För närvarande är objektet &krec;::In anslutet till (eller ska vara anslutet till) <emphasis +>in_soundcard</emphasis +>. Vi klickar på objektet &krec;::In för att byta till en annan källa. Välj <emphasis +>out_soundcard</emphasis +> i fönstret som dyker upp och klicka på <guibutton +>Ok</guibutton +>. För att ta reda på mer om ljudhanteraren, se <xref linkend="audio_manager"/>. </para +></listitem> +<listitem +><para +>Nu ska VU-mätaren i &krec; röra sig uppåt och neråt på ett sätt som motsvarar musiken du hör (om du inte hör något ljud kan du inte heller vänta dig att VU-mätaren visar någonting). </para +></listitem> +<listitem +><para +>Öppna nu en ny fil, antingen genom att klicka på den första ikonen i verktygsraden, eller genom att välja <guimenuitem +>Ny</guimenuitem +> i menyn <guimenu +>Arkiv</guimenu +>. Acceptera kvalitetsinställningarna som de är, eller se <xref linkend="quality"/> för mer information. </para +></listitem> +<listitem +><para +>Välj <guimenuitem +>Spela in</guimenuitem +> i menyn <guimenu +>Spela</guimenu +> eller tryck på tangenten <keycap +>R</keycap +>. När du är klar, välj <guimenuitem +>Stoppa</guimenuitem +> i samma meny, eller använd tangenten <keycap +>S</keycap +>. </para +></listitem> +<listitem +><para +>Spara fungerar som vanligt. Om du är intresserad av att exportera se <xref linkend="exporting"/>.</para +></listitem> +</orderedlist> + +<para +>Det är allt! Nu kan du lyssna på inspelningen eller exportera den (glöm inte bort att gå tillbaka till början). </para> + +</sect1> + +<sect1 id="recording_from_line_in"> +<title +>Spela in från linje- eller mikrofoningång</title> + +<para +>Att spela in yttre källor är något mer komplicerat eftersom det omfattar en hel del olika program och hårdvaruenheter. Jag antar att din hårdvara är riktigt installerad, att drivrutinerna fungerar som de ska och att du kan styra hårdvarans volym via &kmix;. Du kan också välja kanaler för inspelningen i &kmix;, vilket egentligen betyder att deras signaler skickas till analog-digital omvandlaren (som förkortas ADC) och kan läsas av drivrutinen och program. Detta fungerar olika för nästan alla ljudkort och drivrutiner, så du måste prova ett tag innan du är säker ... </para> +<para +>Den andra viktiga saken är att &arts; måste köras i full-duplex läge. Det betyder att &arts; läser från ljudkortet och skriver till det samtidigt. Du måste starta Inställningscentralen och redigera inställningarna för ljudsystemet (eller tryck på Alt+F2 och skriv in <command +>kcmshell arts</command +>). På den andra fliksidan måste du försäkra dig om att kryssrutan för full duplex är markerad. Genom att klicka på <guibutton +>Verkställ</guibutton +> startas &arts; om, vilket betyder att du också måste starta om &krec;. </para> +<para +>Efter dessa förberedelser ska &krec;s VU-mätare (se <xref linkend="vu-meter"/> för mer information) röra sig enligt ljudsignalen som du vill spela in, och som du har valt för inspelning i &kmix;. Att justera volymen till rätt värde är mycket viktigt för att få användbara inspelningar. Om förstärkningen inne på ljudkortet är för hög får du digitala störningar eftersom <glossterm +>ADC</glossterm +>:n bara kan skapa värden mellan ett minimum och maximum, och om signalen är för stark klipps den digitalt vilket förstör inspelningen. Å andra sidan, om volymen är för låg blir bruset från ljudhårdvaran för stark i inspelningen. Då måste alltså välja en medelväg så att signalen inte är för hög och klipps, men inte är så tyst att den går förlorad i hårdvarans brus. Det är nästan alltid bättre att lämna en viss marginal. </para> +<para +>Nu kan du justera nivån en andra gång i &krec;, vilket då är en programvaruförstärkning. Här är det bäst att använda komprimeringen för att utjämna skillnaderna mellan svaga och starka delar lite grand. Mer information om användning av komprimering finns i <xref linkend="compressor"/>. </para> +<para +>Återstående steg är likadana som i <xref linkend="recording_from_music"/> från steg fyra och framåt. Så om du började med det avsnittet bör du känna till det nu. </para> + +</sect1> +</chapter> + +<chapter id="krec_explained"> +<title +>Förklaring av &krec;</title> + +<para +>Det här kapitlet beskriver några av delarna och funktionerna hos &krec; i detalj, och ger några tips om användning. Avsnitten är sorterade i alfabetisk ordning, inte efter hur viktiga de är. </para> + +<sect1 id="audio_manager"> +<title +>Ljudhanteraren</title> +<para +>The audio manager is used to connect the outputs from different applications to exisiting or new busses. A bus is some kind of a virtual signal distributor. Every play- or record-item can connect to exactly one bus but multiple items can connect to a bus. Example: The output of noatun can connect to the main out <emphasis +>or</emphasis +> any other bus. But multiple noatuns can all connect to the main out. </para> + +<sect2 id="audio_manager_mw"> +<title +>Huvudfönstret för ljudhanteraren</title> +<para +>Det innehåller tre kolumner: </para> +<orderedlist> +<listitem +><para +>Namnet på objektet som spelar upp eller spelar in.</para +></listitem> +<listitem +><para +>Objektets typ är antingen <emphasis +>spela</emphasis +> eller <emphasis +>spela in</emphasis +>.</para +></listitem> +<listitem +><para +>Bussen som objektet är ansluten till.</para +></listitem> +</orderedlist> +<para +>Klicka på ett objekt för att visa en dialogruta där önskad buss kan väljas. </para> +</sect2> +<sect2 id="audio_manager_dialog"> +<title +>Bussdialogrutan</title> +<para +>Huvuddelen visar alla bussar som för närvarande finns. Välj en för att skicka ljudet till den eller hämta ljudet från den. Nedanför kan du skapa nya bussar att ansluta objektet till. </para> +<tip +><para +>För att spela in från en spelare som kan använda &arts; och lyssna till vad du verkligen spelar in, skapa bara en ny buss (till exempel <emphasis +>test</emphasis +>), anslut spelaren till den (du hör ingenting ännu), anslut också &krec;::In till den nya bussen och aktivera <guimenuitem +>Spela samtidigt</guimenuitem +>. </para +></tip> +</sect2> + +</sect1> + +<sect1 id="compressor"> +<title +>Komprimeringen</title> +<para +>Om du spelar in med mikrofon, kanske du märker att nivån ibland nästan klipps, och ibland är mycket låg, särskilt vid inspelning av sång eller tal. För att kompensera för detta, kan du använda komprimeringen. Den reducerar helt enkelt allt ljud som är över en viss <emphasis +>tröskelnivå</emphasis +> med faktorn som anges av <emphasis +>förhållande</emphasis +>. Observera att tröskeln är logaritmisk, och att ställa in den på mittvärdet är redan det ganska lågt, men på så sätt mycket användbart. Observera också att förhållande är som störst åt vänster, och att värdet längst åt höger innebär ingen komprimering alls. Eftersom detta reducerar ljudstyrkan, finns det en utgångspotentiometer för att expandera (eller reducera) ljudet. <emphasis +>Attack</emphasis +> och <emphasis +>Släpp</emphasis +> används för att styra tiden innan komprimeringen reagerar (tiden som passerar efter ingången först överskrider tröskelvärdet) och tiden som komprimeringen fortfarande reagerar efter ljudet är under tröskelnivån. </para> +<tip +><para +>Prova det medan du pratar i mikrofonen med <guimenuitem +>Spela samtidigt</guimenuitem +> aktiverat, så hör du skillnaden mellan den vanliga och den komprimerade versionen.</para +></tip> +<sect2 id="compressor_tips"> +<title +>Tips om användning av komprimering</title> +<para +>Detta är <emphasis +>bara</emphasis +> tips. I slutändan är det enda som betyder något hur det låter. Så om det låter som du vill ha det, är det troligen rätt inställning. Och tveka inte att experimentera en del. </para> +<glosslist> +<glossentry +><glossterm +>Normalt tal</glossterm +><glossdef +><para +>Oftast är en ensam röst som talar i radio eller tv enormt komprimerad, eftersom huvudproblemet med tal är att nivån troligen är rätt i början av meningarna men inte i slutet. Dessutom är slutet på ord lägre än början. Det gör det omöjligt att använda talade ord utan att komprimera dem. Exempel på inställning: Kort attack, medellångt släpp, låg tröskel och mycket högt förhållande.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Mastring 1: Begränsa nivån</glossterm +><glossdef +><para +>För att bara begränsa toppar, men inte komprimera hela dynamiken använd en hög tröskel, ett högt förhållande, en kort attack och kort eller medellång släpp. Då skyddas inspelningen från viss intern distortion, och med en något lägre tröskel tas sällsynta (och kanske oönskade) toppar bort och den verkliga inspelade signalen ges mer utrymme.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Mastring 2: Att göra verklig mastring</glossterm +><glossdef +><para +>Att göra riktig mastring av musik är svårt och beror helt på din hörsel och musiken som ska mastras. Normalt använder man snabb attack så att nivån reduceras snabbt nog vid bastrummans slag. Å andra sidan vill man inte att musiken ska pumpa upp och ner bara på grund av trumslagen, så då väljer man ett längre släpp. Komprimeringsfaktorn ska inte vara särskilt hög. Idealt kopplar man in en begränsare efter kompressionen för att slippa klick och klippning.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Enstaka instrument</glossterm +><glossdef +><para +>Inställningarna beror på instrumentet. Under inspelning är det lämpligt att använda en begränsningsinställning.</para +></glossdef +></glossentry> +<glossentry +><glossterm +>Slutligt tips</glossterm +><glossdef +><para +>Använd öronen och öva lite grand. Allt är tillåtet om det låter bra!</para +></glossdef +></glossentry> +<!--<glossentry +><glossterm +>Term</glossterm +><glossdef +><para +>Definition</para +></glossdef +></glossentry +>--> +</glosslist> +</sect2> +</sect1> + +<sect1 id="configuration"> +<title +>Inställning</title> +<para +>Två sidor är tillgängliga i inställningarna. Den första är för allmänna inställningar, och förklaras i det här avsnittet. Den andra gäller förvalda kvalitetsinställningar och är likadan som beskrivs i <xref linkend="quality"/>. </para> +<screenshot> +<screeninfo +>Allmänna inställningar</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-configuration.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Redigera allmänna inställningar i &krec;</phrase> +</textobject> +</mediaobject> +</screenshot> +<para +>Den första delen är inställningar som styr hur tid och positioner visas. Stilen "Enkla samplingar" visar bara antalet samplingar, nästa har valfria timmar, minuter, sekunder och samplingar. Den tredje stilen är likadan som den andra, utom att den visar ramar istället för samplingar. Den fjärde stilen visar storleken i Mibyte och Kibyte och är användbar för att kontrollera diskutrymme. Till höger om stilarna har du möjlighet att välja antal ramar som utgör en sekund. </para> +<para +>Kryssrutan nedanför gör att tidsvisningen blir mer informativ och visar enheten inuti. </para> +<para +>Om du vill återställa dagens tips vid start kan du göra det med nästa kryssruta. Knappen nedanför återställer alla meddelanden där du valde "Visa inte det här meddelandet igen", i huvudsak meddelanden från exportfunktionerna. </para> +</sect1> + +<sect1 id="exporting"> +<title +>Export</title> +<blockquote> +<attribution +>En anonym vän av &krec;</attribution> +<para +>Ditt program är mycket häftigt! Jag använder det dagligen, men det saknar export till wave, mp3 och ogg.</para> +</blockquote> +<para +>Here it is: the definitiv export functionality for KRec. The available export formats vary on the libraries found at compiletime, all currently available ones are described in the following sections. </para> +<para +>Det önskade exportinsticksprogrammet väljes med filnamnet. Du väljer <guimenuitem +>Exportera fil...</guimenuitem +> i menyn <guimenu +>Arkiv</guimenu +>, anger den exporterade filens namn och filändelse och insticksprogrammet avgörs från filändelsen. Listan över filändelser i dialogrutan visar också vilka exportinsticksprogram som är tillgängliga. </para> +<para +>För att förstå den allmänna användningen av export: Tekniskt sett fungerar export som uppspelning. Det betyder att du måste gå till positionen där du vill att exporten ska börja innan du utför den. Det betyder också att du kan se exportens förlopp genom att markören för nuvarande position rör sig framåt. Och det betyder att det in framtiden blir möjligt att exportera vilken markering du vill, precis som att bara spela upp en markering. </para> +<sect2 id="export_wave"> +<title +>Export till Wave (*.wav)</title> +<para +>Det enklaste exportinsticksprogrammet. Den exporterar &krec;-filen till en wave-fil med kvalitetsinställningarna som du gjort för hela filen. </para> +</sect2> +<sect2 id="export_mp3"> +<title +>Export till MP3 (*.mp3)</title> +<para +>Kanske den mest önskade exportmöjligheten. Denna exporterar &krec;-filen till en mp3-fil. </para> +<important +><para +>Kvalitetsinställningarna du anger i Inställningscentralens modul <quote +>Ljud och multimedia</quote +> - <quote +>Ljud-cd</quote +> används i den här versionen, eftersom &krec; också använder samma bibliotek som funktionen audiocd:/. </para +></important> +</sect2> +<sect2 id="export_ogg"> +<title +>Export till OGG (*.ogg)</title> +<para +>Detta exporterar din &krec;-fil till en ogg-fil. </para> +<important +><para +>Kvalitetsinställningarna du anger i Inställningscentralens modul <quote +>Ljud och multimedia</quote +> - <quote +>Ljud-cd</quote +> används i den här versionen, eftersom &krec; också använder samma bibliotek som funktionen audiocd:/. </para +></important> +</sect2> +</sect1> + +<sect1 id="play_thru"> +<title +>Spela samtidigt</title> +<para +>För de som vill höra det som spelas in, finns det mycket användbara alternativet <guimenuitem +>Spela samtidigt</guimenuitem +> i menyn <guimenu +>Spela</guimenu +>. Jag råder dig att använda det så mycket som möjligt, särskilt om du använder komprimering eller andra effekter och vill kontrollera vad som verkligen spelas in. </para> +<caution +><para +>Undvik att skapa återmatning vid inspelning från <emphasis +>out_soundcard</emphasis +> då <guimenuitem +>Spela samtidigt</guimenuitem +> aktiveras. En sådan återmatning är för mycket för det stackars &arts;, och slöar ner datorn något enormt! Du kan behöva döda &arts; ... </para +><para +>Orsaken är att &arts; beräknar ett ljudnätverk för varje sampling (i själva verket block av samplingar) och om en sampling byggs upp från sig själv via en snurra, måste &arts; utföra mer beräkningar än möjligt. </para +></caution> +</sect1> + +<sect1 id="quality"> +<title +>Kvalitetsinställningar</title> +<screenshot> +<screeninfo +>Egenskaper för nya filer</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="krec-new_file_properties.png" format="PNG"/> +</imageobject> +<textobject> +<phrase +>Det här är dialogrutan för att välja egenskaper för nya filer.</phrase> +</textobject> +</mediaobject> +</screenshot> +<para +>När en ny &krec;-fil skapas, visas den här dialogrutan för att låta dig välja några inställningar för inspelningens kvalitet. Alla dessa inställningar påverkar storleken. </para> +<para +><emphasis +>Samplingsfrekvensen</emphasis +> är frekvensen som talar om för ljudsystemet hur många samplingar som ska göras under en sekund och mäts i Hertz (Hz) eller kilohertz (kHz). Ju högre den här frekvensen är, desto högre är maximal inspelad frekvens. Eftersom det behövs minst två samplingar för att bygga upp en <quote +>sinusvåg</quote +>, är maximal inspelningsfrekvens halva samplingsfrekvensen. Det mänskliga örat kan höra ljud upp till någonstans mellan 10 kHz och 20 kHz beroende på ålder. Små barn ligger troligen närmare 20 kHz, medan normala vuxna har sitt maximum omkring 15 kHz och äldre går ner mot 10 kHz. Men även utan att kunna höra de högre frekvenserna, har de fortfarande betydelse för vad som uppfattas och känns (motsvarande nyckelord: psykoakustik). </para> +<para +>Antal kanaler kan väljas fritt beroende på inspelningsaktiviteten. Om du använder en monomikrofon utan att använda någon stereoeffekt, är det säkert att välja <quote +>Mono</quote +> utan att riskera dataförlust. </para> +<para +>Den sista delen är antal bitar som används för en sampling, där möjliga värden är 8 och 16 bitar. Ju fler bitar desto fler steg är tillgängliga för intervallet från minimal till maximal signal. En byte är 8 bitar, så detta kan också kallas en-bytes eller två-bytes sampling. </para> +<para +>Utrymmet som krävs för inspelningen kan beräknas på ett mycket enkelt sätt: Det är samplingsfrekvensen multiplicerat med antalet kanaler multiplicerat med antal byte per sampling multiplicerat med antal sekunder som ska spelas in. </para> +<example +><title +>Beräkna storleken för en minut med cd-kvalitet</title +><para +>Utrymmet som behövs för en minut (60 sekunder) ljud med cd-kvalitet (44100 Hz, 16-bitars stereo) är: 44100 * 2 * 2 * 60 = 1058400 byte = 10335.938 Kibyte. Det är omkring 10 Mibyte data per minut. </para +></example> +<tip +><para +>Använd alltid den bästa kvalitet som behövs! Att senare reducera kvaliteten är alltid möjligt, men att förbättra kvaliteten är inte möjligt eftersom mer data än vad som är tillgängligt då skulle behövas. </para +></tip> +<para +>Den sista komponenten ovanför knappen är en kryssruta för att använda inmatade värden som standardvärden för alla nya filer utan att visa dialogrutan igen. </para> +<para +>Eftersom samma dialogruta också är tillgänglig bland inställningarna för att välja standardinställningar, är också kryssrutan "Använd standardvärden..." tillgänglig där för att få tillbaka dialogrutan för varje fil. </para> +</sect1> + +<sect1 id="vu-meter"> +<title +>VU-mätare</title> +<para +>Eftersom komprimering troligen inte är nödvändig för alla uppgifter, är VU-mätaren med sin inbyggda volymkontroll den del av &krec; som oftast behövs för inspelning. Den visar verklig nivå som spelas in i filen efter använda effekter och volymen som ställts in med volymkontrollen. Om den är mörkt röd nästan hela tiden blir inspelningen troligen klippt och låter inte bra. Om den rör sig runt de nedre två procenten hör du troligen inte mycket i inspelningen. </para> +<tip +><para +>För bra inspelning ska nivån vara mellan -12 dB och 0 dB största delen av tiden. </para +></tip> +<tip +><para +>Använd kompression för att redigera dynamiken i inspelningar. Se <xref linkend="compressor"/> för mer information. </para +></tip> +</sect1> + +</chapter> + + + +<chapter id="credits"> +<title +>Tack till och licens</title> +<para +>&krec; </para> +<para +>Program copyright 2002-2003 Arnold Krille<email +>arnold@arnoldarts.de</email +> </para> +<para +>Dokumentation copyright 2002-2004 Arnold Krille <email +>arnold@arnoldarts.de</email +> </para> +<para +>Översättning Stefan Asserhäll <email +>stefan.asserhall@comhem.se</email +></para +> +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="getting-krec"> +<title +>Hur man skaffar &krec;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> +<para +>För att använda &krec; 0.5.1 behöver du &kde; 3.3. </para> +<para +>&krec; ska finnas i tdemultimedia-paketet. Eftersom paketet kräver att &kde; och &arts; kör, bör allt vara bra. </para> +</sect1> + +<sect1 id="compilation"> +<title +>Kompilering och 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-sv/docs/tdemultimedia/krec/krec-configuration.png b/tde-i18n-sv/docs/tdemultimedia/krec/krec-configuration.png Binary files differnew file mode 100644 index 00000000000..02786c8918f --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/krec/krec-configuration.png diff --git a/tde-i18n-sv/docs/tdemultimedia/krec/krec-keramik.png b/tde-i18n-sv/docs/tdemultimedia/krec/krec-keramik.png Binary files differnew file mode 100644 index 00000000000..5e26e981770 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/krec/krec-keramik.png diff --git a/tde-i18n-sv/docs/tdemultimedia/krec/krec-new_file_properties.png b/tde-i18n-sv/docs/tdemultimedia/krec/krec-new_file_properties.png Binary files differnew file mode 100644 index 00000000000..d12ea2902df --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/krec/krec-new_file_properties.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/kscd/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/kscd/Makefile.in new file mode 100644 index 00000000000..72dd11bcabb --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/kscd +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kscd/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook kscd6.png kscd13.png kscd2.png kscd14.png index.cache.bz2 kscd5.png kscd12.png kscd16.png kscd11.png kscd19.png kscd9.png kscd3.png kscd.png Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) kscd13.png kscd6.png kscd.png kscd3.png kscd9.png index.docbook kscd5.png kscd14.png kscd11.png kscd2.png kscd16.png kscd19.png kscd12.png + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd + @for base in kscd13.png kscd6.png kscd.png kscd3.png kscd9.png index.docbook kscd5.png kscd14.png kscd11.png kscd2.png kscd16.png kscd19.png kscd12.png ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + done + +uninstall-nls: + for base in kscd13.png kscd6.png kscd.png kscd3.png kscd9.png index.docbook kscd5.png kscd14.png kscd11.png kscd2.png kscd16.png kscd19.png kscd12.png ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/kscd/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in kscd13.png kscd6.png kscd.png kscd3.png kscd9.png index.docbook kscd5.png kscd14.png kscd11.png kscd2.png kscd16.png kscd19.png kscd12.png ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/kscd/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/kscd/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/kscd/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..f024d107e38 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/index.docbook b/tde-i18n-sv/docs/tdemultimedia/kscd/index.docbook new file mode 100644 index 00000000000..068f4b709e9 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/index.docbook @@ -0,0 +1,1632 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&kscd;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % Swedish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> + +<bookinfo> +<title +>Handbok &kscd;</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 +>Utvecklare</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Dirk</firstname +> <surname +>Forsterling</surname +> <affiliation +><address +><email +>milliByte@gmx.net</email +></address +></affiliation> +<contrib +>Utvecklare</contrib> +</othercredit> + +<othercredit role="developer" +><firstname +>Dirk</firstname +> <surname +>Foersterling</surname +> <affiliation +><address +><email +>milliByte@gmx.net</email +></address +></affiliation> +<contrib +>Utvecklare</contrib> +</othercredit> + +<othercredit role="reviewer" +><firstname +>Lauri</firstname +> <surname +>Watts</surname +> <affiliation +><address +>&Lauri.Watts.mail;</address +></affiliation> +<contrib +>Granskare</contrib> +</othercredit> +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit +> +</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; är en liten snabb, <abbrev +>CDDB</abbrev +>-anpassad ljud <abbrev +>cd</abbrev +>-spelare för &UNIX; plattformar.</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>kscd</keyword> +<keyword +>musik</keyword> +<keyword +>cd</keyword> +<keyword +>ljud</keyword> +</keywordset> + +</bookinfo> + +<chapter id="introduction"> +<title +>Inledning</title> + +<para +>&kscd; är en liten snabb, <abbrev +>CDDB</abbrev +>-anpassad <abbrev +>cd</abbrev +>-spelare för &UNIX; plattformar. &kscd; står för <quote +>KDE-projektets lilla/enkla cd-spelare</quote +>.</para> + +<para +><emphasis +>Nyhet</emphasis +>: Perlskriptet <filename +>workman2cddb.pl</filename +> som tillhandahålls för att förenkla byte för användare av Workman.</para> + +<para +>Jag hoppas att du blir nöjd med den här cd-spelaren.</para> + +<para +>&Bernd.Johannes.Wuebben;</para> + +<para +>&Bernd.Johannes.Wuebben.mail;</para> + +<sect1 id="supported-platforms"> +<title +>Plattformar som stöds</title> + +<para +>&kscd; stöder uttryckligen följande plattformar:</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öd)</para +></listitem> +<listitem +><para +>&HP-UX;</para +></listitem> +<listitem +><para +>&SGI; Irix (inklusive <abbrev +>cdda</abbrev +>-stöd)</para +></listitem> +<listitem +><para +>Sony NEWS</para +></listitem> +<listitem +><para +>OSF/1</para +></listitem> +<listitem +><para +>Ultrix</para +></listitem> +</itemizedlist> + +<para +>och ska gå att kompilera på många fler med små ändringar.</para> + +</sect1> + +</chapter> + +<chapter id="onscreen-fundamentals"> +<title +>Grundläggande skärmhantering</title> + +<sect1 id="basic-operation"> +<title +>Grundläggande användning</title> + +<screenshot> +<screeninfo +>&kscd;-gränssnittet</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="kscd.png" format="PNG"/></imageobject> +<textobject +><phrase +>&kscd;-gränssnittet</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Det här är &kscd;s huvudfönster. Du bör se någonting som liknar det här när du startar &kscd;. Knapparna i det här fönstret förklaras nedan, utan någon särskild ordning.</para> + +<sect2 id="control-panel"> +<title +>Kontrollpanelen</title> + +<screenshot> +<screeninfo +>Kontrollpanelen</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd2.png" format="PNG"/></imageobject> +<textobject +><phrase +>Kontrollpanelen</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Det här är &kscd;s huvudsakliga kontrollpanel. Funktionen på de här knapparna bör vara bekant för alla som någonsin har använt en cd-spelare.</para> + +<para +>Den översta knappen i diagrammet ovan växlar mellan att spela och pausa cd:n, Den vänstra knappen i andra raden stoppar spelningen av cd:n. Den högra knappen i andra raden matar ut cd:n. De två knapparna i tredje raden går framåt (höger) eller tillbaka (vänster) till början av nästa eller föregående spår. Den vänstra knappen i nedre raden väljer slumpmässig spelordning eller inte. Den högra knappen i nedre raden väljer repetering, så att cd:n börjar spela igen från början när slutet på sista ljudspåret nås.</para> +</sect2> + + +<sect2 id="status-display"> +<title +>Statusfönstret</title> + +<screenshot> +<screeninfo +>Statusfönstret</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd3.png" format="PNG"/></imageobject> +<textobject +><phrase +>Statusfönstret</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Det här är statusfönstret. Med början överst, från höger till vänster, är huvudtidvisningen (se nedan för behandling av de olika möjliga tidvisningslägena), status för cd-romenheten, totala speltiden för ljud-cd:n, den nuvarande volyminställningen. och nuvarande och sista spårnumren (nuvarande/sista). De nedersta två raderna text visar artist och titel för cd:n, under förutsättning att posten finns i den lokala eller nätverkets <acronym +>CDDB</acronym +> (cd-databas).</para> + +<para +>Klicka på tidvisningen för att byta mellan de möjliga huvudtidvisningslägena. Normalt visar &kscd; förfluten tid för det nuvarande spåret, om cd:n spelas, eller antingen ––:–– eller 00:00 om cd:n inte spelas. Genom att klicka på visningen växlas i tur och ordning mellan återstående tid för spåret, total förfluten tid, och total återstående tid.</para> +</sect2> + +<sect2 id="configuration-button"> +<title +>Knappen för att anpassa &kscd;</title> + +<screenshot> +<screeninfo +>Knappen Extra</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd5.png" format="PNG"/></imageobject> +<textobject +><phrase +>Knappen Extra</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Den här knappen visar en meny med ett antal alternativ. Du kan välja att öppna &kscd;:s inställningspanel eller anpassa snabbtangenter. De låter dig anpassa &kscd; att fungera exakt som du vill. Se avsnittet <link linkend="configuring-kscd" +>Anpassa &kscd;</link +>, för detaljer om att anpassa &kscd;.</para> +<para +>Menyn tillhandahåller flera verktyg som hjälper dig att leta efter information om artister på Internet. Du kan ta reda på datum för uppträdanden, köpa information,och skaffa annan information genom att trycka på den här knappen och välja lämpligt alternativ i menyn som visas.</para> +<para +>Den här menyn låter dig också visa det här hjälpdokumentet, rapportera fel, lära dig mer om &kscd; och &kde; och avsluta &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 +>Den här knappen öppnar panelen för <acronym +>CDDB</acronym +>-inmatningseditorn (Compact Disc Databas). </para> + +<para +><acronym +>CDDB</acronym +> kan identifiera din cd, och oftast ladda ner en lista av spår för den, eller ladda listan från filsystemet. Se avsnittet <link linkend="cddb-editor" +>Cd-databaseditor</link +> för mer detaljer om att använda det här verktyget.</para> +</sect2> + + + + +<sect2> +<title +>Volymreglaget</title> + +<screenshot> +<screeninfo +>Volymreglaget</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd9.png" format="PNG"/></imageobject> +<textobject +><phrase +>Volymreglaget</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Det här skjutreglaget kontrollerar volymen för ljudet från cd:n. Flyttas det åt höger blir musiken högre, åt vänster gör den lägre. Om du spelar cd:n genom ljudkortet, påverkar ljudkortets mixer också avspelningsvolymen.</para> +</sect2> + + +<sect2> +<title +>Spårvalet</title> + +<screenshot> +<screeninfo +>Spårvalet</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd11.png" format="PNG"/></imageobject> +<textobject +><phrase +>Spårvalet</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Den här kombinationsrutan visar dig aktuellt spårnummer, spårets namn och tiden (i minuter och sekunder). Du kan använda kombinationsrutan för att direkt välja vilket spår som helst på cd:n. </para> +</sect2> + +</sect1> +</chapter> + +<chapter id="configuring-kscd"> +<title +>Anpassa &kscd;</title> +<sect1 id="configuration-intro"> +<title +>Det huvudsakliga inställningsfönstret</title> + +<para +>Du ställer in &kscd; genom att klicka på knappen <guibutton +>Extra</guibutton +>. Det visar en meny, där du väljer <guilabel +>Anpassa &kscd;...</guilabel +>. Det öppnar ett nytt fönster.</para> +<para +>Det huvudsakliga inställningsfönstret för &kscd; är en dialogruta med två huvuddelar. </para> + +<itemizedlist> +<listitem +><para +><link linkend="kscd-options-tab" +><guilabel +>Cd-spelare</guilabel +></link +> för att bestämma utseende och beteende hos &kscd;.</para +></listitem> +<listitem +><para +><guilabel +>CDDB</guilabel +> som används för att anpassa &kscd;s funktion för uppslagning i CDDB.</para +></listitem> +</itemizedlist> + +<para +>Du kan byta mellan sidorna med ikonerna till vänster i dialogrutan.</para> +</sect1> + +<sect1 id="kscd-options-tab"> +<title +>Fliken <guilabel +>Cd-spelare</guilabel +></title> + +<screenshot> +<screeninfo +>Fliken <guilabel +>Cd-spelare</guilabel +></screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd12.png" format="PNG"/></imageobject> +<textobject +><phrase +>Dialogrutan <guilabel +>Anpassa Kscd</guilabel +></phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Textrutan <guilabel +>LCD-teckensnitt</guilabel +> visar teckensnittet som för närvarande är valt för att visa all information i &kscd;s statusfönster. Klicka på knappen <guilabel +>Välj...</guilabel +> för att ändra teckensnittet.</para> + +<para +>Fälten <guilabel +>LCD-färg:</guilabel +> och <guilabel +>Bakgrundsfärg:</guilabel +> visar färgen som är vald för förgrunden och bakgrunden i statusfönstret. Tryck på färgrutorna för att ändra färgerna.</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 +>Att markera kryssrutan som heter <guilabel +>Visa ikon i systembrickan</guilabel +> gör att en &kscd;-ikon visas i &kicker;-panelen.</para> + +<para +>Att markera kryssrutan som heter <guilabel +>Visa spårmeddelanden</guilabel +> gör att ett litet informationsfönster visas ovanpå panelens fönster varje gång ett cd-spår ändras. Fönstret försvinner automatiskt efter 5 sekunder.</para> + +<screenshot> +<screeninfo +>Exempel på spårmeddelande</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscdannounc.png" format="PNG"/></imageobject> +<textobject +><phrase +>Exempel på spårmeddelande</phrase +></textobject> +</mediaobject> +</screenshot> + + +<para +>Ställ in rutan <guilabel +>Intervall att hoppa över</guilabel +> till det önskade antalet sekunder som hoppas fram eller tillbaka när knapparna <guibutton +>hoppa framåt</guibutton +> eller <guibutton +>hoppa tillbaka</guibutton +> i kontrollpanelen används.</para> + +<para +><guilabel +>Spela automatiskt när cd matas in</guilabel +> gör att &kscd; börjar spela cd:n när den matas in, utan att behöva trycka på knappen <guibutton +>Spela</guibutton +>.</para> + +<para +><guilabel +>Mata ut cd efter att ha spelat klart</guilabel +> gör att cd:n automatiskt matas ut när uppspelningen slutar.</para> + +<para +><guilabel +>Sluta spela cd vid avslut</guilabel +> gör att uppspelning av cd:n stannar när &kscd; avslutas.</para> + +<para +>Fältet <guilabel +>Cd-romenhet</guilabel +> innehåller namnet på den cd-romenhet som ska användas för att spela ljud-cd. Standardvärdet är <filename +>/dev/cdrom</filename +>. Rättigheterna för den här enheten måste vara inställda så att enheten kan öppnas för läsning. Att ändra rättigheter för enheten kräver nästan alltid systemadministratörsrättigheter och kan göras från kommandoraden eller i &konqueror;s systemadministreringsläge.</para> + +<note +><para +>Innan vi beskriver följande alternativ, är det viktigt att förstå att det finns två sätt som persondatorer kan spela upp en cd.</para> + +<para +>Den första metoden (som &kscd; benämner direkt digital uppspelning), utförs genom att läsa digitaldata från cd:n med digital ljudextraktion (DAE, Digital Audio Extraction). Denna data skickas till datorns processor som konverterar digitaldata till ljud. Metoden kräver en cd-enhet som klarar av DAE (de flesta nya enheter gör det) och den kräver en del processorkraft för att skapa ljudet du hör.</para> + +<para +>Den andra metoden använder de interna kretsarna som är tillgängliga på de flesta cd-enheter för att läsa data och skapa de ljud som du hör utan att använda datorns processor. Data skickas med en särskild kabel direkt till datorns ljudkort. Metoden kräver mindre processorkraft, men den kräver att den särskilda kabeln är ansluten inne i datorn. Alla datorer har inte den här förbindelsen.</para +></note> + +<para +>Kryssrutan som heter <guilabel +>Använd direkt digital uppspelning</guilabel +> avgör vilken metod som &kscd; använder för att läsa ljudspåren. Om kryssrutan är markerad, används den första metoden. Om kryssrutan inte är markerad, utnyttjas den andra metoden.</para> + +<para +>Om du har valt direkt digital uppspelning, låter en kombinationsruta som heter <guilabel +>Välj ljudbakgrundsprogram:</guilabel +> dig välja vilket ljudbakgrundsprogram den digitala informationen ska skickas till. Innehållet i kombinationsrutan varierar beroende på systemet. De flesta användare bör välja <guilabel +>arts</guilabel +>. Du kan också använda enheten som ljudbakgrundsprogrammet använder, genom att skriva in enhetens plats i textrutan som heter <guilabel +>Välj ljudenhet:</guilabel +>. En fullständig beskrivning av ljudenheter och ljudbakgrundsprogram är utanför den här handbokens omfattning.</para> + +<para +>Om kryssrutan som heter <guilabel +>Tillåt val av kodning</guilabel +> är markerad, kan du välja textkodning för resultatet av CDDB-begäran.</para> +<tip +><para +>Standarden beskriver CDDB-resultat som att de enbart är Latin-1. Om du inte har problem med CDDB-information, lämna rutan omarkerad.</para +></tip> + + +<para +>Knappen <guibutton +>Hjälp</guibutton +> öppnar innehållsförteckningen för &kscd;s handbok. Knappen <guibutton +>Förval</guibutton +> återställer förvalda värden för alla alternativ i dialogrutan. <guibutton +>Ok</guibutton +> sparar nuvarande inställningar och avslutar. <guibutton +>Verkställ</guibutton +> sparar nuvarande inställningar utan att avsluta. <guibutton +>Avbryt</guibutton +> avslutar utan att spara. </para> +</sect1> + +<sect1 id="freedb-tab"> +<title +>Fliken <guilabel +>freedb slå upp</guilabel +></title> +<screenshot> +<screeninfo +>Fliken <guilabel +>freedb slå upp</guilabel +> i inställningsdialogrutan</screeninfo> +<mediaobject> +<imageobject +> <imagedata fileref="kscd14.png" format="PNG"/> </imageobject> +<textobject +><phrase +>Fliken <guilabel +>freedb slå upp</guilabel +> i inställningsdialogrutan</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Fliken <guilabel +>freedb slå upp</guilabel +> anpassar <acronym +>CDDB</acronym +>-funktionen i &kscd;.</para> + +<para +>Alternativet <guilabel +>Läge</guilabel +> avgör hur <acronym +>CDDB</acronym +>-uppslagning utförs. Att ställa in <guilabel +>Endast cache</guilabel +> betyder att bara information som redan finns på datorn används. <guilabel +>Cache och fjärrserver</guilabel +> slår upp information som du inte redan har, medan <guilabel +>Endast fjärrserver</guilabel +> slår upp varje skiva via Internet.</para> + + +<para +>Rutan <guilabel +>CDDB-server</guilabel +> avgör vilken CDDB-spegelplats som används av &kscd; för att hämta albuminformation. Du kan skriva in ett servernamn, portnummer och protokoll med textrutorna och kombinationsrutorna, eller klicka på knappen <guibutton +>Visa lista över spegelplatser</guibutton +>. Att klicka på knappen visar ett nytt fönster med en lista över CDDB-spegelplatser och deras plats. Välj helt enkelt servern du vill ha i listan, och klicka på <guibutton +>Ok</guibutton +>.</para> + +<para +>Rutan som heter <guilabel +>Cacheplatser</guilabel +> låter dig bestämma var &kscd; sparar CDDB-information på datorn. För att lägga till en katalog, skriv in katalogens plats i textrutan längst upp och klicka på <guibutton +>Lägg till</guibutton +>. Du kan också välja en katalog genom att klicka på den blåa filkatalogen till höger om textrutan. För att ta bort en katalog, klicka en gång på katalognamnet med vänster musknapp och klicka på <guibutton +>Ta bort</guibutton +>. Du kan ändra ordningen som &kscd; söker igenom katalogerna genom att klicka på katalognamnet och klicka på knapparna <guibutton +>Flytta upp</guibutton +> och <guibutton +>Flytta ner</guibutton +>.</para> + +<para +>Knappen <guibutton +>Hjälp</guibutton +> öppnar innehållsförteckningen för &kscd;s handbok. Knappen <guibutton +>Förval</guibutton +> återställer förvalda värden för alla alternativ i dialogrutan. <guibutton +>Ok</guibutton +> sparar nuvarande inställningar och avslutar. <guibutton +>Verkställ</guibutton +> sparar nuvarande inställningar utan att avsluta. <guibutton +>Avbryt</guibutton +> avslutar utan att spara. </para> + +</sect1> + +<sect1 id="smtp-options"> +<title +>Fliken <guilabel +>freedb skicka</guilabel +></title> + +<screenshot> +<screeninfo +>Fliken freedb skicka</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd16.png" format="PNG"/></imageobject> +</mediaobject> +</screenshot> + +<para +>Fliken freedb Skicka ställer in anslutningen till en e-postserver eller en webbläsare för att skicka in nya <acronym +>CDDB</acronym +>-poster. Det är användbart om du inte har ditt eget system inställt som server. </para> + +<para +>Om du planerar att skicka in CDDB-information, måste du först bestämma om du vill skicka in med HTTP eller skicka in informationen som e-post (via SMTP). </para> + +<tip +><para +>Det är enklare att skicka in ny information genom att använda &HTTP;. Vissa brandväggar blockerar denna trafik. Om din brandvägg förhindrar dig från att skicka in ny information genom att använda &HTTP;, kan du använda SMTP.</para +></tip> + +<para +>Välj först antingen <guilabel +>&HTTP;</guilabel +> eller <guilabel +>SMTP (e-post)</guilabel +> för att avgöra vilket protokoll som ska användas.</para> + +<sect2 id="http-options"> +<title +>Använda &HTTP; för att skicka CDDB-information</title> +<para +>Du kan skriva in ett servernamn eller portnummer i textrutorna som tillhandahålls. Om du vill skicka informationen till de internationella servrarna behöver du inte ändra någonting.</para> +</sect2> + +<sect2 id="smtp2-options"> +<title +>Använda SMTP (e-post) för att skicka CDDB-information</title> +<para +>För att förbereda dig för att skicka in information via e-post, skriv in din e-postadress i textrutan som heter <guilabel +>Svara till:</guilabel +>, din e-postserver i textrutan som heter <guilabel +>SMTP-server:</guilabel +> och välj portnumret i kombinationsrutan som heter <guilabel +>Port:</guilabel +>.</para> +<para +>Om du måste använda ett lösenord för att skicka e-post med e-postservern, markera kryssrutan som heter <guilabel +>Servern kräver behörighetskontroll</guilabel +> och skriv in ditt användarnamn i textrutan som heter <guilabel +>Användarnamn:</guilabel +>.</para> + +<para +>Knappen <guibutton +>Hjälp</guibutton +> öppnar innehållsförteckningen för &kscd;s handbok. Knappen <guibutton +>Förval</guibutton +> återställer förvalda värden för alla alternativ i dialogrutan. <guibutton +>Ok</guibutton +> sparar nuvarande inställningar och avslutar. <guibutton +>Verkställ</guibutton +> sparar nuvarande inställningar utan att avsluta. <guibutton +>Avbryt</guibutton +> avslutar utan att spara. </para> +</sect2> +</sect1> + + +</chapter> + +<chapter id="cddb-editor"> +<title +><guilabel +>Cd-databaseditor</guilabel +></title> + +<screenshot> +<screeninfo +>Cd-databaseditorn</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd13.png" format="PNG"/></imageobject> +<textobject +><phrase +>Cd-databaseditorn</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Cd-databaseditorn låter dig ändra, ladda ner, spara, lägga till anteckningar och ladda upp <link linkend="cddb-support" +><acronym +>CDDB</acronym +>-poster</link +> (Compact Disc databas).</para> + +<para +>Om det finns en post i ditt lokala <acronym +>CDDB</acronym +>-träd (se <link linkend="freedb-tab" +>CDDB avsnittet</link +> i kapitlet om anpassning) för cd:n i cd-romenheten, eller om skivan hittades i freedb, visas namnet och titeln på cd:n i fälten <guilabel +>Artist</guilabel +> och <guilabel +>Titel</guilabel +> och en spårlista med sångtitlar i kombinationsrutan <interface +>Spår</interface +>. Annars ser du en lista på spår och speltider utan titlar.</para> + +<para +>Du kan lägga till en anteckning för hela skivan med knappen <guibutton +>Anmärkning</guibutton +> under fältet <guilabel +>Titel</guilabel +>, eller för ett markerat spår i rutan <guilabel +>Spår</guilabel +> med knappen <guibutton +>Anmärkning</guibutton +> intill. Om du markerar ett spår i rutan <guilabel +>Spår</guilabel +>, visas titeln, om den finns, i fältet <guilabel +>Titel</guilabel +> nedanför. Du kan skriva in en titel för spåret i rutan, eller redigera titeln så att du blir nöjd. Tryck på returtangenten på tangentbordet, och texten dyker upp på rätt rad i kombinationsrutan.</para> + +<para +>När alla spår väl har fått titlar och <guilabel +>Artist</guilabel +> och <guilabel +>Titel</guilabel +> har fyllts i, kan du trycka på knappen <guibutton +>Överför</guibutton +> för att skicka ditt bidrag till freedb med e-post.</para> + +<para +>Du blir tillfrågad om att välja en kategori för bidraget. <guilabel +>Disk-id</guilabel +> sektionen visar den 32-bitars <acronym +>ID</acronym +>-kod som freedb använder för att identifiera en cd. Ovanför <acronym +>ID</acronym +>-koden finns <guilabel +>CDDB</guilabel +>-postens kategori. De här kategorierna motsvarar underkatalogträdet för katalogen som väljs i <guilabel +>Baskatalog för freedb</guilabel +> under fliken <link linkend="freedb-tab" +><abbrev +>freedb</abbrev +></link +> i &kscd;:s inställningsfönster.</para> + +<para +><guilabel +>Längd:</guilabel +> visar den totala speltiden för cd:n.</para> + +<para +>Tryck på knappen <guibutton +>Hämta information</guibutton +> för att ladda ner <acronym +>CDDB</acronym +>-data. Tryck på knappen <guibutton +>Ok</guibutton +> för att spara ändringarna lokalt. Knappen <guibutton +>Stäng</guibutton +> kan användas för att avsluta cd-databaseditorn utan att spara.</para> + +</chapter> + +<chapter id="using-kscd-in-the-panel"> +<title +>Att använda &kscd; i &kde;:s panel</title> + +<screenshot> +<screeninfo +>Att använda &kscd; i &kde;:s panel</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd18.png" format="PNG"/></imageobject> +<textobject +><phrase +>Att använda &kscd; i &kde;:s panel</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>När rutan <guilabel +>Visa ikon i systembrickan</guilabel +> är markerad, visas också ett litet miniprogram i panelen. Till skillnad från &kscd;:s huvudfönster, finns miniprogrammet tillgängligt på alla skrivbord. <mousebutton +>Höger</mousebutton +>klicka på miniprogrammet för att visa en meny som styr uppspelning av cd:n. Ett <mousebutton +>vänster</mousebutton +>klick på miniprogrammet gömmer &kscd;:s huvudfönster. Om huvudfönstret är gömt visas det igen med ett nytt <mousebutton +>vänster</mousebutton +>klick på miniprogrammet. </para> + +<note +><para +>För att vara exakt, så visas miniprogrammet i panelens <application +>systembricka</application +>. Om inget miniprogram visas när &kscd; minimeras, kanske du har tagit bort systembrickan. För att lägga till den igen, <mousebutton +>höger</mousebutton +>klicka på en tom yta i panelen och välj <menuchoice +><guisubmenu +>Lägg till</guisubmenu +> <guisubmenu +>Miniprogram</guisubmenu +> <guimenuitem +>Systembricka</guimenuitem +> </menuchoice +></para +></note> + +</chapter> + +<chapter id="cddb-support"> +<title +><acronym +>CDDB</acronym +>-stöd</title> + +<para +>freedb är en distribuerad nätverksdatabas, tillgänglig via Internet, som innehåller information om de flesta ljud-cd som finns i cirkulation. Om du har tillgång till Internet, behöver du förmodligen aldrig skriva in spårinformation manuellt för dina skivor, om du har ställt in funktionen riktigt. Se avsnittet <link linkend="freedb-tab" +>Fliken freedb</link +> i kapitlet om att anpassa &kscd; för detaljerade instruktioner om hur den här funktionen ska ställas in, och avsnittet <link linkend="cddb-editor" +>Cd-databaseditor</link +> för instruktion om hur man redigerar <acronym +>CDDB</acronym +>-poster.</para> + +<para +>Användning av <acronym +>CDDB</acronym +> är gratis. Bidrag från användare uppmuntras.</para> + +<para +>När du förbereder poster för <acronym +>CDDB</acronym +>, ha då följande i åtanke:</para> + +<itemizedlist> +<listitem +><para +>Använd <quote +>vanliga</quote +> tecken från latinska alfabetet i posterna. Vissa specialtecken stöds, men tecken från kyrilliska eller grekiska alfabetet accepteras till exempel inte.</para +></listitem> +<listitem +><para +>Använd bara ett <keysym +>/</keysym +> tecken i fältet <guilabel +>Skivartist / Titel</guilabel +> i cd-databaseditorn.</para> + +<para +>För klassiska skivor är det allmänt accepterat att ange kompositörens namn i artistdelen (innan snedstrecket) och artistens namn i titeldelen (efter snedstrecket).</para +></listitem +> +<listitem +><para +>Om du skickar in en post som redan finns i databasen, kan eventuell ytterligare information som du anger läggas till i den befintliga posten.</para> +</listitem> +</itemizedlist> + +<para +>Normalt installerar &kscd; <acronym +>CDDB</acronym +>-standardkategorier i <filename class="directory" +>$KDEDIR/share/apps/kscd/cddb</filename +>. Du kan skapa så många underkataloger som du vill. När du laddar upp visas dock bara de officiella <acronym +>CDDB</acronym +>-kategorierna. Den förvalda uppladdningsadressen är <email +>freedb-submit@freedb.org</email +>. För mer information, besök hemsidan för <abbrev +>freedb</abbrev +>.</para> + +<para +>Den lokala <acronym +>CDDB</acronym +>-posten för en viss cd, lagras i filen <filename +><replaceable +>kategorinamn</replaceable +>/<replaceable +>disk-id</replaceable +></filename +> under baskatalogen för <acronym +>CDDB</acronym +>. De här filerna kan redigeras med vilken texteditor som helst, om du inte har något bättre för dig på ledig tid.</para> + +</chapter> + +<chapter id="troubleshooting"> +<title +>Felsöka cd-spelaren</title> + +<para +>Det här avsnittet i handboken tillhandahåller en stegvis guide för att felsöka din cd-enhet om cd-spelaren inte vill spela en ljud-cd</para> + +<sect1 id="ts-begin"> +<title +>Börja felsöka</title> +<para +>För att börja, mata in en ljud-cd i cd-enheten. Stäng cd-enheten och klicka på Spela i &kscd;s fönster. Titta på datorns cd-enhet och välj länken nedan som bäst beskriver problemet.</para> +<para +>När jag tryckte på <guilabel +>Spela</guilabel +>:</para> +<itemizedlist> +<listitem +><para +><link linkend="ts-errorbox" +>Visades en felruta</link +></para +></listitem> +<listitem +><para +><link linkend="ts-playing" +>Visades ingen felruta</link +></para +></listitem> +</itemizedlist> +</sect1> +<sect1 id="ts-playing"> +<title +>Jag fick ingen felruta, men det kommer inget ljud ur mina högtalare</title> +<para +>Först kontrollerar vi att volymen är uppskruvad i &kscd;.</para> +<para +>Leta rätt på volymreglaget nära övre högra hörnet i &kscd;s fönster. Volymreglaget ser ut så här:</para> +<screenshot> +<screeninfo +>Volymreglaget</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd9.png" format="PNG"/></imageobject> +<textobject +><phrase +>Volymreglaget</phrase +></textobject> +</mediaobject> +</screenshot> +<para +>Klicka en gång på den vertikala markeringen och dra den hela vägen längst till höger på reglaget.</para> +<para +>Om du kan höra musiken nu, är problemet löst. Om du fortfarande inte kan höra musiken, klicka <link linkend="ts-kmixlevels" +>här</link +> för att fortsätta.</para> +</sect1> +<sect1 id="ts-kmixlevels"> +<title +>Avgöra om mixervolymnivåerna är uppe</title> +<para +>Nästa steg är att avgöra om volymnivåerna i &kmix; är lämpliga.</para> +<note +><para +>&kmix; är en ljudmixerpanel som ingår i &kde;. Mixern låter dig justera de relativa volymnivåerna för många ljudkomponenter.</para +></note> +<para +>För att starta &kmix;, välj <menuchoice +><guimenu +>K-menyn</guimenu +> <guimenuitem +>Ljud och video</guimenuitem +> <guimenuitem +>&kmix;</guimenuitem +></menuchoice +>.</para> +<para +>När &kmix; väl har startat, visas ett nytt fönster med ett antal volymreglage. Beroende på inställningen, kan skjutreglagen ha etiketter, eller etiketterna kan vara dolda. Om du inte ser några etiketter vid skjutreglagen, bör du göra etiketterna synliga innan du fortsätter. För att göra etiketterna synliga, välj <menuchoice +><guimenu +>Inställningar</guimenu +> <guimenuitem +>Anpassa &kmix;...</guimenuitem +></menuchoice +> i &kmix; fönster. Det visar ett litet fönster med några kryssrutor. För att visa etiketter, markera kryssrutan som heter <guilabel +>Visa etiketter</guilabel +> och klicka på <guibutton +>Ok</guibutton +>.</para> +<para +>Varje skjutreglage styr volymen hos olika ljudenheter. Det finns två delar för varje enhet som kan behöva ändras. Om du tittar på ett skjutreglage, finns det en grön lysdiod ovanför varje skjutreglage. Om du klickar på lysdioden kan du växla mellan ljusgrön och mörkgrön. Om lysdioden är mörkgrön, är ljudenheten tyst och avger inga ljud. Om lysdioden är ljusgrön, är enheten inte tyst. När du väl har kontrollerat att enheten inte är tyst, ökar du enhetens volym genom att dra markeringen uppåt på skjutreglaget. Volymen för en ljudenhet minskas genom att dra markeringen neråt längs skjutreglaget.</para> +<note +><para +>Vissa skjutreglage har också en röd lysdiod. De lysdioderna är inte viktiga för uppspelning av skivor, så du kan ignorera dem för närvarande.</para +></note> +<para +>Klicka på fliken som heter <guilabel +>Utmatning</guilabel +>.</para> +<para +>Försäkra dig om att skjutreglagen inte är tysta (stark grön lysdiod) och att markeringen är hela vägen längst upp på skjutreglaget för följande ljudenheter:</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 +>Om du fortfarande inte hör cd:n, klicka på fliken som heter <guilabel +>Inmatning</guilabel +></para> +<para +>Försäkra dig om att skjutreglaget markerat <guilabel +>CD</guilabel +> inte är tyst (stark grön lysdiod) och att markeringen är hela vägen längst upp på skjutreglaget.</para> +<para +>Om du kan höra cd:n nu, kan du sluta felsöka. Om inte, klicka <link linkend="ts-othersounds" +>här</link +> för att fortsätta</para> +</sect1> +<sect1 id="ts-othersounds"> +<title +>Avgöra om andra ljud är hörbara på datorn</title> +<para +>I det här avsnittet ska vi prova om andra typer av ljud är hörbara på datorn. Vi gör det genom att spela ett ljud som är lagrat på din hårddisk via högtalarna. </para> +<para +>Först måste vi hitta en lämplig testfil. Det görs på kommandoraden.</para> +<para +>Välj <menuchoice +><guimenu +>K-menyn</guimenu +><guimenuitem +>System</guimenuitem +> <guimenuitem +>&konsole;</guimenuitem +></menuchoice +>. Ett nytt fönster med en kommandorad visas. Skriv följande på den:</para> +<para +><screen +><prompt +>$</prompt +> <userinput +><command +>locate -n1 KDE_Window_Open.wav</command +></userinput +></screen +></para> +<para +>När du trycker på returtangenten blir det en paus, och en ensam rad med en filplats skrivs ut under kommandot du skrev in.</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 ska du be &kde; att spela upp den korta ljudfilen. Skriv in texten <command +>noatun</command +> följt av ett mellanslag. Kopiera därefter den fullständiga platsen för filen som du just lokaliserade med det föregående kommandot. Till exempel: </para> +<para +><screen +><prompt +>$</prompt +> <userinput +><command +>noatun /usr/local/kde/share/sounds/KDE_Window_Open.wav</command +></userinput +></screen +></para> +<para +>Om du hör ett kort ljud, <link linkend="ts-othersoundsplay" +>klicka här</link +>.</para> +<para +>Om du inte hörde ett kort ljud, är ljudsystemet inte riktigt inställt. Klicka <link linkend="ts-noothersounds" +>här</link +> för att fortsätta.</para> +</sect1> + +<sect1 id="ts-noothersounds"> +<title +>Uppspelning av testljudet misslyckades</title> +<para +>Hittills har vi kontrollerat att volymen i &kscd; och alla mixernivåer i &kmix; är riktigt inställda. Vi har också spelat ett testljud, och du kunde inte höra ljudet spelas upp. Det tyder på att problemet inte har med &kscd; att göra, utan istället med din ljudkonfiguration.</para> +<note +><para +>Försäkra dig om att cd:n fortfarande spelas i cd-enheten.</para +></note> +<para +>Först måste vi försäkra oss om att dina högtalare är inkopplade och att högtalarnas volym är riktigt inställd. Om du använder externa högtalare, kontrollera följande:</para> +<itemizedlist> +<listitem +><para +>Försäkra dig om att högtalarna är riktigt anslutna till datorn (se användarmanualen om nödvändigt).</para +></listitem> +<listitem +><para +>Om dina högtalare kräver batterier, ersätt batterierna med nya.</para +></listitem> +<listitem +><para +>Om dina externa högtalare kopplas in i ett vägguttag, försäkra dig om att de är inkopplade i uttaget, att sladden är säkert inkopplad på högtalarnas baksida och att väggkontakten fungerar.</para +></listitem> +<listitem +><para +>Om dina högtalare har en strömbrytare, försäkra dig om att strömmen är på.</para +></listitem> +<listitem +><para +>Om dina högtalare har en volymknapp, försäkra dig om att volymen är inställd halvvägs mellan av och maximalt värde.</para +></listitem> +</itemizedlist> + +<para +>Om dina högtalare ingår i datorlådan, kontrollera om de har en volymknapp. Om de har det, försäkra dig om att volymen är inställd halvvägs mellan av och maximalt värde.</para> + +<para +>Om du har kontrollerat allt detta, behöver du troligen detaljerad hjälp för att få ljud att fungera på datorn. En fullständig beskrivning av felsökning av ljudsystemet är utanför den här handbokens omfattning, och användaren hänvisas till andra resurser på Internet. Vissa potentiella informationskällor är:</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 webbplats har säkert ett användarforum för att ställa frågor.</para +></listitem> +<listitem +><para +>Skicka en fråga till en diskussionsgrupp på Usenet som comp.os.linux</para +></listitem> +<listitem +><para +>Använd en söktjänst för att hitta andra som har stött på liknande problem som du.</para +></listitem> +</itemizedlist> +</sect1> + +<sect1 id="ts-othersoundsplay"> +<title +>Uppspelning av testljudet lyckades, men jag kan inte höra cd:n</title> +<para +>Hittills har vi kontrollerat att volymen i &kscd; och alla mixernivåer i &kmix; är riktigt inställda. Vi har också spelat ett testljud, och du kunde höra ljudet spelas upp. Det tyder på att problemet är begränsat till &kscd; eller cd:n.</para> +<para +>Kontrollera att cd:n verkligen är spelbar. Om det är en ny cd, stoppa in den i en annan cd-spelare (helst inte i en dator) och försäkra dig om att cd:n kan spelas upp i den enheten. Om den kan spelas i en annan enhet, fortsätt <link linkend="ts-ddpback" +>här</link +>.</para> +</sect1> + +<sect1 id="ts-ddpback"> +<title +>Försök använda direkt digital uppspelning</title> +<para +>Det finns två sätt som en persondator kan spela en cd.</para> + +<para +>Den första metoden (som &kscd; benämner direkt digital uppspelning), utförs genom att läsa digitaldata från cd:n med digital ljudextraktion (DAE, Digital Audio Extraction). Denna data skickas till datorns processor som konverterar digitaldata till ljud. Metoden kräver en cd-enhet som klarar av DAE (de flesta nya enheter gör det) och den kräver en del processorkraft för att skapa ljudet du hör.</para> + +<para +>Den andra metoden använder de interna kretsarna som är tillgängliga på många cd-enheter för att läsa data och skapa de ljud som du hör utan att använda datorns processor. Data skickas med en särskild kabel direkt till datorns ljudkort. Metoden kräver mindre processorkraft, men den kräver att den särskilda kabeln är ansluten inne i datorn. Alla datorer har inte den här förbindelsen.</para> + +<para +>&kscd; använder normalt den andra metoden för uppspelning. Nästa steg i att felsöka dina cd-problem är att aktivera direkt digital uppspelning. För att göra det, börja med att klicka på knappen som heter <guibutton +>Stoppa</guibutton +> i &kscd;s fönster. Det stoppar för tillfället alla försök att spela cd:n.</para> + +<para +>Klicka nu på knappen som heter <guibutton +>Extra</guibutton +>. Det visar en liten meny. Välj <guilabel +>Anpassa &kscd;...</guilabel +>. Det öppnar en ny dialogruta.</para> +<para +>Klicka på ikonen som heter <guilabel +>Cd-spelare</guilabel +> till vänster i dialogrutan.</para> +<para +>Markera kryssrutan som heter <guilabel +>Använd direkt digital uppspelning</guilabel +>.</para> +<para +>Klicka på <guibutton +>Ok</guibutton +>. </para> +<para +>Klicka nu på <guibutton +>Spela</guibutton +> i &kscd;s fönster och se om cd:n börjar spelas riktigt.</para> + +<para +>Om du fortfarande inte kan höra musiken på cd:n, kräver ditt problem specifik kunskap om ditt system och problemen du stöter på. Läsaren hänvisas till många bra resurser på Internet för denna information. Fundera på att skaffa hjälp på något av följande sätt:</para> + +<itemizedlist> +<listitem +><para +>Din distributörs webbplats har säkert ett användarforum för att ställa frågor.</para +></listitem> +<listitem +><para +>Skicka en fråga till en diskussionsgrupp på Usenet, som comp.os.linux, eller en direktmeddelandekanal för användare av ditt operativsystem</para +></listitem> +<listitem +><para +>Använd en söktjänst för att hitta andra som har stött på liknande problem som du.</para +></listitem> +</itemizedlist> + +</sect1> + + +<sect1 id="ts-errorbox"> +<title +>En felruta visades</title> +<para +>Troligen är felrutan som visas oftast den här:</para> +<screenshot> +<screeninfo +>Feldialogruta</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd19.png" format ="PNG"/></imageobject> +<textobject +><phrase +>Feldialogruta</phrase +></textobject> +</mediaobject> +</screenshot> + +<para +>Information om hur den här dialogrutan kan fixas är tillgänglig i avsnittet <link linkend="questions-and-answers" +>Vanliga frågor</link +> i den här handboken.</para> + +<para +>Om du får en annan felruta, kan du skicka in texten från felrutan på ett forum för din distribution eller skriva in texten i en söktjänst som <ulink url="http://www.google.com" +>Google</ulink +>.</para> +</sect1> +</chapter> + +<chapter id="questions-and-answers"> +<title +>Vanliga frågor</title> + +<qandaset> +<qandaentry> +<question +><para +>Den här dialogrutan visas när jag startar &kscd;. Vad är det som är fel?</para> +<screenshot> +<screeninfo +>Feldialogruta</screeninfo> +<mediaobject> +<imageobject +><imagedata fileref="kscd19.png" format ="PNG"/></imageobject> +<textobject +><phrase +>Feldialogruta</phrase +></textobject> +</mediaobject> +</screenshot> +</question> +<answer +><para +>Det här betyder att &kscd; inte kunde öppna din cd-romenhet. Namnet på enheten under <guilabel +>cd-romenhet</guilabel +> i <guilabel +>Kscd:s inställningar</guilabel +> måste ange blockenheten som hör ihop med din cd-romenhet. Det här är ofta en hård länk till motsvarande <acronym +>IDE</acronym +>- (<filename +>/dev/hdx</filename +>) eller <acronym +>SCSI</acronym +>-enhet (<filename +>/dev/sdx</filename +>).</para> + +<para +>Enhetsfilen tillhör normalt användaren root i gruppen root, och tillåter inte att vanliga användare direkt öppnar den för läsning, skrivning eller körning. Det här har <emphasis +>ingenting</emphasis +> att göra med <application +>SUID</application +> kommandot <command +>mount</command +> (Set User <acronym +>ID</acronym +> program använder funktionen <function +>setuid()</function +> i Unix standardbibliotek för att anta en annan användares identitet), som inte har några problem med rättigheter. &kscd; måste kunna få en filpekare med läsrättigheter som representerar enheten för att kunna styra den och läsa rådata från skivan.</para> + +<para +>Om du känner till root-lösenordet, kan du korrigera det här snabbt och enkelt: Logga in som root och skriv <userinput +><command +>chmod</command +> <option +>a+r</option +> <filename +><replaceable +>/dev/cdrom</replaceable +></filename +></userinput +> för att låta alla användare på systemet läsa från <filename +>/dev/cdrom</filename +>. Om din cd-romenhet kallas något annat, ändra namnet på den enheten med samma procedur. Om du inte känner till root-lösenordet, fråga din systemadministratör om att få rättighet att läsa från cd-romenheten.</para> + +<para +>Se också kapitlet <link linkend="configuring-kscd" +>Anpassa KSCD </link +></para +></answer> +</qandaentry> + +<qandaentry +> +<question +><para +>Jag kan inte få <acronym +>CDDB</acronym +> att fungera. Kan jag få mer detaljerad information om vad som kan ha gått fel?</para +></question +> +<answer +><para +>Om du upplever problem med <acronym +>CDDB</acronym +>-funktionen, prova att starta &kscd; från kommandoraden med väljaren <option +>-d</option +> och kontrollera avlusningsutskrifterna.</para +></answer +> +</qandaentry> +</qandaset> +</chapter> + +<chapter id="credits-and-license"> +<title +>Tack till och licens</title> + +<para +>&kscd; Copyright 1997,1998 &Bernd.Johannes.Wuebben; &Bernd.Johannes.Wuebben.mail;</para> + +<para +>&kscd; innehåller kod från: </para> +<itemizedlist> +<listitem +><para +><application +>workman</application +> 1.4 beta 3 Copyright (c) Steven Grimm <email +>koreth@hyperion.com</email +></para +></listitem> +</itemizedlist> + + +<para +>Ett särskilt tack till Ti Kan och Steve Scherf, uppfinnarna av <acronym +>CDDB</acronym +>-databaskonceptet. Besök <ulink url="http://www.cddb.com/" +>http://ww.cddb.com</ulink +> för mer information om <acronym +>CDDB</acronym +>.</para> + +<para +>Ett mycket varmt tack också till David White, som skrev den ursprungliga &kscd;-hjälpdokumentationen. Storartat jobb, David!</para> + +<para +>Dokumentation uppdaterad för KDE 2.0, och Copyright av &Jonathan.Singer; &Jonathan.Singer.mail;</para> + +<para +>Dokumentation uppdaterad för KDE 3.4, och Copyright av &Mike.McBride; &Mike.McBride.mail;</para> + +<para +>Översättning Stefan Asserhäll <email +>stefan.asserhall@comhem.se</email +></para +> +&underFDL; &underGPL; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="how-to-obtain-kscd"> +<title +>Hur man skaffar &kscd;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>För att kunna kompilera &kscd; med lyckat resultat, behöver du den senaste versionen av KDE-biblioteken samt &Qt; C++ bibliotek. Alla bibliotek som krävs samt &kscd; själv finns på &kde;:s &FTP;-plats, &kde-ftp;.</para> + +</sect1 +> + +<sect1 id="compilation-and-installation" +> +<title +>Kompilering och installation</title +> &install.compile.documentation; <para +>Var snäll informera den nuvarande underhållaren, Aaron Seigo, på &Aaron.J.Seigo.mail; om eventuella ändringar som du var tvungen att göra för att få &kscd; att kompilera på din plattform.</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-sv/docs/tdemultimedia/kscd/kscd.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd.png Binary files differnew file mode 100644 index 00000000000..acca49b7b4d --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd11.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd11.png Binary files differnew file mode 100644 index 00000000000..4f3befc1225 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd11.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd12.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd12.png Binary files differnew file mode 100644 index 00000000000..f83c4531f07 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd12.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd13.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd13.png Binary files differnew file mode 100644 index 00000000000..cdb69801a67 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd13.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd14.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd14.png Binary files differnew file mode 100644 index 00000000000..d874bf2ad04 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd14.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd16.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd16.png Binary files differnew file mode 100644 index 00000000000..5b4206dd968 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd16.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd19.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd19.png Binary files differnew file mode 100644 index 00000000000..5b2d0b85fc5 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd19.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd2.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd2.png Binary files differnew file mode 100644 index 00000000000..f4a27b92c18 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd2.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd3.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd3.png Binary files differnew file mode 100644 index 00000000000..56090e80a96 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd3.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd5.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd5.png Binary files differnew file mode 100644 index 00000000000..c1cbef3b80d --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd5.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd6.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd6.png Binary files differnew file mode 100644 index 00000000000..80f8f881b3d --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd6.png diff --git a/tde-i18n-sv/docs/tdemultimedia/kscd/kscd9.png b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd9.png Binary files differnew file mode 100644 index 00000000000..6e43b92cd72 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/kscd/kscd9.png diff --git a/tde-i18n-sv/docs/tdemultimedia/noatun/Makefile.am b/tde-i18n-sv/docs/tdemultimedia/noatun/Makefile.am new file mode 100644 index 00000000000..9e41d9df652 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/noatun/Makefile.am @@ -0,0 +1,4 @@ +KDE_LANG = sv +SUBDIRS = $(AUTODIRS) +KDE_DOCS = AUTO +KDE_MANS = AUTO diff --git a/tde-i18n-sv/docs/tdemultimedia/noatun/Makefile.in b/tde-i18n-sv/docs/tdemultimedia/noatun/Makefile.in new file mode 100644 index 00000000000..2c0137e4138 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/noatun/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = docs/tdemultimedia/noatun +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +#>- html-recursive info-recursive install-data-recursive \ +#>- install-dvi-recursive install-exec-recursive \ +#>- install-html-recursive install-info-recursive \ +#>- install-pdf-recursive install-ps-recursive install-recursive \ +#>- installcheck-recursive installdirs-recursive pdf-recursive \ +#>- ps-recursive uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive nmcheck-recursive bcheck-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +ARTSCCONFIG = @ARTSCCONFIG@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CONF_FILES = @CONF_FILES@ +CYGPATH_W = @CYGPATH_W@ +DCOPIDL = @DCOPIDL@ +DCOPIDL2CPP = @DCOPIDL2CPP@ +DCOPIDLNG = @DCOPIDLNG@ +DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +GMSGFMT = @GMSGFMT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@ +KCONFIG_COMPILER = @KCONFIG_COMPILER@ +KDECONFIG = @KDECONFIG@ +KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@ +KDE_RPATH = @KDE_RPATH@ +KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKEKDEWIDGETS = @MAKEKDEWIDGETS@ +MCOPIDL = @MCOPIDL@ +MEINPROC = @MEINPROC@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TOPSUBDIRS = @TOPSUBDIRS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMLLINT = @XMLLINT@ +X_RPATH = @X_RPATH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +#>- bindir = @bindir@ +#>+ 2 +DEPDIR = .deps +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +kde_appsdir = @kde_appsdir@ +kde_bindir = @kde_bindir@ +kde_confdir = @kde_confdir@ +kde_datadir = @kde_datadir@ +kde_htmldir = @kde_htmldir@ +kde_icondir = @kde_icondir@ +kde_kcfgdir = @kde_kcfgdir@ +kde_libs_htmldir = @kde_libs_htmldir@ +kde_libs_prefix = @kde_libs_prefix@ +kde_locale = @kde_locale@ +kde_mimedir = @kde_mimedir@ +kde_moduledir = @kde_moduledir@ +kde_servicesdir = @kde_servicesdir@ +kde_servicetypesdir = @kde_servicetypesdir@ +kde_sounddir = @kde_sounddir@ +kde_styledir = @kde_styledir@ +kde_templatesdir = @kde_templatesdir@ +kde_wallpaperdir = @kde_wallpaperdir@ +kde_widgetdir = @kde_widgetdir@ +tdeinitdir = @tdeinitdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xdg_appsdir = @xdg_appsdir@ +xdg_directorydir = @xdg_directorydir@ +xdg_menudir = @xdg_menudir@ +KDE_LANG = sv +#>- SUBDIRS = $(AUTODIRS) +#>+ 1 +SUBDIRS =. +KDE_DOCS = AUTO +KDE_MANS = AUTO +#>- all: all-recursive +#>+ 1 +all: docs-am all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile +#>+ 12 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/noatun/Makefile.in +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +#>- distdir: $(DISTFILES) +#>+ 1 +distdir: distdir-nls $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +#>- uninstall: uninstall-recursive +#>+ 1 +uninstall: uninstall-docs uninstall-nls uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic mostlyclean-am +#>+ 1 +clean-am: clean-docs clean-bcheck clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +#>- install-data-am: +#>+ 1 +install-data-am: install-docs install-nls + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ + tags-recursive uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +#>+ 2 +KDE_DIST=index.docbook index.cache.bz2 Makefile.in Makefile.am + +#>+ 24 +index.cache.bz2: $(srcdir)/index.docbook $(KDE_XSL_STYLESHEET) index.docbook + @if test -n "$(MEINPROC)"; then echo $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; $(MEINPROC) --check --cache index.cache.bz2 $(srcdir)/index.docbook; fi + +docs-am: index.cache.bz2 + +install-docs: docs-am install-nls + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun + @if test -f index.cache.bz2; then \ + echo $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/; \ + $(INSTALL_DATA) index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/; \ + elif test -f $(srcdir)/index.cache.bz2; then \ + echo $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/; \ + $(INSTALL_DATA) $(srcdir)/index.cache.bz2 $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/; \ + fi + -rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/common + $(LN_S) $(kde_libs_htmldir)/$(KDE_LANG)/common $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/common + +uninstall-docs: + -rm -rf $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun + +clean-docs: + -rm -f index.cache.bz2 + + +#>+ 13 +install-nls: + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun + @for base in index.docbook ; do \ + echo $(INSTALL_DATA) $$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/$$base ;\ + $(INSTALL_DATA) $(srcdir)/$$base $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/$$base ;\ + done + +uninstall-nls: + for base in index.docbook ; do \ + rm -f $(DESTDIR)$(kde_htmldir)/$(KDE_LANG)/noatun/$$base ;\ + done + + +#>+ 5 +distdir-nls: + for file in index.docbook ; do \ + cp $(srcdir)/$$file $(distdir); \ + done + +#>+ 15 +force-reedit: + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/tdemultimedia/noatun/Makefile + cd $(top_srcdir) && perl ../scripts/admin/am_edit -p../scripts/admin docs/tdemultimedia/noatun/Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/tde-i18n-sv/docs/tdemultimedia/noatun/index.cache.bz2 b/tde-i18n-sv/docs/tdemultimedia/noatun/index.cache.bz2 Binary files differnew file mode 100644 index 00000000000..26cbb3b248e --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/noatun/index.cache.bz2 diff --git a/tde-i18n-sv/docs/tdemultimedia/noatun/index.docbook b/tde-i18n-sv/docs/tdemultimedia/noatun/index.docbook new file mode 100644 index 00000000000..8ad2bd1cc42 --- /dev/null +++ b/tde-i18n-sv/docs/tdemultimedia/noatun/index.docbook @@ -0,0 +1,636 @@ +<?xml version="1.0" ?> +<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ + <!ENTITY kappname "&noatun;"> + <!ENTITY package "tdemultimedia"> + <!ENTITY % Swedish "INCLUDE" +> <!-- change language only here --> + <!ENTITY % addindex "IGNORE"> +]> + +<book lang="&language;"> +<bookinfo> +<title +>Handbok &noatun;</title> + +<authorgroup> +<author +><firstname +>Charles</firstname +> <surname +>Samuels</surname +> <affiliation +> <address +><email +>charles@kde.org</email +></address> +</affiliation> +</author> +<othercredit role="translator" +> <firstname +>Stefan</firstname +> <surname +>Asserhäll</surname +> <affiliation +><address +><email +>stefan.asserhall@comhem.se</email +></address +></affiliation +> <contrib +>Översättare</contrib +></othercredit> +</authorgroup> + +<copyright> +<year +>2001</year +><year +>2002</year> +<holder +>Charles Samuels</holder> +</copyright> + +<legalnotice +>&FDLNotice;</legalnotice> + +<date +>2002-03-01</date> +<releaseinfo +>2.00.00</releaseinfo +> <!-- Use App version here --> + +<abstract> +<para +>&noatun; är en fullständig insticksprogrambaserad mediaspelare för &kde;</para> +</abstract> + +<keywordset> +<keyword +>KDE</keyword> +<keyword +>Noatun</keyword> +<keyword +>tdemultimedia</keyword> +<keyword +>MP3</keyword> +<keyword +>musik</keyword> +<keyword +>media</keyword> +</keywordset> +</bookinfo> + +<chapter id="introduction"> +<title +>Inledning</title> + +<para +>&noatun; är en fullständig insticksprogrambaserad mediaspelare för &kde;</para> + +<sect1 id="features"> +<title +>Funktioner</title> + +<para +>&noatun; är ett avancerat gränssnitt för &arts; — den analoga realtidssynten. För att lägga till ytterligare uppspelningsmoduler, gå till <ulink url="http://noatun.kde.org/plugins.phtml" +>http://noatun.kde.org/plugins.phtml</ulink +>, eller <ulink url="http://mpeglib.sf.net" +> http://mpeglib.sf.net</ulink +>. Normalt stöder &arts; MP3 och MPEG-1. Vorbis stöds också om Vorbis-biblioteken var tillgängliga när &kde; kompilerades. </para> + +</sect1> +</chapter> + +<chapter id="using-noatun"> +<title +>Att använda &noatun;</title> + +<para +>&noatun; startar normalt med insticksprogrammet för användargränssnittet Utmärkt. Det här användargränssnittet valdes därför att det är mest likt andra &kde;-program.</para> + +<para +>&noatun; är unikt på det sättet att inga installationer är likadana, och det finns inget standardgränssnitt, även om det finns ett förvalt. Du har full frihet att blanda när du väljer insticksprogram, och anpassa &noatun; tills den är din ideala mediaspelare. </para> + +<sect1 id="title-format"> +<title +>Titelformat</title> +<para +>&noatun;s inställningsfönster har en ovanlig textruta som heter <guilabel +>Titelformat</guilabel +>. Du kan skriva in en formatsträng här för att anpassa hur titlar visas. </para> + +<itemizedlist> +<listitem +><para +>All text visas normalt, om den inte omgärdas av <literal +>$( )</literal +>.</para +></listitem> +<listitem +><para +>Texten inom <literal +>$( )</literal +> läser av &noatun;s egenskap för det angivna objektet, och ersätter texten med den.</para +></listitem> +<listitem +><para +>Om det finns citationstecken inom <literal +>$( )</literal +>, visas texten inom citationstecknen normalt, men bara om egenskapen med namnet finns.</para +></listitem> +<listitem +><para +>Citationstecknen kan antingen finnas i början av <literal +>$( )</literal +>, i slutet, eller både i början och slutet.</para +></listitem> +</itemizedlist> + +<para +>Till exempel ersätts <literal +>$(bitrate)</literal +>, med filens bittakt, som laddas av insticksprogrammet Tagg-läsare. Om du istället använder citationstecken i fältet, visas texten mellan citationstecknen: Till exempel <literal +>$(bitrate"kibit/s")</literal +> visar filens bittakt, följt av tecknen <literal +>"kibit/s"</literal +>. Ingendera skulle ha visats om inte egenskapen <quote +>bitrate</quote +> hade funnits. </para +> +</sect1> + +</chapter> + +<chapter id="using-noatun-plugins"> +<title +>Att använd insticksprogram med &noatun;</title> + +<para +>Du kan välja olika insticksprogram genom att gå till menyn <guimenuitem +>Inställningar</guimenuitem +>, och välja <guimenuitem +>Anpassa &noatun;...</guimenuitem +>. Gå till sidan <guilabel +>Insticksprogram</guilabel +> genom att välja lämpligt värde i listan. Därefter kan du aktivera insticksprogram genom att markera kryssrutan nära namnet. &noatun; kräver åtminstone ett insticksprogram för användargränssnittet, och exakt ett insticksprogram för spellistan. </para> + +<sect1 id="milk-chocolate"> +<title +>Mjölkchoklad</title> + +<para +>Mjölkchoklad är ett litet, enkelt gränssnitt. Knapparna beter sig i huvudsak som en CD-spelare, och <guiicon +>mata ut</guiicon +> knappen öppnar spellistan. Knappen som ser ut som ett <guiicon +>blad med ett kryss</guiicon +> tar bort det nuvarande spåret från spellistan, men tar inte bort filen från disk, och <guiicon +>pil</guiicon +>knappen väljer loopstil. En meny är tillgänglig genom att högerklicka var som helst i fönstret.</para> + +</sect1> + +<sect1 id="young-hickory"> + +<title +>Ung valnöt</title> + +<para +>Ung valnöt är ett insticksprogram för &kde;:s systembricka, normalt området intill klockan i panelen.</para> + +<para +>Genom att högerklicka på ikonen visas en liten meny, och vänsterklicka väljer om ditt &noatun;-användargränssnitt är synligt eller inte. Observera att till exempel spellistor inte anses vara användargränssnitt.</para> + +</sect1> + +<sect1 id="html-exporter"> +<title +><acronym +>HTML</acronym +>-spellisteexport</title> + +<para +>Det här insticksprogrammet sparar din spellista i en trevlig <acronym +>HTML</acronym +>-tabell. Dess inställningssida låter dig ange färger, bakgrundsbild och välja läget aktivera över, för att ändra färger när markören befinner sig över en länk.</para> + +<para +>Efter att ha angett alternativen, öppnar du en fildialogruta för att välja var utmatningen ska sparas med menyn <guimenu +>Åtgärder</guimenu +> <guimenuitem +>Exportera spellista</guimenuitem +>. </para> + +</sect1> + +<sect1 id="kjofol-skin"> +<title +><application +>KJofol</application +>-skal</title> + +<para +>&noatun;s laddare av <application +>KJofol</application +> skal är en implementering av ett &Windows;-program med samma namn.</para> + +<para +>&noatun;s implementering har tyvärr några begränsningar. Skalen måste till exempel vara okomprimerade på disken för att de ska kunna laddas.</para> + +<para +>För att installera ett skal (på &Windows; ZIP-format), kan du använda skalinstalleraren som finns i &noatun;s inställningsdialogruta.</para> + +<para +>Eftersom vissa skal inte är riktigt paketerade och skalinstalleraren inte kan gissa allt, kan du fortfarande utföra de här kommandona om installation av ett visst skal misslyckades:</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 det behövs) +<prompt +>%</prompt +> <userinput +><command +>cd</command +> <option +>kjskins</option +></userinput> +<prompt +>%</prompt +> <userinput +><command +>mkdir</command +> <option +>nytt_skal</option +> ; <command +>cd</command +> <replaceable +>nytt_skal</replaceable +></userinput> +<prompt +>%</prompt +> <userinput +><command +>unzip</command +> <replaceable +>/sökväg/till/nytt_skal.zip</replaceable +></userinput +></screen> + +<para +>Du kan också göra dina egna skal enligt anvisningarna 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 +>Delade spellista</title> + +<para +>Delad spellista har en enkel, klassisk stil. Ett dubbelklick på en rad spelar den (att markera den och trycka på <keycap +>Enter</keycap +> gör samma sak). Du kan dessutom dra filer och webbadresser till den. </para> + +<para +>Från &kde; 3.0, lagrar Delad spellista sin data på &XML;-format, men importerar automatiskt en <acronym +>m3u</acronym +>-lista om &XML;-filen inte finns. Det här betyder att du kan skriva till m3u-filen, och ta bort &XML;-filen, för att automatiskt skapa spellistor. </para> + +<para +>Namnet Delad spellista är i någon mån ett felaktigt namn, eftersom listan egentligen inte är delad. Det kommer från den ursprungliga konstruktionen (i &noatun;s tidiga dagar) då den verkligen var delad. </para> +</sect1> + +<sect1 id="winampskin"> +<title +>Winamp-skinn</title> +<para +>Om du verkligen har använt <trademark +>Winamp</trademark +>-skinnet, bör allt se bekant ut. Att klicka på timern byter mellan räkna upp och räkna ner. Att markera oscilloskopområdet under den, aktiverar eller inaktiverar oscilloskopet. Du kan också dubbelklicka på namnlisten för att byte läge på fönsterskuggning. Ett <mousebutton +>höger</mousebutton +>klick (eller ett klick på övre vänstra ikonen) visar &noatun;s standardverktygsrad. </para> +<para +>Du kan installera nya skin, genom att skapa en katalog till dem i <filename class="directory" +>$KDEHOME/share/apps/noatun/skins/winamp</filename +>, och sedan packa upp skinnet där. <trademark +>Winamp</trademark +>-skinnfiler med filändelsen <literal role="extension" +>.wsz</literal +> kan hanteras som normala zip-filer. Du kanske i alla fall först måste byta namn på filerna, för att kunna packa upp dem. </para> +</sect1> + +<sect1 id="metatag"> +<title +>Taggläsare</title> +<para +>Taggläsare är ett insticksprogram som laddar information om en fil genom att använda Kfile, med samma mekanism som ger &konqueror; de verktygstips som visas när musen hålls över filer. Förutom att ladda informationen stöder det redigering via menyalternativet <guimenu +>Taggredigering</guimenu +> i menyn <guimenu +>Åtgärder</guimenu +>. Det stöder redigering av <acronym +>ID3</acronym +>-taggar, samt Ogg vorbis-taggar. Det läser också bittakten från filer. </para> +</sect1> + +<sect1 id="keyz"> +<title +>Tangentisar</title> +<para +>Carsten Pfeiffer bestämde sig för att bryta den långlivade traditionen i &noatun;, att insticksprogram ska namnges på det mest oriktiga sättet som är möjligt, vilket bevisas av Mjölkchoklad, Ung valnöt och oräkneliga andra. </para> +<para +>Men bara för att namnet inte är originellt, betyder inte att insticksprogrammet är mindre värt. I själva verket låter det här dig tilldela snabbtangenter till vissa åtgärder i &noatun;. Det riktigt trevliga är att de här snabbtangenterna fungerar överallt, inte bara inne i &noatun;. Så det här kan till sist göra de där <quote +>multimedia-tangentborden</quote +> användbara. </para> +</sect1> + +<sect1 id="ir-control"> +<title +>Infraröd fjärrkontroll</title> +<para +>Om du har en infraröd fjärrkontroll till din dator (en sådan som finns för televisionskort med <trademark class="registered" +>Brooktree</trademark +>-mottagare), och den stöds av <ulink url="http://www.lirc.org" +>LIRC</ulink +>, ska det här fungera. Som för Tangentisar, är namnet inte upphetsande, men insticksprogrammet låter dig tilldela åtgärder till knapptryckningar. </para> +<para +>För att tilldela en åtgärd till en knapptryckning, ladda insticksprogrammet och gå till sidan Infrarödkontroll i &noatun;s inställningsfönster. Välj knapptryckningen i listan, och välj sedan åtgärden som ska utföras i kombinationsrutan nedanför. Om du vill att åtgärden ska upprepas, som till exempel för volymkontroll, markera rutan och välj intervall mellan åtgärderna. </para> +<para +>Om du har ett <acronym +>TV</acronym +>-kort, är det ett bekvämt trick att tilldela knappen <guibutton +>Tyst</guibutton +> till paus, och på så sätt tysta ditt <acronym +>TV</acronym +>-visningsprogram, samtidigt som &noatun; kör igång, och vice-versa. Detta är särskilt användbart vid reklamavbrott. </para> +</sect1> +</chapter> + +<chapter id="questions-answers-and-tips"> + +<title +>Vanliga frågor och tips</title> + +<qandaset id="faq"> +<title +>Vanliga frågor</title> +<qandaentry> +<question> +<para +>Musiken hoppar ganska mycket när man flyttar fönster.</para> +</question> +<answer> +<para +>Du kan låta &arts; buffra mer på följande sätt: </para +> + +<itemizedlist +> +<listitem +><para +>Starta Inställningscentralen</para +></listitem> +<listitem +><para +>Gå till gruppen <guilabel +>Ljud</guilabel +></para +></listitem +> +<listitem +><para +>Flytta dig till avsnittet <guilabel +>Ljudserver</guilabel +></para +></listitem +> +<listitem +><para +>Öka svarstiden — 384 ms är ofta tillräckligt på de flesta datorer.</para +></listitem +> +</itemizedlist +> + +<para +>Du kan också fundera på att köra ljudservern med realtidsprioritet om det inte hjälper att ändra svarstiden. Var medveten om att detta kan göra att datorn låser sig. </para +> + +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Jag kan inte ta bort en spellista eller användargränssnitt från insticksprogramlistan.</para> +</question> +<answer> +<para +>Eftersom &noatun; kräver att åtminstone ett användargränssnitt är laddad, och exakt en spellista, måste du lägga till ett nytt insticksprogram för användargränssnittet innan du tar bort det gamla. Att lägga till en ny spellista tar automatiskt bord den gamla. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Var kan jag skaffa fler insticksprogram?</para> +</question> +<answer> +<para +>Tredjepartsutvecklare kan skicka in sina egna insticksprogram till <ulink url="http://noatun.kde.org/plugins.phtml" +>&noatun;s hemsida</ulink +>, varifrån de kan laddas ner av dig, användaren. </para> +</answer> +</qandaentry> +<qandaentry> +<question> +<para +>Hur skriver jag ett insticksprogram för &noatun;?</para> +</question> +<answer> +<para +>Dokumentation, en <acronym +>API</acronym +>-referens, och exempel på källkod finns tillgängligt på <ulink url="http://noatun.kde.org" +>&noatun;s hemsida</ulink +>. Dessutom, enligt andemeningen med öppen källkod, finns källkoden för &noatun; och alla förvalda insticksprogram tillgänglig. </para> +</answer> +</qandaentry> +</qandaset> +</chapter> + +<chapter id="credits-and-licenses"> +<title +>Tack till och licens</title> + +<para +>Program Copyright 2000-2002 Charles Samuels <email +>charles@kde.org</email +></para> + +<para +>Dokumentation Copyright 2002 Charles Samuels <email +>charles@kde.org</email +></para> + +<para +>&noatun; har tagits fram för dig av följande personer:</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> +&underFDL; &underBSDLicense; </chapter> + +<appendix id="installation"> +<title +>Installation</title> + +<sect1 id="how-to-obtain-Noatun"> +<title +>Hur man skaffar &noatun;</title> +&install.intro.documentation; </sect1> + +<sect1 id="requirements"> +<title +>Krav</title> + +<para +>&noatun; kräver åtminstone en Pentium 200 med &Linux;, en PowerPC med &Linux; 2.4.1 eller senare, eller flera andra plattformar. Stöd för fler plattformar kommer att bli tillgängligt i senare versioner.</para> + +<para +>För att en plattform ska vara lätt att stöda, måste den ha stöd för pthreads, och ljudutmatningssystemet <acronym +>OSS</acronym +>, dock stöds <acronym +>ALSA</acronym +> med &Linux; också.</para> + +</sect1> + +<sect1 id="compilation-and-installation"> +<title +>Kompilering och installation</title> +&install.compile.documentation; <para +>Skulle du stöta på några problem, rapportera dem till upphovsmannen på <email +>charles@kde.org</email +>.</para> + +<para +>Om du har den här dokumentationen, så har du troligen redan kompilerat &noatun;.</para> + +</sect1> + +</appendix> + +<glossary id="glossary"> +<title +>Ordlista</title> + +<glossentry id="gloss-mc"> +<glossterm +>Mjölkchocklad</glossterm +><glossdef> +<para +>Mjölkchoklad är ett enkelt, minimalt användargränssnitt </para +></glossdef +></glossentry> + +<glossentry id="gloss-arts"> +<glossterm +>&arts;</glossterm +><glossdef> +<para +>&arts; är den analoga realtidssynten. Ett kraftfullt mediaramverk som används av &noatun;. </para +></glossdef +></glossentry> +<glossentry id="gloss-kj"> +<glossterm +>KJofol</glossterm +><glossdef> +<para +>Det här insticksprogrammet laddar skin som ursprungligen användes av en mediaspelare för &Windows; med samma namn. </para +></glossdef +></glossentry> + +<glossentry id="gloss-keyz"> +<glossterm +>Tangentisar</glossterm +><glossdef> +<para +>Tangentisar låter dig tilldela tangentnedtryckningar till åtgärder i &noatun;. </para +></glossdef +></glossentry> +<glossentry id="gloss-young-hickory"> +<glossterm +>Ung valnöt</glossterm +><glossdef> +<para +>Ung valnöt är ett insticksprogram för systembrickan. </para +></glossdef +></glossentry> +<glossentry id="gloss-kaiman"> +<glossterm +>Noatun</glossterm +><glossdef> +<para +>Kaiman är ett insticksprogram som laddar skin från mediaspelaren GQMPEG. Kaiman är också &noatun;s föregångare, och distribuerades med &kde; för &kde; 2.0. När &noatun; introducerades i &kde; 2.1, blev Kaimans skinnladdare ett insticksprogram i &noatun;. </para +></glossdef +></glossentry> + +</glossary> + +&documentation.index; +</book> + |