MPGenerator: multi-phase Estim sound data generator

Webteases are great, but what if you're in the mood for a slightly more immersive experience? Chat about Tease AI and other offline tease software.

Moderator: 1885

Post Reply
mantrid
Explorer At Heart
Explorer At Heart
Posts: 154
Joined: Sun Dec 30, 2018 6:40 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

MPGenerator: multi-phase Estim sound data generator

Post by mantrid »

Development of MPGenerator has been stopped due to lack of acceptance of the approach. Sound generation has been moved to the new project gasm which was formerly a part of MPGenerator.

The old MPGenerator package still can be downloaded. Below there is the old description.

MPGenerator is a software for generating of multiphase Estim sound data for two or more audio channels. It can be used as a standalone program in order to create Estim sound files or as Java API.

The idea behind the API is to integrate it into teasing software in order to calculate the signals more or less interactively.

Features are:
  • Script language to generate sound data
  • Only depends on standard Java libraries, i.e. works on every modern platform
  • Supports amplitude modulation, phase modulation and frequency modulation
  • Support of power saving carrier waveforms
There is also a sound library generated with this program

A more detailed description can be found at the project page is Readme.rd.
Last edited by mantrid on Mon Jul 31, 2023 4:32 pm, edited 3 times in total.
GAsm -- A guide assembler with EStim support to generate interactive teases that run in a browser.
boundupone
Explorer At Heart
Explorer At Heart
Posts: 478
Joined: Sat Jun 01, 2013 8:01 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by boundupone »

Not sure I understand, how does the software determine the signals to generate? How could this be used with a tease to be more interactive?
Try anything once!
mantrid
Explorer At Heart
Explorer At Heart
Posts: 154
Joined: Sun Dec 30, 2018 6:40 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by mantrid »

boundupone wrote: Thu Jan 17, 2019 6:39 pm Not sure I understand, how does the software determine the signals to generate? How could this be used with a tease to be more interactive?
In order to use it interactively it has to be integrated into the teasing software. That is what the Java API is good for (GuideMe and TeaseAI Java are written in Java)

It also can be used without modifying the teasing software: by creating sound files. On the project pages you already find some documentation, including a Tutorial.

Request: If you use the software in this way please always provide the script file too. Because these scripts are independent to the electrode setup, i.e. not limited to 3-phase configurations or so, other users may want to rebuild the sound files depending on their own demands.
GAsm -- A guide assembler with EStim support to generate interactive teases that run in a browser.
RemiHiyama
Explorer At Heart
Explorer At Heart
Posts: 203
Joined: Thu Feb 28, 2019 3:30 pm
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by RemiHiyama »

I'm not too familiar with Java, but I started trying to poke around with things in JRuby (which can load and use Java apis), and I'm somewhat uncertain on the intended way to use the API, because the major classes all seem to have non-public constructors.

Also, just to be sure I'm not missing something, it's not possible to create two-channel audio with each channel's content being completely independent directly with this, right? It looks like the only way to get that would be generating each channel separately and then mix them together.
Auto: Replaces selected instances of the word "not" with the word "definitely".
mantrid
Explorer At Heart
Explorer At Heart
Posts: 154
Joined: Sun Dec 30, 2018 6:40 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by mantrid »

Everything is quite modularized and it is also possible to create audio data with independent channels. (In this case phase modulation makes no sense. But it could make sense to to have completely different amplitude modulation, e.g. pain on one channel and pleasure on the other one. The script language even has a limited support for this.)

I noticed that one important interface was non-public and therefore also not listed in the API docs. I changed this and updated the repository. The new version now also contain frequency modulation which is still experimental. (It works, but I still did not found out what it is good for).

The class MPContext is responsible for the settings (channel numbers, ...). This class has a method named
getGenerator which creates an instance of MPGenerator which is responsible for creating the audio data.
This is done by the method run which has two parameters, a sink which defines what to do with the audio data and a source. The latter is what you are looking for, i.e. you to write a class which implements the MPSource interface.
GAsm -- A guide assembler with EStim support to generate interactive teases that run in a browser.
RemiHiyama
Explorer At Heart
Explorer At Heart
Posts: 203
Joined: Thu Feb 28, 2019 3:30 pm
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by RemiHiyama »

MPContext still doesn't have a public constructor, so I don't see a way to work with from another program as is.

