Gearslutz.com

All Advertisers
Go Back   Gearslutz.com > The Forums > Studio building / acoustics > Bass traps, acoustic panels, foam etc


New Reply New Reply Thread Tools Search this Thread
Old 10th December 2009   #1
Lives for gear
 
PaulP's Avatar
 
Join Date: Sep 2009
Posts: 1,196

Thread Starter
Improved ripple tank simulator

I just noticed that the Ripple Tank Simulator has received a face lift.
Finer resolution, the ability to save and recall a setup, and variable
damping (whatever that is) are some of the improvements I've noticed
so far.

Don't forget to uncheck the "Fixed Edges" box.

Paul P
PaulP is offline   Reply With Quote
Old 10th December 2009   #2
Lives for gear
 
Brainchild's Avatar
 
Join Date: Jan 2009
Location: USA
Posts: 878

Cool. As soon as there's a way to reliably, repeatably and quantitatively punch in frequencies and barrier dimensions it will really begin to take on a useful aspect.
Brainchild is offline   Reply With Quote
Old 19th May 2010   #3
Lives for gear
 
Join Date: May 2010
Location: Wellington NZ
Posts: 1,082

The following is a "work in progress" of information collected from various sources which may be useful to people using the simulator for QRD modelling etc. I have more work to do on useful cell dimensions corresponding to the available frequencies. (Knowing how many cells correspond to a wavelength at a given frequency makes it possible to do scale models.)

Ripple simulation import/export format.
----------------------------------------
The following information was gathered from reverse engineering and examination of the source code for Version 1.7e of the ripple tank simulation program.

The following example is a 60x60 window with a single wall cell in the middle. It can be pasted into the import/export window of the simulator.

$ 0 60 1 0 false false 50 15 600 1
s 50 20
c 4950 0
w 1 0
l 99
c 4950 0


The first record contains the settings for the checkboxes, menus and sliders.
-------------------------------------
$ 0 # Settings record header
60 # Resolution slider (32x32 to 395x395)
1 # Predefined Setup number
0 # Colour Scheme number - 1
false # Fixed Edges
false # 3-D View
50 # Simulation speed slider (1 to 99)
15 # Frequency slider (1 to 29)
600 # Brightness slider (1 to 1199)
1 # Aux slider (2nd source freq, phase difference etc)


----------------------------------------
Frequency setting:
-------------------
Setting the slider all the way to the left sets the lowest frequency. All subsequent steps are multiples of the original frequency. For example, move the slider all the way to the left (position 1), then two steps to the right (position 3). The frequency will now be 3 times what it was at position 1. The slider position steps correspond to the frequency number in the first record of the import/export data.


Slider position 1 (frequency 1) = lowest frequency
Slider position 2 (frequency 2) = 2x the lowest frequency
Slider position 3 (frequency 3) = 3x the lowest frequency
Slider position 4 (frequency 4) = 4x the lowest frequency
etc...


----------------------------------------
The cell matrix is square. The X and Y sizes are the visible resolution plus 20 or more cells offscreen on all sides.
Resolution (visible) = 32 to 395 cells high and wide
Total cell matrix = 72 to 481 cells high and wide

The width of the offscreen border is determined as follows:

Border width = Resolution / 9, discard remainder.
If the result is less than 20, then Border width = 20.

For example:
Resolution 90: 90 / 9 = 10 (Border = 20)
Resolution 188: 188 / 9 = 20.89 (Border = 20)
Resolution 189: 189 / 9 = 21 (Border = 21)


----------------------------------------
The "s" record type specifies a source location.
Sources are located using x and y coordinates, 0 based from top left.
For example:

s 80 20

s # Source x-y coordinate record
80 # x
20 # y (20 = first onscreen row)


----------------------------------------
The cell matrix is defined in raster format, starting top left at cell 0 and ending bottom right at cell number ((resolution + 40) ^2) - 1
For a 60x60 resolution (100x100 matrix), the cells number from 0 to 9999.
Cells are written in sequence starting from cell 0.


----------------------------------------
The "c" record type specifies empty space.
The medium number represents the wave speed in that cell.
The refractive index of the medium is calculated as sqrt(1-(.5/191)*medium_number).
The following example says, "write 4950 empty cells of medium 0".

c 4950 0

c # Empty space cells record
4950 # Repeat Count
0 # Medium (0 to 191)


----------------------------------------
The "w" record type specifies walls.
The following example says, "write 1 wall cell."

w 1 0

w # Wall cells record
1 # Repeat Count
0


----------------------------------------
The "l" record type specifies a "copy cells above" count.
The following example says, "copy the cell from the row above to this cell, repeat 99 times."

l 99

l # Copy cell(s) from cell(s) above record
99 # Repeat Count


----------------------------------------
Using the example from earlier, which plots a single dot in the middle of the screen:

Matrix is 100 x 100 (visible 60 x 60) = 10000 cells.

