DOE sounds extenshion


Actually, as I said in a similar discussion on the FG Forums:

“Unfortunately, the solution that Syrinscape came up with for their Master/Minion Web-based version is, at the moment, 100% incompatible with how FG and the DOE:Sound work. I’ve been investigating the solution for a couple of weeks now and, to get it to work, it is going to require either SmiteWorks radically changing the FG-Engine (something which in the past they have been super reluctant to do) or a complete architectural re-design of the Syrinscape M/M system. In either case, its out of my hands.”

“Having said that, everything that the M/M solution can do the DOE:Sound has been able to do since approx v3. Yes, it does it in a different way, but there is no “end-point result” that the M/M can do that the DOE:Sound can’t - or, in other words, for uses of FG (on a Windows-based system), there is no need for the Master/Minion solution as the DOE:Sound and the original Syrinscape Desktop App can do it all.”

Another FG user put it like this:

“…so I found the whole M/M thing a little confusing because I thought it was redundant.”

My reply:

“Well, it’s redundant for US (the users of Fantasy Grounds) because of the DOE:Sound - but remember that Syrinscape’s ‘use case’ is more than just FG; a lot of Roll20 people (and others) want to use it as well, so Benjamin’s doing a ‘good thing’ in terms of his business by providing that option to his customers. There is also this… fascination… that people seem to have with cloud-based computing these days (one which I, as a Professional ICT Consultant, can’t understand because while ‘The Cloud’ has it’s uses its not a panacea for computing), so with this fascination ‘everyone’ is pushing their stuff into the cloud - which I consider a mistake in some (but not all) cases. Thanks God(s) that Smiteworks didn’t go this route, and that we can still get Desktop Apps for all our stuff, including Syrinscape, etc.”

"TL:DR - FG Users don’t need M/M when using the DOE:Sound, but there’s more than one VTT-ecosystem out there, and only FG has the DOE:Sound - plus some people like to put everything in the cloud :smile: "

Others also chimed in with sentiments along the lines of “If it ain’t broke…”

