[RELEASE] [ESTIM] Mistress and the Remote Control Box

Discussion about Cock Hero and other sexy videos.

Moderator: andyp

samsonjude1776
Explorer
Explorer
Posts: 49
Joined: Sun Feb 27, 2022 5:02 am

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by samsonjude1776 »

throwawayacct wrote: Wed Mar 13, 2024 4:05 pm
samsonjude1776 wrote: Fri Mar 08, 2024 10:52 pm Are there fun scripts for this release that can be played through ReStim?
Why on earth would you want to run a funscript for a suite that already includes a (quite masterful) estim track?
I.have found that running fun scripts through Restim, and the level of fine tuning it allows, feels much better on my box(312B) than most CH/PMV estim mp3s particularly tri phase files that are intended to be run with common on head. This file feels pretty good, but I really like to try it though Re stim with its full suite of scripts.
phx
Explorer
Explorer
Posts: 21
Joined: Tue Sep 14, 2010 10:03 pm

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by phx »

throwawayacct wrote: Wed Mar 13, 2024 4:05 pm Why on earth would you want to run a funscript for a suite that already includes a (quite masterful) estim track?
A simple 2-channel funscript lack the amount of information needed to reproduce the signal, but restim can read multiple funscripts and use these as channels. Given enough channels, you can reproduce the signal that's in the estim mp3 file quite precisely, as some of the main sensation in the track comes from restims encoding of phase. The estim track is sorta "less is more" in that it uses very few building blocks, so a reproduction is very much within the bounds of possibility.

I generated the track via SuperCollider. SuperCollider has a barrier to entry in that it's a software synth controlled through a programming language. If you "reverse engineer" the signals I generated into their underlying components, you can implement it all in restim, reading additional channels as inputs for each component. This opens up signal generation to a far larger community because there are already tools which lets you generate funscripts with UIs and such.

For development of new building blocks for estim, I think supercollider is an excellent tool because you have so much control over signal generation. If the best of those building blocks get implemented in restim, I have a hunch the quality of estim signals will improve as a whole.

It might be beneficial to have a different input format because something like restim allows us to render a signal specifically for a given power box, or do explicit electrode calibration. This means we can disable certain features of the signal if the power box can't cope with it. Or alter parts of the signal to make the power box pick it up easier.

Overall, I'm happy with this development. Restim is pushing the "Pareto Curve" of your typical estim experience by quite a lot, and people are creating estim tracks for existing experiences using the new tools.
User avatar
edger477
Explorer At Heart
Explorer At Heart
Posts: 663
Joined: Mon Nov 29, 2021 8:24 pm
Gender: Male
Sexual Orientation: Straight
I am a: None of the above
Location: Europe

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by edger477 »

phx wrote: Thu Mar 14, 2024 2:40 pm
throwawayacct wrote: Wed Mar 13, 2024 4:05 pm Why on earth would you want to run a funscript for a suite that already includes a (quite masterful) estim track?
Spoiler: show
A simple 2-channel funscript lack the amount of information needed to reproduce the signal, but restim can read multiple funscripts and use these as channels. Given enough channels, you can reproduce the signal that's in the estim mp3 file quite precisely, as some of the main sensation in the track comes from restims encoding of phase. The estim track is sorta "less is more" in that it uses very few building blocks, so a reproduction is very much within the bounds of possibility.

I generated the track via SuperCollider. SuperCollider has a barrier to entry in that it's a software synth controlled through a programming language. If you "reverse engineer" the signals I generated into their underlying components, you can implement it all in restim, reading additional channels as inputs for each component. This opens up signal generation to a far larger community because there are already tools which lets you generate funscripts with UIs and such.

For development of new building blocks for estim, I think supercollider is an excellent tool because you have so much control over signal generation. If the best of those building blocks get implemented in restim, I have a hunch the quality of estim signals will improve as a whole.

It might be beneficial to have a different input format because something like restim allows us to render a signal specifically for a given power box, or do explicit electrode calibration. This means we can disable certain features of the signal if the power box can't cope with it. Or alter parts of the signal to make the power box pick it up easier.

Overall, I'm happy with this development. Restim is pushing the "Pareto Curve" of your typical estim experience by quite a lot, and people are creating estim tracks for existing experiences using the new tools.
Thank you for this, I wanted to write it but didn't had the time this morning :)
throwawayacct
Explorer At Heart
Explorer At Heart
Posts: 279
Joined: Wed Jul 31, 2019 5:51 pm

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by throwawayacct »

