Go Back   Cockos Incorporated Forums > REAPER Forums > ReaScript, JSFX, REAPER Plug-in Extensions, Developer Forum

Reply
 
Thread Tools Display Modes
Old 04-03-2016, 01:10 PM   #1
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,875
Default JSFX now ReaPack Friendly & ReaTeam JSFX Repository

Hi everyone !

If you are a JSFX creator, you will be happy to hear that ReaPack, the incomming REAPER extension by cfillion that is meant to download/synchronize ReaScripts from Git Repos, can now works with JSFX !

This means that JSFX coded and upoaded on a Git System like GitHub can be downloaded right from REAPER by anyone using the ReaPack !
More if you update your FX, people will be able to be notified, and to download your new version with one click only !

To benefit from that, all you have to do is to have a GitHub (or alternative like GitLab) account and upload your script there.

But you can also simply upload your JSFX on the brand new JSFX RaaTeam (ReaTeam is a collective of REAPER independent coders) public repo !

Just like ReaTeam Templates Repository, it can be a good place for collaboration and for centralizing JSFX, but if you prefer to be the only one to control your repo, then feel free to create one !

To make a JSFX ReaPack friendly,
  • you only have to say .jsfx as extension,
  • and to have an ReaPack friendly header, like this one :
JSFX/X-Raym_Header.jsfx at master · ReaTeam/JSFX

JSFX coders, are you ready for the ReaPack adventure ?

Let us know if you have any concerns or questions !

See you on GitHub !
X-Raym is offline   Reply With Quote
Old 04-03-2016, 01:58 PM   #2
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

This is very cool and I hope it takes off but I'm super-busy and fairly lazy, so to entice people like me into supporting the worthy initiative, an explicit step by step "how-to" would probably be a good idea. If I had some simple instructions to follow, I might feel more inclined to invest some time in making my stuff compatible and uploading to a repository.

Make it super-easy and people will probably start to use it, which would be a good thing. My eyes start to glaze over at the very sight of the word "git" and I doubt that I'm alone in that.
IXix is offline   Reply With Quote
Old 04-03-2016, 03:46 PM   #3
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,875
Default

Cool if you are interested !

I'll try to make a quick resume but a more advanced english speaker may give more easy to understand information.

GitHub is webservice that provides Git system for its users.
It allows to have a access to source code online, which make collaboration easier.

Git is a system to manage source codes.
It has advanced version history per files (you can see which lines were added, deleted and by who and when), possibility to make collaborations etc...

A project managed on Git has a repository, which contains all files and version of the projects.

On the repo, you have a Master Branch, containing files and subfolders.
You can also optionally have other branch for other versions of the project (betas...).
Demo : My REAPER Scripts repo : https://github.com/X-Raym/REAPER-ReaScripts (master branch)

Full repos can be copied by other users on new repos as Forks, and these users can propose modifactions back against one source repo branch as Pull Request.

When you make a change on your local computer, you have to validate these changes from time to time by creating a Commit. A commit will track your changes, the time, and the author of the commit. Each commit have a name and description, entered by his author.
Demo : One commit resume : https://github.com/X-Raym/REAPER-Rea...9cff1686ab3a86
You can see the new lines created and the lines modified.

You can commit files from the GitHub website, or you their nice GitHub app.
https://desktop.github.com/

ReaPack is an Extension for REAPER that allows to download and sync scripts from online Git systems, like github.
By putting URL of repositories, you can download reascript or jsfx files.
It can scan the commit history and see if new files or if files were modified since your last synchronization with the repos.

This commit history is created using another software, the ReaPack Indexer. It scans files from a repo, a search files which have a certain type of header (containing script name, script author, versions..), and it can created a XML file with the list of all the valid files. But if these files already exist, it only check modifications.
Using a dedicated XML files to see repos changes is more efficient than if every user have to scan every files of a repo. By having a simple files with the modifications list, only one file is scanned.

To provide scripts or JSFX to users, you have several choice
  • Create a GitHub account, join the ReaTeam, and commit your formated files here
  • Create a GitHub account, create your own repo, and upload the formated file here
  • Create a account on GitHub alternative, and upload your formated here
