Comic Funscript Reader (CFSReader) - Bring Comics and Images to Life! Enter a New Era!

CFSReader (Comic Funscript Reader) is a reader that brings comics to life.
It stores motion parameters for each comic page in a .cfs file and drives an OSR device through a USB serial connection.

GitHub: https://github.com/Karasukaigan/CFSReader

Installer:

CFS File Format

A .cfs file is essentially a JSON file and must have the same name as its corresponding comic folder.

{
  "1.jpg": {
    "max": 100,
    "min": 50,
    "freq": 1.5,
    "decline_ratio": 0.4
  },
  "2.jpg": {
    "max": 70,
    "min": 0,
    "freq": 2.3,
    "decline_ratio": 0.5
  }
}

Parameter descriptions:

  • max: Highest position.
  • min: Lowest position.
  • freq: Frequency (number of back-and-forth movements per second).
  • decline_ratio: Proportion of the downward phase within one cycle (the time spent moving from the highest position to the lowest position).

License

This project is licensed under the MIT License.

Update

v1.4

  1. Added an Export Heatmap feature.
  2. Assigned keyboard shortcuts to the five preset buttons (Slow, Medium, Fast, Top, Bottom), mapped to keys 1 through 5.
  3. Fixed an issue where the page navigation buttons could not be quickly used with keyboard shortcuts (left and right arrow keys) when they lost focus.

v1.3

  1. Added a comic thumbnail feature. It needs to be enabled in Preferences, where you can choose different aspect ratios.
  2. Added a right-click context menu to the comic list, allowing you to copy the comic title or open the corresponding folder.

v1.2

  1. Added support for animated .gif images.
  2. Fixed UI bugs.

v1.1

  1. After saving parameters, the device can immediately operate using the updated motion curve.
  2. Added a new set of parameter preset buttons: Slow, Medium, Fast, Top, Bottom.

Here are my other projects

10 Likes

Am I to understand that this allows you to flip through a gallery of images and each page can have a script play that would match the scene while you read it? If so, that is really cool. Can it work with the handy and can it use gif images?

1 Like

Your understanding is absolutely correct! At the moment, I only have an OSR device and don’t have a Handy, so support for the Handy will require assistance from other developers.

CFSReader was originally developed as a comic reader and is not currently compatible with GIF images, but support for GIFs will be added in the future. For now, each image requires manually setting the motion curves. I’m exploring ways to use AI to generate them automatically, which is also my next development goal.

3 Likes

This looks promising. I’ll try it out; I second that GIF compatibility could turn out to be great.

3 Likes

Ah man, this is crazy! Never felt like cranking it to an erotic comic but…hey..there’s always a first time lol

3 Likes

I’ve dreamt of something like this for a long time… it’s beautiful :smiling_face_with_tear:

Feedback:

I like how simple it is, no need to be complex!

  • I would appreciate a copy and paste feature at like the top or bottom of the CFS Editor. It would make it faster when scripting multiple pages where you want to just slightly change the previous pages script instead of starting from 50 Max/Min.
  • It would be great if the script immediately changed when you save a script change. I have to change pages and back to see what my changes did in real-time.
  • I think a sort of optional cockhero/faphero beat sound like fapinstructor has would be a nice addition that could add a lot (letting the user place their own sound file would be even better.)

Thanks for the app

2 Likes

I’m really glad you like it! The suggestions you provided are very practical and feasible. I’ll implement them in future versions.

2 Likes

v1.1: https://github.com/Karasukaigan/CFSReader/releases/download/v1.1/cfsreader-installer-win-x64-v1.1.exe

Improvements

  1. After saving parameters, the device can immediately operate using the updated motion curve. @DJKong

  2. Added a new set of parameter preset buttons: Slow, Medium, Fast, Top, Bottom. @DJKong

v1.2: https://github.com/Karasukaigan/CFSReader/releases/download/v1.2/cfsreader-installer-win-x64-v1.2.exe