phx wrote: Thu Mar 14, 2024 2:40 pm Restim is pushing the "Pareto Curve" of your typical estim experience by quite a lot, and people are creating estim tracks for existing experiences using the new tools.
Except everyone who is a OSX user and not experienced in development tools/coding/programming is left on the outside looking in. While its great a system is being developed, I'd wager 40% of the stim users out there/here are excluded from such advancements.

BEFORE the inevitable "It's easy just use python/etc", *read my first line* and realize not everyone is a STEMlord or willing to muck about in a $2xxx.00 system they use for work, or don't have the time. You may as well be saying "It's easy just learn Mandarin Chinese".

OSX users are quite familiar with being left out of most development, which is insane to me given that it's the next largest PC user base. While it's all well and good that Diglet is putting in a lot of hours and work to make Restim...work, please recognize there are long time users who have no reasonable access and therefore no experience with this system.
User avatar
edger477
Explorer At Heart
Explorer At Heart
Posts: 663
Joined: Mon Nov 29, 2021 8:24 pm
Gender: Male
Sexual Orientation: Straight
I am a: None of the above
Location: Europe

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by edger477 »

throwawayacct wrote: Fri Mar 15, 2024 5:30 pm Except everyone who is a OSX user and not experienced in development tools/coding/programming is left on the outside looking in. While its great a system is being developed, I'd wager 40% of the stim users out there/here are excluded from such advancements.
I am not sure based on what users who account for 10% of PC sales are 40% of stim users? And even for those 10%, there is parallels, making it non-argument, plus restim has bake mp3 that creators will also provide so you can play the same content without calibration.

This type of rant should go towards Apple, not the developers who make open-source software for the benefit of everyone in community, and using a programming language that is supported on OSX. Of course developer who doesn't have OSX can't test how a software that needs access to drivers to produce sound works on OSX. This is something another developer with OSX should do for OSX users, and I will not feel sorry for OSX users because there is no developer among them willing to test/make pull request to create version that works there. You can't rant at diglet because of that, I am sorry, but this is just immature. You can't expect a developer to buy a 2000$ machine just to support 10% users when he can support 90% with 12 year old machine he already has.
froog
Explorer At Heart
Explorer At Heart
Posts: 158
Joined: Fri Aug 07, 2009 8:37 pm
Sexual Orientation: Straight
I am a: None of the above

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by froog »

throwawayacct wrote: Fri Mar 15, 2024 5:30 pm
phx wrote: Thu Mar 14, 2024 2:40 pm Restim is pushing the "Pareto Curve" of your typical estim experience by quite a lot, and people are creating estim tracks for existing experiences using the new tools.
Except everyone who is a OSX user and not experienced in development tools/coding/programming is left on the outside looking in. While its great a system is being developed, I'd wager 40% of the stim users out there/here are excluded from such advancements.

BEFORE the inevitable "It's easy just use python/etc", *read my first line* and realize not everyone is a STEMlord or willing to muck about in a $2xxx.00 system they use for work, or don't have the time. You may as well be saying "It's easy just learn Mandarin Chinese".

OSX users are quite familiar with being left out of most development, which is insane to me given that it's the next largest PC user base. While it's all well and good that Diglet is putting in a lot of hours and work to make Restim...work, please recognize there are long time users who have no reasonable access and therefore no experience with this system.
Greetings fellow mac user. I'm no stemlord but I do have some experience fiddling with macs. If you want I will pm you the 10 or so commands to run to install restim on Mac, once python is installed. (Doing that is probably a few more commands, but I would have to read up to find out how it is best done as I did it so long ago I forgot) .

It's totally worth a try. But you do need to be willing to use the terminal, and have a basic idea of how that works, and install a few things using it. If your Mac experience is point and click on things then it's probably not going to work for you until someone packages it up nicely.

Alternatively, if you buy parallels and install windows you can run it on your mac. I've used / tried both options. If you choose this option, then all the other PC based funscripting stuff (e.g.) can be installed point and click.

Sorry if this is already all obvious, and just frustrates. I'm not skilled enough to know how to repackage restim to make it one click install I am afraid. Hopefull posting about this someone will come out of the woodwork
frenchdude
Explorer
Explorer
Posts: 89
Joined: Tue Jan 28, 2020 4:37 pm

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by frenchdude »

I’m also on Mac.
I’ve been stimming for ages, in dual or triphase configuration.
When necessary, I use Audacity to adjust mp3 files to my preferences (I think every stimmer should learn the basics of Audacity)

And now comes Restim… which is supposed to work on OSX :-)
I’m no software engineer… I struggled to install Python and make Restim running… but it works (couldn’t say how though :lol:)
Then I played with the calibration tab… and I ended with « 0 0 0 » for Neutral / Right / Center power settings : Restim confirmed to me that I was happy with my usual triphase configuration :whistle:

All this to say that you won’t necessarily need to have Restim running on you computer to enjoy the work of your beloved creators.
For playing Edger477’s latest creations, I used Restim just to generate the mp3 (with 0 0 0 in calibration tab).

Of course there are undoubtedlyy many benefits to using Restim live while stimming.
But personally I’m happy with my mp3 player and TV screen :-)

I am grateful to everyone involved in these new developments :love:
phx
Explorer
Explorer
Posts: 21
Joined: Tue Sep 14, 2010 10:03 pm

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by phx »

throwawayacct wrote: Fri Mar 15, 2024 5:30 pm Except everyone who is a OSX user and not experienced in development tools/coding/programming is left on the outside looking in. While its great a system is being developed, I'd wager 40% of the stim users out there/here are excluded from such advancements.
All isn't lost.

Restim can now bake audio, i.e., generate an MP3 file. In a sense, this means you don't need the software to enjoy signals generated. It's only necessary if you want specific calibration or you want to do signal development.

It isn't uncommon you develop mainly for one platform first, then branch out to other platforms as you gain traction. SuperCollider started out as a Mac-only platform back in the 90'es for instance.

In any case, I like providing an mp3 file, at the very least as a fallback.
froog
Explorer At Heart
Explorer At Heart
Posts: 158
Joined: Fri Aug 07, 2009 8:37 pm
Sexual Orientation: Straight
I am a: None of the above

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by froog »

froog wrote: Fri Mar 15, 2024 6:14 pm

Greetings fellow mac user. I'm no stemlord but I do have some experience fiddling with macs. If you want I will pm you the 10 or so commands to run to install restim on Mac, once python is installed.
OK I did it. Here is a guide to how to install restim on a Mac:
viewtopic.php?t=26854

I thought I would post it in a new thread to avoid this one being takeover by techie discussion.
diglet
Explorer At Heart
Explorer At Heart
Posts: 203
Joined: Sun Dec 11, 2022 5:43 pm

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by diglet »

I took another stab at creating funscripts for this video, this time I was more successful.
Get the funscripts here: https://mega.nz/folder/sPlSnIqb#MOazR7rcP_gkC0hOkFyDEQ
These funscripts are direct conversions from the original mp3, no manual edits.

Steps:
Get Restim v1.16 or later: https://github.com/diglet48/restim/releases
In preferences, set "pulse frequency" to 0 ... 200 and "pulse width" to 3..20
Image
In the main screen, set frequency to 800 and rise time to 2. If you want a less aggressive signal, you can set the rise time higher (i.e. 5).
Image
Other settings can be left at defaults.


I tested this funscript about 4 times and I would say it's almost identical to the original. If you liked the original and want to know how these signals are created, you can try viewing them in OpenFunScripter.

Image

This release only works well with 800hz. If you want to use higher/lower frequencies, you need to scale up the pulse width limits (for 1600hz, use 2x the recommended pulse width min and max).

Configuring this is a bit cumbersome. In the future I'll add a way to read the config parameters from file, this way you don't have to change the settings every time you want to try a different release.
samsonjude1776
Explorer
Explorer
Posts: 49
Joined: Sun Feb 27, 2022 5:02 am

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by samsonjude1776 »

took another stab at creating funscripts for this video, this time I was more successful.
Get the funscripts here: https://mega.nz/folder/sPlSnIqb#MOazR7rcP_gkC0hOkFyDEQ
These funscripts are direct conversions from the original mp3, no manual edits.
Ran last night. It was fantastic. Thanks!
User avatar
Kelvinator
Explorer At Heart
Explorer At Heart
Posts: 147
Joined: Fri Aug 27, 2021 1:05 am
Gender: Male
Sexual Orientation: Straight
I am a: Switch
Location: US

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by Kelvinator »

Ran it yesterday afternoon, and it was perfect! There is nothing like the first hour or so of a stim, gummy, popper session. Mistress Control Box with Diglet's custom funscript files and Restim 1.16 in pulse mode was smooth and sensuous in so many ways and locations. Had multiple dry HFO's. Thanks, K
senorgif2
Explorer At Heart
Explorer At Heart
Posts: 132
Joined: Sat Jul 22, 2017 1:51 am

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by senorgif2 »

