Home
The EVERTims room simulation software 1. Main principle 2. User
Contents
1. guaranteed to be the same for a reflection path while it is visible If it gets invisible and then visible again the path id might change e order is the reflection order for the direct sound the order 0 and the rN_X and abs_M are irrelevant e rN Xis the Nth order reflection point e dist is the length of the whole reflection path e abs M is the absorption coefficient for the octave band M The order of the messages in the bundle is regulated according to the following rules 1 The source and listener messages are always present and precede the other messages telling to which source receiver pair all the following messages in this bundle relate to 2 All the out messages precede all the in and upd messages 2 5 Materials EVERTims reads the material data from one file in the startup The file is line based ASCII and its structure is as follows material _id absO absl abs9 diff where e material id is the name of the material and the Reader refers to materials by these names e absX is the absorption coefficient for each octave band The correspondence of band X and actual frequency is such that abs0 corresponds to Y Hz e diffis the frequency independent diffusion coefficient 3 Implementation The implementation consists of two parts the EVERT library and the actual multithreaded simulation software utilizing the EVERT library 3 1 EVERT library The core of the system is the EVERT library It is describ
2. 29 10 2007 Lauri Savioja The EVERTims room simulation software 1 Main principle The EVERTims software is a beam tracing system designed for efficient detection of image sources with a moving listener The software can handle dynamic geometry and sound sources as well but the performance is not as good as with dynamic listeners The system is able to handle multiple sound sources and multiple listeners at the same time 2 User manual The program is command line driven and there are no setup files If you need to change something you should go into the code and make the change 2 1 Compiling There is Makefile but no autoconf The selection between OSX and Linux must be made by hand in the Makefile After that just say make and hope for the best 2 2 Command Line The following options are available in the command line s lt port gt the lt port gt for the Reader to listen to the messages p lt pattern gt the dummy terminal print writer v lt pattern host port gt the lt host gt and lt port gt to write in the VirChor protocol a lt pattern host port gt the lt host gt and lt port gt to write reflection data for auralization in the Markus protocol m lt materialfile gt the name of the material file d lt mindepth gt the minimun order of reflections D lt maxdepth gt the maximum order of reflections g use the internal graphics module for drawing the res
3. an be found in solver h 3 2 2 Input thread Init Read material database Open input socket Block everything else until first facefinished message received Main loop Wait for a message With anew message first find the type of the message and then switch accordingly New faces are added to the element map emap safe operation After facefinished a new EL Room is created from the emap and this is updated into Solver This should be safe but not guaranteed In addition stop calculation flag is set For each source message it is checked if the source is a new one or was it known before For a new source new solutionNodes are created for each listener For a known source the existing solutionNodes are updated For each listener message the same applies as with the source just swap the words listener and source in the previous paragraph 3 2 3 Update thread Main loop 1 Check if we have got new solutionNodes and map them to the solutionMap to be taken into account in further computation 2 Check if we have a new solution ready from the new thread and replace m solution with m_new_solution in corresponding solutionNode If the new thread is running just skip the following tests and jump to the listener updates 3 Check if we have unprocessed geometry changes in any solutionNode In the case ask for a new solution from the new t
4. ed in detail in a journal paper under review at the time of writing this document 3 2 Threads The software is run on multiple threads as illustrated below Update Input solutions thread New solution thread thread Classes Classes Classes Reader Solver Solver Material Writer MaterialFile Shared data Input thread updates m_solutionNodes inside Solver Input thread updates m_room next and m current after facefinished Method of locking none Good luck Shared data Update thread creates a new Solution when needed and signals the new thread by calculate_signal flag to start New thread sets m_new_solution_flag in Solver when finished Update thread switches the old solution to the new one inside the solutionNode when new has set the flag update can interrupt new by the stop_calculation flag Method of locking mutex to protect the calculate signal flag 3 2 1 Structure solutionNode The communication between the Input and Update threads is implemented with the struct solutionNode The same structure is the main driver of the Update thread in general as well There is one solutionNode for each Source Receiver pair Each node has it s own m_solution representing the actual beam tracing solution The complete contents of the struct c
5. hread 4 Check if we have unprocessed source changes in any solutionNode In the case ask for a new solution from the new thread 5 Check if we have solutionNodes with m depth smaller than MAX DEPTH In the case ask for a new solution from the new thread 6 Update all the solutions with listener changes and call the corresponding writers 3 2 4 New thread Main loop 1 Wait for calculate_signal flag to be set 2 Compute the new solution 3 Set the m_next_solution flag 4 Unset the calculate_signal flag If there is stop_signal flag detected at any time stop immediately and discard the solution under computation
6. ult BROKEN AT THE MOMENT DO NOT USE f lt roomfile gt read the room geometry from the lt roomfile gt DOESN T WORK AT THE MOMENT In the above pattern is a regular expression and is matched against the name of the solution formed as source_name listener_name If the pattern is omitted everything matches Such that command line ims p listener 0 a waves 10234 v source 03 listener_1 localhost 1980 would make the following print the solution for all the sound sources for listener_0 send to auralization all the reflection paths for all the listeners The messages are sent to the port 10234 of computer named waves send to VirChor the reflection paths of sound sources source_0 and source_3 for listener_1 The messages are sent to port 1980 at the local computer 2 3 Reader The Reader reader cc is listening to the given socket and whenever there is a message the Reader reacts accordingly The following messages are supported face id material_id pO x pO y pO z pl x ply p3_y p3 z facefinished source id 4x4 float matrix listener id 4x4 float matrix All the faces have a material and the handling of materials is described below in section Materials 2 4 Writers At this time there are two different Writer implementations writer cc and they are VirchorWriter for visualizing the reflection paths with VirChor MarkusWriter for auralization
7. with the Markus s auralization engine Both of them communicate via a socket connection and their protocols are described below Each time there is a change in the scene all the reflection paths are updated The reason to a change can be any of the following listener moved sound source moved some surface moved some material changed 2 4 1 VirchorWriter In VirChor scene there should be a set of lines for visualizing the reflection paths For each change all the lines are redrawn and if the number of line segments has decreased the rest of them are marked invisible Messages of the following types are sent to VirChor line_on id x0 yO z0 x1 yl z1 line off id 2 4 2 MarkusWriter The reflection data for each change is packed to one OSC bundle and is as follows bundle time_tag 0 0 sizeof EVERT_ SOURCE MSG EVERT_ SOURCE MSG sizeof EVERT_LISTENER_MSG EVERT LISTENER MSG sizeof EVERT_MSG 1 EVERT MSG 1 sizeof EVERT_MSG N EVERT MSG N EVERT SOURCE MSG and EVERT LISTENER MSG are the following source sfff source id x y z listener sfff listener_id x y z EVERT_MSG ican be any one of the following in iiffffffffffffffffffff path_id order Fl se rl_y rlz rN x rN y rN_z dist abs_0 abs_1 abs 9 upd iiffffffffffffffffffff path_id order rl ox rl_y rliz rN x rN y rN_z dist abs_0 abs_1 abs 9 out i path id In the above e path idis a path identifier It is an integer value and is
Download Pdf Manuals
Related Search
Related Contents
ダウンロード - オットーボック・ジャパン Sterling SGFE Marine Battery User Manual Téléchargez le catalogue PDF Outils de mesure Pyle PLMP3C31B カワイデジタルピアノ CA17 取扱説明書 Bedienungsanleitung User Manual Logic3 MIU050 MP3 accessory Fujitsu CELSIUS W410 Validation de modèle dynamique par corrélation cal[...] User-Manual - Newegg.com Copyright © All rights reserved.
Failed to retrieve file