From 2419e6acd46949640fccf5312110dcbca5b6e143 Mon Sep 17 00:00:00 2001 From: pepper Date: Tue, 8 Apr 2014 19:50:46 -0700 Subject: first scripts --- add_vsti_to_midi_file.py | 101 +++++++++++++++++++++++++++++++++++++++++++++++ reaper_test.py | 50 +++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 add_vsti_to_midi_file.py create mode 100644 reaper_test.py diff --git a/add_vsti_to_midi_file.py b/add_vsti_to_midi_file.py new file mode 100644 index 0000000..5b30120 --- /dev/null +++ b/add_vsti_to_midi_file.py @@ -0,0 +1,101 @@ +from subprocess import call +DEFAULT_MIDI_TRACK = '/Users/pepper/Desktop/example.mid' +DEFAULT_VSTI = 'Omnisphere'; +DEFAULT_TRACK_NAME = 'last' + +def console(m): + s = str(m) + '\n' + return RPR_ShowConsoleMsg(s) + +def insertMidiNewTrack(midi_file=DEFAULT_MIDI_TRACK): + return RPR_InsertMedia(midi_file, 1); + +def addVstiToTrack(track_number=0, FX=DEFAULT_VSTI): + track = RPR_GetTrack(track_number,0); + fxIdx = RPR_TrackFX_GetByName (track, FX, 1) + isOpen = RPR_TrackFX_GetOpen(track, fxIdx) + if isOpen ==0: + isOpen = 1 + else: + isOpen = 0 + RPR_TrackFX_SetOpen(track, fxIdx, isOpen) + #close FX dialog on track 1 + RPR_Main_OnCommand(41749,0) + +def renderAndClear(track_name): + RPR_Main_OnCommand(41824,0); #render everything + filename = "/Users/pepper/Documents/REAPER Media/%s.wav" % track_name; + call(["mv","/Users/pepper/Documents/REAPER Media/untitled.wav", filename]) + RPR_Main_OnCommand(40668,0) #delete everything + RPR_Main_OnCommand(40296,0) #select all tracks + RPR_Main_OnCommand(40005,0) #remove selected tracks from project + +def main(): + #FIXME + #ask anton about blocking + RPR_Undo_BeginBlock() + insertMidiNewTrack() + addVstiToTrack() + renderAndClear() + RPR_Undo_EndBlock("add vsti to midi file",0) + +main() + + + + +#RPR_SetMediaItemSelected(track,1); +#RPR_Main_OnCommand(40788,0) +#console(track); +#TrackIdx = 0 +#TrackCount = RPR_CountSelectedTracks(0) +#while TrackIdx < TrackCount: +# track = RPR_GetSelectedTrack(0, TrackIdx) +# fxIdx = RPR_TrackFX_GetByName (track, FX, 1) +# isOpen = RPR_TrackFX_GetOpen(track, fxIdx) +# if isOpen ==0: +# isOpen = 1 +# else: +# isOpen = 0 +# RPR_TrackFX_SetOpen(track, fxIdx, isOpen) +# TrackIdx +=1 +#def insert_fx(): +# fx = "ReaSynth"; +# i = 0; +# RPR_Undo_BeginBlock(); +# for i in xrange(0, RPR_CountSelectedTracks(0)): +# track = RPR_GetSelectedTrack(0, i); +# fx_idx = RPR_TrackFX_GetByName(track, fx, 1); +# is_open = RPR_TrackFX_GetOpen(track, fx_idx); +# console(is_open); +# RPR_TrackFX_SetOpen(track, fx_idx, is_open); +## RPR_Undo_EndBlock(strcat(#undo_msg, fx), 0); +#insert_fx(); +#numTracks = RPR_CountSelectedTracks(0) +#console(numTracks); +#for TrIndex in range(0,numTracks-1): +# tr = RPR_GetSelectedTrack(0,TrIndex) +# rc=RPR_TrackFX_GetFXName(tr, 0, "", 64) +# plugname=rc[3] +# RPR_ShowConsoleMsg(plugname+'\n') +# if "JS: IX/Mixer_8xM-1xS" in plugname: +# # set volumes in ix mixer to rising values +# for x in range(0,8): +# basevolume=-48+48.0/(numTracks-1)*TrIndex +# paramval=basevolume+24.0/7*x +# RPR_TrackFX_SetParam(tr, 0, x, paramval); +# # set pans to decreasing values +# for x in range(0,8): +# panval=1.0-1.0/7*x +# RPR_TrackFX_SetParam(tr, 0, x+8, panval); + + +#console("track fx FXName: %s" % (TrackFX_GetFXName(1))); +#console("track fx count: %s" % (TrackFX_GetCount(1))); +#TrackFX_FormatParamValue +#TrackFX_GetCount +#TrackFX_GetFXName +#TrackFX_GetNumParams +#TrackFX_GetParam +#TrackFX_GetParamName +#TrackFX_SetParam diff --git a/reaper_test.py b/reaper_test.py new file mode 100644 index 0000000..0749485 --- /dev/null +++ b/reaper_test.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python2 +#import socket +#TCP_IP = '127.0.0.1' +#TCP_PORT = 5005 +#BUFFER_SIZE = 1024 +#MESSAGE = "process: file1.mid; plugin: Omnisphere.vst; output: file2.wav" +# +#s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +#s.connect((TCP_IP, TCP_PORT)) +#s.send(MESSAGE) +#data = s.recv(BUFFER_SIZE) +#s.close() +# +#print "received data:", data + +import socket + +TCP_IP = '127.0.0.1' +TCP_PORT = 5005 +BUFFER_SIZE = 20 # Normally 1024, but we want fast response + +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +s.bind((TCP_IP, TCP_PORT)) +s.listen(1) + +def processData(data_string): + parts = data_string.split(";") + #MESSAGE = "file1.mid;Omnisphere.vst;file2.wav" + process = parts[0]; + plugin = parts[1]; + output = parts[2]; + #call reaper internal functions here + insert = RPR_InsertMedia(parts[0], 1); + + +conn, addr = s.accept() +print 'Connection address:', addr +while 1: + data = conn.recv(BUFFER_SIZE) + if not data: break + print "received data:", data + processData(data); #what is conn.send(data)? + response_string = "Data recieved! processing...%s" % (data); + conn.send(response_string) # echo...something like this is ok? looks so, test it +# conn.send(data) # echo +conn.close() + + +#so this is basically it? yep ok I'm just going to look quickly at the reaper api to see if I can find the right functions +#well I'm not seeing what I need right away...do you think I should look for a similar script, or try to study the api intensely? it's python already so it should work well arlight I'll work from here...thanks! no problems -- cgit v1.2.3-70-g09d2