# Ignition perspective Audio component with no WEB dev module

**URL:** <https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [April 30, 2026, 7:36pm UTC](https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338 "2026-04-30T19:36:57Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Marco\_Palomino](https://avatars.discourse-cdn.com/v4/letter/m/779978/32.png) [@Marco\_Palomino](https://forum.inductiveautomation.com/u/Marco_Palomino)\
**Post date:** [April 30, 2026, 7:36pm UTC](https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338/1 "2026-04-30T19:36:57Z")

</div>

I am trying to play an alarm sound on a remote client PC using Perspective. I found the Audio component and have been reading several forum posts, but many solutions mention using the WebDev module. I do not currently have WebDev installed, so I am wondering if there is an alternative way to accomplish this.

My goal is to trigger a .wav sound file when an event or tag changes, and have it play through the audio speakers of the remote client running the Perspective session.

I also have some questions about where the sound file should be stored. Does the .wav file need to be placed on the PC where the Gateway is running, or can it be uploaded somewhere inside the Designer or project resources and referenced from there?

I already have the .wav file ready. I would appreciate any guidance on the best approach for this setup.

Thank you.

---

<div class="post-metadata">

**Author:** ![dillon](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dillon/32/81537_2.png) [@dillon](https://forum.inductiveautomation.com/u/dillon)\
**Post date:** [April 30, 2026, 7:49pm UTC](https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338/2 "2026-04-30T19:49:28Z")

</div>

If the trigger is within Ignition, you could use messages and message handlers.

Depending on the scope of the trigger you might need to use a combination of both functions:

- [system.util.sendMessage | Ignition User Manual](https://docs.inductiveautomation.com/docs/8.1/appendix/scripting-functions/system-util/system-util-sendMessage)
- [system.perspective.sendMessage | Ignition User Manual](https://docs.inductiveautomation.com/docs/8.1/appendix/scripting-functions/system-perspective/system-perspective-sendMessage)

Regarding the storage of the audio file, [looking at the docs](https://docs.inductiveautomation.com/docs/8.1/appendix/components/perspective-components/perspective-display-palette/perspective-audio) it looks like the audio file must be statically served by a web server.

~~Edit: maybe you could use the `file://` url prefix to load a local file? I didn't test it but sounds reasonable.~~

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 30, 2026, 8:13pm UTC](https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338/3 "2026-04-30T20:13:20Z")

</div>

The file needs to be in your gateway. WebDev is the IA supported way to serve a file on a gateway to a Perspective client component.

If you can store the file as a blob in a database, you could serve it to clients with my free Blob Server 3rd party module. Read the whole topic:

> [@Automation Professionals' Blob Server Module](https://forum.inductiveautomation.com/t/automation-professionals-blob-server-module/57970):
>
> Automation Professionals is pleased to announce an alpha release of its new Blob Server Module. Available only for Ignition v8.1, here. The Blob Server Module provides a simple way to deliver images, PDF files, or other binary content from a database to your Perspective clients or other web applications. Without needing the WebDev module. All you need is a Named Query that has appropriate security settings and returns a single row with two columns: Content, and ContentType. Modest documentati…

> [@dillon](#):
>
> the `file://` url prefix to load a local file?

You cannot. This is the holy grail of web malware, and is blocked by all modern browsers.

Finally, you can put a reverse proxy web server in front of Ignition, and configure that web server to directly handle desired static files. (Commonly done anyways when exposing Ignition via HTTPS on the public internet.)

---

<div class="post-metadata">

**Author:** ![Bushmatic](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bushmatic/32/87014_2.png) [@Bushmatic](https://forum.inductiveautomation.com/u/Bushmatic)\
**Post date:** [April 30, 2026, 8:27pm UTC](https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338/4 "2026-04-30T20:27:57Z")

</div>

We put our audio files in the `Ignition/webserver/webapps` directory (within the Ignition installation folder on the gateway server). The `webapps` folder is Ignition's built-in Jetty web server's document root. Any files placed under `webapps/<your folder here>` are accessible at `http://<gateway-ip>/<your folder here>/` with no Web Dev module required. From here the component's source just needs to point to an audio file in said folder.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/3/53d48010c728ab5cbb4488f03dc9514aa906a277.png)

Example -- say you put a collection of audio files into the following folder on the gateway server:

`C:\Program Files\Inductive Automation\Ignition\webserver\webapps\audio`

Then your `Audio` component's `source` would look like this:

`http://<your gateway IP here>/audio/your_sound_file.ogg`

On the `Audio` component you can also use methods such as `self.replay()`, `self.pause()`, etc. through custom code.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 30, 2026, 8:33pm UTC](https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338/5 "2026-04-30T20:33:58Z")

</div>

> [@Bushmatic](#):
>
> audio files in the `Ignition/webserver/webapps` directory

This is unsupported for various reasons and will eventually break on upgrade. Do not do this.

---

<div class="post-metadata">

**Author:** ![dillon](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dillon/32/81537_2.png) [@dillon](https://forum.inductiveautomation.com/u/dillon)\
**Post date:** [May 1, 2026, 12:06pm UTC](https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338/6 "2026-05-01T12:06:36Z")

</div>

> [@pturmel](#):
>
> the holy grail

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/f/5febfaf52d0c301f26a0575d3ca6fc4a15c53a35.jpeg)

Good point. Disregard my edit OP 😃

---

<div class="post-metadata">

**Author:** ![justinedwards.jle](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justinedwards.jle/32/37854_2.png) [@justinedwards.jle](https://forum.inductiveautomation.com/u/justinedwards.jle)\
**Post date:** [May 2, 2026, 5:30am UTC](https://forum.inductiveautomation.com/t/ignition-perspective-audio-component-with-no-web-dev-module/115338/7 "2026-05-02T05:30:27Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/b/db6ade39723b867f6f02a5846475fe06d7ed7f0b.png)