ReaPack indexer is able to see JSFX if they have .jsfx as extension and if they have an header which look like this :
Code:
/**
 * JSFX Name: 
 * Author: 
 * Licence: GPL v3
 * REAPER: 5.0
 * Version: 1.0
 */

/**
 * Changelog:
 * v1.0 (2016-01-29)
  + Initial Release
 */
Each time you make a modifications on your FX, just modified the version number, and run ReaPack index.

When users will synchronize their package with ReaPack, they will see that you made a change to your repo, and ReaPack will automatically download them.

In resume, that's it
There is a bit of vocabulary but you may not need to know about forks, pull request and branch.

In resume if you want to be part of that :
  • Create a GitHub account
  • add .jsfx to your js (there is bulk renamer for that if needed)
  • Add the JSFX header to your files
And then you will be able to start using GitHub and the ReaPack indexer

I hope this help !
X-Raym is offline   Reply With Quote
Old 04-03-2016, 08:56 PM   #4
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

Here's one way of submitting contributions:


  1. Fork ("make a working copy of" in english) a ReaTeam repository (ReaScripts or JSFX) in your GitHub account
  2. Clone it ("download it on your computer") in the GitHub Desktop app
  3. Create a subdirectory to organize the packages by category for easy searching (eg. Envelopes, MIDI, Dynamics etc)
  4. Add some metadata at the top of the new files to at least tell ReaPack what version they are at (see X-Raym's posts above for more info on that)
  5. Once you're done making changes, create a branch and add at least one commit inside
  6. Send your commits to the original repository with a pull request
After that, a member of ReaTeam will review the request, and if all is good, will merge it and update the package index.
At this point the new package or update is available for download to ReaPack users!

GitHub's help pages provide a good introduction to git and GitHub Desktop: https://help.github.com/.

EDIT: I've only put version metadata in the video (that's the absolute minimum), but for prettier packages it's best to also put author information and a changelog.
Check out the examples at https://github.com/ReaTeam/JSFX/tree/master/Templates.

Last edited by cfillion; 04-04-2016 at 12:56 PM.
cfillion is offline   Reply With Quote
Old 04-03-2016, 10:19 PM   #5
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,690
Default

Great !!

Any planned way to manage documentation / user info file in such system and provide a searchable index for same ?

-Michaek
mschnell is offline   Reply With Quote
Old 04-04-2016, 02:28 AM   #6
ijijn
Human being with feelings
 
ijijn's Avatar
 
Join Date: Apr 2012
Location: Christchurch, New Zealand
Posts: 482
Default

Sounds very exciting, thanks team! I'll look into this soon.

PS I wasn't a Git fan until I discovered GitKraken and now I (mostly) love it.
ijijn is offline   Reply With Quote
Old 04-04-2016, 02:37 AM   #7
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,677
Default

I have a few questions:
1 Does the Free Plan work OK?
2 Where is ReaPack?
3 Where is ReaPack Indexer?
4 Does everything go in the ReaTeam repository?
5 cfillion's scheme seems to suggest running your own repository; is that needed? Doesn't that cost $?
6 Once a script is uploaded to the ReaTeam repository, can any reaTeam member update the script? Anyone-else?

