No need for Python or programming skills to use most scripts (including this one).
A song is made out of a top-level folder track named "Number. The Title" (eg. "04. Sonate in C minor"). Use the "reset" button if modifying song tracks or switching projects while the script is open so that the new songs appear in the list (or just close/reopen it).
I've attached an example of a basic project structure. A project can be structured many different ways depending on its requirements but, at the core–as far as song switcher is concerned, one numbered top-level folder track = one song.
Thanx, that made a big difference. I was stuck on the actual filenames/directories rather than the feature of "Folder" in Reaper :-|
Can you please help me understand how to make the font in the menu larger?
Also, I was sure I got each song played from the menu to stop when finished playing the region (each song) but now it continue...Yes the track after is muted so not a major problem but again, I think I had it stoped at some time during my tests....
Song switcher can be found in the Action List. Its web interface uses on REAPER's built-in web server which can be enabled in Preferences > Control/OSC/web.
I CANNOT OPERATE THE SONG SELECTOR FOR LIVE USE. AS I DO NOT DRIVE ENGLISH, I HANDLE WITH THE GOOGLE TRANSLATOR, AND I CANNOT UNDERSTAND THE STRUCTURE OF THE SONG FOLDERS TO WORK, CAN YOU HELP ME?
This is great, thank you. My band is just starting to use backing tracks and I was able to load your script. However, my remote doesn't look like yours and it doesn't have ability to switch songs from it. I used the song_switcher.html but it looks basically like a generic transport controller.
Also, in your demo shots, how did you get the title of song to be displayed with large font? I apologize if these are basic questions, just getting into this portion of Reaper's capabilities.
This is great, thank you. My band is just starting to use backing tracks and I was able to load your script. However, my remote doesn't look like yours and it doesn't have ability to switch songs from it. I used the song_switcher.html but it looks basically like a generic transport controller.
Make sure you have song_switcher.html in your browser URL (unless you have it selected as "Default interface" in Preferences > Control/OSC/web).
Also, in your demo shots, how did you get the title of song to be displayed with large font? I apologize if these are basic questions, just getting into this portion of Reaper's capabilities.
Resize the script's window down. Once it's too small to display the full song list, it will enter the mode with the big title and prev/next buttons.
Either delete the folder track or rename it so it doesn't have a song number. You can edit hidden tracks from REAPER's Track Manager in the View menu. Then right click in song switcher > Reset data to rebuild the song list.
Either delete the folder track or rename it so it doesn't have a song number. You can edit hidden tracks from REAPER's Track Manager in the View menu. Then right click in song switcher > Reset data to rebuild the song list.
Salut (du Québec)
Still i'm gonna write in english just so most of the people will get it.
I use this webremote app https://reaperblog.net/2020/01/reaperwrb-2-2-2-update/
Do you think it could be possible to incorporate somehow your web interface with that WR2 interface too?
Other question:
Is it possible to see in the web interface the list of the songs?
Other question:
Is it possible to create Setlist of let's say 10 songs.
Instead of having 100 songs in the reaper project.
Or maybe there's a better way to make a project smaller and faster.
Do you think it could be possible to incorporate somehow your web interface with that WR2 interface too?
Song switcher's actions (reset data/switch to next/previous/queued song) should work from ReaperWRB. Copy/paste their command ID from the Action List to add them.
Quote:
Originally Posted by SebyMusic
Is it possible to see in the web interface the list of the songs?
The web interface does not have a song list. However it allows switching to any song by typing its number or part of its name.
Quote:
Originally Posted by SebyMusic
Is it possible to create Setlist of let's say 10 songs.
Instead of having 100 songs in the reaper project.
Or maybe there's a better way to make a project smaller and faster.
Run the "Reset data" action after switching project or project tabs to rebuild the song list.
First off let me preface this by saying thank you for your awesome work. Song switcher worked great at our previous gig. Our setup is 80 or so songs ready to go with tracks when our keyboard player can attend gigs and pre-recorded tracks when he cannot within the song switcher folder format. These are all routed to sub tracks so that they can be muted as needed. With each song we have midi programmed to sequence our lights via timecode as well as switching presets on Kempers, keyboards etc. with midi commands.
My question, is there a way to have each track start automatically playing when selected and then have them pause by an action, or have a button ready in the web interface that can send a command to trigger multiple midi commands at once? I'm looking for an redundancy option if we were to make a mistake and have to stop the click track so that we can trigger our lights and instruments into a neutral position.
The way I have it setup now is that the drummer has to stop the track, press play again to have the beginning of each song play that triggers all the midi commands with an audible cue on his click track so he can pause it again before the song starts. So I'm looking for a way to turn those three actions into one.
Is there any possibilities to switch between songs in different project tabs?
I have different bpm for each song and using some midi notes - because of that i can't put all songs in one project tab
Yes, but in that case i need to put song 2 after song 1 end, right?
And if i switch to song 2 i'll start from 0:00.000 point - not at start song 2 point
I am not sure if that in fact is a decent way for "Live Song Switching". It might provide a lot of unwanted implications.
"Live Subprojxcts" (not yet available in Reaper" would be a perfect organization method for such multi-track entities.
An option for Song Switcher to mute/unmute sets of tracks (similar to SWS LiveConfigs) plus providing setuo switching (e.g. BPM) additionally to jumping in the time line might be a nice idea.
-Michael
An improvement would be to control with midi the selection of the next cue song in the list (the one that blinks). You need it to change playback order on the fly. It can be done with the arrows (up and down), but if the window does not have the focus the arrows do not work in the playlist. Midi control would solve this.
An option for Song Switcher to mute/unmute sets of tracks (similar to SWS LiveConfigs) plus providing setuo switching (e.g. BPM) additionally to jumping in the time line might be a nice idea.
-Michael
If I understand you correctly this would be a nice option, as I would like to have the option to practice Drums or Guitar to various songs. But go back to standard mode to mute all tracks.
Thank you Cfillion for your awesome work on this project.
Please forgive me.
I had not configured it right.
I now have 70 plus songs setup and it works perfect.
Now if the operator can just pull his head out long enough to figure it all out, it will be just Grand.
Again Sorry (Remember, It is be nice to NOOB's week)
Great script
I am trying to set it up to use a rotary encoder or buttons with "cfillion_Song switcher - Switch song by MIDI CC.lua" and I am using ReaLearn to program the controller. However I am having trouble setting it up.
Am I right in thinking that if you sent on CC 100, say, that values 0-127 would correspond with a different song being selected?
How would this be set up, if I wasn't using ReaLearn, how does the action know where the MIDI is coming from and what to expect?
Thank you so much for this script cfillion, it's really well thought out and efficient. I've implemented it in my live set, using it in parallel with SWS Snapshots and it's working well.
The only thing I find missing, and this may be outside of the intended scope, is the ability to have shared resources between songs. As an example, In roughly half the songs in my set there is bass guitar being played live and for the most part that patch is the same for every song. I may automate more drive or compression depending on the song but overall it's the same plugins. For the other half of the songs it's a synth bass played on a VSTi like Monark. In these instances I want to be able to mute the electric bass channel to free up resources for the synth bass channel and vice versa.
With song switcher this seems to require an instance of the bass channel plugins for every single song, meaning many more plugins are living in memory and the set takes longer to open -- which is a big issue in the case of a mid-set crash. Another issue is patch management: let's say I want to make a change to the bass patch, I have to do this for 30 or so plugin instances instead of just one. Currently with SWS Snapshots I just share those channels between songs, using the same bass guitar channel for any song that needs it instead of having multiple copies, one for each song. I have all available songs (about 60) in the project so that I can access any song at any time during a set, so as you can imagine, that would be a lot of plugins living in memory.
so basically I use song switcher to navigate the set as the "Script: cfillion_Song switcher - Switch to next song.lua" action is so useful the drag and drop setlist is perfect. then I use SWS Snapshots to do the channel switching, muting and unmuting groups of tracks per song using snapshots. But SWS Snapshots are really a pain to work with as the are listening to all tracks, unlike Song Switcher which ignores tracks outside of the numbered song folders. So with snapshots if I delete a track or add a new one, I have to update every single snapshot in the project.
One way this might be accomplished could be to have Song Switcher listen to track groups, this way different songs could share tracks as several groups can contain the same track.
just a thought but the script is working great as is. thanks for this! is there any way we can support development?
The only thing I find missing, and this may be outside of the intended scope, is the ability to have shared resources between songs. As an example, In roughly half the songs in my set there is bass guitar being played live and for the most part that patch is the same for every song. I may automate more drive or compression depending on the song but overall it's the same plugins. For the other half of the songs it's a synth bass played on a VSTi like Monark. In these instances I want to be able to mute the electric bass channel to free up resources for the synth bass channel and vice versa.
Shared resources can live on tracks outside of the song folders, using routing from/to a track inside of the song folders.
However this uses more CPU as they would always be active. If each songs are built at a different time in the project, a workaround would be to also automate bypass on the shared FXs. Otherwise, it should be possible to make Song Switcher able to mute shared tracks depending on whether they are used or not in the current song when switching.
Quote:
Originally Posted by Tycho
just a thought but the script is working great as is. thanks for this! is there any way we can support development?
Thank you very much for this plugin - I've found it immensely useful. I'm using a modified version and this may have been fixed in later versions. If so then I apologise.
I'm noticing that when the Song Switcher window is open I'm seeing a large increase in my network traffic and the CPU usage of the irq servicing my network card. I'm displaying this window on a remote X server and this might not be a problem on a local display. This window generally sits there doing very little so I'm assuming the update frequency is far to high or something similar. Minimising the window instantly lowers the traffic and CPU usage. Have you seen this of have any thoughts on how to alleviate it?
I'm displaying this window on a remote X server and this might not be a problem on a local display. This window generally sits there doing very little so I'm assuming the update frequency is far to high or something similar. Minimising the window instantly lowers the traffic and CPU usage. Have you seen this of have any thoughts on how to alleviate it?
Script UIs refresh at ~30Hz. I don't think I can do much on that front.
If the X server's increased network traffic is a problem, maybe using Song Switcher's HTTP web interface while the script's window is minimized could help?
Script UIs refresh at ~30Hz. I don't think I can do much on that front.
I know very little about the graphics in reaper but if that window is being redrawn completely at 30Hz then that's a lot of network traffic to a remote X-server. Is loop() being called at 30Hz? Detecting if anything has changed and only redrawing then would make a huge difference in that case.
I'm heading down the web route anyway one day soon but thank you for the suggestion.
I know very little about the graphics in reaper but if that window is being redrawn completely at 30Hz then that's a lot of network traffic to a remote X-server. Is loop() being called at 30Hz? Detecting if anything has changed and only redrawing then would make a huge difference in that case.
I'm heading down the web route anyway one day soon but thank you for the suggestion.
Just FYI, a little more analysis reveals that this isn't a problem with your script but a more general problem with remote X-servers and reaper. For instance, enabling the display of the master track generates way more traffic than this script.
Thanks for this, it's AWESOME!. My band runs 4-5 songs together using tracks, then stops to let the singer talk, so I'm trying to figure out how to play songs together without stopping. I've used the 'switch to next song at the end, then transport: play in a marker. It goes to the next song but doesn't play?
THANKS for any help.
I've used the 'switch to next song at the end, then transport: play in a marker. It goes to the next song but doesn't play?
If the project was playing when the switch action is run, playback won't stop unless Song Switcher's 'onswitch' option is configured to do so. It's the button to the right and below the song title and it can be set to any combination of stop/seek/scroll.
If you're switching songs while playback is stopped and want it to start, create a custom action combining both the switch action and "Transport: Play".
I think? I did that? I have onswitch set to stop, then at the end of the song I have the following in a marker: !_RS1f1c5f5406d0a36f4b780fd6ab7b54a8006b9e69 1007
It goes to the next song but doesn't start. I tried putting !1007 at the beginning of the song too, that didn't help.
Thanks for your help!