Member 914
204 entries
347155 views

 RSS
(M)
YU
Immortal since Dec 17, 2007
Uplinks: 0, Generation 2

Modern video feedback art
My Dreams In Color
Profile X
Teacher of physics and programmer.
  • Affiliated
  •  /  
  • Invited
  •  /  
  • Descended
  • gamma’s favorites
    From
    holographic sheets
    From michaelerule
    Simulated linear optical...
    Recently commented on
    From syncopath
    Day-Dreaming-Day-by-Day
    From gamma
    Is brain a computer?
    From Wildcat
    Falling in love with AVA...
    From gamma
    Visual feedback in the...
    From syncopath
    Simplicity
    gamma’s projects
    Polytopia
    The human species is rapidly and indisputably moving towards the technological singularity. The cadence of the flow of information and innovation in...

    The Total Library
    Text that redefines...

    The great enhancement debate
    What will happen when for the first time in ages different human species will inhabit the earth at the same time? The day may be upon us when people...
    Now playing SpaceCollective
    Where forward thinking terrestrials share ideas and information about the state of the species, their planet and the universe, living the lives of science fiction. Introduction
    Featuring Powers of Ten by Charles and Ray Eames, based on an idea by Kees Boeke.
    From gamma's personal cargo

    Perceptron 1.0b
    b.

    I am proud and honored to have used the Perceptron - fractal generator through video feedback simulation. I rearranged the code a little bit and added a few comments. It works perfectly, so I think you should try it. (Also, note that due to advanced mathematical issues, this program does not actually simulate the classical video feedback, but uses the same principle.)

    http://bitbucket.org/mrule/perceptron/downloads?highlight=8690


    Sun, Jun 13, 2010  Permanent link

      RSS for this post
    18 comments
      Promote (2)
      
      Add to favorites (1)
    Synapses (2)
     
    Comments:


    gamma     Sun, Jun 13, 2010  Permanent link
    To start, press the arrow keys down and left a few times. Notice that the save screen-shot creates some additional files, that are actually garbage. Oops.
    michaelerule     Sun, Jun 13, 2010  Permanent link
    wow!

    I have no idea how you made that. I'm still working on understanding your improvements, sorry, I have some word deadlines that are failing to be met. We should switch the code repository to your version since I broke mine. You can do that if you figure out how ( but see if you can leave the current repository state as an old branch so I can grab code from it maybe ). Otherwise, I will try to do this using this download.

    I'm really glad you got it to work, and on top of that, seem to know some functions and tricks that I've never seen before.

    good show.
    gamma     Mon, Jun 14, 2010  Permanent link
    Reading your help was helpful.



    I think that the next step in terms of user interaction should be Open File menu for saved states (presets) instead of cycling through all of them. As for the math, I'll think about other types of fractals...
    gamma     Tue, Jun 15, 2010  Permanent link
    At the moment, I have time to upload the new version.
    To Do:

    1. docs
    2. open file menu for the presets and for the images (in image mode)
    3. write avi animation instead of bunch of individual frames in the program's directory (Use Home button with care)
    ...

    I think I signed up for the first task, which I did not complete yet, but... The third task seems completely beyond me. I could only use ready-made code.

    michaelerule     Fri, Jun 18, 2010  Permanent link
    you've got some crazy functions

    thanks for writing that documentation, it looks really nice.

    I just quit my job and am living at my parents house, so I should have some time to work on this.
    gamma     Sat, Jun 19, 2010  Permanent link
    I expected nothing... less, I suppose.

    Yes, I thought that the language of Fractint and Ultra Fractal could be useful for understanding the program. I also tried out putting all the functions into a single place (function) for the proof of concept. It works.

    michaelerule     Sun, Jun 20, 2010  Permanent link
    what functions did you use for these two demo renderings ? I don't recognize them.
    michaelerule     Mon, Jun 21, 2010  Permanent link
    I would like to add your changes to the main branch. I will probably make a new branch from commit 25 since I did some damage in later revisions. I can't seem to find your version committed anywhere, ( it would probably have to be added as a new branch since I re-arranged too many things ? ). I think what would be easiest for me is to manually copy in your modifications to a new branch starting from revision 25. On that note, what files should I look at to get all of your edits ? Thanks for writing up the documentation by the way, I should do some more work on the website.
    gamma     Mon, Jun 21, 2010  Permanent link
    what functions did you use for these two demo renderings ? I don't recognize them.

    Well, the states are saved somewhere on my disk, so I'll check it out.

    I would like to add your changes to the main branch. I will probably make a new branch from commit 25 since I did some damage in later revisions. I can't seem to find your version committed anywhere, ( it would probably have to be added as a new branch since I re-arranged too many things ? )

    I felt at the time that the public should have the version "1.0" rather than the futuristic sounding 0.0. If you enable the toggle_reflection and the cellular automata, you will unleash the creation that you prepared for the 1.0 in full. Otherwise it all works fine.

    I did not have time to connect by Mercurial since I am aggravated by the fact that it is not a secure shell on a linux server, etc. You could send me your configuration for the thing. My upload is slow however.

    I think what would be easiest for me is to manually copy in your modifications to a new branch starting from revision 25. On that note, what files should I look at to get all of your edits ? Thanks for writing up the documentation by the way, I should do some more work on the website.

    You should work with this copy because of the degree of order and comments that it has.
    The friendliness priorities are the open file menus for presets and images. The preset mode still exists, but it is hidden, because I needed to write a new replacement help screen for the preset mode.

    Configuration editor could be useful, or windowed interface for things with function names.

    Drawing things on the display buffer or the output buffer could be fun.

    Web Cam. Is this a reason to buy one?

    I know that you've been working on multi-threading.

    My edits are mostly in the FractalMap.java.
    gamma     Mon, Jun 21, 2010  Permanent link
    Oh yes, the last unused key is V.

    ?
    gamma     Tue, Jun 22, 2010  Permanent link
    I think that you duplicated the getFixed8Bit. What is the noReflect version? What the heck are these numbers? (I bet on crop circles...)

    Grabber getFixed8Bit = new Grabber() {

    public int get(int dx, int dy) {
    int x_1, x_2, y_1, y_2;

    dx ^= dx >> 31;
    x_1 = dx >> 8;
    x_2 = x_1 + 1;
    x_1 = (x_1 / W & 1) == 0 ? x_1 % W : W_ONE - x_1 % W;
    x_2 = (x_2 / W & 1) == 0 ? x_2 % W : W_ONE - x_2 % W;

    dy ^= dy >> 31;
    y_1 = dy >> 8;
    y_2 = y_1 + 1;
    y_1 = (y_1 / H & 1) == 0 ? y_1 % H : H_ONE - y_1 % H;
    y_2 = (y_2 / H & 1) == 0 ? y_2 % H : H_ONE - y_2 % H;
    y_2 *= W;
    y_1 *= W;

    int c11 = buffer.getElem(y_1 + x_1);
    int c21 = buffer.getElem(y_1 + x_2);
    int c12 = buffer.getElem(y_2 + x_1);
    int c22 = buffer.getElem(y_2 + x_2);

    int A_x = dx & 0xFF;
    int A_y = dy & 0xFF;
    int B_x = 0xFF & ~A_x;
    int B_y = 0xFF & ~A_y;
    int C_11 = B_x * B_y >> 8;
    int C_12 = A_x * B_y >> 8;
    int C_21 = B_x * A_y >> 8;
    int C_22 = A_x * A_y >> 8;

    return K & ((K & c11) * C_11 + (K & c21) * C_12 + (K & c12) * C_21 + (K & c22) * C_22 >> 8)
    | G & ((G & c11) * C_11 + (G & c21) * C_12 + (G & c12) * C_21 + (G & c22) * C_22 >> 8);
    }

    public void nextFrame() {
    }
    };
    Grabber getFixed8BitNoReflect = new Grabber() {

    public int get(int dx, int dy) {
    int x_1, x_2, y_1, y_2;

    dx ^= dx >> 31;
    x_1 = dx >> 8;
    x_2 = x_1 + 1;
    x_1 = dx < 0 ? x_1 % W : W_ONE - x_1 % W;
    x_2 = dx > 31;
    y_1 = dy >> 8;
    y_2 = y_1 + 1;
    y_1 = dy < 0 ? y_1 % H : H_ONE - y_1 % H;
    y_2 = dy > 8;
    int C_12 = A_x * B_y >> 8;
    int C_21 = B_x * A_y >> 8;
    int C_22 = A_x * A_y >> 8;

    return K & ((K & c11) * C_11 + (K & c21) * C_12 + (K & c12) * C_21 + (K & c22) * C_22 >> 8)
    | G & ((G & c11) * C_11 + (G & c21) * C_12 + (G & c12) * C_21 + (G & c22) * C_22 >> 8);
    }
    michaelerule     Tue, Jun 22, 2010  Permanent link
    "The friendliness priorities are the open file menus for presets and images."

    how do you propose using the File menu when the mouse input is being used to fly the camera and other parameters ?
    michaelerule     Tue, Jun 22, 2010  Permanent link
    those two functions define fixed-point linear interpolation for texture lookups. thats the kind of stuff thats usually performed on graphics cards if you program in openGL, but I needed to duplicate it since I started with software rendering in Java.

    yeah, most of those two functions is the same, except some of the expressions near the beginning. it was more straightforward to duplicate code than add some additional abstraction to make them use the same code.
    michaelerule     Tue, Jun 22, 2010  Permanent link
    I wouldn't look too much at that code, its scary. basically, what we got is
    ... it assume a fixed point representation of a location, with 8 bits as the fractional bits
    ... it uses this point to look up a point in the target buffer, but with interpolation
    ... the interpolation is performed using a maze of bit-ops and is cryptically optimized
    gamma     Fri, Jun 25, 2010  Permanent link
    I presume that this is the yellow and blue fractal.

    preset self evolving 2.state {
    anti_alias true
    show_cursors false
    cursor_trails true
    velocity_mode false
    autopilot false
    fractal_map z*z
    edge_extend_mode 2
    bounding_region 1
    fade_color_mode 5
    gradient_mode 1
    color_accent 0
    color_filter 0
    dampen_fade_colors true
    interpolation true
    invert_colors 0
    gradient_direction 255
    draw_tree false
    anti_alias_tree false
    background_objects true
    cap_frame_rate false
    show_frame_rate false
    salvia_mode false
    XOR_salvia_mode false
    text_entry false
    life false
    cellDrawer 0
    coloredLife false
    mainRenderer 0
    sketch 0
    rotateImages false
    XBranchingCursor 286.0
    XAlphaCursor 424.0
    XBranchLengthCursor 142.0
    XTreeOrientationCursor 306.0
    XMapCursor 312.0
    XMapRotationCursor 66.0
    XGradintCursor 310.0
    XTreeLocationCursor 308.0
    YBranchingCursor 178.0
    YAlphaCursor 241.0
    YBranchLengthCursor 312.0
    YTreeOrientationCursor 13.0
    YMapCursor 186.0
    YMapRotationCursor 295.0
    YGradintCursor 295.0
    YTreeLocationCursor 31.0
    }

    But I wonder, seriously, how can we say that this is the fractal if it was evolving the colors in the lake chaoticaly? Then, even with the record of age, we would not repeat it. Eh?
    gamma     Fri, Jun 25, 2010  Permanent link
    I noticed the code for interpolation, but I was asking where is the difference between the reflecting and non reflecting?

    Mouse? Well, as a beginner I can only notice that the world is screaming with ready made samples of MOUSE AND OPEN FILE MENUS
    otherwise, you could have a variable
    int active = 0, 1, 2;
    yes, saving frame, opening state
    and suspend it temporarily for either cause.
    BenRayfield     Sun, Aug 28, 2011  Permanent link
    gamma have you tried http://electricsheep.org  ? Its an AI system that evolves fractal visual effects on a network of computers based on people using up and down buttons to vote. Is that what you were going for in Perceptron? Its a C program, GNU GPL 2 open source licensed, works on Windows, Mac, and Linux.

    I'm thinking about connecting it to my AI music system Human AI Net which will network peoples minds together through feedback loops of mouse movements and generated audio, and Electric Sheep visuals too if I do this. I was first thinking of connecting it to your Perceptron, but Java isn't fast enough for realtime video.

    http://vimeo.com/27688359

    http://www.youtube.com/watch?v=R1szBD_urE4
    gamma     Mon, Aug 29, 2011  Permanent link
    Yes, I am aware of the sheep.

    Perceptron is no longer in beta stage of development. It is 1.0 final since February. I am working on the 2.0 version. Maybe I should mention it in a separate post.


    http://perceptron.sourceforge.net/


    The temporal evolution of patterns in Perceptron is obvious. The evolution can be very fast and end with the static image. The patterns may evolve endlessly and unpredictably (chaotically, which makes it the critical state), or evolve endlessly by fluctuating between two possibilities. These phenomena are typically found within the central Julia lake area for f(z) = z^2 + c depending from the value of c, its distance from the Mandelbrot set of the same function. The continuous flicker between two colors (one is the inverted of the other one, where "inversion" is defined by Java as whatever) in the lake is the simplest example of endless, predictable or repeating fluctuation.

    Here are some patterns that are not repeating.
    http://www.youtube.com/watch?v=5892gWLotSk

    They are not necessary fractal. The fractal outline comes about following certain evolution.

    The evolution is, to step back for the moment, the process of copying each pixel's color to a new position given by the geometric transformation(s). This requires an additional memory for temporary storage of the screen contents. Some color may be added to the cyclic flow, persistent patterns may be inserted as images on the screen, and the colors may be inverted in each cycle... So, the evolution is given entirely with the geometric transformations and the chaotic effects that magnify the pixelation, color shifts, imprecision... Pixel interpolation (rounding) is required.
     
          Cancel