[beast: 10/16] DOCS: majorly simplify and speed up doxygen documentation generation



commit 390692c23fca666a9cc20ab9cb0343a632312701
Author: Tim Janik <timj gnu org>
Date:   Sat Mar 18 03:20:36 2017 +0100

    DOCS: majorly simplify and speed up doxygen documentation generation
    
    Signed-off-by: Tim Janik <timj gnu org>

 Makefile.decl         |    1 +
 docs/Makefile.am      |  182 +++++++++++++++++++++++++++++--------------------
 docs/Makefile.doxygen |  129 ----------------------------------
 docs/doxygen.cfg      |   51 ++++++++++----
 docs/footer.html      |   10 +++
 docs/main.dox         |   10 ++--
 6 files changed, 161 insertions(+), 222 deletions(-)
---
diff --git a/Makefile.decl b/Makefile.decl
index c264ebb..013849b 100644
--- a/Makefile.decl
+++ b/Makefile.decl
@@ -7,6 +7,7 @@ CLEANFILES=$(GENERATED_CLEANFILES)
 GENERATED_CLEANFILES=
 GENERATED=$(strip $(GENERATED_CLEANFILES))
 EXTRA_DIST=
+noinst_DATA=
 
 # Verbosity macros
 Q       = $(if $(findstring 1, $(V)) ,, @)
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 4a25440..a86c43c 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -3,86 +3,120 @@ include $(top_srcdir)/Makefile.decl
 
 SUBDIRS = imports images
 
-QPRINT = @printf '  %-7s%s\n'
-
-# Describe documentation version by real version number and git relative
-DSC_VERSION = $(shell git describe --always --match '[0-9]*' HEAD 2>/dev/null || echo tarball)
-DOC_VERSION = $(VERSION): $(DSC_VERSION)
+topdir = $(abs_top_srcdir)
+V_gen = @printf '  %-9s%s\n'
 
 # == Extra Tarball Files ==
 EXTRA_DIST += bse-categories.txt interpolation.txt ChangeLog.svn
 