How will a user search for the script that meets his / her requirements? Can user guides / screenshots etc be uploaded here too? (oops, that's what mschnell asked)

------------------------
Chambers Dictionary:
git noun, derog slang a stupid or contemptible person.
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
DarkStar is offline   Reply With Quote
Old 04-04-2016, 03:43 AM   #8
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,875
Default

Note : If you are a regular contributors, you could even join ReaTeam and you will not have to create forks and pull request

Note 2 : If you have a tons of JSFX, you may consider manage your own repo if you prefer.
This way, you will be able to commit changes and make them accessible to your users more quickly.

@DarkStar
Quote:
1 Does the Free Plan work OK?
It is, it only has limitations on private repos, that are non visible by the public.
If you need private Repos, you can use GitLab, a free GitHub alternative which doesn't have limits on private repos.
Quote:
2 Where is ReaPack?
the repo is here : cfillion/reapack: Package manager for REAPER
and download link is here : Releases · cfillion/reapack
Quote:
3 Where is ReaPack Indexer?
Repo here : cfillion/reapack-index: Package indexer for ReaPack-based repositories
Download here : Releases · cfillion/reapack-index
Quote:
4 Does everything go in the ReaTeam repository?
Actually, the most active ReaTeam repo is the ReaTeam Templates, were we share code snippets to everyone, but most active GitHub users have their own repos.
But if you only have few JSFX, maybe it doesn't worth to create a repo, that's the purpose of ReaTeam repos.
Quote:
5 cfillion's scheme seems to suggest running your own repository; is that needed? Doesn't that cost $?
We all use GitHub with free account here. I have an alternative GitLab repos for my premium/private scripts.
Quote:
6 Once a script is uploaded to the ReaTeam repository, can any reaTeam member update the script? Anyone-else?
Any ReaTeam member can modify it yes.
Any non ReaTeam member car create a Fork and propose a Pull Request. Any ReaTeam member can then authorize or not the change, but basically the rule is to let people mamanger their code as they want. ReaTeam behave just like a common repo, but we rarely change others files, we only make propositions.

@mschnell
GitHub also have README.md files that you can put on main and subfolders that display any text you want in a human readable way.

you can also create a several page wiki.

you also have an issue/bug/feature request hub.

There is a Find File function on GitHub, but more useful, a search function within ReaPack !

@ijijn

Indeed, GitHub app is not the only Git app compatible
I like it anyway because of all the click and drag actions we can make, and you always have access to the console if needed.

But sure I'll take a look at GitKraken hehe !
X-Raym is offline   Reply With Quote
Old 04-04-2016, 03:59 AM   #9
musicbynumbers
Human being with feelings
 
musicbynumbers's Avatar
 
Join Date: Jun 2009
Location: South, UK
Posts: 14,214
Default

Great job guys!

So grateful to have this being worked on
__________________
subproject FRs click here
note: don't search for my pseudonym on the web. The "musicbynumbers" you find is not me or the name I use for my own music.
musicbynumbers is online now   Reply With Quote
Old 04-04-2016, 06:17 AM   #10
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 685
Default

Cool stuff!

If I may suggest one thing: when you get this up and running, it might be worth to simplify the install/initialization process for ReaPack/Indexer or whatever. Just make it stupidly simple, like installing the SWS extensions. Many of the potential users probably don't have any experience in using these services like Git.

For example, I just navigated to the ReaPack download page, but I have no idea what to do with those .dll and .dylib files (do i need one or both? where do i put them? etc...)

Yep, some of us are a bunch of idiots please provide accessibility for the handicapped.
Sju is offline   Reply With Quote
Old 04-04-2016, 06:48 AM   #11
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,875
Default

@Sju
Actually is already pretty simple. You just have to put the right file in the right folder and hope it is running
For the end users, no need to run Git ot whatsoever.

GitHub and ReaPack indexer is for the coders only.


It is more documentation than ReaPack itself that need to be simplified

But we cannot write full docs until we didn't get to a v1.0 with "definitive" behaviors

WHen v1.0 will came out, I'll create a detailed article on my website, and maybe some users (reaperblog ? ) could make a video of it
X-Raym is offline   Reply With Quote
Old 04-04-2016, 07:03 AM   #12
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,960
Default

I`m very glad this project grows exactly how I imagined it year ago.
So much people already like it and use it (even if it is still beta state) and I`m proud almost all talented here take part of this project.
mpl is offline   Reply With Quote
Old 04-04-2016, 07:15 AM   #13
G-Sun
Human being with feelings
 
G-Sun's Avatar
 
Join Date: May 2010
Location: Norway
Posts: 7,318
Default

Great work!
__________________
Reaper x64, win 11
Composer, text-writer, producer
Bandcamp
G-Sun is offline   Reply With Quote
Old 04-04-2016, 08:08 AM   #14
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by X-Raym View Post
ReaPack indexer is able to see JSFX if they have .jsfx as extension...
What about these?

1. external data files (wav, ogg, txt etc.) that need to be in the Data folder
2. jsfx-inc files
3. png, jpg, txt etc. referenced by the fx

Also the vast majority of JS created up until recently don't have a file extension. Having to rename them all is a bit ugly.
IXix is offline   Reply With Quote
Old 04-04-2016, 09:05 AM   #15
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,875
Default

@IXix
The header format have a field for external files:
Something like this should work :
Code:
 * Version: 1.0 
 * Provides: 
     . https://gitlab.com/user/repo/raw/$commit/$path background.png https://i.imgur.com/tKAkk9N.png
If certain things need to be at certain places, write to cfillion, and he'll certainly find a way
Quote:
Also the vast majority of JS created up until recently don't have a file extension. Having to rename them all is a bit ugly.
To be honest, not having a file extension is what is ugly.
  • You can't filter files by type in your finder/explorer, or on other softwares (Git for example)
  • You can't dedicate a default software to open your file
  • You can't sort files by types without taking the risk that other non jsfx files (who wouldn't have any extension) get mixed with your search results

