Lectric Panda Generators

This forum is for developers of Rack Extensions to discuss the RE SDK, share code, and offer tips to other developers.
User avatar
Billy
Posts: 795
Joined: 09 Dec 2016

Post 30 Dec 2020

So I'm really interested in being able to generate some dual arp patterns myself and would love to get my hands of the script used by Lectric Panda, is there any chance you might share?
:ignition: :reason: :refill: :re: :rebirth: :PUF_figure: :nektar: :mac: :EiEPro: :Alesis Mk2:
Follow Me @ https://twitch.tv/buskinbills

User avatar
rcbuse
RE Developer
Posts: 921
Joined: 16 Jan 2015
Location: SR388

Post 31 Dec 2020

Sorry man, these generators are not meant for human consumption. They are all command line and quite specific to my working environment and have all kinds of things hardcoded. Old versions of python and python libraries and a ton of hacked things I've built up over the years.

I'll dump some python code here for anyone looking to get started.

User avatar
rcbuse
RE Developer
Posts: 921
Joined: 16 Jan 2015
Location: SR388

Post 31 Dec 2020

Code: Select all

def create_and_open(filename):
  if not os.path.exists(os.path.dirname(filename)):
      try:
          os.makedirs(os.path.dirname(filename))
      except OSError as exc: # Guard against race condition
          if exc.errno != errno.EEXIST:
              raise
  return open(filename, "w")
  
  
def run():

  NUM_PATCHES = 500

  for patch_type in ["Single","Dual"]:
    for patch_num in xrange(NUM_PATCHES):
    
      complexity = float(patch_num)/float(NUM_PATCHES)
      
      root = xml.etree.ElementTree.parse("Init Patch.repatch")
      
      oldProps = dict()
      for value in root.iter('Value'):
        property_name =  value.attrib["property"].strip()
        property_type =  value.attrib["type"]
        property_value = value.text.strip()
        oldProps[property_name] = property_value
    
      newProps = dict()

      generate(newProps,complexity,patch_type)
    
      for property_name,property_value in newProps.items():
    
        elements = root.findall(".//Value[@property='" + property_name + "']")
        if ( len(elements) ):
          elements[0].text = str(property_value)
       #print property_name, property_value
    
      d = '<?xml version="1.0"?>\n' + xml.etree.ElementTree.tostring(root.getroot())
    
      path = "/"
      filename = "./ReFill/%s/LP%s-%05d.repatch" % (patch_type,patch_type[0],patch_num,)
    
      #print filename
      
      f = create_and_open(filename)
      f.write(d)
      f.close()

run()








User avatar
rcbuse
RE Developer
Posts: 921
Joined: 16 Jan 2015
Location: SR388

Post 31 Dec 2020

Code: Select all

def flatten(l):
  return [item for sublist in l for item in sublist]
  
def MakeString(raw):
  return binascii.hexlify("".join([chr(n) for n in raw])).upper()
  
def generate(newProps,complexity,patch_type):

  #notes = [1+(x/30) andint(1,3) for x in xrange(64)]

  #for row in xrange(4):
  #  for step in xrange(16):
  #    notes[row][step] = randint(1,4)
  #  
  #for step in xrange(16):
  #  velocity[step] = randint(1,127)


  # run 1-4
  # step 1-8

  newProps["Hold"] = 1

  newProps["Rate 1"] = 15
  newProps["Rate 2"] = choice([11,13,15])

  #print complexity
  if ( complexity > 0.5 ):
    newProps["Rate 1"] = choice([15,15,15,14,13,12,17])
    newProps["Rate 2"] = choice([11,11,13,13,15,10,9,8,7,6,5])

  newProps["Arp Steps 1"] = choice([4,8,8,12,12,16,16,16,16])
  newProps["Arp Steps 2"] = choice([4,8,12,16,randint(5,16),randint(5,16)])
  newProps["Transpose 2"] = choice([12,12,12,24,36,36])
  
  newProps["Repeat 1"] = choice([0,0,0,0,1])
  newProps["Repeat 2"] = choice([0,0,0,1,1])
  newProps["Octaves 1"] = choice([0,0,0,0,1])
  newProps["Octaves 2"] = choice([0,0,0,1,1])
  
  newProps["Direction 2"] = choice([0,0,1,2,3])

  for arp in xrange(2):


    notes = [[1] * 16, [1] * 16, [1] * 16, [1] * 16,]
    velocity = [21] * 16
    
    ## modify notes and velocity to taste
      
    newProps["NoteLane%d" % (arp+1)] = MakeString(flatten(notes))
    newProps["VelLane%d" % (arp+1)] = MakeString(velocity)

    newProps["Arpeggio On %d" % (arp+1)] = 1
    newProps["Arp Steps On %d" % (arp+1)] = choice([1,1,1,1,0])
    newProps["Arp Steps %d" % (arp+1)] = 16 
    newProps["Pattern On %d" % (arp+1)] = 1 
    newProps["Velocity On %d" % (arp+1)] = 1 
    

  if ( patch_type == "Single" ):
    newProps["Arpeggio On 2"] = 0

  