c 4950 0 # Write 4950 empty cells (49.5 rows)

w 1 0 # write a single wall cell

l 99 # copy the next 99 cells from the ones above.

c 4950 0 # Write the remainder of the empty cells to the matrix.


The "l" record in the above example appears to be unnecessary, it could be written:

c 4950 0 # Write 4950 empty cells (49.5 rows)

w 1 0 # write a single wall cell

c 5049 0 # Write the remainder of the empty cells to the matrix.

In fact, the import routine will accept this format.


----------------------------------------
Horizontal lines are drawn using multiple wall cells:

w 5 0 # Draw a wall 5 cells wide starting at the current location.


----------------------------------------
Vertical lines are most easily drawn using the copy record. The following example is for a 5 cell high wall, 100 x 100 matrix:

w 1 0 # Draw the top cell of the wall
l 400 # copy the row 4 times

This is much more compact than the following:

w 1 0 # Draw the top cell of the wall
c 99 0 # write empty cells until below the first wall cell
w 1 0 # write the next cell of the wall below the first cell
c 99 0 # write empty cells until below the previous wall cell
w 1 0 # write the next cell of the wall below the previous cell
c 99 0 # write empty cells until below the previous wall cell
w 1 0 # write the next cell of the wall below the previous cell
c 99 0 # write empty cells until below the previous wall cell
w 1 0 # write the last cell of the wall below the previous cell


----------------------------------------
If a wall cell is located on any of the visible screen edges, the wall should be extended from there to the edge of the matrix to prevent "leakage" around it. The program does this automatically when you draw on the screen with the mouse, and you should replicate it if you are generating data for import. You can see how the program handles it by drawing some walls or clicking the "Add Border" button and exporting the result.

For example: 60 x 60 screen (100 x 100 matrix), draw a line from one side of the screen to the other.

This is incorrect:
c 20 0 # offscreen border
w 60 0 # Wall across visible part of the screen
c 20 0 # offscreen border

This is correct:
w 100 0 # Wall across the whole matrix

If you don't do this, the routine that plots the walls from the import data will sometimes draw the walls incorrectly. If none of the walls touch the edge of the visible screen, the problem should not occur.


-----------------------------------------
Resonance:
At frequency = 1,
170 cells between walls = 5/4 cycles.
1/4 cycle = 34 cells


Last edited by Don Hills; 19th May 2010 at 03:36 AM.. Reason: Formatting.
Don Hills is offline   Reply With Quote
Old 19th May 2010   #4
Lives for gear
 
PaulP's Avatar
 
Join Date: Sep 2009
Posts: 1,196

Thread Starter
Hey Don, fantastic work thumbsup and welcome to the forum.

I spent some time drawing different scenarios and analysing the export but
couldn't quite grasp the overall model. Now I see why.

With your contribution it will be easy to define complex repeatable scenarios.

Count me grateful !

Paul P
PaulP is offline   Reply With Quote
Old 19th May 2010   #5
Lives for gear
 
Join Date: May 2010
Location: Wellington NZ
Posts: 1,082

You're welcome. The tank would be a lot easier to use if it had the ability to place simple shapes - lines, rectangles etc - instead of having to freehand draw them with a mouse. I used a set of scripts to generate various shapes and sizes of rectangle for my experimenting with box resonances. I'm thinking about writing a utility to convert a bitmap drawing produced by Paint or similar into the ripple import format.
Don Hills is offline   Reply With Quote
Old 19th May 2010   #6
Lives for gear
 
avare's Avatar
 
Join Date: May 2004
Location: Hamilton, On Canada
Posts: 3,479

Repeating Paulp, welcome to Gearslutz and thanks for great data on working with the ripple tank!

Andre
__________________
Good studio building is 90% design and 10% construction.
avare is offline   Reply With Quote
New Reply New Reply Submit Thread to Facebook Facebook  Submit Thread to Twitter Twitter  Submit Thread to LinkedIn LinkedIn 



Thread Tools Search this Thread
Search this Thread:

Advanced Search

Similar Threads
Thread Thread starter Forum Replies Last Post
Fish tank cinetj Post Production forum! 0 29th September 2009 10:56 AM
AMEK Rembrandt Power Supply Ripple gilfo1 Geekslutz forum 16 17th August 2007 11:41 PM
Ripple Across Diaphram slowjett So much gear, so little time! 1 1st April 2006 09:13 PM
how to help tank you noobalot999 Work In Progress / Advice Requested / Show & Tell / Artist Showcase / Mix-Offs 15 30th January 2006 06:52 PM
Reverb Tank slaves666 High end 4 15th October 2005 05:08 AM


All times are GMT +1. The time now is 10:18 AM.

 
 
Powered by vBulletin®
Gearslutz.com Limited - UK Company Number 7597610.
Registered Office: 35 Ballards Lane, London, N3 1XW.

SEO by vBSEO ©2010, Crawlability, Inc.