It was a kind of very load buzzing artefact. But i’v figured out. I am using the forge, and it has auto updated to an apparent older version. I’ve been reinstalling the latest version and it seems to work pretty well now. Sorry for that.
Ok, i was opening the interface and shut off the sound of the browser window. No it was coming from outer space. Maybe Nyarlathotep !
Lats question : can i change the playlist names after imported ? (because for the campaign i run they are too long). Or is it an issue ?
You can
As soon as you do not change the path to the audio its fine.
I definitely need to update the docs and make this module more bulletproof
Hello Frondeus. I hope you are well. I wanted to get some info regarding gain structure with the module now that we have been blessed with the beta. At first my players and I were monitoring out of the Syrinscape tab in our browsers with our Foundry tab just getting muted. We were wondering though if having less tabs obviously meant less processing needs for our computers. (I’m good but some of my players are playing on potato lap tops ^_^)
We thought that if we all listened out of the foundry tab ONLY it would take care of that, and seeing as your module allows a separate volume bar for everyone they would be able to adjust it to their liking- Brilliant, and- it was working. Less tabs meant less processing, and everybody was able to get the sounds smoothly with very little lag etc.
Now with the beta though, it appears that whatever slight volume adjustments my players make in Foundry it DRAMATICALLY tilts the audio.
My Syrinscape player (The master control panel etc) wasn’t even opened, we just activated Foundry and played some ambiences and sfx and the changes were exponential. One of my players said they had the volume in Foundry all the way down and they could still hear the sounds at a strangely high volume.
I wasn’t able to get things back under control until I opened up the Syrinscape Control Panel and adjusted the volume there from the send. Then everyone opened up their Syrinscape Browsers and monitored off of that and it was fine. I was still able to activate sounds through Foundry too.
So Long story short we are back to where we started and things are good, we just have a few players with a little more lag here and there.
Now… I know that there are HUGE amounts of steps coming and going in this process. My players are all over the country and may have some weird gain structure in their headphones, in their OS, in their browser etc. I get that, and asking you to “fix it” is not fair and shouldn’t be expected. I really mean it when I say that for me this is one of the most exciting and meaningful modules this system has ever had… FOR FREE!!
But I am SO curious - How does the routing work? Why is the volume return switched up dependent on which volume bar I’m manipulating (The Volume in Foundry VS the volume in Syrinscape Master Control). What’s the signal path and how does it manipulate the gain structure?
I AM SO SORRY FOR THE TEXT NOVEL. I don’t expect you to read it all but I wanted to get it out there.
Thanks again for EVERYTHING you do. It’s appreciated.
IS there a way to layer multiple moods? Like if I want to play the “rain” mood and another mood at the same time? usually you can run stuff from different play lists concurrently, but it appears that whenever you start a syrinscape soundset all others stop including the ones downloaded into a playlist.
Moods are a collection of sounds, so starting one mood will stop a previous mood. But you can start a mood and then overlay any number of elements. You can even then save that as a new mood.
So you could for example start the Brindol Town, “Busy market day” mood and then jump to storm and start whichever elements that you want and they will mix into the currently playing mood. you can then let it play as is or save it as a new mood and then trigger it all at once just like you would any other mood
Yeah, but can you do that using syrincontrol
Hi there,
In Foundry with Syrincontrol you can’t play two different moods at once, it is the same as using Syrinscape directly.
However as above you can do various things to get round this. You can start a mood and then play one shots as macros to play at the same time.
However if you want something that lasts a bit longer, for example if you had a peaceful forest ambience playing and that was the mood, then what I do is go syrinscape and copy the link from the remote control link, then go back to Foundry, create a macro and then add the sound that I want to that, e.g. raining. The macro is very simple you just write - fetch("PASTE THE LINK HERE");
I would screenshot an example but the remote control has my own personal token in it, and so will yours.
Then while the mood is playing in the playlist, I can click on the “raining” macro and it will add raining to the sounds.
Or, if you know in advance what you want your mood to sound like, create your own soundset and moods, then add it to Foundry via Syrincontrol.
Additional, make sure, when you create the macro that it is set to script not chat.
Hello there!
It seems that my mail client classified Syrinscape Forum notifications as spam, and I haven’t noticed it
Therefore, sorry for the lack of response!
@crasherprime - What version of the module are you running? There was one version that had broken volume control.
Currently, the sound produced by the headless syrinscape player is not affected by the main volume slider, which controls the native Foundry playlists. It is something I would like to do in the future.
@Orionox - unfortunately not, but that’s beyond SyrinControls capabilities
There is no clear way to trigger a single element in the SyrinControl; I would love to add this feature in the next version, but not as part of the 0.4.0 branch. I need to cut the scope because I’m the only developer maintaining this project in my free time.
Of course, that means if there are talented typescript developers (or amateurs) who want to contribute to the project and implement missing features, I would be more than happy to mentor, review pull requests and merge them into the main project
@Abourious - thanks for the explanation of the workaround!
All right, now it’s time for some small announcement - I fixed two bugs and released a new pre-release version of SyrinControl.
- Players should hear the moods and one-shots properly
- Players should be able to trigger one-shots properly.
The future
So what’s left to release 0.4.0 fully? Not much!
There is only one issue left: https://github.com/frondeus/fvtt-syrin-control/issues/61.
Of course, the module still needs lots of polish, especially around the Playlists and PlaylistsSounds (I should, for example, hide the ugly “syrinscape:mood:659.wav” - that is an implementation detail, and the User should not be able to change “Audio Source” of Syrin-Controlled sound), but I think it is stable enough (I played already several sessions on the beta) that we would get more value by releasing it to the broader audience
Oh, and also documentation - I would need to update documentation, record the screen and make it as gifs, update the FAQ section, and prepare the module for newcomers and those who didn’t follow the development closely
But I think - if someone wants to contribute to the project, that would be the easiest and most helpful thing to do
Cheers! Have a good weekend and wonderful sessions!
Edit: I had a very productive day today
0.4.0-beta7 is ready, meaning I closed the last issue!
Now it’s time to test and doc, doc, and test!
I should probably also record an youtube guide on how to use this module
Thanks for the response, quick question. In 0.4.p do my player still need to bring up the syrinscape or does the sound play through foundry?
Sound plays through foundry
Is there a way to have SyrinControl tell Syrinscape to stop all sounds? I have a simple macro that uses fetch to do this using the remote control API link for “stop-all” and that works fine. However, SyrinControl then doesn’t seem to know it happened, so the “stop” button still shows next to the thing that was previously playing instead of a “play” button. I’m hoping there’s a better way to do this with SyrinControl. Or maybe some command I can put in my macro after the stop-all has occured that tells SyrinControl to refresh that? Edit: typo
That’s weird, my “fetch” instruction to stop the sounds works on sounds created by Syrincontrol.
There’s also a macro to stop a playlist and a specific sound in a playlist.
I’m not at my computer now but I can post it here later.
Thanks, looking forward to seeing your macro. It’s probably much better than how I’m doing it!
My goal was to have a macro so I can one-click stop all playing playlists/sounds (aside from ambient sounds on the map). I found a macro online which works great for Foundry-native sounds, but doesn’t work on SyrinControl sounds/playlists. So, I tacked on a simple fetch command at the end to hit stop-all via the API in Syrinscape (see fetch command below). It works great (all sounds, whether from SyrinControl or Foundry-native fade out and stop with a single click) but SyrinControl itself doesn’t seem to get the message, so the Playlists sidebar shows things that think they’re still playing, but aren’t. I’ve tested with a fresh world with only SyrinControl enabled, just in case there was another module getting in the way.
Here’s the fetch instruction I tacked onto the end of that macro (minus my auth token of course!):
fetch("https://syrinscape.com/online/frontend-api/stop-all/?auth_token=redacted");
It’s a very minor problem in the end, but would be nice to solve.
I use that fetch command. But then I don’t use native sounds. I only use Syrinscape through Foundry and YouTube through Kenku FM discord bot.
Here is the Macro to stop a specific sound, it will work on Syrinscape sounds if you are importing your Syrinscape sounds via Syrincontrol and putting them in your playlists.
const pl = game.playlists.getName("name of playlist");
const sound = pl.sounds.getName("name of sound");
await pl.stopSound(sound);
Here is the one to stop an entire playlist.
const pl = game.playlists.getName("name of playlist"); // or use get(id of playlist) instead of getName.
await pl.stopAll()
Thanks, that was helpful. The macro I had found earlier does use that stopAll() function, but for some reason it skips the SyrinControl playlists. It does some stuff to fade the sounds out, and I think that’s where it’s losing the SyrinControl playlists. I could just have it stopAll() on all playlists and that works well, but it cuts off the Foundry native sounds abruptly. I’d prefer it fade the native Foundry sounds out also, so the experience is similar to stopping a Syrinscape mood.
So, what I’m having it do now is run that original function to fade out the Foundry sounds over 3 seconds, wait 3 seconds to let that wrap up, and then do another stopAll() on all playing playlists (which does catch the SyrinControl ones properly). It delays Syrinscape stopping by 3 seconds (configurable) but I can live with that to have a single button to press to cleanly stop all ambience/music without having to remember what’s playing it. There’s probably a more elegant way to do all this, but here’s the full working macro as it is now, in case it would help anyone else:
const wait = async (ms) => new Promise((resolve)=> setTimeout(resolve, ms));
function fadeOutPlaylist(playlist, fadeDuration) {
if (!playlist.playing) return;
let playingSound = playlist.sounds.filter(s => s.playing).find(_ => true).sound;
if (!!!playingSound) return; // should not happen
let currVol = playingSound.volume;
let globalVol = game.settings.get("core", "globalPlaylistVolume");
if (currVol == 0) return;
playingSound.fade(0, { duration: fadeDuration, from: currVol})
setTimeout(() => playlist.stopAll(), fadeDuration);
return;
}
game.playlists.filter(p => p.playing).forEach(p => fadeOutPlaylist(p, 3000));
await wait(3000);
game.playlists.filter(pl => pl.playing).forEach(pl => pl.stopAll());