I don't know why JSFX doesn't have any extension by default but you have to admit that providing files without extensions is completely unusual and doesn't provide any advantage. It is not because it doesn't need extension that it shouldn't have one.

Fortunately, there is a lot of ways to batch rename files on the different OS so it is not really a problem to add .jsfx to a file selection.
For Windows, Bulk Rename Utility is a killer software for renaming.
For mac : 3 Easy Ways to Batch Rename Files on the Mac

Renaming dozens of file can sound like a pain in the ass but it is really a matter of seconds with a renamer software.

cfillion really try hard to match usual and actual coding behaviors of the community but without any conventions, the ReaPack indexer would be a set of custom complex rules dedicated to each coders, which wouldn't be very easy to manage.
With ReaScript, we had the chance to already have some kind of conventions for the header, but we all had to tweak all our scripts a bit to make them ReaPack friendly. It take time, but because our work will more easily accessible than ever before, it really worth the time investment, don't you think ?

There is no hurry, take your time, and don't forget that maybe some volunteers can help you.
X-Raym is offline   Reply With Quote
Old 04-04-2016, 12:38 PM   #16
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

@DarkStar
Quote:
Originally Posted by DarkStar View Post
5 cfillion's scheme seems to suggest running your own repository; is that needed?
A fork (working copy) is a bit different from a full-fledged independent repository: it's a way to make and submit changes without having to join ReaTeam.

If you intend to send modifications often, it's probably best to join ReaTeam and have direct write permissions, but for occasional contributions I think it's best to fork/branch/pull-request: it's easier and less error prone (pull requests are checked for common mistakes by a bot and manually reviewed before being applied).

The package indexer is intended for repository maintainers, developers/contributors don't need to bother with it unless they run their own independent repository or want to test the changes in ReaPack locally before sending them.

Quote:
Originally Posted by DarkStar View Post
How will a user search for the script that meets his / her requirements?
Users search for packages to install using Extensions > ReaPack > Browse packages: https://i.imgur.com/HxqwqeF.gif.

@Sju

Quote:
Originally Posted by Sju View Post
For example, I just navigated to the ReaPack download page, but I have no idea what to do with those .dll and .dylib files (do i need one or both? where do i put them? etc...)
.dll files are for Windows and .dylib are for OS X. Choose the architecture (32/64 suffix) to match REAPER's.
To install, download and put the file in REAPER's resource directory, inside of the "UserPlugins" subfolder.

@IXix

Quote:
Originally Posted by IXix View Post
What about these?

1. external data files (wav, ogg, txt etc.) that need to be in the Data folder
2. jsfx-inc files
3. png, jpg, txt etc. referenced by the fx
As X-Raym said, additional files are specified from the metadata header:
Code:
/*
 * Version: 1.0
 * Provides:
 *   ixix-functions.jsfx-inc
 *   YourPackage Data/background.png
 *   some_file_that_is_not_in_the_repository.pdf http://download/url
 *   [windows] ixix-functions-win32.jsfx-inc
 */
