Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
3278cd0
Ran copier
Matteo-Scerbo May 11, 2026
82822c3
Added RAVES dependency
Matteo-Scerbo May 11, 2026
e1bfb9d
It works!
Matteo-Scerbo May 11, 2026
c064593
Wavefront conversion work, but materials are not included
Matteo-Scerbo May 11, 2026
165075f
Test file didn't have materials. That wasn't the (only) problem.
Matteo-Scerbo May 11, 2026
877aff7
Found material assignments
Matteo-Scerbo May 12, 2026
004bc0e
Mesh conversion works!
Matteo-Scerbo May 12, 2026
472557a
IT WORKS
Matteo-Scerbo May 12, 2026
c58ca03
Cleaned up
Matteo-Scerbo May 12, 2026
b306380
Docker setup
Matteo-Scerbo May 12, 2026
ef87f46
Released raves on PyPI (Docker still doesn't work though)
Matteo-Scerbo May 12, 2026
c25432f
Adapted mesh conversion to the format currently used in CHORAS
Matteo-Scerbo May 13, 2026
344216d
Tests pass with the new test inputs.
Matteo-Scerbo May 13, 2026
a160c03
Simulation ran in docker!
Matteo-Scerbo May 13, 2026
c8f6922
Request later version of raves
Matteo-Scerbo May 13, 2026
b610bb5
Reconfigured mesh conversion to use gmsh
Matteo-Scerbo May 18, 2026
fcb7547
Revised comments
Matteo-Scerbo May 18, 2026
f6a3752
Revised comments
Matteo-Scerbo May 18, 2026
2dc6872
Updated progress bar.
Matteo-Scerbo May 19, 2026
5731a66
Removed completed TODO
Matteo-Scerbo May 20, 2026
515dc85
Removed .msh from tests
Matteo-Scerbo May 22, 2026
ad483c9
Updated test room to have multiple patches with the same material (to…
Matteo-Scerbo May 22, 2026
6a6cdcf
Extended basic test
Matteo-Scerbo May 22, 2026
746817e
Assume the list of receivers is the same for all sources.
Matteo-Scerbo Jun 9, 2026
a89a5b3
Added more varied tests.
Matteo-Scerbo Jun 9, 2026
68db22d
Reverted to RIR return; pytests pass.
Matteo-Scerbo Aug 26, 2026
491eca5
pytests pass with new error handling.
Matteo-Scerbo Aug 27, 2026
fb14ea0
Successfully ran in docker.
Matteo-Scerbo Aug 27, 2026
f88ad61
Changed license to GPLv3
Matteo-Scerbo Aug 27, 2026
944d46d
Propagate error messages to the database
mberz Aug 30, 2026
f139160
Update sampling rate setting
mberz Aug 30, 2026
6ff5756
Merge branch 'develop' into my-feature-branch
mberz Aug 30, 2026
e4de74e
Add CI config for Mod-ART
mberz Aug 30, 2026
c66f1e7
Merge branch 'develop' into my-feature-branch
mberz Aug 31, 2026
8184354
Improved noise-shaping flatness at frequency band crossings.
Matteo-Scerbo Aug 31, 2026
8d414ee
Merge branch 'my-feature-branch' of https://github.com/Matteo-Scerbo/…
Matteo-Scerbo Aug 31, 2026
054fecb
Add missing sampling rate
mberz Aug 31, 2026
32e5bed
Let the cli handle error message propagation
mberz Aug 31, 2026
1196063
Contrain numpy to avoid deprecations
mberz Aug 31, 2026
425f8bf
Bumped "raves" version, updated tests.
Matteo-Scerbo Sep 1, 2026
ed3a303
FIX: Update license identifier
mberz Sep 1, 2026
6c20145
Merge branch 'develop' into my-feature-branch
mberz Sep 1, 2026
0e48eba
Caught a quiet failure.
Matteo-Scerbo Sep 3, 2026
87708f7
Removed brittle test.
Matteo-Scerbo Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions .github/workflows/mod-art.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Mod-ART Method CI

on:
push:
branches:
- main
- develop
pull_request:
types: [opened, synchronize, reopened]

jobs:
uv-test:
name: Pytest for the mod-art runner
runs-on: ubuntu-latest
continue-on-error: true

strategy:
matrix:
python-version:
- "3.11"
- "3.12"
- "3.13"
- "3.14"

steps:
- uses: actions/checkout@v6

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libglu1-mesa libgl1 mesa-utils

- name: Run test for modart method
run: |
cd modart_method
uv run --extra tests pytest tests/

build-docker-image:
name: Build Docker Image
runs-on: ubuntu-latest
continue-on-error: true

steps:
- uses: actions/checkout@v6

- name: Build Docker Image
run: |
docker build -f modart_method/Dockerfile . --platform=linux/amd64 -t modart-method-test:latest
130 changes: 130 additions & 0 deletions example_settings/modart_setting.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
{
"type": "simulationSettings",
"options": [
{
"name": "Response duration",
"description": "Duration of the returned impulse response, in seconds.",
"id": "durat",
"type": "float",
"display": "text",
"min": 1e-1,
"max": 1e1,
"default": 1e0,
"step": 1e-1,
"endAdornment": "s"
},
{
"name": "Echogram sample rate",
"description": "Sample rate used to compute the echogram (energy response envelope). COMPLETELY UNRELATED TO THE AURALIZATION SAMPLE RATE. Higher values will produce more accurate results, but the decomposition will take longer.",
"id": "f_e",
"type": "float",
"display": "text",
"min": 5e1,
"max": 5e4,
"default": 5e3,
"step": 5e1,
"endAdornment": "Hz"
},
{
"name": "Auralization sample rate",
"description": "Sample rate used to produce the auralization RIR.",
"id": "sampling_rate",
"type": "float",
"display": "text",
"min": 5e1,
"max": 5e4,
"default": 44.1e3,
"step": 1e2,
"endAdornment": "Hz"
},
{
"name": "T60 threshold",
"description": "The decomposition (in each band) will stop after locating all energy modes with longer reverberation times than this.",
"id": "T60",
"type": "float",
"display": "text",
"min": 1e-3,
"max": 1e1,
"default": 1e-1,
"step": 1e-2,
"endAdornment": "s"
},
{
"name": "Max slopes",
"description": "The decomposition (in each band) will stop after locating this many energy modes, even if the T60 threshold has not been reached.",
"id": "slopes",
"type": "int",
"display": "text",
"min": 1,
"max": 100,
"default": 10,
"step": 1
},
{
"name": "Air humidity",
"id": "humi",
"type": "float",
"display": "text",
"min": 0.0,
"max": 100.0,
"default": 50.0,
"step": 5.0,
"endAdornment": "%"
},
{
"name": "Air temperature",
"id": "temp",
"type": "float",
"display": "text",
"min": -100.0,
"max": 100.0,
"default": 20.0,
"step": 1.0,
"endAdornment": "°C"
},
{
"name": "Atmospheric pressure",
"id": "pres",
"type": "float",
"display": "text",
"min": 50.0,
"max": 150.0,
"default": 100.0,
"step": 0.1,
"endAdornment": "kPa"
},
{
"name": "Points per square meter",
"description": "Density of surface sample points used for the numerical area integration.",
"id": "ppsm",
"type": "float",
"display": "text",
"min": 0,
"max": 100.0,
"default": 30.0,
"step": 0.1
},
{
"name": "Rays per hemisphere",
"description": "Density of sample directions used for the numerical solid angle integration.",
"id": "rays",
"type": "int",
"display": "text",
"min": 10,
"max": 10000,
"default": 1000,
"step": 100
},
{
"name": "Max parallel processes",
"description": "Cap to the number of processes spawned for the numerical integration.",
"id": "pool",
"type": "int",
"display": "text",
"min": 1,
"max": 10000,
"default": 4,
"step": 1
}
]
}
10 changes: 10 additions & 0 deletions methods-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,15 @@
"entryFile":"sparrowpy_interface.py",
"repositoryURL":"https://github.com/sparrow-acoustics/sparrowpy",
"documentationURL":"https://sparrowpy.readthedocs.io/en/stable"
},
{
"simulationType": "MoDART",
"containerImage": "modart_image:latest",
"envVars": {},
"label": "MoD-ART",
"entryFile":"modart_interface.py",
"settings":"modart_setting.json",
"repositoryURL":"https://github.com/IoSR-Surrey/MoD-ART/",
"documentationURL":"https://github.com/IoSR-Surrey/MoD-ART/blob/master/example%20usage/Tutorial.ipynb"
}
]
22 changes: 22 additions & 0 deletions modart_method/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM python:3.11.13-slim

# Set working directory
WORKDIR /app

# Install system dependencies for mesh generation and scientific computing
RUN apt-get update && apt-get install -y \
git \
build-essential \
gmsh \
&& rm -rf /var/lib/apt/lists/*

# Copy method package directory
COPY modart_method /app/modart_method

# Install the method package
RUN pip install --no-cache-dir /app/modart_method

WORKDIR /app/modart_method

# Default command to run the containerized MoDART method
CMD ["python", "-m", "modart_interface"]
Loading
Loading