{"id":62,"date":"2017-03-13T08:05:25","date_gmt":"2017-03-13T08:05:25","guid":{"rendered":"http:\/\/jonasstienen.de\/wordpress\/?page_id=62"},"modified":"2020-12-15T10:19:09","modified_gmt":"2020-12-15T10:19:09","slug":"coding","status":"publish","type":"page","link":"http:\/\/jonasstienen.de\/wordpress\/coding\/","title":{"rendered":"Coding"},"content":{"rendered":"<p>Coding is an all-time favorite thing that I never grew tired of. It is phenomenal to be able to make a living from it. To cut a long story short, I am a C++ real-time auralisation programmer using geometrical acoustics algorithms and digital signal processing to achieve things like <a href=\"http:\/\/www.vitualacoustics.org\">VirtualAcoustics<\/a>.<\/p>\n<h1>History<\/h1>\n<p>Since my parents bought their first Personal Computer in maybe 1998, I have been obsessed with this technology. And it holds on until today. It blows my mind how mankind was able to engineer something so incredibly complicated on so many levels. And now, so many processes rely on it. Almost every part of our lives is affected and computers have changed everything in the way we do it.<\/p>\n<p>My first experiences as a coder was with <b>Perl<\/b>, a powerful and somewhat ugly appearing scripting language. But it had a low entry threshold for dummies requiring only an interpreter and a text editor. And there was a book in the library. As a result, I could read every <b>Regular Expression<\/b> these days.<\/p>\n<p>After playing around with Perl, the web grew constantly and I tried out <b>HTML<\/b>, <b>JavaScript<\/b>, <b>Action<\/b> scripting for <b>Flash<\/b> animations. Failing with Perl CGI-Scripting already with installation and configuration, I got <b>PHP<\/b> running with IIS and later Apache. Now the entire world of dynamic websites was rolled out in front of me and I created website after website for any purpose. Along with PHP, of course, <b>MySQL<\/b> came quickly into play. I developed some custom CMS which had rudimentary functionality compared to others like Typo3, not a big surprise.<\/p>\n<p>After that, I eventually tried out different other CMS, like WordPress and Joomla. But I always felt a bit restricted especialy when it came to design customization.<\/p>\n<p>However in the first year during my first engagement as a student assistent, I had to use <b>Plone<\/b> on a <b>Zope<\/b> application server, (which uses <b>Python<\/b>) on a dedicated server that was in a horrible state.<b>\u00a0<\/b>It was the first CMS that consequently separated scripting, content writing and style. That was cool. Although it was terribly hard work especially on server administration side, I had my moments with Plone and was quite happy with Python since it was so much cleaner than Perl. As a webmaster and administrator I went through all the ups and downs that you can encounter. And after exhaustive nights with <b>LDAP<\/b>, mail servers and backup problems on a completely outdated system, I did the one thing necessary: reset. I set up the entire system from scratch, merged the websites mostly by copy&amp;paste and swore to never again work as an administrator and webmaster again.<\/p>\n<p>So I quit. I think the server was running for at least three years without an admin. Maybe this is still the case \ud83d\ude09 But it tought me a lot. I will never fear to reset any system (or application design) again no matter the cost &#8230; if it will lead to improvement. Cleansing move, if you will.<\/p>\n<p>It was after that period that I finally came in touch with <b>C++<\/b>, which is still my favorite programming language. I was working for the ITA as a student assistant and developed GUI elements with the <b>Fox-Toolkit<\/b> and <b>VTK<\/b>.<\/p>\n<p>Later I was also involved with real-time audio processing, the reason why I am now the lead developer for Virtual Acoustics at ITA. Wherever possible I chose\u00a0<b>ViSTA<\/b> VR Toolkit from the RWTH VR Group. It provides a tremendous amount of supporting libraries and is platform independent.<\/p>\n<p>I also came in touch with\u00a0<b>OpenMesh<\/b>, <b>TBB<\/b>, <b>FFTW3<\/b>, <b>Qt<\/b>, <b>libsndfile<\/b>,\u00a0<b>SketchUp<\/b>, <b>Lua<\/b>.<\/p>\n<p>As acoustic researcher, you won&#8217;t get around <b>Matlab<\/b>, which I use often. Especially for evaluation, plotting, offline audio processing &#8211; and naturally acoustic measurements with the <b>ITA-<\/b><b>Toolbox<\/b>. It is very powerful for prototyping and the quick-and-dirty work you only have to do once.<\/p>\n<p>Recently I discovered the power behind <b>Unity<\/b> and the <b>C#<\/b> language. I wrote some wrappers to use C++ libraries like <i>VANet<\/i> und <i>OpenDAFF<\/i> in C#.<\/p>\n<p>The requirement to use those libraries within a <strong>Python<\/strong> environment lead to several Py-wrappers, e.g. for <em>OpeDAFF<\/em> and the <em>VA<\/em> remote control interface.<\/p>\n<p>I looked into the employment of semantic data structures for acoustic simulations while trying to find a suitable data format for Geometrical Acoustics approaches. Here I concentrated on <b>IFC<\/b> for building and room acoustics and <b>CityGML<\/b> for outdoors, targeting to formulate a workflow with SketchUp as 3D modeler and open source C++ libraries for geometry handling, which were transformed in the end into an half-edge compatible mesh structure using <strong>OpenMesh<\/strong>.<\/p>\n<p>All in between, the probably most exciting project I was involved with (and in a way still am) is <strong>VirtualAcoustics<\/strong>, or short <strong>VA<\/strong>, which has a website available under <a href=\"http:\/\/www.virtualacoustics.org\">www.virtualacoustics.org<\/a>. It is an advanced open-source auralisation framework distributed under the flag of te <a href=\"http:\/\/www.akustik.rwth-aachen.de\">Institute of Technical Acoustics (ITA)<\/a> with a C++ API, platform-independent remote controle support via TCP\/IP, various bindings (C#, Python, Matlab) and a modular rendering and reproduction structure making it a versatile tool for prototyping. It has been used in countless studies that require dynamic auralisation (i.e. with head tracking) and Virtual Reality applications, like demo programs running in the <a href=\"https:\/\/www.itc.rwth-aachen.de\/cms\/IT-Center\/Forschung-Projekte\/Virtuelle-Realitaet\/Infrastruktur\/~fgqa\/aixCAVE\/?lidx=1\">aixCAVE<\/a> of the <a href=\"http:\/\/www.rwth-aachen.de\">RWTH Aachen University<\/a>.<\/p>\n<h1>Licensing<\/h1>\n<p>At some point during discussions in the research community about code and content licensing, I decided for myself that it is unfair to receive money from a public research council and keep the tools that were developed for a project closed source. Although the ultimate scientific product is a publication, I think also publishing the work that lead to those results might be of value for someone &#8211; and it eases reproducibility. Also, it&#8217;s a good practice to avoid conflicts when code should be included for commercial products. So everything I do is usually license under <b>Apache License<\/b> or <b>Creative Commons<\/b>.<\/p>\n<h1>Coding projects<\/h1>\n<h4>File Formats<\/h4>\n<h5 style=\"padding-left: 30px;\">OpenDAFF<\/h5>\n<p style=\"padding-left: 30px;\">OpenDAFF is a free and open-source directional audio file format, intended to store directional data such as directivies of sound sources and head-related transfer functions \/ impulse responses in a single file with the context of high performance, like room acoustics simulation and real-time auralization.<\/p>\n<p style=\"padding-left: 30px;\">Programming language: C++<\/p>\n<p style=\"padding-left: 30px;\">License: Apache License Version 2.0<\/p>\n<p style=\"padding-left: 30px;\">Project website: <a href=\"http:\/\/www.opendaff.org\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.opendaff.org<\/a><\/p>\n<p style=\"padding-left: 30px;\">Repositor: <a href=\"https:\/\/sourceforge.net\/projects\/opendaff\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/sourceforge.net\/projects\/opendaff<\/a><\/p>\n<h4>Virtual Reality<\/h4>\n<h5 style=\"padding-left: 30px;\">ViSTA VR Toolkit<\/h5>\n<p style=\"padding-left: 30px;\">ViSTA is a powerful library collection with tools for virtual acoustics and general usability support. It is platform independent and supports a lot of drivers that are helpful for VR applications.<\/p>\n<p style=\"padding-left: 30px;\">Programming language: C++<\/p>\n<p style=\"padding-left: 30px;\">License: Lesser GPL<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/www.google.de\/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;uact=8&amp;ved=0ahUKEwjJra_UhKTTAhWIUlAKHTJSCUQQFgglMAA&amp;url=http%3A%2F%2Fwww.itc.rwth-aachen.de%2Fcms%2FIT-Center%2FForschung-Projekte%2FVirtuelle-Realitaet%2FInfrastruktur%2F~fgmo%2FViSTA-Virtual-Reality-Toolkit%2F&amp;usg=AFQjCNHXsrlVCi3TQ_3gmPOlsaT1Vh4IfQ&amp;sig2=UHzMbVSlxmPsRjMutPtywg\" target=\"_blank\" rel=\"noopener noreferrer\">Project website<\/a><\/p>\n<p style=\"padding-left: 30px;\">Repository: <a href=\"https:\/\/sourceforge.net\/projects\/vistavrtoolkit\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/sourceforge.net\/projects\/vistavrtoolkit<\/a><\/p>\n<h4>Acoustic measurement and audio signal processing<\/h4>\n<h5 style=\"padding-left: 30px;\">ITA-Toolbox<\/h5>\n<p style=\"padding-left: 30px;\">The ITA-Toolbox is a Matlab toolbox that provides classes to store acoustic data, such as audio snippets, transfer functions, impulse responses and larger datasets like HRTFs. I predominently manage the applications around VA with the <strong>itaVA<\/strong> prefix, which are samples how to use the Matlab bindings for VA (see below). Also, <strong>OpenDAFF <\/strong>(see above) is integrated into the ITA-Toolbox to read and write DAFF content or to convert from itaHRTF.<\/p>\n<p style=\"padding-left: 30px;\">Programming language: Matlab, partly C and C++<\/p>\n<p style=\"padding-left: 30px;\">License: Apache compatible (MIT style)<\/p>\n<p style=\"padding-left: 30px;\">Project website: <a href=\"http:\/\/www.ita-toolbox.org\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.ita-toolbox.org<\/a><\/p>\n<p style=\"padding-left: 30px;\">Repository: <a href=\"http:\/\/git.rwth-aachen.de\/ita\/toolbox\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/git.rwth-aachen.de\/ita\/toolbox<\/a><\/p>\n<h5 style=\"padding-left: 30px;\">ITACoreLibs<\/h5>\n<p style=\"padding-left: 30px;\">The <strong>ITA core libs<\/strong> is a collection of C++ libraries for audio signal processing, audio streaming and general sample manipulation. It creates a toolkit-fashioned foundation for applications in the fields of virtual acoustics, but can also be used for acoustic measurement and other audio streaming projects.<\/p>\n<p style=\"padding-left: 30px;\">Programming language: C++<\/p>\n<p style=\"padding-left: 30px;\">License: Apache License Version 2.0<\/p>\n<p style=\"padding-left: 30px;\">Repository: <a href=\"https:\/\/git.rwth-aachen.de\/ita\/ITACoreLibs\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/git.rwth-aachen.de\/ita\/ITACoreLibs<\/a><\/p>\n<h4>Virtual Acoustics<\/h4>\n<h5 style=\"padding-left: 30px;\">ITAGeometricalAcoustics<\/h5>\n<p style=\"padding-left: 30px;\">The <strong>ITA geometrical acoustics<\/strong> collection of C++ libraries is the basis for acoustic propagation simulation based on the geometrical acoustics approach. It can be used for image source algorithms, ray and particle tracing, diffraction detour simulation and transmission propagation. It heavily relies on OpenMESH and supports SketchUp content for input and also output (i.e. in combination with ITAAcousticVisualization, see below).<\/p>\n<p style=\"padding-left: 30px;\">Programming language: C++<\/p>\n<p style=\"padding-left: 30px;\">License: Apache License Version 2.0<\/p>\n<p style=\"padding-left: 30px;\">Repository: <a href=\"https:\/\/git.rwth-aachen.de\/ita\/ITAGeometricalAcoustics\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/git.rwth-aachen.de\/ita\/ITAGeometricalAcoustics<\/a><\/p>\n<h5 style=\"padding-left: 30px;\">ITAAcousticVisualization<\/h5>\n<p style=\"padding-left: 30px;\"><strong>ITA acoustic visualization<\/strong> is a collection of C++ libraries for visualizing acoustic phenomena or algorithms such as sound transmission paths in the sense of geometrical acoustics. It provides useful export support for OpenMESH and SketchUp file formats.<\/p>\n<p style=\"padding-left: 30px;\">Programming language: C++<\/p>\n<p style=\"padding-left: 30px;\">License: Apache License Version 2.0<\/p>\n<p style=\"padding-left: 30px;\">Repository: <a href=\"https:\/\/git.rwth-aachen.de\/ita\/ITACoreLibs\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/git.rwth-aachen.de\/ita\/ITAAcousticVisualization<\/a><\/p>\n<h5 style=\"padding-left: 30px;\">VirtualAcoustics (VA)<\/h5>\n<p style=\"padding-left: 30px;\"><strong>VA<\/strong> is a real-time auralization software developed at ITA, RWTH Aachen University. It&#8217;s main focus lies in the enhancement of Virtual Reality applications with physics-based audio. However, it is also heavily used for auralization prototyping as well as listening experiments, especially if dynamic situations are considered or individualization of input parameters is required. The source code for the core functionality (VACore) is not available, but parts of it, like the control API for C++ (VABase), the remote control library using TCP\/IP (VANet) and the bindings (VAMatlab, VAPython, VACS) are licensed under Apache License Version 2.0. VAUnity, a plugin-like script collection to use VA withi the Unity virtual reality environment is also Apache licensed.<\/p>\n<p style=\"padding-left: 30px;\">Programming language: C++, Matlab, Python, C#<\/p>\n<p style=\"padding-left: 30px;\">License: Control and remote API (C++, TCP\/IP) and bindings (Matlab, C#, Py) are Apache License Version 2.0, the VACore is shared under GPL conditions due to the linked external libraries.<\/p>\n<p style=\"padding-left: 30px;\">Project website: <a href=\"http:\/\/www.virtualacoustics.org\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.virtualacoustics.org<\/a><\/p>\n<p style=\"padding-left: 30px;\">Repository: <a href=\"https:\/\/git.rwth-aachen.de\/ita\/VA\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/git.rwth-aachen.de\/ita\/VA<\/a><\/p>\n<p style=\"padding-left: 30px;\">\n","protected":false},"excerpt":{"rendered":"<p>Coding is an all-time favorite thing that I never grew tired of. It is phenomenal to be able to make a living from it. To cut a long story short, I am a C++ real-time auralisation programmer using geometrical acoustics algorithms and digital signal processing to achieve things like VirtualAcoustics. History Since my parents bought [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-62","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/jonasstienen.de\/wordpress\/wp-json\/wp\/v2\/pages\/62","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/jonasstienen.de\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/jonasstienen.de\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/jonasstienen.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/jonasstienen.de\/wordpress\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":34,"href":"http:\/\/jonasstienen.de\/wordpress\/wp-json\/wp\/v2\/pages\/62\/revisions"}],"predecessor-version":[{"id":369,"href":"http:\/\/jonasstienen.de\/wordpress\/wp-json\/wp\/v2\/pages\/62\/revisions\/369"}],"wp:attachment":[{"href":"http:\/\/jonasstienen.de\/wordpress\/wp-json\/wp\/v2\/media?parent=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}