This tells ReaPack to install ixix-functions.jsfx-inc from the same directory as the current file, background.png from the "YourPackage Data" subfolder and some_file_that_is_not_in_the_repository.pdf from an external URL. ixix-functions-win32.jsfx-inc is only installed on computers running Windows.

There are two limitations on this:
  1. Only one package can claim a specific file at a time (meaning that sharing files between packages sucks at this time and I have yet to find a good solution. Suggestions appreciated)
  2. Files cannot be installed outside of the repository's root directory

Last edited by cfillion; 04-04-2016 at 01:48 PM.
cfillion is offline   Reply With Quote
Old 04-04-2016, 01:12 PM   #17
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 685
Default

Quote:
Originally Posted by cfillion View Post
.dll files are for Windows and .dylib are for OS X. Choose the architecture (32/64 suffix) to match REAPER's.
To install, download and put the file in REAPER's resource directory, inside of the "UserPlugins" subfolder.
Ok thanks, got it working!
Sju is offline   Reply With Quote
Old 04-04-2016, 02:07 PM   #18
David Else
Human being with feelings
 
Join Date: Mar 2012
Posts: 610
Default

great stuff!
__________________
----------> Debian Linux Distribution = Computing Joy & Freedom <----------
David Else is offline   Reply With Quote
Old 04-04-2016, 02:08 PM   #19
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,646
Default

Quote:
Originally Posted by X-Raym View Post
To be honest, not having a file extension is what is ugly.
Yeah, but I have projects with JSFX, and they all refer to the files without extension. Renaming the files will break those projects. Also, all bundled JSFX are without extension, so I guess you could say that they are that way by convention...

Anyhow, TBH this all seems like way to much work for me personally (I like coding, I like Git, but I hate "paperwork"), so I probably won't be contributing anyway, which kinda makes my opinion m00t I guess i.e. please ignore me.
Tale is offline   Reply With Quote
Old 04-04-2016, 02:30 PM   #20
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,875
Default