I'm also not seeing the frequency modulation stuff; that's still marked as a todo in MPGenerator.java.
Auto: Replaces selected instances of the word "not" with the word "definitely".
mantrid
Explorer At Heart
Explorer At Heart
Posts: 154
Joined: Sun Dec 30, 2018 6:40 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by mantrid »

RemiHiyama wrote: Fri Nov 22, 2019 6:02 am MPContext still doesn't have a public constructor, so I don't see a way to work with from another program as is.
Fixed.
I'm also not seeing the frequency modulation stuff; that's still marked as a todo in MPGenerator.java.
Already done and described in MPSource.getSample. Frequency modulation is achieved by modification of the sampling width which stretches/compresses th carrier waveform.

That does not work independently per channels because different frequencies on channels result in phase modulation effects.

In theory, some parts of the body react better on lower frequencies, i.e. changing frequencies changes the balance of which nerves are stimulated. In practice (according to my tests) frequency reduction felt like volume increase. Maybe it works if volume is adjusted simultaneously, maybe the frequency drop was to large ....
GAsm -- A guide assembler with EStim support to generate interactive teases that run in a browser.
RemiHiyama
Explorer At Heart
Explorer At Heart
Posts: 203
Joined: Thu Feb 28, 2019 3:30 pm
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by RemiHiyama »

Okay, that was enough to get me started. Spent an embarrassingly long time banging my head on the problem of preserving the timing of the amplitude modulation, but I think I've got that settled. Not being able to change frequency modulation independently of channel means I'm back to needing to generate separately and mix, but that doesn't seem like it'll be a huge hardship.

There doesn't really seem to be an ideal place to put a limit check on frequency modulation that I can tell. Handling it in the MPSource seems like it would give better results, but since that object doesn't know the pulse width, it can't tell whether it's getting into frequencies that are too high or too low.
Auto: Replaces selected instances of the word "not" with the word "definitely".
mantrid
Explorer At Heart
Explorer At Heart
Posts: 154
Joined: Sun Dec 30, 2018 6:40 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by mantrid »

RemiHiyama wrote: Sun Nov 24, 2019 6:05 am Okay, that was enough to get me started. Spent an embarrassingly long time banging my head on the problem of preserving the timing of the amplitude modulation, but I think I've got that settled.
You may take a look into MPSourceParam for an example implementation.
Not being able to change frequency modulation independently of channel means I'm back to needing to generate separately and mix, but that doesn't seem like it'll be a huge hardship.
If channels connected to a common electrode different frequencies per channel is equivalent to a carrier frequency equal to weighted average of the channel frequencies plus periodic phase modulation with frequency equal to the difference of the channel frequencies.

Without a common electrode the situation is different because there is no channel mixing: phase modulation has no effect but different frequencies per channel makes sense. This is not supported directly by MPGenerator, but you can use tools like ffmpeg for channel combining.
There doesn't really seem to be an ideal place to put a limit check on frequency modulation that I can tell. Handling it in the MPSource seems like it would give better results, but since that object doesn't know the pulse width, it can't tell whether it's getting into frequencies that are too high or too low.
The normal main frequency component (the only one if you disable power saving) is equal to 1/(4*<pulse width>). By default it is 833 Hz. The default sample width (parameter dt0 of the getSample method) is calculated from this setting and from a few other constraints. By stretching this sample width up to factor two (actual sample with is the value returned by getSample) the carrier frequencies are lowered by the same factor. With confPulseWidth=300 this results in frequencies between 833Hz and 417Hz.

IMHO feasible carrier frequencies should be in the range of 400Hz to 1000Hz.

I tested it again and also added frequency modulation support to the script language (see Changes.md). For me, frequency modulation mainly feels like amplitude modulation and the theoretical effect I described in my previous post ("balance shifting") is only very weak. In order to extract this effect amplitude would have to be compensated. But this compensation is probably very individual.

If someone is interested in new sound packs from the library, please send me a note. (In the past there was no interest)
GAsm -- A guide assembler with EStim support to generate interactive teases that run in a browser.
mantrid
Explorer At Heart
Explorer At Heart
Posts: 154
Joined: Sun Dec 30, 2018 6:40 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: MPGenerator: multi-phase Estim sound data generator

Post by mantrid »

MPGenerator has been discontinued due to lack of acceptance of the old approach.

The successor project is gasm which was formerly a part of MPGenerator. This forked project contains a re-designed estim sound implementation which is written in JavaScript and can be used directly from teases.
GAsm -- A guide assembler with EStim support to generate interactive teases that run in a browser.
Post Reply

Who is online

Users browsing this forum: shadshad and 37 guests