kobe
kobe

Reputation: 43

How to remove an OSC message from a list?

I have the following patch on Pure Data. When I click on the green button, I connect to the network and send these messages in OSC format to a list. When I click the red button, I disconnect from the network, but the OSC messages remain on the list. How do I remove them too?

enter image description here

This is my Python code responsible for activating the server and putting messages on the list.

# Module that creates user-friendly and uncomplicated command line applications 
import argparse
# Pythonosc library module that does not require the sender and receiver of the message to be directly connected 
from pythonosc import dispatcher
# Pythonosc library module that imports a server capable of receiving messages in OSC format 
from pythonosc import osc_server
from pythonosc.osc_server import BlockingOSCUDPServer

# Chamar outro código em Python (server) [??]

# Creating variable list to receive "hello" messages
hello = []
# Creating variable list to receive "input" messages
entrada = []
# Creating variable list to receive "output" messages
saida = []
    
# Function that attach each message to the variable 
def getHello(address:str):
    # Append message
    hello.append(address)
    # Print hello variable
    #print (hello)
    
# Function that attach each message to the variable 
def getEntrada(address:str):
    # Append message
    entrada.append(address)
    # Print hello variable
    #print (hello)
    
# Function that attach each message to the variable 
def getSaida(address:str):
    # Append message - Adiciona elemento no final da lista
    saida.append(address)
    # Print hello variable
    #print (hello) 

# Creating the basic functionalities of the server, with IP and standard port 

# Checking the scope of execution. If you run the module directly, execute the function, if you import the module, don’t run it
if __name__ == "__main__":
  # Checks the validity of the past argument. That is, if the input data is accepted by the script
  parser = argparse.ArgumentParser()
  # setting the server IP
  parser.add_argument("--ip",
  # The IP must be from the multicast address of the local network 
      default="224.0.0.1", help="The ip to listen on") 
  # setting the server port     
  parser.add_argument("--port",
  # arbitrarily chosen number. It can be any free port on the computer.
      type=int, default=60000, help="The port to listen on")   
  # Analyzes the data entered and prints it on the screen, if they are valid    
  args = parser.parse_args()  
  # Dispatcher maps OSC addresses to functions and calls the functions with the messages’ arguments.
  dispatcher = dispatcher.Dispatcher() 
  # Dispatcher associates addresses with functions by storing them in a mapping
  # An address can contains wildcards as defined in the OSC specifications
  # Call the Dispatcher.map method with an address pattern and a     handler callback function
  """ print Pure Data messages on terminal
  """
  # Map the OSC messages to this function and call the functions that put them in lists  
  dispatcher.map("/hello/*", getHello)
  dispatcher.map("/input/*", getEntrada)
  dispatcher.map("/output/*", getSaida)
  
  server = osc_server.ThreadingOSCUDPServer((args.ip, args.port), dispatcher) # Reading IP, port and received message  
  while True: # Starting server loop
      try:
            print("Serving on {}".format(server.server_address)) # While server is active, receive messages
            server.serve_forever()
      except KeyboardInterrupt: # When interrupt key is triggered, end loop 
          #print(messages)
          break    # Ends loop
print("\n")
print(hello) # Print message and terminate script execution
print(entrada)
print(saida)

print("\n")
while input("Do You Want To Continue? [y/n]") == "y":
    print("\n")    
    try:
        print("Serving on {}".format(server.server_address)) # While server is active, receive messages
        server.serve_forever()
    except KeyboardInterrupt:
        print("\n")
        print(hello)
        print(entrada)
        print(saida)
        print("\n")
    else:
        quit()  # If the key type is not "y", it terminates program execution 

Upvotes: 1

Views: 188

Answers (0)

Related Questions