@Tale
Indeed it will "break" your project if you rename JSFX from your effects folder...
But you can have a copy of you FX on a folder dedicated to your Git Repo, that have the necessary modifications.
(or maybe we can ask cockos to handle file with JSFX extension just like those which don't have one ?)

Anyway, if one day you feel the need to make your FX more easily accessible, you know where to look for :P

Thanks for sharing your JSFX for free, no matter what way you choose !
X-Raym is offline   Reply With Quote
Old 04-05-2016, 04:37 AM   #21
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by cfillion View Post
@IXix

As X-Raym said, additional files are specified from the metadata header:
Code:
/*
 * Version: 1.0
 * Provides:
 *   ixix-functions.jsfx-inc
 *   YourPackage Data/background.png
 *   some_file_that_is_not_in_the_repository.pdf http://download/url
 *   [windows] ixix-functions-win32.jsfx-inc
 */
This tells ReaPack to install ixix-functions.jsfx-inc from the same directory as the current file, background.png from the "YourPackage Data" subfolder and some_file_that_is_not_in_the_repository.pdf from an external URL. ixix-functions-win32.jsfx-inc is only installed on computers running Windows.

There are two limitations on this:
  1. Only one package can claim a specific file at a time (meaning that sharing files between packages sucks at this time and I have yet to find a good solution. Suggestions appreciated)
  2. Files cannot be installed outside of the repository's root directory
Nice. Great work.

Regarding limitation 2, does that mean that I'd need to set my repo root as "[AppData]/REAPER" in order to install files to both "[AppData]REAPER/Effects/IX/" and "[AppData]REAPER/Data/IX" ?

Limitation 1 sucks hard but I don't know enough about this stuff to suggest any solutions.

Quote:
Originally Posted by X-Raym View Post
To be honest, not having a file extension is what is ugly...
Yes but that's the situation we have to deal with. As Tale pointed out, just renaming the plugins isn't a very good option, so it would be much better if the awkward extentionless files could be handled.
IXix is offline   Reply With Quote
Old 04-05-2016, 10:46 AM   #22
G-Sun
Human being with feelings
 
G-Sun's Avatar
 
Join Date: May 2010
Location: Norway
Posts: 7,318
Default



After sync and restart
__________________
Reaper x64, win 11
Composer, text-writer, producer
Bandcamp
G-Sun is offline   Reply With Quote
Old 04-05-2016, 11:22 AM   #23
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

@IXix
Limitation 2 just means that ReaPack won't accept to put stuff in C:\WINDOWS nor anywhere outside of <REAPER resource path>/Effects/<repo name>/ (for an effect package).

About the .jsfx extension, even if I add support for extension-less files, it might still break existing projects (or custom/cycle actions for ReaScripts) if ReaPack's install location differs from where the user put them before.
In my opinion this would be the best solution for that: http://forum.cockos.com/showthread.php?t=53820.

@G-Sun
ReaPack v0.9 is incompatible with previous releases (I don't enforce backward compatibility since it's beta and things change frequently):
Delete <REAPER resource path>/ReaPack/registry.db and restart REAPER (note that this makes ReaPack forget anything it previously installed).

Last edited by cfillion; 04-05-2016 at 10:39 PM.
cfillion is offline   Reply With Quote
Old 04-06-2016, 01:39 AM   #24
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by cfillion View Post
Limitation 2 just means that ReaPack won't accept to put stuff in C:\WINDOWS nor anywhere outside of <REAPER resource path>/Effects/<repo name>/ (for an effect package).
Ah, well that's a big problem. Many FX require files from <REAPER resource path>/Data and subfolders.

Quote:
Originally Posted by cfillion View Post
About the .jsfx extension, even if I add support for extension-less files, it might still break existing projects (or custom/cycle actions for ReaScripts) if ReaPack's install location differs from where the user put them before.
In my opinion this would be the best solution for that: http://forum.cockos.com/showthread.php?t=53820.
That would be a good solution but it's a six year old request so I won't hold my breath.
IXix is offline   Reply With Quote
Old 04-06-2016, 11:16 AM   #25
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

Quote:
Originally Posted by IXix View Post
Ah, well that's a big problem. Many FX require files from <REAPER resource path>/Data and subfolders.
EDIT: Ah, I see. I'm not much familiar with JSFX development so I didn't think about that, but some data files put in the Effects folder would actually be visible in REAPER's FX browser right?
I'll look into a solution for this, thanks!

Last edited by cfillion; 04-06-2016 at 11:44 AM.
cfillion is offline   Reply With Quote
Old 04-06-2016, 01:09 PM   #26
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by cfillion View Post
EDIT: Ah, I see. I'm not much familiar with JSFX development so I didn't think about that, but some data files put in the Effects folder would actually be visible in REAPER's FX browser right?
I'll look into a solution for this, thanks!
We recently gained the ability to read any files we like in the effect folder but file sliders still point to the data folder...
Quote:
Originally Posted by http://reaper.fm/sdk/js/js.php#js_file
Another extended syntax is:
  • slider1:/some_path:default_value:slider description
In the above example, the /some_path specifies a subdirectory of the REAPER\Data path, which will be scanned for .wav, .txt, .ogg, or .raw files. default_value defines a default filename. If this is used, the script will generally use file_open(slider1) in the @serialize code section to read the contents of the selected file.
There are plenty of FX that use that system.
IXix is offline   Reply With Quote
Old 04-21-2016, 01:17 PM   #27
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

@IXix Done! ReaPack v0.10 can install whole packages or individual files in REAPER's Data folder:

Code:
/* test.jsfx
 * Version: 1.0
 * Provides:
 *   background.png
 *   [data] Test Data/*.txt
 */
- or -
Code:
/* test.data
 * Version: 1.0
 * Provides: Test Data/*.txt
 */
https://forum.cockos.com/showthread.php?p=1672209
It might need some more tuning though, please let me know.

Last edited by cfillion; 04-21-2016 at 03:25 PM.
cfillion is offline   Reply With Quote
Old 04-22-2016, 03:48 AM   #28
daxliniere
Human being with feelings
 
daxliniere's Avatar
 
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
Default

Quote:
Originally Posted by IXix View Post
My eyes start to glaze over at the very sight of the word "git" and I doubt that I'm alone in that.
No-one likes a git here in the UK...
__________________
Puzzle Factory Sound Studios, London [Website] [Instagram]
[AMD 5800X, 32Gb RAM, Win10x64, NVidia GTX1080ti, UAD2-OCTO, FireFaceUCX, REAPER x64]
[Feature request: More details in Undo History]
daxliniere is offline   Reply With Quote
Old 04-22-2016, 04:15 AM   #29
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by cfillion View Post
@IXix Done! ReaPack v0.10 can install whole packages or individual files in REAPER's Data folder:

Code:
/* test.jsfx
 * Version: 1.0
 * Provides:
 *   background.png
 *   [data] Test Data/*.txt
 */
- or -
Code:
/* test.data
 * Version: 1.0
 * Provides: Test Data/*.txt
 */
https://forum.cockos.com/showthread.php?p=1672209
It might need some more tuning though, please let me know.
Cool! (but Damn! Now I'll have to get my act together and test it! Need more hours in a day and more days in a week.)

Quote:
Originally Posted by daxliniere View Post
No-one likes a git here in the UK...
That could be part of my aversion. Perhaps it's a subconscious reaction to the word? Nah, probably just crippling laziness, not wanting to figure out a new thing.
IXix is offline   Reply With Quote
Old 04-22-2016, 04:25 AM   #30
daxliniere
Human being with feelings
 
daxliniere's Avatar
 
Join Date: Nov 2008
Location: London, UK
Posts: 2,581
Default

Quote:
Originally Posted by mpl View Post
I`m very glad this project grows exactly how I imagined it year ago.
So much people already like it and use it (even if it is still beta state) and I`m proud almost all talented here take part of this project.
Me too
It speaks to the generosity of the REAPER community's contributors.
__________________
Puzzle Factory Sound Studios, London [Website] [Instagram]
[AMD 5800X, 32Gb RAM, Win10x64, NVidia GTX1080ti, UAD2-OCTO, FireFaceUCX, REAPER x64]
[Feature request: More details in Undo History]

Last edited by daxliniere; 04-22-2016 at 04:45 AM.
daxliniere is offline   Reply With Quote
Old 04-24-2016, 04:25 AM   #31
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by cfillion View Post
Code:
/* test.jsfx
 * Version: 1.0
 * Provides:
 *   background.png
 *   [data] Test Data/*.txt
 */
- or -
Code:
/* test.data
 * Version: 1.0
 * Provides: Test Data/*.txt
 */
Sorry, my brain is having a slow day and I don't quite understand how the system is supposed to work. Could you please elaborate? What should my repo folder structure look like?
IXix is offline   Reply With Quote
Old 04-24-2016, 12:06 PM   #32
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

@IXix

I suggest a structure like this:


  • I've added this at the top of MIDI/Velocifier II.jsfx:
    Code:
    // version: 1.0
    // author: IXix
  • And modified slider6 to point to /<Repository Name>/Sequences:
    Code:
    slider6:/Test JSFX/Sequences:none:Sequence File
  • Data/Sequences.data contains this (requesting installation of every .txt file in <Parent Folder>/Sequences):
    Code:
    version: 1.0
    author: IXix
    provides: ../Sequences/*.txt
Creating two independant packages like that makes possible to share the same set of data files with other packages.


Last edited by cfillion; 04-24-2016 at 04:37 PM.
cfillion is offline   Reply With Quote
Old 04-24-2016, 12:34 PM   #33
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Okay, I think I nearly almost don't quite understand. I'll try to set up a repository, just for me until I understand how it works, how best to organise the files and which files I should include in it.

Might take a while though. Life is really relentless these days.
IXix is offline   Reply With Quote
Old 04-24-2016, 01:06 PM   #34
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

Take your time, and don't hesitate to ask if you have any question!

(And that will help to identify which things should be better explained or simplified)

EDIT:
The current getting started guide for the package indexer is here: https://github.com/cfillion/reapack-index/wiki
And the reference documentation for packages is there: https://github.com/cfillion/reapack-...-Documentation

Last edited by cfillion; 04-24-2016 at 03:44 PM.
cfillion is offline   Reply With Quote
Old 03-13-2018, 03:44 AM   #35
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

*expletive deleted* this is almost two years old! Time is cranking by at a truly alarming rate.

I'm finally getting this done. How do I test my repo, so I can see how it will appear to the user and check that stuff goes where it's supposed to go during installation?
IXix is offline   Reply With Quote
Old 03-13-2018, 04:20 AM   #36
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

You can import a local index file for testing by using file:// + path in Import repositories. (To test installing the download URLs contained in the index must be accessible)

C:\Path\To The\index.xml -> file:///C:/Path/To%20The/index.xml

Last edited by cfillion; 03-13-2018 at 07:01 AM.
cfillion is offline   Reply With Quote
Old 03-13-2018, 06:54 AM   #37
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by cfillion View Post
You can import a local index file for testing by using file:/// + path in Import repositories. (To test installing the download URLs in the index must be accessible)

C:\Path\To The\index.xml -> file:///C:/Path/To%20The/index.xml
Cool, thanks! Expect more pestering over the coming days as I try to wrap my cotton wool brain around several new things at once.
IXix is offline   Reply With Quote
Old 03-13-2018, 03:30 PM   #38
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

I must have lost a few more brain cells because I'm struggling to work this out.

I want to duplicate the files and folders created by the Reaper installer, so I created my repository in /Effects/IX/ , added header data to two of the effects and commited to the repo but when I run reapack-index the index is empty
Code:
<?xml version="1.0" encoding="utf-8"?>
<index version="1" name="IX JSFX"/>
This is the header (almost the same in both files), right at the top of the file before anything else...
Code:
/*
version: 1.0
desc: MIDI Velocity Variation Generator
author: IX
about:
  # MIDI Velocifier II
  Modifies incoming velocities according to a pattern file
provides: [data] ix_sequences/*.txt
*/
What am I doing wrong? I'm starting to feel stupid.

Also, assuming I ever get it to find the files, is that "provides:" line correct and is it okay to have that same line in two effects?
IXix is offline   Reply With Quote
Old 03-13-2018, 10:50 PM   #39
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

Quote:
Originally Posted by IXix View Post
What am I doing wrong? I'm starting to feel stupid.
A limitation of reapack-index is that it can only detect the type of a file from the file extension. JSFX packages must have the .jsfx extension. (You can use the provides tag to remove the extension if you want.)

Quote:
Originally Posted by IXix View Post
Also, assuming I ever get it to find the files, is that "provides:" line correct and is it okay to have that same line in two effects?
Yes it's the correct syntax for adding files to a package. Only one package may own a file on the user hard drive at the same time. There is two ways to share files between more than one packages:
  • By using a unique folder or file name. This guaranties the files are installed along and updated at the same time as the package. This makes the package self-contained but installs duplicate files.
    Code:
    provides:
      [data] ix_sequences/1 - All Notes.txt > ix_sequences/MIDI_Variant/1 - All Notes.txt
      [data] ix_sequences/2 - Accent on 1.txt > ix_sequences/MIDI_Variant/1 - All Notes.txt
  • The other solution is making a dedicated package for the shared files. This is the opposite of the previous way.

    IX_Sequences.data
    Code:
    @description Sequences files for IX effects
    @version     1.0
    @author      IX
    @provides    ix_sequences/*.txt
    @about       ...

Last edited by cfillion; 03-14-2018 at 04:15 AM.
cfillion is offline   Reply With Quote
Old 03-14-2018, 03:13 AM   #40
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by cfillion View Post
A limitation of reapack-index is that it can only detect the type of a file from the file extension. JSFX packages must have the .jsfx extension. (You can use the provides tag to remove the extension if you want.)
Ah okay. I mistakenly thought that issue had been overcome. Could you elaborate on how the provides tag can be used to remove the extension? Would you create a dummy package that uses provides to install the extensionless files?

Quote:
Originally Posted by cfillion View Post
Only one package may own a file on the user hard drive at the same time. There is two ways to share files between more than one packages...
I see. I think I get it now and your previous (very previous, sorry!) repo structure suggestion makes more sense. Thanks for your patience and your hard work! Reapack is a fantastic achievement.
IXix is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 05:54 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.