seqoi
Posts: 411
Joined: 12 Aug 2017

Post 31 Dec 2020

Nice. I don't understand a thing about python, but always interested in new procedural things.

Is there anyway (if that's not taking much time) for you Panda to generate just a bunch of ARP 2 presets/patterns and share them (without really checking them musically) like you did with Polar and Scream refills.

User avatar
rcbuse
RE Developer
Posts: 921
Joined: 16 Jan 2015
Location: SR388

Post 31 Dec 2020

Check out http://lectricpanda.com/ for these:

Lectric Panda Generates Quad (108M)
Lectric Panda vs Noise Engineering (4M)
Lectric Panda vs Noise Engineering Vol 2 (9M) [NEW]
Lectric Panda Generates Alligator (18M)
Lectric Panda Generates Dual Arpeggio Vol 1.1 (99M) <<<<<<
Lectric Panda Generates Dual Arpeggio Vol 2.1 (99M) <<<<<<
Lectric Panda Generates MonoPoly (123M)
Lectric Panda Generates PX7 (123M)
Lectric Panda Generates Parsec (v1) (148M)
Lectric Panda Generates Polar (86M)
Lectric Panda Generates Pulveriser (8M)
Lectric Panda Generates Resonans (185M)
Lectric Panda Generates Scream 4 (2M)
Lectric Panda Generates Synchronous Vol 1 (296M)
Lectric Panda Generates Synchronous Vol 2 - Pulses (296M)
Lectric Panda Generates The Echo (8M)
Lectric Panda Generates Thor (88M)

seqoi
Posts: 411
Joined: 12 Aug 2017

Post 31 Dec 2020

Wow somehow i missed those...thanks

Happy New Year to everyone!

User avatar
Noise
Posts: 212
Joined: 16 Jan 2015

Post 31 Dec 2020

LectricPanda, let me challenge you to a great library idea to your random stash:

Lectric Panda Generates Complex-1 Vol 1.1 (99M) :D
Albuns: BandCamp | Youtubz: Noise Channel

User avatar
challism
Moderator
Posts: 2247
Joined: 17 Jan 2015

Post 31 Dec 2020

Noise wrote:
31 Dec 2020
LectricPanda, let me challenge you to a great library idea to your random stash:

Lectric Panda Generates Complex-1 Vol 1.1 (99M) :D
<3 this idea

I'd also like to see Friktion and Monotone refills.

Those Panda refills are great.... so much stuff to go thru. I keep telling myself I want to make it all the way thru the Dual Arp refills, but I never seem to get very far before one of the patches gets me inspired to work on some music.
~~~~~~~~~~~~~~~~~~~~~~
ReasonTalk Rules and Guidelines

User avatar
Billy
Posts: 795
Joined: 09 Dec 2016

Post 31 Dec 2020

rcbuse wrote:
31 Dec 2020
Sorry man, these generators are not meant for human consumption. They are all command line and quite specific to my working environment and have all kinds of things hardcoded. Old versions of python and python libraries and a ton of hacked things I've built up over the years.

I'll dump some python code here for anyone looking to get started.
Wow,

Thanks for the code.....

Am I right that's randomly generated not brute force i.e. Dictionary walking?
:ignition: :reason: :refill: :re: :rebirth: :PUF_figure: :nektar: :mac: :EiEPro: :Alesis Mk2:
Follow Me @ https://twitch.tv/buskinbills

User avatar
rcbuse
RE Developer
Posts: 921
Joined: 16 Jan 2015
Location: SR388

Post 31 Dec 2020

I did finally break down and pick up Complex-1 and Friktion this last sale, so hopefully I'll get some time to generate some patches up
challism wrote:
31 Dec 2020
Noise wrote:
31 Dec 2020
LectricPanda, let me challenge you to a great library idea to your random stash:

Lectric Panda Generates Complex-1 Vol 1.1 (99M) :D
<3 this idea

I'd also like to see Friktion and Monotone refills.

Those Panda refills are great.... so much stuff to go thru. I keep telling myself I want to make it all the way thru the Dual Arp refills, but I never seem to get very far before one of the patches gets me inspired to work on some music.

User avatar
rcbuse
RE Developer
Posts: 921
Joined: 16 Jan 2015
Location: SR388

Post 31 Dec 2020

I would classify it as 'guided random'. Just straight random usually produces non-musical chaos, or in the context of sound generating devices, it produces silence half the time. You really have to iterate though the process until you narrow down generators that work for that specific device you are dealing with.
Billy wrote:
31 Dec 2020
rcbuse wrote:
31 Dec 2020
Sorry man, these generators are not meant for human consumption. They are all command line and quite specific to my working environment and have all kinds of things hardcoded. Old versions of python and python libraries and a ton of hacked things I've built up over the years.

I'll dump some python code here for anyone looking to get started.
Wow,

Thanks for the code.....

Am I right that's randomly generated not brute force i.e. Dictionary walking?

Mataya
Posts: 129
Joined: 03 May 2019

Post 31 Dec 2020

rcbuse wrote:
31 Dec 2020
I did finally break down and pick up Complex-1 and Friktion this last sale, so hopefully I'll get some time to generate some patches up
challism wrote:
31 Dec 2020


<3 this idea

I'd also like to see Friktion and Monotone refills.

Those Panda refills are great.... so much stuff to go thru. I keep telling myself I want to make it all the way thru the Dual Arp refills, but I never seem to get very far before one of the patches gets me inspired to work on some music.
I'm sorry, but I still can't believe you didn't get those for free(Complex-1 and Friction and everything else from Reason company). You did so much in promoting them, just by showing what can be done on this platform with a bit(a lot) of intelligence and creativenes. If you removed all the devices from "Reason" and left only your Re's, I'd still have the crazyest piece of software and wouldn't copmplain.
Please Matthias or whoever is the man over there, give this man what he needs. Also Robotic Bean and Blamsoft, Jiggery Pokery...you know, it seems to me most of Re developers deserve a free Reason copy, just for making it what it is today.

tx
M

User avatar
challism
Moderator
Posts: 2247
Joined: 17 Jan 2015

Post 31 Dec 2020

Mataya wrote:
31 Dec 2020
rcbuse wrote:
31 Dec 2020
I did finally break down and pick up Complex-1 and Friktion this last sale, so hopefully I'll get some time to generate some patches up

I'm sorry, but I still can't believe you didn't get those for free(Complex-1 and Friction and everything else from Reason company). You did so much in promoting them, just by showing what can be done on this platform with a bit(a lot) of intelligence and creativenes. If you removed all the devices from "Reason" and left only your Re's, I'd still have the crazyest piece of software and wouldn't copmplain.
Please Matthias or whoever is the man over there, give this man what he needs. Also Robotic Bean and Blamsoft, Jiggery Pokery...you know, it seems to me most of Re developers deserve a free Reason copy, just for making it what it is today.

tx
M
Well said and I completely agree with you. I can't believe they haven't given Rob a license for every RS device in existence. That kind of blows my mind.

But I'm excited to hear that the Pandaman has what he needs to do some guided random patch generation for Complex and Friktion. NICE!! I'm looking forward to those.
~~~~~~~~~~~~~~~~~~~~~~
ReasonTalk Rules and Guidelines

User avatar
moneykube
Posts: 2533
Joined: 15 Jan 2015

Post 31 Dec 2020

rcbuse wrote:
31 Dec 2020
I did finally break down and pick up Complex-1 and Friktion this last sale, so hopefully I'll get some time to generate some patches up
:thumbs_up: :thumbs_up: :thumbs_up: :thumbs_up: :exclamation: woohoo awesome

User avatar
rcbuse
RE Developer
Posts: 921
Joined: 16 Jan 2015
Location: SR388

Post 31 Dec 2020

Hah, well, to be fair I never asked. Its just a lot easier to purchase them. They do provide a whole platform for my stuff to exist, so you know, I don't have any issue with kicking a little back towards that.
Mataya wrote:
31 Dec 2020

I'm sorry, but I still can't believe you didn't get those for free(Complex-1 and Friction and everything else from Reason company). You did so much in promoting them, just by showing what can be done on this platform with a bit(a lot) of intelligence and creativenes. If you removed all the devices from "Reason" and left only your Re's, I'd still have the crazyest piece of software and wouldn't copmplain.
Please Matthias or whoever is the man over there, give this man what he needs. Also Robotic Bean and Blamsoft, Jiggery Pokery...you know, it seems to me most of Re developers deserve a free Reason copy, just for making it what it is today.

tx
M

PhillipOrdonez
Posts: 1599
Joined: 20 Oct 2017
Location: Colombia

Post 01 Jan 2021

rcbuse wrote:
31 Dec 2020
I did finally break down and pick up Complex-1 and Friktion this last sale, so hopefully I'll get some time to generate some patches up
challism wrote:
31 Dec 2020


<3 this idea

I'd also like to see Friktion and Monotone refills.

Those Panda refills are great.... so much stuff to go thru. I keep telling myself I want to make it all the way thru the Dual Arp refills, but I never seem to get very far before one of the patches gets me inspired to work on some music.
Oh shiiiiiiit! Things just got serious! Can't wait to get my hands on those refills 😲😲😲

  • Information
  • Who is online

    Users browsing this forum: CommonCrawl [Bot] and 0 guests