And as I said above (Post #17), the way I got the whole thing to work was by using the FG-Engine to call the Operating System to do the work - the current M/M architecture doesn’t fit that model. As an analogy; its a bit like trying to make a boat go on the road or a car go on water - both are designed to get you from Point A to Point B but the two methods are totally incompatible.

You can give Doug and John this post to get started (plus my previous one in this Thread), and I’ll be happy to talk to Syrinscape and SmiteWorks, but I personally can’t see SmiteWorks changing things (because we’ve asked in the past and they’ve said no) and even if they did, I’m seriously not sure anything can be done with the current M/M architecture. :frowning:


(aka Bidmaron) If there were features of M/M we couldn’t do now (and I don’t see that there are, but I’m not an expert on all the M/M beta features), the only compromise would be if you could get to the api by using tags on the end of the url to the syrinscape player. But, it is also easy to see how those features (whatever they may be) might be too complex for url tags…


All good above. Note, we are in talks with FGs about making these new Integration Shortcuts work in their stuff.

With a few added points. (not all relevant to people using DOE yet.

  1. The Online Player works on all platforms. The person control sound can do it from any operating system. That is people can now run Syrinscape from their iPad in a browser (and importantly the sound doesn’t STOP when that browser goes into the background)
  2. The Online Player can be running ANYWHERE, eg a phone plugged into the speaker system in the corner. Or in New York.
  3. Our server can populate the Integrating software with info about what SoundSets, MOODs, ELEMENTs the user can play. Basically the UI can be inside other people’s stuff.
  4. Theoretically… running and joining games is straightforward and easy. No more routing audio through chat portals (with inherent compression).
  5. The Players don’t have to have a sub or even own the content to have it play on their machine… if they are following the GMs game only SHE needs the sub.
  6. No more predownloading content… the samples are sent with the call to play them! (with a small latency the first time because of this, and then no latency the second time, because Cache)

But yes, as @Dulux_Oz said, some of these things don’t actually benefit FG users. In which case, keep using the DOE. :smiley:

And mainly THANKS Matthew for developing it for everybody to us. :rofl::space_invader::tropical_fish:


And yes… the Online Player is something Roll20 users have been screeeeeeeeeeeeaming for, for quite a while!


I tried the DOE extension today with the Links from the Online player. When I use the Chatsound function, the URL will be open not only on my system, but also on all FG Clients conected to my game. IS this the expected behavior?




Hiya @flaedda

Yeah, DOE extension was not designed to work with the Online Player (rather the links in the PC version of the standalone players).

I’m hoping the wonderful @Dulux_Oz might be able to do a version for our new integration sometime, but I do know that he’s not been brilliantly healthy of late, which is sad.


Sorry Ben, but that’s a false hope - as I explained in previous posts, there’s no way I can make Fantasy Grounds and the Syrinscape Online Player interoperate - the Online Player’s architecture won’t allow it, and I can’t change the Fantasy Grounds architecture to work (ie get the DOE: Sound to work with the Online Player).



But what about if I talk to Fantasy Grounds and get you more internal access. They are keen to go further with integration.
Note: Did you see my email? :slight_smile:


Yes, I saw your email - and its not about getting access to FG; its about redesigning the Online Player :frowning:


Lucky we’ve got someone with access to the Online Player code! :smiley:

I shall investigate everything you’ve said and the stuff in your emails further.

Thanks mate!


Sorry if this is ‘armchair debugging’ or anything like that.

It seems like you’re basically using open() (or if you’re on Windows and have the command line in front of you: start as in start will open the URL in your default browser, start Somefile.doc will launch Word etc…).

I’m wondering about two things:

  1. Is there no way to check in Lua/the extension which user is logged into FG? Or if the current user is, say, the GM, and only trigger this open() in that case?

  2. If I understand the way it worked/works correctly, was the previous integration with the local player (I just learned about this recently, so never saw that myself) also invoked on each machine, playing the sounds locally (and potentially slightly out of sync due to jitter/latency)?

Edit: Talking to my GM across timezones… Here’s what I proposed as a workaround. Would this be feasible?

  • DOE only triggers for the GM (configurable, because that’s only for the online player here)
  • If players want to trigger a sound, they’ll use the chat messages for that
  • To get around the ‘open browser window’ issue we, locally, would register a Protokoll (say - rpgsound://elements/20 opens our tool, which calls syrinscape and dies without ever opening a Window)

Bonus points for Syrinscape if the online player comes with such a tool (but it’s just a couple lines of code).

The big question now is: Can DOE support this scenario by restricting the open() to a single user/the GM?


No, that’s now how the DOE: Works (at least not to the extent that I can “get under the hood”) - its similar to what is actually happening, and it may even be that is the actual method() used deep inside the FG-engine - but as I’ve said on numerous occasions, SmiteWorks (the owners of FG) don’t allow us Community Devs into the “guts” of the FG-engine.

(1) There may be in “pure” lua, but again, the lua allowed inside FG is “restricted”, so no.

(2) Having the Desktop Player invoked on each Player’s computer is a feature that was developed way before the Online Player was even a “thing”, and was put in place to allow for a solution which didn’t involve pumping the sound down a 3rd Party VoIP App and/or allow someone other than the GM to be the “sound source” - so people have an option: either someone (the GM and/or a Player) can run a single instance of Syrinscape and pump the sound down a VoIP App, in which case those that don’t have Syrinscape installed locally can “Turn Sounds Off” in the DOE:Sound; or everyone can run syrinscape locally, the GM can control everyone’s copy remotely via the DOE: Sound, and thus no VoIP App is needed (and less bandwidth is used, as well); or groups can even do both at the same time, some using Syrinscape locally and some via a VoIP App - ultimate flexibility.

For your edit (which came in while I was typing this):

  • The DOE: Sound is already configurable to keep the triggering to only those computers that want it via the “Turn Sounds On/Off” Option setting.
  • Again, they can do that now - or they can trigger a regular (DOE: Sound) SoundLink by clicking on it.
  • Registering some sort of Protocol with the Windows Hive is actually the fundamental solution I think I convinced @benjamin of today during a private voice conversation - this is the Online Player re-design I’ve been harping about.

Realise, please, everyone, that the issue isn’t in the DOE: Sound and thus isn’t in FG (or in the Online Player, either) - its in the O/S and how the FG-Engine and the Online Player (plus browsers and the Syrinscape Servers) interact with each other - if you like, I believe its in the DJANGO framework and how the interactions all take place - and the limitations and constraints imposed by those interactions.


Thanks a lot for the elaborate (and quick!) response. Glad to hear that benjamin is working with you to fix this properly.

Locally, now, we thought about patching

function fpHandleOOBSound(aOOBMsg)
	if aOOBMsg.type == OOBMSG_SOUND and
			OptionsManager.isOption("SOUND","on") then

to check aOOBMsg.sUsername and potentially the sound string - that way we can force this to be limited to one user/machine. We do like the integrated (non problematic) client sounds, say … when it’s your combat turn, so turning the sound preference to off is probably out (and that alone still would open tabs/browser windows on the remaining clients of course).

After verifying that this is using the standard OS protocol/handler mechanism (by … setting a sound link to a Word document, don’t judge :-p) I guess we can locally, for now, build a workaround by delegating to a custom application on a single machine, said application will then invoke the online API (triggering the sound on all machines connected via cloud player) and terminate immediately (no remaining windows, browser or otherwise).

Your replies were very helpful and we’ll ditch the hacks as soon as any official integration is coming of course. I do believe that the real fix (protocol integration, probably bundling an official tool) on Syrinscape’s side should be simple, although I kinda expect the need for some DOE support still: There probably has to be a ‘trigger only once/from one machine’ support in the end, to make this work? Without manually muting clients? Maybe you can add explicit support for the future syrinscapeonlineplayertrigger protocol and do a string match on the soundstring, only launch this on the host/gm?

Note that I don’t think anyone is blaming DOE at all (I’m not, at least). These posts are merely procrastination on our part and the quest of trying to make it work now / ASAP for a single Pathfinder group. :slight_smile:


That code is pretty much what happens anyway - no need to patch it. :smile:

I think you’re operating under a misconceptions: “Turning Sounds Off” in the FG Options does not stop a Player/GM from being able to trigger sounds - all sound-triggers are sent to all connected Players and the GM via OOB Messages (even the person who triggered the sound in the first place - all manual sounds, chat-sounds, and auto-sounds, and their associated chain-sounds if applicable). When a Players’/GM’s computer receives the appropriate OOB Message then the “Turn Sounds On/Off” is checked and if “Off” the process is terminated (ie no sound-trigger is sent out to the O/S for the Desktop Player to play the sound).

If, on the other-hand, the "Turn Sounds On/Off"is “On”, then the sound-trigger is sent out to the O/S for the Desktop App to play to the sound.

And here’s where the Online Player issue rears its ugly head - because the Online Player uses a “standard” “http:” URL call the O/S interprets that as a webpage (ignoring the DJANGO coding inside the call) and so loads up the webpage inside the default browser - and stops! With the Desktop Player the URL begins with “syrinscape-player” (I think it is) so the O/S hands that off to the Desktop Player and the Desktop Player interprets things correctly.

You can try the same thing with the VLC media Player to play an mp3 via the DOE: Sound - the URL in this case begins with “vlc:” which, again, the O/S interprets correctly to load AND play the VLC player.

TL: DR - don’t bother trying to modify/patch the DOE: Sound as you’ve written it - that logic ALREADY exists inside the DOE: Sound :smile:

And just to make it clear: there is NO difference between a chat-sound and a manually clicked on sound-link - the same code is executed in the end for both of them (ie chat-sounds are non-problematic because all sound-links are non problematic - they’re the same!).

And without a “special extra app” your solution to using the Online Player with the DOE: Sound will not work - I used a similar piece of logic to get the DOE: REMU working (with wget). :smile:

Edit: Oh, and using the DOE: Sound to open a Word document - that’s what the DOE: OLE is for :smile:


Thank you so much for being so responsive.

I’m still confused. We have two different ‘sounds’, right? One is - say - It’s your round in combat, stop wasting our time and the other category is The goblin hordes are coming (vs Syrinscape Online).

I was under the assumptions that

  • the former and latter are disabled/enabled with the same setting
  • the former works locally (it’s a file on each FG machine)

If those assumptions are correct, then turning the sound off for the players would kill the It’s your round you dolt kinda sounds. That’s not the case then?

I’m basically done with my application here. It registers “Syrinscape” as a protocol when launched as Admin. From then on any syrinscape:whatever links call that app and from there I’m triggering the sounds (so no open windows anymore).

If I misunderstand the sound setting above, then yes: We don’t need to patch DOE at all. If I do understand it correctly, then we’d like to branch between ‘normal/local/bundled’ and ‘online’ sound.

I’ve to say, the turnaround time here is outstanding. Thanks so much!


As I understand things, the Syrinscape Online sounds are coming from the Syrinscape Servers (over the Internet) each time you click on a sound URL in your web browser (and those sounds are also being sent by the Syrinscape Servers to all the registered players, as well) - ie there is no such thing as a “local sound” when using Syrinscape Online - that’s the whole point of being “Online”: nothing is stored locally.

The Syrinscape Desktop App does (already) register the “syrinscape-player:” as a protocol - so it sounds as if you’re duplicating what Syrinscape does already.

The whole point of using Syrinscape Online is to not have to install anything. If you’re going to install something then you may as well install the Syrinscape Desktop App and be done with it.

Yes, you have misunderstood the sound setting - you don’t need to apply your patch because that’s already how the DOE: Sound works.

The question you have to ask is where do you want the sounds to come from? Do you want them:

  1. To be played on a local copy of the Syrinscape Desktop App locally on a single PC and then pump the sounds down a 3rd Party VoIP App?
  2. To be played on each Gamer’s PC without using a VoIP App, via a locally installed copy of the Syrinscape Desktop App?
  3. Over the Internet via Syrinscape Online because you don’t want to install anything?

At the moment (1) & (2) both are enabled via the DOE: Sound (and can actually be used toggether at the same time, with some using the VoIP App and some using Syrinscape locally). Option (3) is currently not working with the DOE: Sound.

Just to make it 100% clear - there is no such thing as a difference between normal/local/bundled and online as far as the DOE: Sound is concerned - as far as the DOE: Sound is concerned they are all just URLs. Where the difference intrudes is on which app actually plays the sounds: the local Syrinscape Desktop App (perhaps pumped down a VoIP App) or the Syrinscape Servers via syrinscape Online.


Okay, we’ll play around.

We definitely use the online “cloud” api, sound links are to https://syrinscape… etc.

Before we integrated syrinscape we already had sounds. Maybe I’m misinformed and they weren’t DOE but FG proper: Sounds like for example a bell/ring when a player’s turn starts. These worked before syrinscape came into play for us.

I thought, and now think that’s wrong (to be tested tonight), we’d lose those sounds with the DOE setting being switched to off.

The protocol handler does what we want now, I just got the dm’s confirmation: We can now use syrinscape “cloud” sounds without opening windows and that’s good enough for now, until benjamin comes up with something official. Hope this wasn’t too much forum noise in the process.


The “bell” sound inside FG is a simple sound that has nothing to do with the DOE: Sound and/or Syrinscape - so nothing that the DOE; Sound does will effect those simple, in-built sounds.

Can I please have a copy of what you’ve created (the source code) - it may actually be the solution we’ve been looking for, and so I’d like to check it out. If its not too big you can email it to me - thanks.

However, from a design point of view, let be say this: if your solution involves installing something (ie a “helper” app), then my question is: Why bother? If you’re going to install something then you may as well install the Syrinscape Desktop App and be done with it. :smile:


Hi Dulux_Oz,
I’m the GM of Ben’s gamegroup. We want to avoid the Desktop App, because we are using it with the Banana Mixer and Discord at the moment. The Banana Mixer is crashing on my hardware nearly all 30 minutes and we are not happy with the sound quality in discord. Therfore we want to change to the Syrinscape Online Player as fast as possible. I had tested Ben’s helper App and it seems to work fine without changes on the DOE Soound extension. I will do some more test with Ben later today in a real game scenario, We will prrovide you the sources after finishing our tests.

br Daniel


Hi daniel,

I use Voicemeter Banana (and now Voicemeter Potato) with Teamspeak and the Desktop App for precisly that reason - Discord is a PITA!

I don’t crash at all, I’ve got a separate channel for my voice and for Syrinscape (& other) sounds, the quality is great, and Teamspeak handles it all - no fuss, no bother. And for the record I’ve got playes across the USA, Tialand, Irland, Japan, and Australia.

Seriously, there’s no reason what-so-ever to avoid the Syrinscape Desktop App because that’s not your problem - at least, as far as my own experience is concerned its Discord which is the problem in your set-up.