[Solved] Disabling ctc sound during pauses/dissolves

Discuss how to use the Ren'Py engine to create visual novels and story-based games. New releases are announced in this section.
Forum rules
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
Post Reply
Message
Author
LMartinson
Newbie
Posts: 7
Joined: Sat Feb 25, 2017 3:46 pm
Contact:

[Solved] Disabling ctc sound during pauses/dissolves

#1 Post by LMartinson »

I used this code found on these forums to add a ctc clicking sound when the reader clicks to advance the text:

Code: Select all

    def callbackcontinue(ctc, **kwargs):
        if ctc == "end":
            renpy.music.play("sounds/ctc_click.ogg", channel="ctc", loop=False)
For the most part it works great, except that it also adds clicking sounds every time I use a dissolve or a pause. So in this example:

Code: Select all

    show character1 at left with dissolve
    pause 0.5
    show character2 at center with dissolve
    pause 0.5
    show character3 at right with dissolve
    pause 0.5
It adds six extra clicking sounds without the reader doing anything.

Is there any way to change the original code so that the ctc sound only happens when the reader clicks at the end of a say statement, and not at any other time?
Last edited by LMartinson on Wed Jan 17, 2018 2:48 am, edited 2 times in total.

User avatar
Divona
Miko-Class Veteran
Posts: 678
Joined: Sun Jun 05, 2016 8:29 pm
Completed: The Falconers: Moonlight
Organization: Bionic Penguin
itch: bionicpenguin
Contact:

Re: Disabling ctc sound during pauses/dissolves

#2 Post by Divona »

Look like one of a solution is to register CTC sound to another sound channel and mute such channel during dissolve and pause event.
viewtopic.php?f=8&t=34754&p=389910
Completed:
Image

LMartinson
Newbie
Posts: 7
Joined: Sat Feb 25, 2017 3:46 pm
Contact:

Re: Disabling ctc sound during pauses/dissolves

#3 Post by LMartinson »

Thanks for taking the time to reply!
Yeah, I actually noticed the thread you linked to before, and if I only had a couple of instances where I needed to do it I'd totally use their method.
But since my vn has more than a thousand dissolves I was hoping there was a way to automate it...

LMartinson
Newbie
Posts: 7
Joined: Sat Feb 25, 2017 3:46 pm
Contact:

Re: Disabling ctc sound during pauses/dissolves

#4 Post by LMartinson »

Okay, so I kept playing around with it, and managed to cobble something together based largely on the code from the bottom of this page:
https://www.renpy.org/doc/html/modes.html

Code: Select all

init python:

    def _pause_callback(mode, old_modes):

        old = old_modes[0]
        if mode == "pause" or mode == "with":
                renpy.music.set_volume(volume=0.0, delay=0.1, channel='ctc')

        if mode == "say" or mode == "menu" or mode == "nvl" or mode == "nvl_menu" or mode == "start" or mode == "screen":
                renpy.music.set_volume(volume=1.0, delay=0.0, channel='ctc')

    config.mode_callbacks.append(_pause_callback)

    def callbackcontinue(ctc, **kwargs):
        if ctc == "end":
            renpy.music.play("sounds/ctc_click.ogg", channel="ctc", loop=False)

    renpy.music.register_channel("ctc", "sfx", None)
Note: I'm not a programmer at all, so there might be a better, more elegant way to do this. Plus it seems a bit wonky; sometimes it skips ctc sounds that should be there. So I'm sure it could be improved, but I think it's better than before when it would make a bunch of extra clicking sounds that would be distracting to the reader.

If anyone has an idea of a better way to implement this, please let me know!

LMartinson
Newbie
Posts: 7
Joined: Sat Feb 25, 2017 3:46 pm
Contact:

Re: [Solved, kinda] Disabling ctc sound during pauses/dissolves

#5 Post by LMartinson »

Dunno if anyone cares, but I figured out a slightly less janky way of doing the above:

Code: Select all

init python:
    
    def callbackcontinue(ctc, **kwargs):
        if ctc == "end" and renpy.get_mode()!="pause" and renpy.get_mode()!="with":
            renpy.music.play("sounds/ctc_click.ogg", channel="ctc", loop=False)

    renpy.music.register_channel("ctc", "sfx", None) 
    
define config.all_character_callbacks = [ callbackcontinue ]
Once again I'm still a very inexperienced coder, but in my preliminary tests this seemed to work.

Post Reply

Who is online

Users browsing this forum: jeffster