Improvements

  1. Added support for animated .gif images. @Teasey @GusTheDude
  2. Fixed UI bugs.
3 Likes

1 Like

this is what i looking for..! thanks for a nice project!
im a very new to ..toy community, so i might asking silly question but is there any plan for support intiface? or
thanks!

I’m glad to hear that this project is useful to you.
Are you referring to Intiface Central when you mention Intiface? My design philosophy has always been to keep things as simple as possible and avoid introducing third-party libraries or software whenever possible. Therefore, I prefer the software to directly control devices rather than relying on intermediaries.
At the moment, the software only supports OSR devices, but I will try to support more devices in the future.

1 Like

v1.3: https://github.com/Karasukaigan/CFSReader/releases/download/v1.3/cfsreader-installer-win-x64-v1.3.exe

Improvements

  1. Added a comic thumbnail feature. It needs to be enabled in Preferences, where you can choose different aspect ratios.

  2. Added a right-click context menu to the comic list, allowing you to copy the comic title or open the corresponding folder.

1 Like

I can dust off my collection again :smiling_face_with_tear:

Definitely going to play with this. Is it possible to build a script and export it with CFS to share with the community? Would be awesome to be able to script some comics.

Of course! The entire project is licensed under MIT, and any scripts you create can be freely shared or even used commercially.

My original intention in designing CFS (Comic Funscript) was to create a file format similar to Funscript that could be applied to comics or collections of images. However, standard Funscript is too complex—writing one for every single image would involve too much work. So I simplified the way motion curves are defined, using just four parameters to describe each curve. This greatly reduces the workload and makes it possible to quickly create a “Funscript” for each image.

2 Likes

haha this is what some ppl discussed back in this post in 2022.

cool to see you’ve brought basically what we imagined to life.

1 Like

I’m glad to be able to contribute to the community. I also have another project—if you’re interested, you can check it out. It can convert videos on web pages into TCode in real time to drive OSR devices.

2 Likes

Sooooooo about that :joy:.

I’ve been working on this since my last post. I’ve implemented a bunch of things while also doing my best not to mess with the foundation because it’s a fantastic foundation that makes scripting content like this very intuitive (very important if you’re going to script a 60 page doujin).

When I said that I dreamt of something like this I was not kidding. And so I put every thing I ever wanted. After rigorous testing, a ton of bug zapping, debugging, and creating 4 unique scripts to showcase the possibilities, I present my spin on CFSReader 2.0.

CFSReader v2.0

1) Script by Page (Simple)


(Check out Emma Frost Doujin)

The first layer is page-level scripting.
Each page has its own base script values (max, min, freq, decline_ratio) and optional page-level playback options (duration, loop, override_duration).

How it is used:

  • Set one script for a whole page.
  • Useful for pages that should stay consistent the entire time.
  • Fastest Scripting Method
  • Serves as the fallback/default source when no section or panel override is active.

2) Section Scripting (Intermediate/Designed for Audio Doujin)


(Check out Sousou no Frieren Doujin)

Section scripting adds time-based control and playback inside a page.

How it works:

  • A page timeline can be split into sections with start/end times.
  • Each section has its own script override.
  • During playback, the section timeline follows along.
  • Sections can be moved/resized for precise timing.
  • You can align script behavior to dialogue, moans, rhythm changes, scene pacing, and transitions.
  • In per-page audio mode, each page can carry its own timed choreography.
  • There are multiple levels of grid snap and beat-snap editing make timing adjustments much faster.

3) Panel Scripting (Advanced)


(Check The Goon Files #1)

Panel scripting adds area-based interaction on top of timeline/page logic.

How it works:

  • Draw panel rectangles on the page.
  • Assign panel script values.
  • Panel triggers can be hover or click.
  • Panel script can temporarily override active output.

Common use cases:

  • Emphasize interactive “focus zones” on a page.
  • Add alternate motion behavior when users inspect a panel.
  • Create responsive interaction without changing whole-page timing data.


4) Linking Panels to Sections (Visual + Script Coordination)


