{
  "openapi": "3.1.1",
  "info": {
    "title": "Soundscape Atlas API",
    "version": "1.0.0",
    "summary": "Deterministic tools for people and AI agents.",
    "description": "Every endpoint performs the same calculation as the human page and returns inputs, result, units, assumptions, sources, warnings and computedAt. MCP endpoint: /mcp."
  },
  "servers": [
    {
      "url": "https://soundscape.usefulweb.app"
    }
  ],
  "paths": {
    "/api/v1/tools": {
      "get": {
        "operationId": "listTools",
        "summary": "Catalog of all tools",
        "responses": {
          "200": {
            "description": "Tool list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/{id}": {
      "get": {
        "operationId": "getTool",
        "summary": "Definition of one tool",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "soundscape-recording-search",
                "soundscape-ambience-generator",
                "soundscape-noise-generator",
                "soundscape-spectrum-analyzer",
                "soundscape-reverb",
                "audio-converter"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/soundscape-recording-search/calculate": {
      "post": {
        "operationId": "calculateSoundscapeRecordingSearch",
        "summary": "Find real, freely licensed sound recordings by place, category and keywords.",
        "description": "Searches Wikimedia Commons for geotagged audio recordings — birdsong, rain, rivers, streets, machines, voices and field recordings — by region, map point, sound category and keywords. Every result carries its licence, author, attribution line, coordinates and links to the source page and file; only CC0, public-domain, CC BY and CC BY-SA recordings are listed unless you ask for the others.\n\nMethodology:\n- Builds a Wikimedia Commons search (CirrusSearch) for audio files: `filetype:audio`, a `nearcoord:` circle for the region or point, an OR-group of keywords for the category and your own words.\n- Asks the MediaWiki API for each file’s coordinates, file URL, MIME type, duration, Wikimedia’s MP3 transcode and the licence, author, credit, date, description and categories from the file page (extmetadata). Nothing is filled in or guessed.\n- Classifies the licence conservatively: only CC0, public domain, CC BY and CC BY-SA count as usable; NonCommercial, NoDerivatives, GFDL-only, Free Art and unknown licences are not usable for remixing.\n- Writes a TASL attribution line (title, author, licence with link, source) for every recording, and tags results with sound categories by keywords in the title, description and categories.\n- Caches region and world searches for 12 hours to keep the load on Wikimedia low; searches around a point are never cached, so no coordinates are kept on the server.\n\nLicence and author data come from the Commons file pages and can be incomplete or wrong; check the file page before publishing. Sound tags are a keyword guess. Recordings can be removed from Commons at any time.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "soundscape_recording_search",
        "x-owner-app": "soundscape",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SoundscapeRecordingSearchInput"
              },
              "examples": {
                "example1": {
                  "summary": "Weather recordings anywhere in the world",
                  "value": {
                    "category": "weather",
                    "region": "world",
                    "limit": 12
                  }
                },
                "example2": {
                  "summary": "Everything within 300 km of Berlin",
                  "value": {
                    "region": "point",
                    "lat": 52.52,
                    "lon": 13.405,
                    "radiusKm": 300,
                    "limit": 15
                  }
                },
                "example3": {
                  "summary": "Wildlife sounds in Europe",
                  "value": {
                    "category": "wildlife",
                    "region": "europe",
                    "limit": 12
                  }
                },
                "example4": {
                  "summary": "Field recordings without music",
                  "value": {
                    "category": "ambience",
                    "region": "world",
                    "limit": 20
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SoundscapeRecordingSearchResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/soundscape-ambience-generator/calculate": {
      "post": {
        "operationId": "calculateSoundscapeAmbienceGenerator",
        "summary": "Synthesize rain, wind, water, fire, room hum or a drone as a seamless-loop WAV.",
        "description": "Creates procedural background sound — rain with individual drops, gusty wind, a bubbling stream, a crackling campfire, room tone with mechanical hum, or an evolving drone — as a seamless-loop WAV. Every layer is synthesized from seeded noise and oscillators (no samples), with intensity, brightness and character controls and an optional room reverb.\n\nMethodology:\n- Rain: a pink-noise bed band-limited by the brightness, plus raindrops as a Poisson process (rate = drops per second × intensity), each a short decaying, slightly falling sine with a click, at a random stereo position.\n- Wind: pink noise through a band-pass filter whose centre frequency, sharpness and level follow a gust envelope made from three smoothed random curves (about 8 s, 2.5 s and 0.8 s), plus low rumble; the right channel hears each gust 0.25 s later.\n- Stream: four noise bands (≈300 Hz–4 kHz, lower for larger water) with fast random level changes, plus bubbles: short sines with rising pitch, as in physically based liquid-sound models.\n- Fire: low brown-noise roar and airy hiss with flicker, plus clusters of very short noise bursts (crackles) and occasional low pops. Hum: fundamental and harmonics with a 1/k^p roll-off (odd harmonics stronger) over low-passed pink room tone. Drone: band-limited (polyBLEP) sawtooth voices on root, fifth and octave, detuned, through a low-pass filter moved by slow LFOs.\n- Seamless loops: noise-like parts are rendered longer and the tail is crossfaded (equal power) onto the start; periodic parts (hum, drone, LFOs) are rounded to whole cycles per loop so they repeat exactly. Optional room reverb (Freeverb structure) is applied before looping, with a warm-up so the loop start is already reverberant.\n\nThese are synthesized impressions of natural sounds, not field recordings. Start playback quietly.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "soundscape_ambience_generator",
        "x-owner-app": "soundscape",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SoundscapeAmbienceGeneratorInput"
              },
              "examples": {
                "example1": {
                  "summary": "Steady rain, 6 s seamless loop",
                  "value": {
                    "kind": "rain",
                    "duration": 6,
                    "sampleRate": "44100",
                    "intensity": 0.6,
                    "density": 150,
                    "brightness": 0.5,
                    "seed": "1"
                  }
                },
                "example2": {
                  "summary": "Gusty wind in an open forest, 6 s",
                  "value": {
                    "kind": "wind",
                    "duration": 6,
                    "sampleRate": "32000",
                    "intensity": 0.7,
                    "gustiness": 0.8,
                    "pitch": 0.4,
                    "room": "forest",
                    "seed": "storm"
                  }
                },
                "example3": {
                  "summary": "Campfire with lots of crackles, 5 s mono",
                  "value": {
                    "kind": "fire",
                    "duration": 5,
                    "sampleRate": "44100",
                    "channels": "mono",
                    "intensity": 0.6,
                    "detail": 0.8,
                    "seed": "7"
                  }
                },
                "example4": {
                  "summary": "Server-room hum on 60 Hz mains, 4 s",
                  "value": {
                    "kind": "hum",
                    "duration": 4,
                    "sampleRate": "22050",
                    "frequency": 120,
                    "partials": 10,
                    "brightness": 0.6,
                    "roomToneDb": -18,
                    "seed": "1"
                  }
                },
                "example5": {
                  "summary": "Evolving drone in a hall, 8 s",
                  "value": {
                    "kind": "drone",
                    "duration": 8,
                    "sampleRate": "32000",
                    "frequency": 55,
                    "partials": 5,
                    "detuneCents": 12,
                    "motion": 0.6,
                    "lfoRate": 0.25,
                    "room": "hall",
                    "seed": "1"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SoundscapeAmbienceGeneratorResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/soundscape-noise-generator/calculate": {
      "post": {
        "operationId": "calculateSoundscapeNoiseGenerator",
        "summary": "Make white, pink, brown, blue or violet noise as a WAV file and check its spectrum.",
        "description": "Generates coloured noise with the correct spectral slope (white 0, pink −3, brown −6, blue +3, violet +6 dB per octave) as a downloadable WAV, mono or decorrelated stereo, 8–96 kHz, with level, fades, seamless looping and a seed for repeatable files. The measured spectrum, slope and levels are reported so you can verify the colour.\n\nMethodology:\n- White noise: Gaussian random samples from a seeded sfc32 generator (Box–Muller), so the power spectrum is flat.\n- Pink noise: white noise through a cascade of first-order pole/zero filters designed for the chosen sample rate (a pole every two octaves from 5 Hz, a zero half-way between), which averages −10 dB per decade = −3 dB per octave within about ±0.3 dB.\n- Brown noise: a leaky integrator (corner 10 Hz, so it never drifts) gives −6 dB per octave; blue noise inverts the pink filter (+3 dB); violet noise is the first difference of white noise (+6 dB per octave below about a quarter of the sample rate).\n- The level is set as RMS over all channels; if the highest peak would exceed −0.1 dBFS the gain is lowered and reported. Fades use an equal-power (sine) curve. Seamless loops render extra noise and crossfade it onto the start.\n- Check: the result is analysed with a Hann-windowed 4096-point Welch spectrum; the slope is a least-squares fit over 1/3-octave bands from 100 Hz to 10 kHz (or a quarter of the sample rate).\n\nStart playback quietly: noise at full level can damage speakers and hearing. Noise is not a medical sleep or tinnitus treatment.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "soundscape_noise_generator",
        "x-owner-app": "soundscape",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SoundscapeNoiseGeneratorInput"
              },
              "examples": {
                "example1": {
                  "summary": "Pink noise, 5 s stereo, 44.1 kHz",
                  "value": {
                    "type": "pink",
                    "duration": 5,
                    "sampleRate": "44100",
                    "channels": "stereo",
                    "level": -18,
                    "seed": "1"
                  }
                },
                "example2": {
                  "summary": "Brown noise, 4 s mono loop at 48 kHz",
                  "value": {
                    "type": "brown",
                    "duration": 4,
                    "sampleRate": "48000",
                    "channels": "mono",
                    "loop": true,
                    "level": -20,
                    "seed": "sleep"
                  }
                },
                "example3": {
                  "summary": "White noise test signal, 2 s mono, 32-bit float",
                  "value": {
                    "type": "white",
                    "duration": 2,
                    "sampleRate": "48000",
                    "channels": "mono",
                    "level": -12,
                    "fadeIn": 0,
                    "fadeOut": 0,
                    "encoding": "float32",
                    "seed": "42"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SoundscapeNoiseGeneratorResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/soundscape-spectrum-analyzer/calculate": {
      "post": {
        "operationId": "calculateSoundscapeSpectrumAnalyzer",
        "summary": "Upload audio and see its spectrum, peak frequencies, centroid, RMS/peak and waveform.",
        "description": "Analyses an audio file (WAV directly; MP3, FLAC, Ogg, M4A and AIFF are decoded with ffmpeg first): averaged FFT spectrum chart, the strongest peak frequencies, spectral centroid and roll-off, spectral slope, RMS, peak, crest factor, DC offset, clipped samples, octave-band levels and a waveform overview.\n\nMethodology:\n- WAV files are read by the engine (PCM 8/16/24/32-bit, float 32/64-bit, WAVE_FORMAT_EXTENSIBLE). Other formats are detected by their content and decoded by ffmpeg to 32-bit float WAV (the first audio track, up to stereo) in a private temporary folder.\n- The channels are mixed to mono. The spectrum is a Welch average: frames of the chosen FFT size with 50 % overlap, each windowed and transformed with a radix-2 FFT; powers are averaged. Levels are corrected for the window’s coherent gain, so a sine of amplitude A reads 20·log10(A) dBFS at its peak.\n- Peaks are local maxima that stand out from the median of the surrounding ±1/6 octave by more than random scatter of an averaged noise spectrum would allow (at least 9 dB; more when few frames carry the sound). Frequency and level are refined by a parabola through the three highest bins, so they are accurate to a fraction of a bin.\n- Centroid = power-weighted mean frequency; roll-off = frequency below which 85 % of the power lies; slope = least-squares fit of 1/3-octave band levels from 100 Hz to 10 kHz (white noise ≈ 0, pink ≈ −3, brown ≈ −6 dB/octave). RMS, peak, crest factor and DC offset are computed on all samples.\n- No loudness (LUFS) measurement: use the Audio Loudness Normalizer for that.\n\nPeak frequencies are the strongest spectral lines, not necessarily the perceived pitch (a missing fundamental or a chord can sound different).",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "soundscape_spectrum_analyzer",
        "x-owner-app": "soundscape",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SoundscapeSpectrumAnalyzerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Two tones (440 Hz + 1250 Hz) with a little hiss",
                  "value": {
                    "file": {
                      "filename": "two-tones.wav",
                      "contentType": "audio/wav",
                      "contentBase64": "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"
                    },
                    "fftSize": "1024",
                    "window": "hann",
                    "peaks": 3
                  }
                },
                "example2": {
                  "summary": "Hand clap (short noise burst), Hamming window",
                  "value": {
                    "file": {
                      "filename": "clap.wav",
                      "contentType": "audio/wav",
                      "contentBase64": "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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                    },
                    "fftSize": "1024",
                    "window": "hamming",
                    "peaks": 3
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SoundscapeSpectrumAnalyzerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/soundscape-reverb/calculate": {
      "post": {
        "operationId": "calculateSoundscapeReverb",
        "summary": "Add room, hall, cathedral or cave reverb to a WAV file with a known reverberation time.",
        "description": "Applies a Freeverb-style stereo reverb with room presets (small room, living room, studio, concert hall, cathedral, cave, open forest) to an audio file. The reverberation time (RT60) is set exactly per preset or by you and measured on the impulse response; the reverb tail is kept by default.\n\nMethodology:\n- Freeverb structure (Jezar, public domain): per channel eight parallel comb filters with a low-pass in the feedback loop (damping) followed by four series all-pass filters; the right channel’s delays are 23 samples longer for a wide stereo image. Delay lengths are scaled to the sample rate.\n- Unlike the original “room size” knob, each comb’s feedback gain is computed from the reverberation time: g = 10^(−3·delay / (sample rate × RT60)), so every comb decays by 60 dB in RT60 seconds at low and middle frequencies; damping makes high frequencies die away sooner, as in real rooms.\n- The RT60 is verified by measuring the reverb’s impulse response with Schroeder backward integration (T20: the −5 to −25 dB part of the decay, extrapolated to −60 dB).\n- Mono input becomes stereo. With “keep the tail” the file is extended by about 1.2 × RT60 plus the pre-delay so the reverb can fade out. If long reverbs on sustained sounds build up above full scale, the whole result is turned down to a −1 dBFS peak instead of clipping (reported as gain reduction).\n\nRoom presets give typical reverberation times for such spaces; they do not simulate a specific real room’s geometry or early reflections.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "soundscape_reverb",
        "x-owner-app": "soundscape",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SoundscapeReverbInput"
              },
              "examples": {
                "example1": {
                  "summary": "Clap in a concert hall",
                  "value": {
                    "file": {
                      "filename": "clap.wav",
                      "contentType": "audio/wav",
                      "contentBase64": "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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
                    },
                    "preset": "hall",
                    "keepTail": true
                  }
                },
                "example2": {
                  "summary": "Two tones in a cathedral with only the reverb (dry 0)",
                  "value": {
                    "file": {
                      "filename": "two-tones.wav",
                      "contentType": "audio/wav",
                      "contentBase64": "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"
                    },
                    "preset": "cathedral",
                    "rt60": 3,
                    "dry": 0,
                    "wet": 0.25
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SoundscapeReverbResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/audio-converter/calculate": {
      "post": {
        "operationId": "calculateAudioConverter",
        "summary": "Convert MP3, WAV, FLAC, Ogg, Opus, M4A and AIFF with bitrate and sample-rate control.",
        "description": "Converts audio between MP3, WAV, FLAC, Ogg Vorbis, Ogg Opus, M4A (AAC) and AIFF with ffmpeg. Choose constant bitrate or VBR quality, sample rate, mono/stereo and bit depth; tags and album covers are kept where the format supports them. Shows an ffprobe report before and after, with a player and a download.\n\nMethodology:\n- The container is detected from the first bytes of the file (not the name) and passed to ffmpeg explicitly, so playlists or files that reference other files are never opened.\n- ffprobe reads codec, sample rate, channels, bitrate, duration and tags before conversion. ffmpeg then decodes the first audio track and encodes it with LAME (MP3), the native AAC encoder (M4A), libvorbis, libopus, FLAC or PCM (WAV/AIFF).\n- Lossy formats use either a fixed/average bitrate or a VBR quality level (MP3 -q:a, Vorbis -q:a; Opus/AAC use VBR at a matching target bitrate). Lossless formats ignore the bitrate.\n- Opus only supports 8/12/16/24/48 kHz and MP3 at most 48 kHz; other rates are resampled to the nearest supported rate and you get a warning.\n- Tags are copied with -map_metadata 0; album covers are copied for MP3, M4A and FLAC (Ogg/WAV/AIFF covers are not supported by ffmpeg muxers). Encoder version tags and timestamps are not written, so the same input always gives the same file.\n- ffprobe reads the result again for the before/after report, including stream-level tags (Ogg Vorbis/Opus store tags per stream); tagsKept is only true when every source tag is found in the result. The reported sample rate is the one of the finished file — Opus always decodes at 48 kHz.\n\nConverting a lossy file (MP3, AAC, Ogg) to another lossy format or to a lossless format cannot restore lost quality.",
        "tags": [
          "media"
        ],
        "x-mcp-tool": "audio_converter",
        "x-owner-app": "reelcraft",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioConverterInput"
              },
              "examples": {
                "example1": {
                  "summary": "MP3 tone to Ogg Opus 64 kbit/s, mono",
                  "value": {
                    "file": {
                      "filename": "tone.mp3",
                      "contentType": "audio/mpeg",
                      "contentBase64": "SUQzAwAAAAAANFRJVDIAAAALAAAAVGVzdCB0b25lAFRQRTEAAAALAAAAdXNlZnVsd2ViAAAAAAAAAAAAAAD/4zjAAAAAAAAAAAAASW5mbwAAAA8AAAAJAAADYABVVVVVVVVVVVVVVWpqampqampqampqgICAgICAgICAgICVlZWVlZWVlZWVlaqqqqqqqqqqqqqqwMDAwMDAwMDAwMDV1dXV1dXV1dXV1erq6urq6urq6urq//////////////8AAAAATGF2ZiBsYW1lAAAAAAAAAAAAAAAAJAJgAAAAAAAAA2DhWsr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xjEAAyokqh5SAAAD22/4d3d3v/RESv5d3f5SSwbgLgLgLg3PlAxw/yhz9/R7+j38HAxkAffWBDmgH+Ud39CgQkKRFiBEz//4xjECA3w6qDBlDgA5MkBJoc7/EBhyQNsGAOBS4BzxgokpgaxKNMIQcg9HhsNv/x0ajU4GhL/hIGhKdBq////////////////4xjECw8QpjgB3gAA+GhGAAYBYAxfoGgIGBqDgYSYPhhOi9GJrekZAAshh+g1GCWCYAgOwqAOYCAAJbFkl+rfoA//b7/L5fX/4xjECQqwjo5YCbRi/n3qiICUpOT5DnL9WR4Ms63+X06P/v9H/+//+nJf+t9GXtsQBtdfrcl5/f+V1eIwQL/nESYRBr0i8sr/4xjEGQtIloJYCnZigON9/lP9n9b/T9v37q/9P2//1fRV///5O3qXQOATAhMCmwMhwSPQYQHRBgcjAEgOoWAuAIB4YAGRACL/4xjEJgpYpjQABvxEbLUb6v///jGAGAADfQMAIBwMCwEgEAvAxGjLAx9m1A6uxbA3pD+AwbAgAwDAJACBeAkAoj4ZgQohCDD/4xjENw04pkABVgAAAR/itBmDQVp/WLIJwRwGKJAwM/DsNjcZwDM5yDpBHgAgGAy0hSC/v8A3wDWMsT8L2PP//zMe5udL5uv/4xjEPRaRlozJlWgAL///+brMwdB8Bn//oB8BmiY1//9BMaaJuNf//3IVBd2AA//aqqp/9VVVOdqOJAwVLAwCARKyIBJV/QX/4xjEHQ1AmqR5xggBBn/0FCv8FBn/FBQp/xQYK/oKFHfiSf/9TEFNRTQuMSAoYWxwaGEgMClVVVVVVVVVVVVVVVVVVVVVVVU="
                    },
                    "format": "opus",
                    "bitrate": "64",
                    "channels": "1"
                  }
                },
                "example2": {
                  "summary": "MP3 to lossless FLAC with tags",
                  "value": {
                    "file": {
                      "filename": "tone.mp3",
                      "contentType": "audio/mpeg",
                      "contentBase64": "SUQzAwAAAAAANFRJVDIAAAALAAAAVGVzdCB0b25lAFRQRTEAAAALAAAAdXNlZnVsd2ViAAAAAAAAAAAAAAD/4zjAAAAAAAAAAAAASW5mbwAAAA8AAAAJAAADYABVVVVVVVVVVVVVVWpqampqampqampqgICAgICAgICAgICVlZWVlZWVlZWVlaqqqqqqqqqqqqqqwMDAwMDAwMDAwMDV1dXV1dXV1dXV1erq6urq6urq6urq//////////////8AAAAATGF2ZiBsYW1lAAAAAAAAAAAAAAAAJAJgAAAAAAAAA2DhWsr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4xjEAAyokqh5SAAAD22/4d3d3v/RESv5d3f5SSwbgLgLgLg3PlAxw/yhz9/R7+j38HAxkAffWBDmgH+Ud39CgQkKRFiBEz//4xjECA3w6qDBlDgA5MkBJoc7/EBhyQNsGAOBS4BzxgokpgaxKNMIQcg9HhsNv/x0ajU4GhL/hIGhKdBq////////////////4xjECw8QpjgB3gAA+GhGAAYBYAxfoGgIGBqDgYSYPhhOi9GJrekZAAshh+g1GCWCYAgOwqAOYCAAJbFkl+rfoA//b7/L5fX/4xjECQqwjo5YCbRi/n3qiICUpOT5DnL9WR4Ms63+X06P/v9H/+//+nJf+t9GXtsQBtdfrcl5/f+V1eIwQL/nESYRBr0i8sr/4xjEGQtIloJYCnZigON9/lP9n9b/T9v37q/9P2//1fRV///5O3qXQOATAhMCmwMhwSPQYQHRBgcjAEgOoWAuAIB4YAGRACL/4xjEJgpYpjQABvxEbLUb6v///jGAGAADfQMAIBwMCwEgEAvAxGjLAx9m1A6uxbA3pD+AwbAgAwDAJACBeAkAoj4ZgQohCDD/4xjENw04pkABVgAAAR/itBmDQVp/WLIJwRwGKJAwM/DsNjcZwDM5yDpBHgAgGAy0hSC/v8A3wDWMsT8L2PP//zMe5udL5uv/4xjEPRaRlozJlWgAL///+brMwdB8Bn//oB8BmiY1//9BMaaJuNf//3IVBd2AA//aqqp/9VVVOdqOJAwVLAwCARKyIBJV/QX/4xjEHQ1AmqR5xggBBn/0FCv8FBn/FBQp/xQYK/oKFHfiSf/9TEFNRTQuMSAoYWxwaGEgMClVVVVVVVVVVVVVVVVVVVVVVVU="
                    },
                    "format": "flac"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudioConverterResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workflows": {
      "get": {
        "operationId": "listWorkflows",
        "summary": "Multi-tool workflows",
        "responses": {
          "200": {
            "description": "Workflow list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "SoundscapeRecordingSearchInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "query": {
            "title": "Search words",
            "description": "Optional plain words such as “rain forest” or “harbour”. Search operators are ignored.",
            "type": "string",
            "maxLength": 120,
            "default": ""
          },
          "category": {
            "title": "Sound category",
            "type": "string",
            "enum": [
              "any",
              "wildlife",
              "weather",
              "water",
              "city",
              "machines",
              "voices",
              "ambience"
            ],
            "default": "any"
          },
          "region": {
            "title": "Region",
            "description": "“Whole world” lists only recordings with coordinates.",
            "type": "string",
            "enum": [
              "world",
              "europe",
              "british-isles",
              "mediterranean",
              "africa",
              "middle-east",
              "south-asia",
              "east-asia",
              "southeast-asia",
              "oceania",
              "north-america",
              "central-america",
              "south-america",
              "arctic",
              "antarctica",
              "point",
              "anywhere"
            ],
            "default": "world"
          },
          "lat": {
            "title": "Latitude (for “Around a point”)",
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "default": 52.52,
            "x-unit": "°"
          },
          "lon": {
            "title": "Longitude (for “Around a point”)",
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "default": 13.405,
            "x-unit": "°"
          },
          "radiusKm": {
            "title": "Radius (for “Around a point”)",
            "type": "number",
            "minimum": 1,
            "maximum": 20000,
            "default": 100,
            "x-unit": "km"
          },
          "limit": {
            "title": "Results per page",
            "type": "number",
            "minimum": 1,
            "maximum": 50,
            "default": 20
          },
          "offset": {
            "title": "Skip the first results",
            "description": "Use the “next offset” of a previous search to get the next page.",
            "type": "number",
            "minimum": 0,
            "maximum": 950,
            "default": 0
          },
          "includeRestricted": {
            "title": "Also list recordings that cannot be remixed",
            "description": "They are marked and never usable in Soundscape Atlas scenes.",
            "type": "boolean",
            "default": false
          }
        },
        "required": []
      },
      "SoundscapeRecordingSearchResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "source",
              "searchString",
              "apiUrl",
              "params",
              "count",
              "recordings",
              "skipped",
              "nextOffset"
            ],
            "properties": {
              "source": {
                "type": "string"
              },
              "searchString": {
                "type": "string"
              },
              "apiUrl": {
                "type": "string"
              },
              "params": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "query",
                  "category",
                  "region",
                  "lat",
                  "lon",
                  "radiusKm",
                  "limit",
                  "offset",
                  "includeRestricted"
                ],
                "properties": {
                  "query": {
                    "type": "string"
                  },
                  "category": {
                    "type": "string"
                  },
                  "region": {
                    "type": "string"
                  },
                  "lat": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "lon": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "radiusKm": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "limit": {
                    "type": "integer"
                  },
                  "offset": {
                    "type": "integer"
                  },
                  "includeRestricted": {
                    "type": "boolean"
                  }
                }
              },
              "count": {
                "type": "integer"
              },
              "recordings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "source",
                    "title",
                    "fileName",
                    "pageUrl",
                    "fileUrl",
                    "mp3Url",
                    "mime",
                    "durationSeconds",
                    "sizeBytes",
                    "lat",
                    "lon",
                    "author",
                    "authorUrl",
                    "credit",
                    "description",
                    "date",
                    "commonsCategories",
                    "tags",
                    "licence",
                    "attribution"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "source": {
                      "const": "wikimedia-commons"
                    },
                    "title": {
                      "type": "string"
                    },
                    "fileName": {
                      "type": "string"
                    },
                    "pageUrl": {
                      "type": "string"
                    },
                    "fileUrl": {
                      "type": "string"
                    },
                    "mp3Url": {
                      "type": "string"
                    },
                    "mime": {
                      "type": "string"
                    },
                    "durationSeconds": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "sizeBytes": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "lat": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "lon": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "author": {
                      "type": "string"
                    },
                    "authorUrl": {
                      "type": "string"
                    },
                    "credit": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "date": {
                      "type": "string"
                    },
                    "commonsCategories": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "enum": [
                          "wildlife",
                          "weather",
                          "water",
                          "city",
                          "machines",
                          "voices",
                          "ambience",
                          "music"
                        ]
                      }
                    },
                    "licence": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "code",
                        "name",
                        "url",
                        "family",
                        "allowed",
                        "attributionRequired",
                        "shareAlike",
                        "reason"
                      ],
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        },
                        "family": {
                          "enum": [
                            "cc0",
                            "pd",
                            "cc-by",
                            "cc-by-sa",
                            "restricted",
                            "unknown"
                          ]
                        },
                        "allowed": {
                          "type": "boolean"
                        },
                        "attributionRequired": {
                          "type": "boolean"
                        },
                        "shareAlike": {
                          "type": "boolean"
                        },
                        "reason": {
                          "type": "string"
                        }
                      }
                    },
                    "attribution": {
                      "type": "string"
                    }
                  }
                }
              },
              "skipped": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "licence",
                  "music",
                  "invalid"
                ],
                "properties": {
                  "licence": {
                    "type": "integer"
                  },
                  "music": {
                    "type": "integer"
                  },
                  "invalid": {
                    "type": "integer"
                  }
                }
              },
              "nextOffset": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SoundscapeAmbienceGeneratorInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "kind": {
            "title": "Sound",
            "type": "string",
            "enum": [
              "rain",
              "wind",
              "stream",
              "fire",
              "hum",
              "drone"
            ],
            "default": "rain"
          },
          "duration": {
            "title": "Loop length",
            "description": "Up to 60 seconds (stereo up to 48 kHz). A seamless loop can be repeated as long as you like in any player that loops. The WAV file is kept on the server for about 2 hours so you can download it, then deleted.",
            "type": "number",
            "minimum": 1,
            "maximum": 60,
            "default": 20,
            "x-unit": "s"
          },
          "sampleRate": {
            "title": "Sample rate",
            "type": "string",
            "enum": [
              "8000",
              "16000",
              "22050",
              "32000",
              "44100",
              "48000",
              "96000"
            ],
            "default": "44100"
          },
          "channels": {
            "title": "Channels",
            "type": "string",
            "enum": [
              "stereo",
              "mono"
            ],
            "default": "stereo"
          },
          "level": {
            "title": "Level (RMS)",
            "type": "number",
            "minimum": -60,
            "maximum": -6,
            "default": -20,
            "x-unit": "dBFS"
          },
          "loop": {
            "title": "Seamless loop",
            "type": "boolean",
            "default": true
          },
          "loopCrossfade": {
            "title": "Loop crossfade",
            "description": "Longer crossfades hide the seam better; at most a quarter of the loop length is used.",
            "type": "number",
            "minimum": 0.05,
            "maximum": 10,
            "default": 1,
            "x-unit": "s"
          },
          "room": {
            "title": "Room",
            "type": "string",
            "enum": [
              "none",
              "small-room",
              "living-room",
              "studio",
              "hall",
              "cathedral",
              "cave",
              "forest"
            ],
            "default": "none"
          },
          "intensity": {
            "title": "Intensity (rain, wind strength, water flow, fire size)",
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 0.5
          },
          "density": {
            "title": "Raindrops per second at full intensity (rain)",
            "type": "number",
            "minimum": 0,
            "maximum": 400,
            "default": 120
          },
          "brightness": {
            "title": "Brightness (rain, fire, hum, drone)",
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 0.5
          },
          "gustiness": {
            "title": "Gustiness (wind)",
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 0.5
          },
          "pitch": {
            "title": "Pitch (wind) or water size (stream: 0 brook … 1 river)",
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 0.5
          },
          "detail": {
            "title": "Bubbles (stream) or crackles (fire)",
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 0.5
          },
          "frequency": {
            "title": "Frequency (hum fundamental or drone root)",
            "description": "Empty = 100 Hz hum (transformer hum on 50 Hz mains; use 120 for 60 Hz mains) or a 55 Hz drone root.",
            "type": "number",
            "minimum": 20,
            "maximum": 1000,
            "x-unit": "Hz"
          },
          "partials": {
            "title": "Harmonics (hum, 1–16) or voices (drone, 2–8)",
            "description": "Empty = 8 harmonics or 4 voices.",
            "type": "integer",
            "minimum": 1,
            "maximum": 16
          },
          "detuneCents": {
            "title": "Detune spread (drone)",
            "type": "number",
            "minimum": 0,
            "maximum": 50,
            "default": 8,
            "x-unit": "cents"
          },
          "motion": {
            "title": "Slow movement (drone LFO depth, hum wobble)",
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 0.5
          },
          "lfoRate": {
            "title": "LFO rate (drone)",
            "type": "number",
            "minimum": 0.01,
            "maximum": 1,
            "default": 0.08,
            "x-unit": "Hz"
          },
          "roomToneDb": {
            "title": "Room tone level relative to the hum (hum)",
            "type": "number",
            "minimum": -60,
            "maximum": 0,
            "default": -24,
            "x-unit": "dB"
          },
          "encoding": {
            "title": "File format",
            "type": "string",
            "enum": [
              "pcm16",
              "float32"
            ],
            "default": "pcm16"
          },
          "seed": {
            "title": "Seed",
            "description": "Same seed and settings = the same file. Change it for different drops, gusts and crackles.",
            "type": "string",
            "maxLength": 40,
            "default": "1"
          }
        },
        "required": []
      },
      "SoundscapeAmbienceGeneratorResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "kind",
              "sampleRate",
              "channels",
              "durationSeconds",
              "frames",
              "loop",
              "room",
              "seed",
              "encoding",
              "parameters",
              "events",
              "quantisedFrequencyHz",
              "levelReduced",
              "spectrum",
              "seam",
              "artifact"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "rain",
                  "wind",
                  "stream",
                  "fire",
                  "hum",
                  "drone"
                ]
              },
              "sampleRate": {
                "type": "integer"
              },
              "channels": {
                "type": "integer"
              },
              "durationSeconds": {
                "type": "number"
              },
              "frames": {
                "type": "integer"
              },
              "loop": {
                "type": "boolean"
              },
              "room": {
                "type": "string"
              },
              "seed": {
                "type": "string"
              },
              "encoding": {
                "type": "string"
              },
              "parameters": {
                "type": "object",
                "description": "All synthesis parameters after defaults and clamping (what was rendered)."
              },
              "events": {
                "type": "integer",
                "description": "Raindrops, bubbles or crackles that were synthesized."
              },
              "quantisedFrequencyHz": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Hum fundamental or drone root after rounding to whole cycles per loop (looped files only)."
              },
              "levelReduced": {
                "type": "boolean"
              },
              "spectrum": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "centroidHz",
                  "rolloffHz",
                  "slopeDbPerOctave",
                  "peaks",
                  "rmsDb",
                  "peakDb",
                  "crestDb",
                  "octaveBands"
                ],
                "properties": {
                  "centroidHz": {
                    "type": "number",
                    "description": "Power-weighted mean frequency (spectral centroid)."
                  },
                  "rolloffHz": {
                    "type": "number",
                    "description": "Frequency below which 85 % of the power lies."
                  },
                  "slopeDbPerOctave": {
                    "type": "number",
                    "description": "Least-squares slope of the 1/3-octave power spectrum between 100 Hz and min(10 kHz, sample rate / 4)."
                  },
                  "peaks": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "frequencyHz",
                        "levelDb"
                      ],
                      "properties": {
                        "frequencyHz": {
                          "type": "number"
                        },
                        "levelDb": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  "rmsDb": {
                    "type": "number"
                  },
                  "peakDb": {
                    "type": "number"
                  },
                  "crestDb": {
                    "type": "number"
                  },
                  "octaveBands": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "centerHz",
                        "relativeDb"
                      ],
                      "properties": {
                        "centerHz": {
                          "type": "number"
                        },
                        "relativeDb": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              },
              "seam": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "seamJump",
                  "maxInnerJump"
                ],
                "properties": {
                  "seamJump": {
                    "type": "number"
                  },
                  "maxInnerJump": {
                    "type": "number"
                  }
                }
              },
              "artifact": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "artifactId",
                  "filename",
                  "mime",
                  "bytes",
                  "sha256",
                  "path"
                ],
                "properties": {
                  "artifactId": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "sha256": {
                    "type": "string"
                  },
                  "path": {
                    "type": "string",
                    "description": "Download path on the same site (valid for about 2 hours)."
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SoundscapeNoiseGeneratorInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "title": "Noise colour",
            "type": "string",
            "enum": [
              "white",
              "pink",
              "brown",
              "blue",
              "violet"
            ],
            "default": "pink"
          },
          "duration": {
            "title": "Duration",
            "description": "Up to 120 seconds (stereo at 96 kHz: up to 60 seconds). The WAV file is kept on the server for about 2 hours so you can download it, then deleted.",
            "type": "number",
            "minimum": 0.1,
            "maximum": 120,
            "default": 10,
            "x-unit": "s"
          },
          "sampleRate": {
            "title": "Sample rate",
            "type": "string",
            "enum": [
              "8000",
              "16000",
              "22050",
              "32000",
              "44100",
              "48000",
              "96000"
            ],
            "default": "44100"
          },
          "channels": {
            "title": "Channels",
            "type": "string",
            "enum": [
              "stereo",
              "mono"
            ],
            "default": "stereo"
          },
          "level": {
            "title": "Level (RMS)",
            "description": "Average level. It is lowered automatically if the peaks would clip.",
            "type": "number",
            "minimum": -60,
            "maximum": -6,
            "default": -18,
            "x-unit": "dBFS"
          },
          "fadeIn": {
            "title": "Fade in",
            "description": "Ignored for seamless loops.",
            "type": "number",
            "minimum": 0,
            "maximum": 30,
            "default": 0.5,
            "x-unit": "s"
          },
          "fadeOut": {
            "title": "Fade out",
            "description": "Ignored for seamless loops.",
            "type": "number",
            "minimum": 0,
            "maximum": 30,
            "default": 0.5,
            "x-unit": "s"
          },
          "loop": {
            "title": "Seamless loop (the end flows into the start)",
            "type": "boolean",
            "default": false
          },
          "encoding": {
            "title": "File format",
            "type": "string",
            "enum": [
              "pcm16",
              "float32"
            ],
            "default": "pcm16"
          },
          "seed": {
            "title": "Seed",
            "description": "Same seed and settings = the same file, byte for byte. Change it for a different noise.",
            "type": "string",
            "maxLength": 40,
            "default": "1"
          }
        },
        "required": []
      },
      "SoundscapeNoiseGeneratorResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "noiseType",
              "sampleRate",
              "channels",
              "durationSeconds",
              "frames",
              "encoding",
              "seed",
              "loop",
              "expectedSlopeDbPerOctave",
              "levelReduced",
              "spectrum",
              "seam",
              "artifact"
            ],
            "properties": {
              "noiseType": {
                "type": "string",
                "enum": [
                  "white",
                  "pink",
                  "brown",
                  "blue",
                  "violet"
                ]
              },
              "sampleRate": {
                "type": "integer"
              },
              "channels": {
                "type": "integer"
              },
              "durationSeconds": {
                "type": "number"
              },
              "frames": {
                "type": "integer"
              },
              "encoding": {
                "type": "string"
              },
              "seed": {
                "type": "string"
              },
              "loop": {
                "type": "boolean"
              },
              "expectedSlopeDbPerOctave": {
                "type": "number",
                "description": "Nominal slope of the chosen colour."
              },
              "levelReduced": {
                "type": "boolean",
                "description": "True when the requested RMS level would have clipped and the level was lowered."
              },
              "spectrum": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "centroidHz",
                  "rolloffHz",
                  "slopeDbPerOctave",
                  "peaks",
                  "rmsDb",
                  "peakDb",
                  "crestDb",
                  "octaveBands"
                ],
                "properties": {
                  "centroidHz": {
                    "type": "number",
                    "description": "Power-weighted mean frequency (spectral centroid)."
                  },
                  "rolloffHz": {
                    "type": "number",
                    "description": "Frequency below which 85 % of the power lies."
                  },
                  "slopeDbPerOctave": {
                    "type": "number",
                    "description": "Least-squares slope of the 1/3-octave power spectrum between 100 Hz and min(10 kHz, sample rate / 4)."
                  },
                  "peaks": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "frequencyHz",
                        "levelDb"
                      ],
                      "properties": {
                        "frequencyHz": {
                          "type": "number"
                        },
                        "levelDb": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  "rmsDb": {
                    "type": "number"
                  },
                  "peakDb": {
                    "type": "number"
                  },
                  "crestDb": {
                    "type": "number"
                  },
                  "octaveBands": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "centerHz",
                        "relativeDb"
                      ],
                      "properties": {
                        "centerHz": {
                          "type": "number"
                        },
                        "relativeDb": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              },
              "seam": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "seamJump",
                  "maxInnerJump"
                ],
                "properties": {
                  "seamJump": {
                    "type": "number"
                  },
                  "maxInnerJump": {
                    "type": "number"
                  }
                }
              },
              "artifact": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "artifactId",
                  "filename",
                  "mime",
                  "bytes",
                  "sha256",
                  "path"
                ],
                "properties": {
                  "artifactId": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "sha256": {
                    "type": "string"
                  },
                  "path": {
                    "type": "string",
                    "description": "Download path on the same site (valid for about 2 hours)."
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SoundscapeSpectrumAnalyzerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "file": {
            "title": "Audio file",
            "description": "WAV (PCM 8/16/24/32-bit or float), or MP3, FLAC, Ogg/Opus, M4A, AIFF; max 50 MB, the first 10 minutes are analysed. Files are processed in a private temporary folder and not kept. Upload as {filename, contentType?, contentBase64}. Max 51200 KiB. Accepts .wav,.mp3,.flac,.ogg,.oga,.opus,.m4a,.aac,.aif,.aiff,audio/*.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "fftSize": {
            "title": "FFT size",
            "description": "Larger = finer frequency resolution (sample rate ÷ size), fewer averaged frames.",
            "type": "string",
            "enum": [
              "1024",
              "2048",
              "4096",
              "8192",
              "16384"
            ],
            "default": "4096"
          },
          "window": {
            "title": "Window",
            "type": "string",
            "enum": [
              "hann",
              "hamming",
              "rectangular"
            ],
            "default": "hann"
          },
          "peaks": {
            "title": "Peaks to list",
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 5
          }
        },
        "required": [
          "file"
        ]
      },
      "SoundscapeSpectrumAnalyzerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "decodedBy",
              "container",
              "format",
              "sampleRate",
              "channels",
              "durationSeconds",
              "analysedSeconds",
              "fftSize",
              "window",
              "binHz",
              "framesAveraged",
              "levels",
              "centroidHz",
              "rolloffHz",
              "slopeDbPerOctave",
              "peaks",
              "octaveBands",
              "waveform"
            ],
            "properties": {
              "decodedBy": {
                "type": "string",
                "enum": [
                  "engine",
                  "ffmpeg"
                ],
                "description": "engine = WAV read directly; ffmpeg = other formats decoded to 32-bit float first."
              },
              "container": {
                "type": "string"
              },
              "format": {
                "type": "string",
                "description": "Sample format of the decoded data, e.g. \"PCM 16-bit\"."
              },
              "sampleRate": {
                "type": "integer"
              },
              "channels": {
                "type": "integer"
              },
              "durationSeconds": {
                "type": "number"
              },
              "analysedSeconds": {
                "type": "number"
              },
              "fftSize": {
                "type": "integer"
              },
              "window": {
                "type": "string"
              },
              "binHz": {
                "type": "number",
                "description": "Frequency resolution (sample rate ÷ FFT size)."
              },
              "framesAveraged": {
                "type": "integer"
              },
              "levels": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "rmsDb",
                  "peakDb",
                  "crestDb",
                  "dcOffset",
                  "clippedSamples",
                  "perChannel"
                ],
                "properties": {
                  "rmsDb": {
                    "type": "number"
                  },
                  "peakDb": {
                    "type": "number"
                  },
                  "crestDb": {
                    "type": "number"
                  },
                  "dcOffset": {
                    "type": "number"
                  },
                  "clippedSamples": {
                    "type": "integer"
                  },
                  "perChannel": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "channel",
                        "rmsDb",
                        "peakDb"
                      ],
                      "properties": {
                        "channel": {
                          "type": "integer"
                        },
                        "rmsDb": {
                          "type": "number"
                        },
                        "peakDb": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              },
              "centroidHz": {
                "type": "number"
              },
              "rolloffHz": {
                "type": "number"
              },
              "slopeDbPerOctave": {
                "type": "number"
              },
              "peaks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "frequencyHz",
                    "levelDb"
                  ],
                  "properties": {
                    "frequencyHz": {
                      "type": "number"
                    },
                    "levelDb": {
                      "type": "number"
                    }
                  }
                }
              },
              "octaveBands": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "centerHz",
                    "relativeDb"
                  ],
                  "properties": {
                    "centerHz": {
                      "type": "number"
                    },
                    "relativeDb": {
                      "type": "number"
                    }
                  }
                }
              },
              "waveform": {
                "type": "array",
                "description": "100 columns of [min, max] sample values over the analysed time.",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "number"
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SoundscapeReverbInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "file": {
            "title": "Audio file",
            "description": "WAV directly, other formats are decoded with ffmpeg; up to 120 seconds, 8–96 kHz. The WAV file is kept on the server for about 2 hours so you can download it, then deleted. Upload as {filename, contentType?, contentBase64}. Max 51200 KiB. Accepts .wav,.mp3,.flac,.ogg,.oga,.opus,.m4a,.aac,.aif,.aiff,audio/*.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "preset": {
            "title": "Room",
            "type": "string",
            "enum": [
              "small-room",
              "living-room",
              "studio",
              "hall",
              "cathedral",
              "cave",
              "forest"
            ],
            "default": "hall"
          },
          "rt60": {
            "title": "Reverberation time (optional)",
            "description": "Empty = the preset value. Time for the reverb to fall by 60 dB.",
            "type": "number",
            "minimum": 0.1,
            "maximum": 12,
            "x-unit": "s"
          },
          "wet": {
            "title": "Reverb level (optional, 0–1)",
            "description": "Empty = the preset value.",
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "dry": {
            "title": "Original level (optional, 0–1)",
            "description": "Empty = the preset value; 0 gives only the reverb.",
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "keepTail": {
            "title": "Keep the reverb tail (the file gets longer)",
            "type": "boolean",
            "default": true
          },
          "encoding": {
            "title": "File format",
            "type": "string",
            "enum": [
              "auto",
              "pcm16",
              "float32"
            ],
            "default": "auto"
          }
        },
        "required": [
          "file"
        ]
      },
      "SoundscapeReverbResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "preset",
              "parameters",
              "measuredRt60Seconds",
              "gainReductionDb",
              "inputSeconds",
              "outputSeconds",
              "tailSeconds",
              "sampleRate",
              "channelsIn",
              "decodedBy",
              "before",
              "after",
              "artifact"
            ],
            "properties": {
              "preset": {
                "type": "string"
              },
              "parameters": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "rt60",
                  "damping",
                  "wet",
                  "dry",
                  "width",
                  "preDelayMs"
                ],
                "properties": {
                  "rt60": {
                    "type": "number"
                  },
                  "damping": {
                    "type": "number"
                  },
                  "wet": {
                    "type": "number"
                  },
                  "dry": {
                    "type": "number"
                  },
                  "width": {
                    "type": "number"
                  },
                  "preDelayMs": {
                    "type": "number"
                  }
                }
              },
              "measuredRt60Seconds": {
                "type": "number",
                "description": "RT60 measured on the impulse response (Schroeder integration, T20, low/mid frequencies)."
              },
              "gainReductionDb": {
                "type": "number",
                "description": "How much the whole result was turned down to avoid clipping (0 = not needed)."
              },
              "inputSeconds": {
                "type": "number"
              },
              "outputSeconds": {
                "type": "number"
              },
              "tailSeconds": {
                "type": "number"
              },
              "sampleRate": {
                "type": "integer"
              },
              "channelsIn": {
                "type": "integer"
              },
              "decodedBy": {
                "type": "string",
                "enum": [
                  "engine",
                  "ffmpeg"
                ]
              },
              "before": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "rmsDb",
                  "peakDb",
                  "centroidHz"
                ],
                "properties": {
                  "rmsDb": {
                    "type": "number"
                  },
                  "peakDb": {
                    "type": "number"
                  },
                  "centroidHz": {
                    "type": "number"
                  }
                }
              },
              "after": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "rmsDb",
                  "peakDb",
                  "centroidHz"
                ],
                "properties": {
                  "rmsDb": {
                    "type": "number"
                  },
                  "peakDb": {
                    "type": "number"
                  },
                  "centroidHz": {
                    "type": "number"
                  }
                }
              },
              "artifact": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "artifactId",
                  "filename",
                  "mime",
                  "bytes",
                  "sha256",
                  "path"
                ],
                "properties": {
                  "artifactId": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "sha256": {
                    "type": "string"
                  },
                  "path": {
                    "type": "string",
                    "description": "Download path on the same site (valid for about 2 hours)."
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "AudioConverterInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "file": {
            "title": "Audio file",
            "description": "MP3, WAV, FLAC, Ogg/Opus, M4A/AAC, AIFF or WMA (also the first audio track of a video), max 100 MB and 2 hours. Processed on our server in a private temporary folder that is deleted afterwards; the result can be downloaded for about 2 hours. Upload as {filename, contentType?, contentBase64}. Max 102400 KiB. Accepts .mp3,.wav,.flac,.ogg,.oga,.opus,.m4a,.aac,.aif,.aiff,.wma,.mp4,.mov,.webm,.mkv,audio/*.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "format": {
            "title": "Output format",
            "type": "string",
            "enum": [
              "mp3",
              "m4a",
              "ogg",
              "opus",
              "flac",
              "wav",
              "aiff"
            ],
            "default": "mp3"
          },
          "mode": {
            "title": "Bitrate mode (lossy formats)",
            "type": "string",
            "enum": [
              "cbr",
              "vbr"
            ],
            "default": "cbr"
          },
          "bitrate": {
            "title": "Bitrate",
            "description": "Used in fixed-bitrate mode. 128 kbit/s is fine for speech, 192–320 kbit/s for music.",
            "type": "string",
            "enum": [
              "32",
              "48",
              "64",
              "96",
              "128",
              "160",
              "192",
              "224",
              "256",
              "320"
            ],
            "default": "192"
          },
          "vbrQuality": {
            "title": "VBR quality",
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "default": "high"
          },
          "sampleRate": {
            "title": "Sample rate",
            "type": "string",
            "enum": [
              "keep",
              "8000",
              "16000",
              "22050",
              "32000",
              "44100",
              "48000",
              "96000"
            ],
            "default": "keep"
          },
          "channels": {
            "title": "Channels",
            "type": "string",
            "enum": [
              "keep",
              "1",
              "2"
            ],
            "default": "keep"
          },
          "bitDepth": {
            "title": "Bit depth (WAV, FLAC, AIFF)",
            "type": "string",
            "enum": [
              "16",
              "24"
            ],
            "default": "16"
          },
          "keepTags": {
            "title": "Keep tags (title, artist, album …) and the album cover where the format supports it",
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "file"
        ]
      },
      "AudioConverterResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "inputContainer",
              "outputFormat",
              "encoderSetting",
              "sampleRate",
              "channels",
              "durationSeconds",
              "originalBytes",
              "outputBytes",
              "tagsKept",
              "coverKept",
              "before",
              "after",
              "artifact"
            ],
            "properties": {
              "inputContainer": {
                "type": "string"
              },
              "outputFormat": {
                "type": "string",
                "enum": [
                  "mp3",
                  "wav",
                  "flac",
                  "ogg",
                  "opus",
                  "m4a",
                  "aiff"
                ]
              },
              "encoderSetting": {
                "type": "string"
              },
              "sampleRate": {
                "type": "integer"
              },
              "channels": {
                "type": "integer"
              },
              "durationSeconds": {
                "type": "number"
              },
              "originalBytes": {
                "type": "integer"
              },
              "outputBytes": {
                "type": "integer"
              },
              "tagsKept": {
                "type": "boolean",
                "description": "True when every source tag was found in the result (format- or stream-level tags); false when tags were removed or the output format could not store some of them."
              },
              "tagsMissing": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Source tags that the output format could not store."
              },
              "outputSampleRate": {
                "type": "integer",
                "description": "Sample rate the finished file reports (ffprobe). Differs from sampleRate (the rate given to the encoder) for Opus, which always decodes at 48000 Hz."
              },
              "coverKept": {
                "type": "boolean"
              },
              "before": {
                "type": "object",
                "required": [
                  "container",
                  "durationSeconds",
                  "bytes",
                  "streams"
                ],
                "properties": {
                  "container": {
                    "type": "string"
                  },
                  "containerLabel": {
                    "type": "string",
                    "description": "Readable format name, e.g. MP4 instead of the demuxer family \"mov,mp4,m4a,3gp,3g2,mj2\"."
                  },
                  "durationSeconds": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "bitRateKbps": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "streams": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "tags": {
                    "type": "object"
                  }
                }
              },
              "after": {
                "type": "object",
                "required": [
                  "container",
                  "durationSeconds",
                  "bytes",
                  "streams"
                ],
                "properties": {
                  "container": {
                    "type": "string"
                  },
                  "containerLabel": {
                    "type": "string",
                    "description": "Readable format name, e.g. MP4 instead of the demuxer family \"mov,mp4,m4a,3gp,3g2,mj2\"."
                  },
                  "durationSeconds": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "bitRateKbps": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "streams": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "tags": {
                    "type": "object"
                  }
                }
              },
              "artifact": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "artifactId",
                  "filename",
                  "mime",
                  "bytes",
                  "sha256",
                  "path"
                ],
                "properties": {
                  "artifactId": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "sha256": {
                    "type": "string"
                  },
                  "path": {
                    "type": "string",
                    "description": "Download path on the same site (valid for about 2 hours)."
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      }
    }
  }
}