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

Reply
 
Thread Tools Display Modes
Old 08-09-2019, 08:23 AM   #1
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default Collaboration on a Versatile Patch Changer -> "LiveProject"

Some years ago, I decided to revive my nearly forgotten life as a keyboarder. After some trying, I found that it makes sense to modernize the (still decently working) 25 years old equipment consisting of a KX-88 Master keyboard and a sound module.
Therefore, I needed to decide what to invest in.

Alternatives were (1) a complete keyboard such as a Dexibell Vivo, (2) a dedicated software such as (at that time top notch) “Forte” (see -> https://forum.cockos.com/showthread.php?t=213568#3 ), or (3) use Reaper to build a custom system, which I thought I could do, as Reaper provides the necessary programming capabilities and I was a programmer since 30 years. So I bought an “embedded” PC and started the project. *)
At first I used what already was there. SWS “LiveConfigs” can manage the patch switching – including putting unused VSTs to sleep – rather well. And it was easy to remote-control LiveConfigs by the Program Change buttons on the Master keyboard.

Later, I enhanced my equipment to include three keyboards and a Control Surface device with buttons, rotaries, and motor faders (see -> https://forum.cockos.com/showthread.php?t=213568#5 ). This setup is permanently in use for practicing and “on stage”.

To manage this setup I wrote a set of JSFXes that receive Midi messages from the Control Surface (and the keyboards) and send Midi Messages to the Control Surface and the VSTs (and the keyboards, and a Midi interface for recording).

The basic functionality is:
  • Three groups of patches are managed (one for each keyboard)
  • They hold 16 patches for the upper, 16 for the middle, and 32 for the lower keyboard.
  • Each patch holds the definition for an active track, potentially program change and/or preset information for the involved VSTs, and 17 live-tweakable (by the rotaries and faders) parameters that are sent to the active VSTs by Midi CC messages.
  • When pressing a button for patch change, the parameters are sent to the appropriate VSTs and to the Control surface to be shown in LED ring and faders position.
The system works great but there are some shortcomings:
  • “Spill over” when changing a patch for reverb tails or when holding a key or sustain pedal is not provided. This is not possible when using LiveConfigs.
  • The system is not done with ease of configuration in mind. Hence creating a new patch is not exactly easy to do, and the basic setting up in Reaper will take a decent lot of time.
  • While the setup can be used “headless” (without mouse, monitor and computer keyboard attached), and the live-tweakable parameters are saved during the “show” to be remembered when the appropriate patch is activated again, it’s not possible to save them to disk to recall them for the next “show”. On startup they are reset to the default that was set during the configuration and written by Reaper “save project”.
  • Regarding the programming logic it’s not nice that the parameter values are dynamically held at three locations: the Control surface, the JSFX, and the VST. Reading the parameter value from the VST when necessary would be more appropriate.

I know that there are alternatives to a LiveConfigs bases system (see -> https://forum.cockos.com/showthread.php?t=213568 ).
I did some JSFXes and ReaperScripts to help Pipelineaudio to do a Live setup for guitar that does provide “spill over” . I suppose he did get this working.
Moreover, Pipelineaudio successfully used "LBX Stripper" (see -> https://forum.cockos.com/showthread.php?t=182233 ) to do a different guitar setup (see -> https://pipelineaudio.net/guitarjack...-lbx-stripper/ ). I did not yet check LBX Stripper as there is no documentation whatsoever for same.

Now as I gained some experience with all this stuff, I might consider reworking the “Versatile Patch Changer” system to allow it to be used much easier by “non-programmer-type” musicians, making the Reaper based method to be considered on par with dedicated software products (see -> https://forum.cockos.com/showthread.php?t=213568#3 ), but a lot more versatile, and even with dedicated self-contained “performer” keyboards.

This would involve:
  • Still different “operation modes” for GUI based configuration and headless “Live show” situations.
  • A usable GUI for configuration (including automatically create and delete threads to hold the VSTis and VSTs).
  • Allowing to save the parameter settings of a patch in a headless situation.
  • “Spill over” for reverb tails (rather easy to do) and held keys / sustain pedal (Called "seamless patch change" with the Dexibell. Supposedly not that easy to do).
  • Integrated “Song” mode: versatile stepping a pre-programmed sequence of patches (see -> http://www.bschnell.de/patch.pdf ).
  • Playing “background tracks” (optionally integrated in the Song mode.
I suppose most of this can be done by scripts (JSFX and Reaper Scripts), but doing a versatile GUI maybe asks for doing a Reaper extension in C++. I did not do Reaper extensions, yet, but I am positive that this can be managed, as well.

I am not very experienced in designing and programming a GUI that covers a complex workflow such as configuring a system like this one. Hence It would make a lot of sense to find a group of volunteers who want to collaborate in this project.

-Michael

*) The decision to use Reaper finally was obvious. This provides the most versatility and flexibility and also the least cost. In fact the monetary costs for the first workable stage of the project were zero, as I could re-use my existing master keyboard and I needed to invest ion a DAW, anyway.

Last edited by mschnell; 09-07-2019 at 03:15 AM.
mschnell is offline   Reply With Quote
Old 08-10-2019, 08:38 AM   #2
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Starting to collect a feature list:
  • Audio, Midi keyboard and Midi Control surface input via normal tracks to allow any preprocessinig a user might add himself.
    This requires the use of MidiToReaControlPath, if the Patch Changer is done by scripts, or implementation as a combined VST and Reaper Extension plugin, if done in C++-
  • audio spill over (reverb, echo, ...)
  • Midi spill over (running notes, sustain pedal)
  • mute/unmute tracks (similar as LiveConfigs) but
    • allow for audio spill over via versatile fades
    • allow for Midi spillover (how to accomplish that ?)
    • allow for multiple unmuted track for a patch
  • push presets onto plugins (similar as LiveConfigs)
  • live twakable parameters per patch (e.g. 17 of them for a XControl Compact)
    • re-call when that patch is selected again during the show
    • allow for saving as default (to be recall after starting the Reaper project) for the correent patch (undo.levels... !)
    • assignable to any VST-parameter via "Morphing": (linear) functions applied to define multiple parameters of multiple VSTs from any tweakable parameter
  • VST parameters accessible via Midi CCs or vis VST/DAW API.
  • fire Reaper actions on patch change (similar as LiveConfigs)
  • GUI (plus maybe text files) for configuration
  • remove / add track
  • Audio and Midi Routing
  • define preset pushing onto pugins (similar as LiveConfigs)
  • define actions on patch change (similar as LiveConfigs)
  • define the interface to a Control Surface (maybe borough ideas from "CSI")
  • define the functionality of the twakable parameters. These should be able to be support "Morphing" and be sent as a bunch of CCs with definable Bus, Channel, and CC #, and VST parameter defines.
  • Song Patch stepper (see -> http://www.bschnell.de/patch.pdf )
  • "Background tracks"
    • Never used that or plan to use it myself, so no idea what features are sensible.
    • supposedly something similar to SWS region play list, or maybe borrow some ideas from "Playtime" or maybe borrow from CFillion's "Song switcher"..

...

Last edited by mschnell; 09-06-2019 at 05:00 AM.
mschnell is offline   Reply With Quote
Old 08-11-2019, 10:16 AM   #3
matthewjumpsoffbuildings
Human being with feelings
 
Join Date: Mar 2013
Posts: 463
Default

this all sounds very interesting. im not sure what i can do to help, i have a basic knowledge of reascript/jsfx but nothing too deep, but i would love to help any way i can
__________________
[sun sprites] spotify facebook
matthewjumpsoffbuildings is offline   Reply With Quote
Old 08-11-2019, 01:58 PM   #4
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Great ! Thanks !
At least providers of ideas/comments and testers of course are welcome.
So please stay tuned !
-Michael
mschnell is offline   Reply With Quote
Old 08-12-2019, 05:14 AM   #5
Yorky
Human being with feelings
 
Join Date: Feb 2009
Posts: 90
Default

Hi Michael,

I would also like to collaborate in as many ways I can. I don't describe myself as a coder but have a lot of experience in many other associated fields.

I have been building my test rig I may have previously alluded to. Physically, the portable floor pedal case has the Behringer FCB1010 as the main interface with the guts mounted underneath in a plinth space. The RPi4 is my Reaper host limited at present by SD card only but intended to boot by SD then load OS from SSD before finally, the RPi4 eeprom upgrade is completed to allow for direct USB boot. I'm currently battling with getting my audio interface to be recognised by the OS but I'm sure this will be resolved soon. A 5v power brick [26.8Ah!] is the power source. I've modified the FCB1010 to operate from the same power source following Pipeline's blog. I can remotely jump into the desktop from my Android phone with a VNC viewer.
Once I got the thing operating consistently I'll post some pictures and more details of the rig.

As I have been putting this together and absorbing a multitude of information it occurred to me that using Reaper in this way [assuming that it all comes together!] is just what a single performer or a small group of 2/3 people could actually use. As a rehearsal tool through to a small live performing rig. Mics and instruments plugged in and mixed to near studio level for simple output to an amp or PA. I've also added in BT5 for IEM use as an evaluation.

Reliable and flexible at relatively, low cost.

Equally though, this can scale up with Intel NUC to meet other use cases, as I've followed your output describing the rig you developed.

Looking forwards to seeing how I can contribute and collaborate. Cheers
Yorky is offline   Reply With Quote
Old 08-12-2019, 07:09 AM   #6
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Great !!!

-Michael
mschnell is offline   Reply With Quote
Old 08-12-2019, 12:59 PM   #7
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Anybody interested in the project might want to try LiveConfigs (Doku: -> www.bschnell.de/LiveConfigs_1.pdf ) and/or ReaPack -> "Midi CC table" / "Midi Fade X" / "Midi Auto Engage" / "Mute or unmute track X" and/or "LBX Stripper"

(-> https://forum.cockos.com/showthread.php?t=213568#2 )

-Michael
mschnell is offline   Reply With Quote
Old 08-22-2019, 10:25 PM   #8
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by mschnell View Post
Anybody interested in the project might want to try ...
Additionally knowlage about "Playtime" and/or CFillions's "Song Switcher" might be very helpful.
-Michael
mschnell is offline   Reply With Quote
Old 09-04-2019, 12:18 PM   #9
Yorky
Human being with feelings
 
Join Date: Feb 2009
Posts: 90
Default Just a minor update on my lil project

Hi Michael et al,
I haven't dropped off the mortal coil and am still "learning" my way around Linux.

The hardware prototype is built:
. This shows the guts of the plinth with the FCB1010 mounted on top attached by neodymium magnets.

Power has been another fun element [there are so many, it's a blast!]. So I've reverted to wall warts to get the Pi & audio i/f properly up. The 5v DC brick [26.8Ah] will come back into the picture once I can focus some effort there. Likewise, I've mod'd the FCB1010 to derive its power from the 5v DC brick using a 5v-9v buck converter as highlighted by Pipeline Audio.

Been having great fun [not] getting the RasPi4 to load the OS from the SSD [boot from SD, load OS from SSD]. I've eventually made that happen though the response times need tuning - my Linux immaturity once again comes to the fore. Booting directly from an attached SSD is not ready yet from the RPi foundation.

The next important milestone is to crack through the audio interface to become my default. I'm reasonably assured that the Tascam US800 will do the job but still juggling through Linux to make it happen. The Tascam US122L went to the great scrapyard in the sky. To me,so far, it ain't plug and play.

I've successfully loaded SWS into Reaper [latest build - v5.983] after having the appropriate .so file kindly identified by James Peters.

I'm still trying to work my way around loading Reapack but I'm sure now that is only a click away [I can feel a song coming on....].

I have steadily been collecting all the useful tips, tricks and methods that other Reaperites have graciously shared and intend to blend them into my desired workflow.

Parking the SSD response issue and other associated issues aside, the RPi4 and Reaper do seem to be a solid combo. I've yet to really stress test Reaper with a largish project on the Pi but the general impression is very positive for this intended use. I have considered landing an Intel NUC but so far have resisted my Ebay impulses - maybe v2.0?

My intention is to fully document this journey once I have achieved my targets.

As a live performing tool I'm very much on board with Reaper as the way forward. In my use case, I'm aiming for solo performance or performing with 3 or so colleagues all summed through this pedal. To rock up to a gig and be ready in the time it takes to take the guitar out of its case is my aim. To have as near studio quality functionality as possible coupled with a live performance seems a goal to strive for to me.

Edit: still learning how to attach images!!

https://www.dropbox.com/s/dznutv5fst...93406.jpg?dl=0
seemingly now corrected?

Last edited by Yorky; 09-04-2019 at 12:56 PM.
Yorky is offline   Reply With Quote
Old 09-04-2019, 12:33 PM   #10
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Interesting indeed !
-Michael
mschnell is offline   Reply With Quote
Old 09-05-2019, 02:23 PM   #11
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

To Justin and Xenakios or whoever is knowledgeable on that issue:

I think I should do a decent Reaper extension in C++.

For this I suppose it needs to
- use the Reaper API
- provide a GUI (similar to LiveConfigs: a kind of spreadsheet
- read/write a file and/or a dedicated section of the Project-File

I suppose I'll do a Windows DLL, as I have no plan about MAC, and I'm not sure if there would be any demand regarding Linux.

I understand this this should be done using Microsoft C++, so I started by installing Microsoft Studio and doing some first steps with same.

I am rather fluent with ANSI C (for embedded programming) and with EEL (and several other languages that are irrelevant here),

What other tools and documentation should I use / investigate to get started ?

Additionally to a "standard" Reaper extension I will need to digest Midi events from tracks (e.g. to allow for pre-processing by JSFXes) - similar to what MidiToReaperControlPath works, and to send Midi events to tracks. How to best get this done ?

Mespotine:
Why do you think this is especially hard ? SWS LiveConfigs is working decently (I use it every day) and just a small part of SWS...

Thanks,
-Michael

Last edited by mschnell; 09-05-2019 at 10:44 PM.
mschnell is offline   Reply With Quote
Old 09-05-2019, 04:23 PM   #12
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,096
Default

https://forum.cockos.com/showthread.php?t=210511
minimal extension code examples there
nofish is offline   Reply With Quote
Old 09-05-2019, 10:43 PM   #13
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Great ! Thanks ! Downloaded. Trying to compile...
-Michael
mschnell is offline   Reply With Quote
Old 09-05-2019, 10:46 PM   #14
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

I suppose I need to take a look at WDL ?!?!?!

Is it possible / viable to find the sources of SWS, try to compile those and investigate how LiveConfigs itself is done ?

-Michael
mschnell is offline   Reply With Quote
Old 09-06-2019, 09:12 AM   #15
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,096
Default

Quote:
Originally Posted by mschnell View Post
Is it possible / viable to find the sources of SWS, try to compile those and investigate how LiveConfigs itself is done ?

-Michael
Sure.
SWS source:
https://github.com/reaper-oss/sws

specifically:
https://github.com/reaper-oss/sws/bl..._LiveConfigs.h
https://github.com/reaper-oss/sws/bl...iveConfigs.cpp

building hints:
https://github.com/reaper-oss/sws/wi...-SWS-Extension
(building from 'master' branch)

https://github.com/reaper-oss/sws/wi...ension-(CMake))
(building from 'next' branch)

Last edited by nofish; 09-07-2019 at 08:22 AM.
nofish is offline   Reply With Quote
Old 09-09-2019, 10:24 AM   #16
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,621
Default

Julian also asked tons of stuff for his extension. Maybe browsing through his threads about that could help you get through the basics.
I hope I can find the time reading through your plans and give hints at what could help you as well.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper - Donate, if you wish

On vacation for the time being...
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-09-2019, 01:54 PM   #17
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by nofish View Post
Sure.
SWS source:...
Seems like Pearl and PHP need to be installed ???
Would it be possible to use Studio 2019, or is 2017 a must ?

-Michael
mschnell is offline   Reply With Quote
Old 09-09-2019, 02:57 PM   #18
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

Yes, PHP and Perl are needed for generating SWS's ReaScript functions and Python wrappers respectively (also for compiling the resource file for SWELL on Linux and macOS, but that doesn't apply on Windows). VS 2019 is perfectly fine (though all you really need for building the "next" branch are its C++ compiler and tools).

Last edited by cfillion; 09-09-2019 at 04:58 PM.
cfillion is offline   Reply With Quote
Old 09-09-2019, 10:41 PM   #19
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by cfillion View Post
Yes, PHP and Perl are needed for generating SWS's ReaScript functions and Python wrappers respectively (also for compiling the resource file for SWELL on Linux and macOS, but that doesn't apply on Windows). VS 2019 is perfectly fine (though all you really need for building the "next" branch are its C++ compiler and tools).
So I can compile the DLL without PHP and Pearl ?

-Michael
mschnell is offline   Reply With Quote
Old 09-10-2019, 07:06 AM   #20
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

No, you need at least PHP. The ReaScript functions are part of the DLL.
cfillion is offline   Reply With Quote
Old 09-10-2019, 02:10 PM   #21
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Thanks.

I did not even know that PHP is a script language that can be used in Windows from the command line.

Trying to find what I need to install ...
-Michael
mschnell is offline   Reply With Quote
Old 09-12-2019, 03:22 PM   #22
Yorky
Human being with feelings
 
Join Date: Feb 2009
Posts: 90
Default Timeout on the RasPi4....

Hi Michael and others interested in this thread.

I've finally called a temporary halt to my test rig using the RasPi4 as a host for Reaper.

For clarity, I still have much faith in this Pi and am only parking this test rig to allow me to stop being distracted with non-Reaper issues. I've learnt [and reminded myself] of Linux and its ways so nothing other than time and a little loot has been lost. I'm no Linux expert but I've found juggling through the issues of loading the OS [not booting] from SSD and recognising the audio interface a troublesome path to tread. Things such as "snd-usb-audio" laid out in config files that state "DO NOT AMEND..." and later find out to be based upon spelling errors [it should read "snd_usb_audio" apparently] just suck enthusiasm right out of the window. A path to tread in the near future hopefully.

So onto some renewed enthusiasm and momentum [I hope!]. I've landed an Intel NUC [4250U] and tomorrow will be loading up AVLinux and then Reaper. This [I pray] will get my prototype onto a working level where I can start to explore my desired Reaper workflow.

In truth, I always suspected that the initial choices were perhaps a little too ambitious for me. Hey ho. Onwards and forwards.

Cheers
Yorky is offline   Reply With Quote
Old 09-12-2019, 10:22 PM   #23
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Regarding the intended Reaper extension this reminds me that a Linux (PC and ARM), and a mac version will be desirable at some point in time.

I do have some Linux (PC and ARM) experience so that might be doable. But I have no intention to get a mac.

Great to have you in the boat once we will get started with the Windows

-Michael
mschnell is offline   Reply With Quote
Old 09-13-2019, 08:23 AM   #24
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,937
Default

macOS can be installed in a virtual machine (eg. using Virtual Box). Also there are free services that can build and test your software on macOS VMs, such as Travis (https://travis-ci.com/). I'm using that for making ReaPack's macOS release builds (and we're setting it up for SWS).

Note that you need the SDK from Xcode 9 or earlier to be able to build extensions for 32-bit REAPER. Apple removed support for 32-bit in Xcode 10.
cfillion is offline   Reply With Quote
Old 09-13-2019, 08:30 AM   #25
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by nofish View Post
https://forum.cockos.com/showthread.php?t=210511
minimal extension code examples there
I am rather frustrated with my findings.

I installed Visual Studio 2019.
I easily can make the IDE crash and stall by some mouse clicks.
I don't seem to be able to create a very simple desktop application with e.g. a Button.

I was able to compile the "minimal extension" to a 64 bit dll and copied that to the userplugins folder (where Reapack also sits).
After starting Reaper, I don't see any sign of the minimal extension. What should I see ?
I had hoped that I could use Visual Studio to design a kind of GUI for the intended extension (i.s. something like a spreadsheet). But this does not seem to be the case.

Do I need to completely design any GUI in C code (similar to how it's done with JSFXes) ?

And finally I have been told that the Visual Studio download is only a tryal and will end in 30 days ?!?!?!?!? Is that true ?

Thanks again,
-Michael

Last edited by mschnell; 09-13-2019 at 02:29 PM.
mschnell is offline   Reply With Quote
Old 09-13-2019, 02:31 PM   #26
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by cfillion View Post
macOS can be installed in a virtual machine (eg. using Virtual Box).
Is that legal ?

-Michael
mschnell is offline   Reply With Quote
Old 09-14-2019, 10:32 PM   #27
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Anybody of the knowledgeable developers care to answer to #25 and #26 ?



-Michael
mschnell is offline   Reply With Quote
Old 09-16-2019, 09:58 AM   #28
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by mschnell View Post
I am rather frustrated with my findings.

I installed Visual Studio 2019.
I easily can make the IDE crash and stall by some mouse clicks.
I don't seem to be able to create a very simple desktop application with e.g. a Button.

I was able to compile the "minimal extension" to a 64 bit dll and copied that to the userplugins folder (where Reapack also sits).
After starting Reaper, I don't see any sign of the minimal extension. What should I see ?
I had hoped that I could use Visual Studio to design a kind of GUI for the intended extension (i.s. something like a spreadsheet). But this does not seem to be the case.

Do I need to completely design any GUI in C code (similar to how it's done with JSFXes) ?

And finally I have been told that the Visual Studio download is only a tryal and will end in 30 days ?!?!?!?!? Is that true ?
I can't comment on the stability of VS2019, I am still on VS2017 here. I get hangs or crashes with VS2017 about once a month. VS2019 is still pretty new, so maybe there are some new issues in the IDE.

Regarding the "simple extension" plugin doing nothing, which code are you specifically talking about? If it's the code I posted, you should see a message on the Reaper console when Reaper is started. If you don't see the message, the project was maybe built wrong in some manner. Note that the project itself must be for a .dll, it isn't enough that the output binary has the .dll extension. The .dll file name must be something like reaper_myextension.dll, Reaper won't scan dlls as extension plugins if they don't have the reaper_ prefix.

I would have thought the situation with C++, Reaper extensions and GUIs would have been clear after all these years : it's complete pain to deal with. Even using something like Juce for the GUI is just a partial solution, as Juce code doesn't integrate very well with Reaper's window hierarchy etc.

If you didn't get the Visual Studio Community edition, then you got a trial for some paid for version. The Community edition also requires you to register with Microsoft, though, or it will expire after some time.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 09-16-2019, 10:00 AM   #29
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by mschnell View Post
Is that legal ?

-Michael
Technically "illegal", but Apple probably would never know or care about you doing it. AFAIK the user experience running macOs in a virtual machine will be horrible, but in a pinch you could maybe use it for running Xcode to do builds.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 09-16-2019, 01:21 PM   #30
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by Xenakios View Post
I would have thought the situation with C++, Reaper extensions and GUIs would have been clear after all these years : it's complete pain to deal with.
I see

That is why it sees to make sense to be able to compile SWS, as the "LifeConfigs" GUI is very similar to what I have in mind.

Anyway: To do a GUI do you directly call Windows API functions, or do you call WDL functions ?

Thank again,
-Michael
mschnell is offline   Reply With Quote
Old 09-16-2019, 01:58 PM   #31
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by mschnell View Post
Anyway: To do a GUI do you directly call Windows API functions, or do you call WDL functions ?
If you want to use the win32 API, then you call the Windows functions. You will probably even on Windows want to use some of the helper functions in WDL, for example for dealing with UTF-8 text. To compile the win32 API code on macOs and Linux you have to include and link to the Swell library from WDL. Swell implements a limited subset of win32 functions for macOs and Linux. The SWS plugin code base is probably a good source to see what functions can be used.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 09-17-2019, 12:22 AM   #32
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

In fact right now I don't want anything I am just researching how to get started.

I (being an embedded programmer) never did a GUI using C++, anyway.

If the alternative to get some kind of GUI is either to use Windows API calls or exclusively WDL calls, I would prefer WDL. (OTOH I might be inclined to follow the way SWS LiveConfigs is crafted).

In Fact the WDL website states
Quote:
WDL Virtual Window system:
Allows the building of dynamic, complex UIs within OS hosted windows
Which does sound promising for my purpose of creating a Reaper-managed windows that hold a kind of spreadsheet which is scrollable within the window and provides editable cells. Similar to this:


Thanks a lot for any further tips.
-Michael

Last edited by mschnell; 09-17-2019 at 12:47 AM.
mschnell is offline   Reply With Quote
Old 09-17-2019, 02:56 AM   #33
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by mschnell View Post
exclusively WDL calls
Not going to be possible, you need at least some win32 API calls to create the top level windows etc.

The WDL virtual windows stuff is not easy to use, I don't think I ever got anything working with it. Anyway I think some of the SWS plugin code uses it, so you can of course look in that code for hints.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 09-17-2019, 12:01 PM   #34
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by Xenakios View Post
you need at least some win32 API calls to create the top level windows etc.
Seems weird to me, as the window is supposed to be "hosted" by Reaper (living in Reaper's GUI thread), in fact created as a result of an Reaper action.

Is WDL intended to be usable "stand alone" without Reaper in the back ?

Thanks !
I'll take a look ASAP.

-Michael
mschnell is offline   Reply With Quote
Old 09-17-2019, 02:10 PM   #35
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by mschnell View Post
Seems weird to me, as the window is supposed to be "hosted" by Reaper (living in Reaper's GUI thread), in fact created as a result of an Reaper action.

Is WDL intended to be usable "stand alone" without Reaper in the back ?
Reaper's GUI is itself coded with the win32 API, so it's the "native" way to do things with it. Reaper itself does not have API functions to create windows and GUI controls, it's up to you to implement those in whatever way you think is the best. (The "gfx" things that are available for ReaScript code, are not available for C or C++ extension plugin's code.)

WDL generally speaking works with whatever kind of code, I've used it with my Qt and JUCE based applications and plugins. Maybe you are confusing WDL as a whole and the Swell sublibrary in it? Swell is the sublibrary in WDL that allows using a limited subset of win32 API code on macOs and Linux. WDL as a whole is a collection of utility functions and classes, some of which have to do with GUI and Reaper, but many don't.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 09-17-2019, 02:52 PM   #36
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Thanks a lot for the explanations !

If I do something to run in Windows, do I need to explicitly ignore the complete SWELL thingy or is the supposed way to use these functions and they are automatically casted to native Windows API functions ?

-Michael
mschnell is offline   Reply With Quote
Old 09-17-2019, 04:53 PM   #37
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by mschnell View Post
If I do something to run in Windows, do I need to explicitly ignore the complete SWELL thingy
You can mostly ignore SWELL if you use just very basic win32 functions. However, if you want your code to support Unicode/UTF-8 inside Reaper, you will want to use the UTF-8 support functions from WDL. (Those are independent from SWELL and exist to support non-ASCII text inside Reaper. Windows itself does not directly support UTF-8 with its API functions, which is why the WDL UTF-8 things exist.)

Again, refer to the SWS plugin code, that probably shows you what you can and should use.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 09-17-2019, 10:49 PM   #38
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Yep.

I'de like to start with a simple stand alone GUI program done with WDL ("To check your tools, do the most weird things first " )

-Michael

Last edited by mschnell; 09-18-2019 at 05:53 AM.
mschnell is offline   Reply With Quote
Old 09-18-2019, 07:23 AM   #39
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Quote:
Originally Posted by mschnell View Post
I'de like to start with a simple stand alone GUI program done with WDL
WDL does not have helpers for making stand alone GUI programs. You need to do that yourself in a platform specific way.

So for Windows, look up how a "simple" GUI program needs to be written with the win32 API...Once you have the main window and event loop running, you can start looking how to use the WDL Virtual Windows etc stuff.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 09-18-2019, 08:03 AM   #40
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,686
Default

Quote:
Originally Posted by Xenakios View Post
Once you have the main window and event loop running, ....
That seems to be easy by just using the Visual Studio "Desktop Application" template.
(Continuing such discussion in the WDL forum -> https://forum.cockos.com/showthread.php?p=2182807 ....)

-Michael

Last edited by mschnell; 09-18-2019 at 11:31 PM.
mschnell 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 07:02 AM.


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