-# == Doxygen Install Rules ==
-htmldocsbase  = $(docdir)
-htmldocsdir   = ${htmldocsbase}/html
-htmldocs_DATA = html/doc-version               # build dependency for doxygen docs
-htmlparent    = $(if $(findstring \#, ..\@INGIT@..), $(srcdir), $(builddir))
-install-data-hook: @INGIT@ $(htmldocs_DATA)
-       umask 022 && cp -RP $(htmlparent)/html/ "$(DESTDIR)$(htmldocsbase)/"
-       chmod -R u+w "$(DESTDIR)$(htmldocsbase)/"
-# u+w is needed for uninstall (distcheck enforces read-only srcdir contents)
-uninstall-local:
-       rm -Rf "$(DESTDIR)$(htmldocsbase)/html/"
-
-# == html/ build rules ==
-include Makefile.doxygen
-git_index_file = $(shell test ! -x $(top_srcdir)/.git/ || echo $(top_srcdir)/.git/index)
-html/doc-version: @INGIT@ $(if $(NODOC),, $(git_index_file)) # conditionally rebuild, depending on HEAD 
changes
-       $(AM_V_GEN)
-       $(Q) test -e $@ && test "`cat $@`" = "$(DOC_VERSION)" \
-       || $(MAKE) $(AM_MAKEFLAGS) --no-print-directory html-docs
-       $(Q) test -e $@ # created by 'html-docs'
+# == Collect Doc Sources ==
+sfi_doc_sources          ::= $(shell make doc_sources.lst -C ../sfi >&2 && cat ../sfi/doc_sources.lst)
+bse_doc_sources          ::= $(shell make doc_sources.lst -C ../bse >&2 && cat ../bse/doc_sources.lst)
+plugs_doc_sources ::= $(shell make doc_sources.lst -C ../plugins >&2 && cat ../plugins/doc_sources.lst)
+gxk_doc_sources          ::= $(shell make doc_sources.lst -C ../beast-gtk/gxk >&2 && cat 
../beast-gtk/gxk/doc_sources.lst)
+bst_doc_sources          ::= $(shell make doc_sources.lst -C ../beast-gtk >&2 && cat 
../beast-gtk/doc_sources.lst)
+man1_HTMLS          = docs/imports/beast.1.html docs/imports/bsescm.1.html docs/imports/bsewavetool.1.html 
docs/imports/sfidl.1.html
+man5_HTMLS          = docs/imports/bse.5.html
 
-# == Doxygen Build Rules ==
-HTMLMAN_FILES          = imports/beast.1.html imports/bse.5.html imports/bsescm.1.html 
imports/bsewavetool.1.html imports/sfidl.1.html
-DOXYGEN_DOC_FILES      = docs/main.dox
-DOXYGEN_DOC_DIRS       = sfi/ bse/ plugins/ plugins/freeverb/ beast-gtk/ beast-gtk/gxk/ launchers/ shell/ 
tools/
-DOXYGEN_EXCLUDES       = rope/cpy2rope.cc rope/cxx-client.[hc][hc] rcore/signalvariants.hh
-DOXYGEN_CHANGELOG       = ChangeLog.tmp
-DOXYGEN_CHANGELOG_TITLE = "Development Changes"
-DOXYGEN_NEWS           = $(top_srcdir)/NEWS
-DOXYGEN_PROJECT_LINK    = http://beast.testbit.eu/
-DOXYGEN_TAGFILES        = $(strip \
-       imports/tagfile-susv4.xml=http://pubs.opengroup.org/onlinepubs/9699919799/      \
-       imports/cppreference-doxygen-web.tag.xml=http://en.cppreference.com/w/          \
+# == Configure docs ==
+docs_project_link   = http://beast.testbit.eu
+docs_doxy_extra     = docs/main.dox
+docs_doxy_sources   = $(sfi_doc_sources) $(bse_doc_sources) $(plugs_doc_sources) $(gxk_doc_sources) 
$(bst_doc_sources)
+docs_doxy_src_dirs  = sfi bse plugins beast-gtk beast-gtk/gxk
+docs_doxy_headers   = $(filter     %.h %.H %.hh, $(docs_doxy_sources))
+docs_doxy_impls     = $(filter-out %.h %.H %.hh, $(docs_doxy_sources))
+docs_doxy_tagsrcs   = $(strip \
+       tagfile-susv4.xml=http://pubs.opengroup.org/onlinepubs/9699919799/      \
+       tagfile-cppreference-15.xml=http://en.cppreference.com/w/               \
+       tagfile-rapicorn.xml=http://dev.testbit.eu/rapicorn/latest/             \
 )
-# imports/tagfile-rapicorn.xml=http://dev.testbit.eu/rapicorn/latest/
-html-docs: doxygen-check
+docs_doxy_tagstems  = $(filter-out =JUNK%, $(subst =, =JUNK, $(docs_doxy_tagsrcs))) # uses 'subst' for word 
splitting
+docs_doxygen_tagbzs = $(docs_doxy_tagstems:%=docs/%.bz2)
+EXTRA_DIST         += $(docs_doxygen_tagbzs)
+docs_doxygen_werror = false
+EXTRA_DIST        += $(docs_doxy_extra)
+
+# Build with dot files by default
+DOXYGEN_GRAPHICS  ?= NO # YES
+
+# == docs/srctree ==
+doxy/src: $(patsubst %, ../%, $(docs_doxy_sources) $(docs_doxy_extra) $(docs_doxygen_tagbzs))
        $(AM_V_GEN)
-       $(Q) $(MAKE) $(AM_MAKEFLAGS) --no-print-directory doxygen-clean
-       $(QPRINT) "GEN" "Documentation Sources"
-       $(Q) $(GIT_CHANGELOG) > $(DOXYGEN_CHANGELOG)
-       $(Q) $(MAKE) $(AM_MAKEFLAGS) --no-print-directory doxygen-srctree
-       $(Q) rm -f $(DOXYGEN_CHANGELOG)
-       $(QPRINT) "GEN" "docs/docextract.dox"
-       $(Q) cd doxygen-srctree && \
-         find . -type f -name \*[hcHC] -print | \
-         $(PYTHON) $(abs_srcdir)/docextract.py > docs/docextract.dox
-       $(Q) $(MAKE) $(AM_MAKEFLAGS) --no-print-directory doxygen-html
-       $(QPRINT) "GEN" "HTML manual pages..."
-       $(Q) cp $(HTMLMAN_FILES) doxygen-html/
-       $(QPRINT) "MOVE" "HTML Documentation..."
-       $(Q) rm -rf html/
-       $(Q) mv doxygen-html html/
-       $(Q) $(MAKE) $(AM_MAKEFLAGS) --no-print-directory doxygen-clean
-       $(Q) rm -f html/doc-version && echo "$(DOC_VERSION)" > html/doc-version
-EXTRA_DIST += html
-.PHONY: html-docs
-CLEANFILES += $(DOXYGEN_CHANGELOG)
-GIT_CHANGELOG = ( git log --first-parent --date=short --pretty='%ad  %an      \# %h%n%n%s%n%n%b' 
--abbrev=11 \
-                 ce584d04999a7fb9393e1cfedde2048ba73e8878..HEAD \
-               | sed 's/^/     /; s/^  //; /^[        ]*<unknown>$$/d' )
-clean-html:
-       rm -rf html/
-clean-local: doxygen-clean @INGIT@ clean-html
+       $(Q) rm -Rf doxy/src doxy/src.tmp
+       $(Q) mkdir -p $(docs_doxy_src_dirs:%=doxy/src.tmp/%)
+       @: # copy source files *and* prefix each with an '@file' command
+       $(Q) cd $(topdir) && for file in $(docs_doxy_headers) $(docs_doxy_impls) ; do \
+         sed "1,+0s,^,/** @file $$file */ ," $$file > docs/doxy/src.tmp/$$file \
+         || exit $? ; done
+       @: # copy extra files verbatim
+       $(Q) cd $(topdir) && cp $(docs_doxy_extra) docs/doxy/src.tmp/
+       @: # avoid docu generation from enums residing in *[cC] files
+       $(Q) find doxy/src.tmp -type f -name '*[cC]' -exec sed 's/^\([^"]*\)\benum\b/\1Enum/' -i {} \;
+       @: # extract doxygen tag files
+       $(Q) for file in $(docs_doxy_tagstems) ; do \
+         bunzip2 < ../docs/$$file.bz2 > doxy/$$file \
+         || exit $? ; done
+       $(Q) mv doxy/src.tmp doxy/src
 
-# == Upload Rule ==
-CHECK_RSYNC = { command -v rsync >/dev/null && { echo "3.0.0" ; rsync --version 2>&1 | sed 's/[^0-9]*// ; 
1q' ; } | sort -VC ; }
-# Upload stable versions as $BST_VERSION_STEM, otherwise upload as latest/
-upload-docs: html/doc-version
+# == docs/doxy/html ==
+docs_doxy_auxfiles = ../docs/extrastyles.css ../docs/footer.html ../docs/references.bib
+EXTRA_DIST       += ../docs/doxygen.cfg ../docs/error.ign $(docs_doxy_auxfiles)
+# rebuild documentation after commits, unless NODOC is set to be non-empty
+doxy/html: $(if $(NODOC), , ../topbuildid.cc)
+# use order-only prerequisite on docs/doxy/src to spare doxygen runs for source edits
+doxy/html: ../docs/doxygen.cfg ../docs/error.ign $(docs_doxy_auxfiles) | doxy/src
+       $(V_gen) "PREPARE" $@
+       $(Q) rm -Rf doxy/html doxy/output
+       $(Q) mkdir -p doxy/output
+       $(Q) cp $(docs_doxy_auxfiles) doxy/
+       $(Q) (cat ../docs/doxygen.cfg \
+       && echo "PROJECT_NUMBER         = $(topbuildid)" \
+       && echo "HAVE_DOT               = $(DOXYGEN_GRAPHICS)" \
+       && echo "CLASS_DIAGRAMS         = $(DOXYGEN_GRAPHICS)" \
+       && echo "DOT_MULTI_TARGETS      = YES" \
+       && echo "INPUT                  = src/" \
+       && echo "STRIP_FROM_PATH        = $$(pwd)/doxy/src" \
+       && echo "OUTPUT_DIRECTORY       = output/" \
+       && echo "GENERATE_TAGFILE       = output/html/tagfile.xml" \
+       && echo "HTML_EXTRA_STYLESHEET  = extrastyles.css" \
+       && echo "EXAMPLE_PATH           = $(topdir)/" \
+       && echo "TAGFILES              += $(docs_doxy_tagsrcs)" \
+       ) > doxy/Doxyfile
+       $(V_gen) "DOXYGEN" $@
+       $(Q) cd ../docs/doxy && $(DOXYGEN) Doxyfile > error.log 2>&1
+       $(Q) test ! -s doxy/error.log && rm -f doxy/error.log \
+       || { echo "WARNING: doxygen issues encountered ($$(wc -l <doxy/error.log)): $$(pwd)/doxy/error.log" ; 
\
+            ! grep -E -v -f $(srcdir)/../docs/error.ign doxy/error.log || ! $(docs_doxygen_werror) ; }
+       $(V_gen) "POLISH" $@
+       $(Q) sed -r $(docs_sed_accesskey_f) $(docs_sed_project_link) -i doxy/output/html/*.html
+       $(Q) mv doxy/output/html doxy/html
+docs_sed_accesskey_f  = -e 's;(<input [^>]*id="MSearchField"[^>]*accesskey=")S";\1F";'
+docs_sed_project_link = -e 's;<div id="projectname">((\w|[+_/~*%^-])+);<div id="projectname"><a 
href="$(docs_project_link)">\1</a>;'
+CLEANFILES += ../docs/error.log
+doxy/html/doc-version: doxy/html $(patsubst %, ../%, $(man1_HTMLS) $(man5_HTMLS))
        $(AM_V_GEN)
-       $(Q) ${CHECK_RSYNC} || { echo "$@: failed to detect recent version: rsync"; exit 1; }
-       $(Q) docdir=latest && test "@ENABLE_DEVEL_MODE_TRUE@" != "#" || docdir="${BST_VERSION_STEM}" && \
-         set -x && rsync -zaHP --del "html/" "testbit:pub/docs/beast/$$docdir"
-upload: upload-docs
-.PHONY: upload upload-docs
+       $(Q) cd $(topdir) && test -z "$(man1_HTMLS)" || { $(MKDIR_P) docs/doxy/html/man1/ && cp $(man1_HTMLS) 
docs/doxy/html/man1/ ; }
+       $(Q) cd $(topdir) && test -z "$(man5_HTMLS)" || { $(MKDIR_P) docs/doxy/html/man5/ && cp $(man5_HTMLS) 
docs/doxy/html/man5/ ; }
+       $(Q) echo "$(PACKAGE)-$(topbuildid)" > $@
+
+# == install docs/doxy/html ==
+docs_html_installbase   = $(docdir)
+noinst_DATA            += doxy/html/doc-version        # AM target to trigger docs/doxy/html builds
+docs-html-install: $(docs_html_install_DATA)
+       rm -Rf "$(DESTDIR)$(docs_html_installbase)"/html/
+       umask 022 && $(MKDIR_P) "$(DESTDIR)$(docs_html_installbase)"
+       umask 022 && cp -RP doxy/html/ "$(DESTDIR)$(docs_html_installbase)"
+.PHONY: docs-html-install
+install-data-local: docs-html-install
+
+# == uninstall docs/doxy/html ==
+docs-html-uninstall:
+       rm -Rf "$(DESTDIR)$(docs_html_installbase)"/html/
+.PHONY: docs-html-uninstall
+uninstall-local: docs-html-uninstall
+
+# == clean docs/doxy/ ==
+clean-docs:
+       rm -Rf doxy/
+.PHONY: clean-docs
+clean-local: clean-docs
diff --git a/docs/doxygen.cfg b/docs/doxygen.cfg
index 8588fd4..dae6170 100644
--- a/docs/doxygen.cfg
+++ b/docs/doxygen.cfg
@@ -1,5 +1,5 @@
 PROJECT_NAME           = "BEAST - Free Software Audio Synthesizer and Tracker"
-#OUTPUT_DIRECTORY      = doxyhtml/
+#OUTPUT_DIRECTORY      = doxyhtml/
 GENERATE_LATEX         = NO
 GENERATE_MAN           = NO
 GENERATE_RTF           = NO
@@ -10,6 +10,7 @@ CASE_SENSE_NAMES      = YES
 RECURSIVE              = YES
 FILE_PATTERNS          = *
 EXCLUDE                        =
+CITE_BIB_FILES          = references.bib
 BUILTIN_STL_SUPPORT    = YES
 TYPEDEF_HIDES_STRUCT   = YES
 MAX_INITIALIZER_LINES   = 0
@@ -26,6 +27,9 @@ EXTRACT_ANON_NSPACES  = NO
 JAVADOC_AUTOBRIEF      = YES
 QT_AUTOBRIEF           = YES
 ABBREVIATE_BRIEF       = YES
+BRIEF_MEMBER_DESC      = NO
+REPEAT_BRIEF           = YES
+ALWAYS_DETAILED_SEC    = YES
 HIDE_IN_BODY_DOCS      = YES
 WARN_IF_UNDOCUMENTED    = NO
 
@@ -33,30 +37,30 @@ INTERNAL_DOCS               = NO
 HIDE_UNDOC_MEMBERS     = NO
 HIDE_FRIEND_COMPOUNDS  = YES
 SHOW_USED_FILES        = YES
-SHOW_DIRECTORIES       = YES
 SHOW_INCLUDE_FILES     = YES
 INHERIT_DOCS           = YES
 ENABLED_SECTIONS       = ""
+REFERENCED_BY_RELATION = YES
+
 MACRO_EXPANSION                = YES
+PREDEFINED  = DOXYGEN RAPICORN_CONVENIENCE __SIZEOF_LONG__=8
+PREDEFINED += static_assert(x,y)= RAPICORN_STATIC_ASSERT(x)= RAPICORN_STARTUP_ASSERT(x)=
+PREDEFINED += "record=struct" "sequence=struct" "RAPICORN_PIXBUF_TYPE=Pixbuf" "G_BEGIN_DECLS=" "G_END_DECLS="
+PREDEFINED += "__attribute__(x)=" RAPICORN_CONST= RAPICORN_NORETURN= RAPICORN_NOINLINE= RAPICORN_PRINTF(x,y)=
+
 EXPAND_ONLY_PREDEF     = YES
+EXPAND_AS_DEFINED       =
 #ENABLE_PREPROCESSING  = YES
 
-PREDEFINED = DOXYGEN "record=struct" "sequence=struct" G_BEGIN_DECLS G_END_DECLS
-PREDEFINED += BSE_CXX_DECLARE_CLASS BSE_CXX_DECLARED_CLASS_TYPE BSE_CXX_DECLARED_ENUM_TYPE 
BSE_CXX_DECLARED_PROC_TYPE
-PREDEFINED += BSE_CXX_DECLARED_RECORD_TYPE BSE_CXX_DECLARED_SEQUENCE_TYPE BSE_CXX_DECLARE_ENUM 
BSE_CXX_DECLARE_PROC
-PREDEFINED += BSE_CXX_DECLARE_RECORD BSE_CXX_DECLARE_SEQUENCE BSE_CXX_DEFINE_EXPORTS 
BSE_CXX_DEFINE_STATIC_DATA BSE_CXX_EXPORT_IDENTITY
-PREDEFINED += BSE_CXX_INSTANCE_OFFSET BSE_CXX_REGISTER_EFFECT BSE_CXX_REGISTER_ENUM BSE_CXX_REGISTER_HOOK 
BSE_CXX_REGISTER_HOOK_NODE
-PREDEFINED += BSE_CXX_REGISTER_PROCEDURE BSE_CXX_REGISTER_RECORD BSE_CXX_REGISTER_SEQUENCE 
BSE_CXX_REGISTER_STATIC_HOOK
-PREDEFINED += BSE_CXX_TYPE_REGISTER BSE_CXX_TYPE_REGISTER_ABSTRACT BSE_CXX_TYPE_REGISTER_INITIALIZED 
BSE_CXX_TYPE_REGISTER_INTERN
-PREDEFINED += BSE__SPECIALIZE BSE_CXX_DEFINE_EXPORTS BSE_CXX_DEFINE_STATIC_DATA
-
 #OPTIMIZE_OUTPUT_FOR_C = YES
 
+DISABLE_INDEX          = YES
 #GENERATE_HTML          = YES
+GENERATE_TREEVIEW      = YES
 #HTML_OUTPUT            = html
 #HTML_FILE_EXTENSION    = .html
 #HTML_HEADER            =
-#HTML_FOOTER            =
+HTML_FOOTER                    = footer.html
 #HTML_STYLESHEET        =
 #HTML_COLORSTYLE_HUE    = 220
 #HTML_COLORSTYLE_SAT    = 100
@@ -65,7 +69,12 @@ PREDEFINED += BSE__SPECIALIZE BSE_CXX_DEFINE_EXPORTS BSE_CXX_DEFINE_STATIC_DATA
 #HTML_ALIGN_MEMBERS     = YES
 #HTML_DYNAMIC_SECTIONS  = NO
 
-HAVE_DOT               = YES
+INTERACTIVE_SVG                = YES
+DOT_IMAGE_FORMAT       = svg
+DOT_TRANSPARENT         = YES
+DOT_FONTNAME           = "Verdana Bold"
+#DOT_FONTNAME            = "DejaVuSansMono Bold"
+DOT_FONTSIZE            = 11
 UML_LOOK               = NO
 CLASS_GRAPH            = YES
 COLLABORATION_GRAPH    = NO
@@ -78,5 +87,19 @@ DIRECTORY_GRAPH              = YES
 CALL_GRAPH             = NO
 CALLER_GRAPH           = NO
 
-ALIASES += flipper="\xrefitem flippers \"Flipper\" \"Flippers\""
+
+ALIASES += amp="&"
+ALIASES += note="<br><em><b>Note:</b></em>" Note="<br><em><b>Note:</b></em>" NOTE="<br><em><b>Note:</b></em>"
+ALIASES += NOTICE{1}="<br><em><b>NOTICE:</b> \1</em>"
+ALIASES += UNIMPLEMENTED{1}="<br><em><b>UNIMPLEMENTED:</b> \1</em>"
+ALIASES += REMINDER{1}="<br><em><b>REMINDER:</b> \1</em>"
 ALIASES += Wikipedia{1}="<a href='http://en.wikipedia.org/wiki/\1'>\1</a>"
+ALIASES +=  TODO="\xrefitem todo \"Issues\" \"Open Issues\" @b TODO"
+ALIASES += TODOS="\xrefitem todo \"Issues\" \"Open Issues\" @b TODOS"
+ALIASES +=   BUG="\xrefitem todo \"Issues\" \"Open Issues\" @b BUG"
+ALIASES +=  BUGS="\xrefitem todo \"Issues\" \"Open Issues\" @b BUGS"
+ALIASES +=     UNSTABLE="\xrefitem unstable \"Unstable\" \"Unstable API\" @b UNSTABLE"
+ALIASES +=  DISCOURAGED="\xrefitem unstable \"Unstable\" \"Unstable API\" @b DISCOURAGED"
+ALIASES +=   DEPRECATED="\xrefitem unstable \"Unstable\" \"Unstable API\" @b DEPRECATED"
+ALIASES +=   deprecated="\xrefitem unstable \"Unstable\" \"Unstable API\" @b DEPRECATED"
+ALIASES += EXPERIMENTAL="\xrefitem unstable \"Unstable\" \"Unstable API\" @b EXPERIMENTAL"
diff --git a/docs/error.ign b/docs/error.ign
new file mode 100644
index 0000000..e69de29
diff --git a/docs/footer.html b/docs/footer.html
new file mode 100644
index 0000000..c110e98
--- /dev/null
+++ b/docs/footer.html
@@ -0,0 +1,10 @@
+<!-- HTML footer for doxygen 1.8.4-->
+<!-- start footer part -->
+<!--BEGIN GENERATE_TREEVIEW-->
+<div id="nav-path"><!-- id is needed for treeview function! --></div>
+<!--END GENERATE_TREEVIEW-->
+<!--BEGIN !GENERATE_TREEVIEW-->
+<hr class="footer"/><address class="footer"><small>Generated on $date for $projectname</small></address>
+<!--END !GENERATE_TREEVIEW-->
+</body>
+</html>
diff --git a/docs/main.dox b/docs/main.dox
index 1ba92a9..0cb7859 100644
--- a/docs/main.dox
+++ b/docs/main.dox
@@ -6,11 +6,11 @@
 - <a href="beast-ChangeLog.html"><b>ChangeLog</b></a> - Beast Development ChangeLog
 
 @section manpages Manual Pages
-- <a href="beast.1.html"><b>Beast</b></a> - BSE Equipped Audio Synthesizer and Tracker
-- <a href="bsewavetool.1.html"><b>Bsewavetool</b></a> - A tool for editing the native multisample format of 
Beast and Bse
-- <a href="bse.5.html"><b>BSE</b></a> - Beast Sound Engine (file format)
-- <a href="bsescm.1.html"><b>Bsescm</b></a> - BSE Scheme Shell
-- <a href="sfidl.1.html"><b>Sfidl</b></a> - SFI IDL Compiler
+- <a href="man1/beast.1.html"><b>Beast</b></a> - BSE Equipped Audio Synthesizer and Tracker
+- <a href="man1/bsewavetool.1.html"><b>Bsewavetool</b></a> - A tool for editing the native multisample 
format of Beast and Bse
+- <a href="man5/bse.5.html"><b>BSE</b></a> - Beast Sound Engine (file format)
+- <a href="man1/bsescm.1.html"><b>Bsescm</b></a> - BSE Scheme Shell
+- <a href="man1/sfidl.1.html"><b>Sfidl</b></a> - SFI IDL Compiler
 
 @section weblinks Online Resources
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]