Hello I made an alternate ending edit to MCB:
https://mega.nz/file/wsdGUQ4D#rgsEp9EXd ... daqhe1iimQ
Spoiler: show
I made this mainly for myself, because I love MCB, but the ending clips are not my favorite. This alternate ending has the exact same run time;everything is the same right until 47:39 I wanted to preserve the feeling of the original but I am not a fan of Daniela Hansson; especially in this clip. So I found a similar scene with an actress I like a lot more: Blue Angel. I replaced any clips of Hannson with Blue Angel, recreated the text teases, taunts, and instructions when needed, and did a quick color grade match with the original clips. Also fixed a text error, and changed two other lines, (you'll have to watch to find out)
I am proud of the result. Hope y'all enjoy it.
senorgif2
Explorer At Heart
Explorer At Heart
Posts: 132
Joined: Sat Jul 22, 2017 1:51 am

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by senorgif2 »

diglet wrote: Sun Mar 17, 2024 2:07 pm I took another stab at creating funscripts for this video, this time I was more successful.
Get the funscripts here: https://mega.nz/folder/sPlSnIqb#MOazR7rcP_gkC0hOkFyDEQ
These funscripts are direct conversions from the original mp3, no manual edits.
I would like to know how you made the funscripts. How did you convert?
diglet
Explorer At Heart
Explorer At Heart
Posts: 203
Joined: Sun Dec 11, 2022 5:43 pm

Re: [RELEASE] [ESTIM] Mistress and the Remote Control Box

Post by diglet »

I wrote some complicated signal analysis in python to perform the conversion.


First I transform the two audio channels into two components that are orthogonal to each other. In threephase there are really three channels (left, right and center) that are 120° offsets from each other, the analysis is easier when working with two channels at 90° (orthogonal) angle.
I use an Hilbert transform to extract the phase envelope of the two channels. There is some relationship between the phase envelope and the alpha and beta coordinates, I derived an explicit expression for that relationship and use that to find the alpha, beta and volume at audio sample resolution. This is the most complicated part of the process, this method only works well for supercollider files, for other files a lookuptable method with some pre-filtering works better.

Code: Select all

t, (L, R), samplerate = load_wav('MistressAndControlBox-ESTIM-v3.wav', ...)

def algorithm_4(L, R):
    """
    Calculate alpha, beta and volume from audio channels

    Method:
    Convert L, R into orthogonal X, Y
    use hilbert transform on X, Y
    use trig to obtain explicit expressions for position and volume.
    """
    [x_in, y_in] = (ab_transform_inv @ potential_to_channel_matrix_inv)[:2, :2] @ (L, R)

    print('hilbert')
    h_x = scipy.signal.hilbert(x_in)
    h_y = scipy.signal.hilbert(y_in)
    print('other compute')

    # basic equations
    # x_in = a * cos(theta) + a * sin(theta) * i
    # y_in = b * cos(theta + phi) + b * sin(theta + phi) * i
    a = np.abs(h_x)
    b = np.abs(h_y)
    phi = np.angle(h_x / h_y)

    # obtain expression for radius of <x_in, y_in>
    # r**2 = a**2 * cos^2(theta) + b**2 * cos^2(theta + phi)
    # r**2 * 2 = a**2 + b**2 + c * cos(2 * theta + psi)
    # c ** 2 = a ** 4 + b ** 4 + 2 * a ** 2 * b ** 2 * cos(2 * phi)
    # c ** 2 = a ** 4 + b ** 4 + 4 * a_b_cos(phi) ** 2 - 2 * a ** 2 * b ** 2
    a_b_cos = np.real(h_x) * np.real(h_y) + np.imag(h_x) * np.imag(h_y)  # = a * b * cos(phi)
    c = np.sqrt(a ** 4 + b ** 4 + 2 * (2 * a_b_cos ** 2 - a ** 2 * b ** 2))

    # find radius of (alpha, beta).
    r_max = np.sqrt(0.5 * (a ** 2 + b ** 2 + c))
    r_min = np.sqrt(0.5 * (a ** 2 + b ** 2 - c))
    r = 1 - r_min / r_max

    # calculate angle of max radius
    a0 = np.pi * (1 / 2)
    psi = np.arctan2(
        (a ** 2 * np.sin(a0) + b ** 2 * np.sin(a0 + 2 * phi)),
        (a ** 2 * np.cos(a0) + b ** 2 * np.cos(a0 + 2 * phi)),
    )
    psi = psi + 0.5 * np.pi + np.pi
    theta = -psi / 2


    alpha_max = a * np.cos(theta)
    beta_max = b * np.cos(theta + phi)
    r_max = np.linalg.norm((alpha_max, beta_max), axis=0)

    alpha_min = a * np.sin(theta)
    beta_min = b * np.sin(theta + phi)
    r_min = np.linalg.norm((alpha_min, beta_min), axis=0)
    r = 1 - r_min / r_max

    max_angle = np.arctan2(beta_max, alpha_max)
    theta = -max_angle * 2
    alpha_out = r * np.cos(theta)
    beta_out = r * np.sin(theta)
    print('compute done')

    return alpha_out, beta_out, r_max

a, b, vol = analysis.algorithm_4(L, R)
Generating the alpha and beta funscripts from this information is easy, I apply a low-pass filter at 30hz, throw away any samples with low volume, and then run Ramer-Douglas-Peucker to reduce file size of the funscript down to manageable levels.

Code: Select all

vol = vol * 2
a = np.nan_to_num(a)
b = np.nan_to_num(b)
a = low_pass_filter_2(a, 30, samplerate)
b = low_pass_filter_2(b, 30, samplerate)
mask = vol > 0.05
t_alpha, a_rdp = pybind11_rdp.rdp(np.vstack((t, a)).T[mask][::50], epsilon=0.05).T
t_beta, b_rdp = pybind11_rdp.rdp(np.vstack((t, b)).T[mask][::50], epsilon=0.05).T

export_to_funscript("MistressAndControlBox.alpha.funscript", t_alpha, remap(a_rdp, -1, 1))
export_to_funscript("MistressAndControlBox.beta.funscript", t_beta, remap(b_rdp, -1, 1))
For the volume funscript I employ scipy.signal.find_peaks to find the maximum volume at 0.1s resolution. I call this the volume envelope.

Code: Select all

peaks, peaks_info = scipy.signal.find_peaks(np.nan_to_num(vol), distance=int(0.1 * samplerate))
t_envelope, v_envelope = t[peaks], vol[peaks]
t_envelope, v_envelope = pybind11_rdp.rdp(np.vstack((t_envelope, v_envelope)).T, epsilon=0.005).T
export_to_funscript("MistressAndControlBox.volume.funscript", t_envelope, remap(v_envelope, 0, 1))
To calculate the pulse frequency and pulse width, for each sample I determine whether signal is 'high' or 'low' based on a threshold of 50% of the volume envelope.

Code: Select all

peaks_interp = np.interp(t, t_envelope, v_envelope)
is_high = ((vol > (peaks_interp * 0.5)) * (peaks_interp > .05)).astype(float)
is_low = 1 - is_high
I calculate the time the pulse is 'high' and the time between two subsequent 'low to high' transitions. These are used to directly calculate the pulse width and pulse frequency.

Code: Select all

low_to_high_indices = np.arange(1, len(is_high), 1)[(is_low[:-1] * (is_high[1:])).astype(bool)]
high_to_low_indices = np.arange(1, len(is_high), 1)[(is_high[:-1] * (is_low[1:])).astype(bool)]
if high_to_low_indices[0] < low_to_high_indices[0]:
    high_to_low_indices = high_to_low_indices[1:]
if low_to_high_indices[-1] > high_to_low_indices[-1]:
    low_to_high_indices = low_to_high_indices[:-1]

tt = t[low_to_high_indices][:-1]

high_span = high_to_low_indices - low_to_high_indices
high_span = high_span[:-1]
high_span = scipy.signal.convolve(high_span, np.ones(5), 'same') / 5  # moving average filter
carrier = 800
pw = high_span / float(samplerate) * 800
interval_span = low_to_high_indices[1:] - low_to_high_indices[:-1]
interval_span = scipy.signal.convolve(interval_span, np.ones(5), 'same') / 5  # moving average filter
pf = float(samplerate) / interval_span


continuous_indices = pw > 50
pw[continuous_indices] = 3
pf[continuous_indices] = 200
pw[np.roll(continuous_indices, 1)] = 3
pf[np.roll(continuous_indices, 1)] = 200


t_pw, pw_rdp = pybind11_rdp.rdp(np.vstack((tt, pw)).T, epsilon=0.2).T
pf = np.log(pf)
t_pf, pf_rdp = pybind11_rdp.rdp(np.vstack((tt, pf)).T, epsilon=0.02).T
pf_rdp = np.exp(pf_rdp)

export_to_funscript("MistressAndControlBox.pulse_frequency.funscript", t_pf, remap(pf_rdp, 0, 200))
export_to_funscript("MistressAndControlBox.pulse_width.funscript", t_pw, remap(pw_rdp, 3, 20))
This method for extracting the pulse width and pulse frequency is unlikely to work with other files.

This code isn't in the repository.
Post Reply

Who is online

Users browsing this forum: BlackHatAnon, Google [Bot], mklndrs, xob34 and 104 guests