Grasshopper

algorithmic modeling for Rhino

Data Stream manipulation, using 1 input in a sequence with a number of components

Hi everyone, (First of all, I'm not sure if I had used useful title for this, sorry for that)



I'm trying to design a ceiling system that moves with music. Pistons will create this movement effect with varying height. 

For creating a protoype of this study, I used mosquito plug-in and added audio play component. Output of the component is a data stream, I plug that data stream into height parameter of cyclinder, I started with 10 pistons (10 cyclinders actually)
(You can find my working file on attachments)



My problem is, I dont know how to make this system works continious and sequantial.

For now, every pistons use same input, and all heights are same, 
but I want to make a system that one piston will give his input to next piston etc.

I have the same height pistons like the first image, but I'm trying to make something like second image:

Views: 821

Attachments:

Replies to This Discussion

I don't have your plug-ins but I guess that the attached may give you some hints. (i.e. input your values where the empty number component is - random demo values are used in both cases)  

Attachments:

Hi Leela,

Thanks for your answer.

As far as I understood, in your definition the pipes are static.  and they have random height values.

What I want is:
1) having height values based on audio peak values.
2) having 1 input, sequently 

for example,

in t1 time
p1: a
p2: null
p3: null
p4: null
p5: null
p6: null
...

in t2,

p1: k
p2: a
p3: null
p4: null
p5: null
p6: null
...

in t3:
p1: d
p2: k
p3: a
p4: null
p5: null
p6: null
...

t4, 

p1: z
p2: d
p3: k
p4: a
p5: null
p6: null

...


So, there should be a way that, I can use that "data stream" in a way that, I can use an 1 input in different times on each piston height parameter, 

I thought that a loop structure could maybe help, or I dont know, if there is a way to create a list from data stream

Any comments&advices would be appreciated, thanks :)

You'll need to use the Data Recorder, and set your data limit to the amount of bars you wish to display. You can do so from within the Recorder context menu.

Attachments:

Indeed ... however in most decorative/artistic installations of that type the bars (or "dots" or whatever suitable) resonate according the intensity/amplitude of a given frequency domain. Of course doing that with GH couldn't have any "visual" meaning.

Thanks for all replies, 

I actually found data recorder component, but I never tried to right-click over that component, thats why I couldnt figure out how to limit that output from that record list.

For now, I can be able to do it within a line.



But this way, it is kinda static algorithm. There is no way to change number of piston count and record limit count at the same time, within a same parameter.
Now, new question is:


Is it possible to make this can work within a 2dgrid structure, or again linear structure?



I mean, 
Is it possible to make Piston number input to use in record limit input too?

I thought that within a loop structure (a for structure for creating 1d and 2d arrays within a scripting environment)

Two inputs for that loop could be enough,

A input for defining the array limit,
B input for assigning audio values into array structure,

I though that I could use the same A input for piston count and record number, and I can use the B input in array, 
When array(or stack I'm not sure) is full, with a "first in-first out" logic last value could be deleted and new values could be added into stack from 0 index.

at conceptual stage, it seems it can work. But, I never tried to write manuel scripts in GH environment, I'm not sure grasshopper allows me to use loop structures,
and even if it is possible, I'm not sure which script component should I use? (Phyton, VB or C#)


Kind regards.

Well...

Imagine a 2D grid of ... rectangles (in Plane.XZ). Rectangles engulf a stretchable (and replaceable) silicone semi-transparent mPAM membrane. Step motors can pull each membrane inwards via a small SS disk at membrane's (0.5.0.5) u/v. In fact solenoid coils are rather far more suitable for that kind of push/pull control.

Divisions along x are recursively made smaller (the left [start] divisions are bigger emulating woofers and the next ones become gradually smaller emulating twitters). You can control how much the motor/coil "pulls" the equivalent membrane.

An Genuino Uno micro-controller analyses the signal and the intensity (per frequency band [corresponding to the amount of modules along x]) means: affect more (or less) membrane modules (along z). Meaning that the modules "above" the affected ones are static. LED's for the affected ones can be used (a bit kitsch).

So we have an installation kinda like an LCD panel on some pre-amplifier. That way you can "see" music (or something similar anyway, he he). You can deploy this on some horizontal array attached in some ceiling (service of motors/membranes becomes an issue - take into account the material fatigue PLUS cleaning the membranes from dust).  

Notify if you need an example of that (all stuff made via C#).

 

BTW: If instead of mPAM membranes you want to do some DIY vibrating thingy (or collections) try the sugru way.

https://sugru.com/tech-gadget

For instance imagine a collection of "vibrating" 3d "octopus" like this:

or some mini sugru stuff like that pulled "vertically" via actuators attached in some appropriate nodes:

 

Thanks for your answers Peter,

Maybe I give a little less information, I'm currently doing my Master Studies in Computational Architecture in ITU, it is kinda homework project for a course.

So, at the end I dont think I could be able to make someting  as advance as you proposed :)

I had to submit a working logic&algorithm as conceptual detail. And if possible, make a scale model with arduino (or any environment like that)

Now, I'll try to write down a script for using that data stream in a stack structure in order to make stacklimit with piston count on same parameter.

Therefore, I'll be able to make this algorithm more dynamic and parametric.

Well ...

... if I was you I would be tempted to switch from "moving" pistons to "pull cables" and do something like this (quite easy to do it via C# and Kangaroo2) using some stretchable membrane (installations of that type are increasingly "trendy" these days):

Or this (even easier: just do some proximity line graph and "fill" some triangles/quads with mini membranes > then "relax" them via Kangaroo2).

Helle there again, I finnally completed my definition, now I'm trying to visualise this through an arduino circuit.

I bought an arduino uno circuit, A breadboard, 4 servo motors, and cables.



In theory,
I will use my peak values data list, and I'll convert them to degree values for servo motors ranging between 0 and 180 probably ( I may narrow the range maybe I'm not sure.)

Then from this data list, I'll use list item component, and with the index numbers, I'll match the values with servo motors. And I'll have various rotation values for motors through this way ( only in theory for now)

I thought that it'll not be hard to acomplish this with firefly plug-in. I'll post updates, and and I'll share my definition after I finish the project I hope :)

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service