(Checkout The Aunt Staying Over)

Sections can be linked to specific panel IDs.

What linking does:

  • The linked panel can highlight while that section is active.
  • Linked panel script can be merged with section output.
  • Gives a direct visual mapping between timeline moments and on-page regions.

5) Virtual Playback by Duration (No Audio Required)


The app supports full playback even with no audio file.

How it works:

  • Playback uses page duration as virtual timeline length.
  • Scrubber, section timing, and script output still run normally.
  • Useful for silent projects, draft passes, or mixed libraries with inconsistent audio coverage.

6) Beat System + Custom Sounds (Including Sound Pack Support)


Beat feedback is integrated as an optional authoring aid.

Current capabilities:

  • Enable/disable beat sounds.
  • Use default beat sound or load a custom file.
  • Volume control and test playback in Preferences.
  • Optional mode to trigger beats only on bottom peaks.

Sound pack support:

  • You can point beat sound to any compatible file from a pack.
  • Included sound resources make it easy to try different beat textures immediately.

7) Audio Doujin by Page Pairing (Per-Page Audio Mode)


The app supports per-page audio mapping for audio doujin workflows.

How it works:

  • Place audio files in the comic folder using page base names.
  • Example: 001.jpg pairs with 001.ogg (or mp3/wav/flac/etc.).
  • On page switch, matching page audio is loaded for that page.
  • If a page has no matching audio, the page can still run through virtual duration mode.

This allows page-by-page authored timing without forcing one global track.

8) Audio Doujin Extractor for Doujins.com (How to Use)


The extractor is meant to prepare assets from sources so they can be used in per-page workflows.

Basic usage flow:

  1. Open tools/doujins_extractor.user.js.
  2. Install/run it using a tampermonkey extension ( I recommend using firefox).
  3. Open up the audio slideshow and click through every page quickly.
  4. Exit out of fullscreen and press the scan button and it will find every page and mp3 and should have them in order.
  5. Export/download extracted assets (It will download everything to a folder name with the CFS file on the outside.
  6. Place extracted folder into your comic folder with page-matching names and the CFS file in your cfs folder.
  7. Open the comic in CFSReader; per-page mode will detect numeric audio files automatically.

Key requirement:

  • File naming must match page names (001.*, 002.*, etc.) for automatic pairing.

There are a lot of things you can do. I made an Interactive Goon File with hidden panels (unless you press the edit panels button ofc) that you wont find until you hover over them. Doing so triggers a script. A VERY rewarding treasure hunt :wink:

Minor Additions / QoL

  • Separate smoothness controls for script transitions and page transitions.
  • Improved page transition presentation (crossfade behavior).
  • Better scrubber behavior in virtual playback mode.
  • Snap and beat-snap timeline authoring controls.
  • Section context actions: copy, paste script, duplicate, delete.
  • Debug mode in the help menu if you run into any bugs.
  • Trace export tooling for diagnostics.
  • Improved panel overlay geometry sync and interaction reliability.

I spent some time and created 4 Comic Funscripts to showcase what these different modes can do. I didn’t explain everything because honestly I’m dead tired. Just give it a go and please let me know if yall find any bugs or take it and build upon it even further.

Just download the script zip and drop the files into the root folder of the CFS 2.0 folder
run the install_requirements.bat (Full download is around 750mb) and then the CFSReader.bat

Please Enjoy!

a cat is walking on a wooden floor with the words i sleep now written on the bottom

2 Likes

I really hope this gets support for the handy because this looks super cool!

1 Like

There is currently a known bug in the software: if an incorrect USB serial port is selected, the software may freeze while playing motion curves. Make sure the selected USB port is actually connected to the OSR device. I will try to fix this in a future version.