ModelbuilderMk2 news, Aug 2014: unlekker.data and Tile Rendering

Aug 4, 2014 | Code, Libraries, Open source, Processing / Java

ModelbuilderMk2: UTileRenderer demo

High-res output from UTileRendering.pde demo

I haven’t had much news about ModelbuilderMk2 for a while, but I just pushed some new code to the GitHub repo that may be of interest. (Spoiler: Tile rendering for super-highres OpenGL output is back and I added some data stuff.)

  • New: unlekker.data is a new extension to ModelbuilderMk2 for dealing with typical real-world data scenarios, especially parsing, converting and preparing data from various sources (APIs, CSV, SQLite) for visualization. Similarly to how ModelbuilderMk2 relies on UVertex and UVertexList to provide a workflow for creating mesh geometry, UDataPoint and UDataList are intended to represent and manipulate data respectively in its atomic and aggregated forms.

    UDataPoint represents a single data point and stores data fields as a map of key-value pairs. This makes UDataPoint into a universal storage unit for an arbitrary amount of any type of data, whether regular primitives like strings and numbers or object instances. Correspondingly, the UDataList class is a mechanism for collecting and manipulate UDataPoint as a dynamic list. UDataList also automates certain tedious tasks like calculating min/max/median/average bounds on time series data, extracting a list of all values for a given field or filtering the data set by a time range.

    As an example, if you know that all UDataPoints in a UDataList contains a PVector object stored under the key “vec”, the following will produce an ArrayList instance containing all the individual PVector instances:

    UDataList l;
    [..]
    ArrayList pvl=l.getObjectList("vec",PVector.class);

    Continued…

, , , , , ,

Workshop: Intro to Generative Art with Processing (July 6, NYC)

Jun 23, 2014 | Code, Processing / Java, Workshops

Marius Watz: KBG (sound viz)

Workshop: Intro to Generative Art with Processing
Date: Sunday, July 6, Williamsburg, NYC

Participants will be introduced to the principles of Generative Art using Processing, a Java-based coding tool designed specifically for creative applications.

A generative system can take many forms, but essentially the term describes a set of aesthetic rules for creating layout, motion and geometry. Translated to code, these systems are capable of producing an endless variety of forms and visuals. We will look at how to create a generative visual system, from sketching in code to creating professional quality output for print or video.

Examples and topics will include: Useful building blocks and tools-of-the-trade applied to real-world problems, from basic composition and color in code, to more complex issues like geometry and animation. By adding GUI controls and output options for print + video to our sketches, we end up with the makings of a full-fledged generative system.

Continued…

, , , , , ,

Code: frameOptions.pde

Jun 22, 2014 | Code, Processing / Java

GitHub Gist: frameOptions.pde Shows how to control the window frame of a Processing app. Disable frame decoration (see init() function), manipulate frame screen position on startup or interactively (see keyPressed(), draw() functions.)

Continued…

, , , ,

Code: iOStoEpochTime.java

May 30, 2014 | Code, Processing / Java, Workshops

GitHub Gist: iOStoEpochTime.java Converts iOS Objective-C timestamps to their Java equivalent. Useful when parsing exported data from iOS backup SQLite files. I’ll post a demo parsing iMessage data shortly, written for my upcoming Quantified Self workshop.

Technical details: Objective-C timestamps (as encountered in iOS SQLite data) are given as seconds since Jan 1, 2001, while Java timestamps represent milliseconds since Jan 1, 1970.

To convert between them we first multiply the Objective-C timestamp by 1000, then we add a pre-calculated millisecond offset representing the difference between Jan 1, 1970 and Jan 1, 2001. This difference is calculated using the java.util.Calendar class, see code below for how this is done.

Continued…

, , , , , ,

Workshop: Intro to Generative Art with Processing (Jun 1, NYC)

May 27, 2014 | Code, Processing / Java, Workshops

Marius Watz: KBG (sound viz)

Workshop: Intro to Generative Art with Processing
Date: Sunday, Jun 1, Williamsburg, NYC

Participants will be introduced to the principles of Generative Art using the Processing programming tool. A generative system can take many forms, but is essentially a set of rules that when translated to code executed is capable of producing an endless variety of forms or visuals. We will look at how a generative visual can be created, from sketching in code to creating professional quality output for print or video.

The examples we will go through include useful some essential building blocks and tools-of-trade, applied to real-world problems. Topics include how to do basic composition and color in code, to more complex issues like creating geometry and animation. By adding GUI controls and print / video output to our sketches we have the makings of a full-fledged generative system.

Continued…

, , , , , ,

Code: PrimeList.pde

May 22, 2014 | Code, Processing / Java

GitHub Gist: PrimeList.pde Parses prime number lists as provided by http://primes.utm.edu/, storing primes as ArrayList.

Requires PDE source and a sample input file to run, use download link to get both as a ZIP.
Continued…

, , , , ,

Code: UConfigFile.pde

Apr 19, 2014 | Code, Processing / Java, Workshops

UConfigFile.pde: How to store config parameters in an external file using the java.util.Properties class. Useful for sketches that require login/password or API secrets.

Relevant Java API links:

Code: Continued…

, , , , , ,

Code: ULoremIpsum.java (text anonymizer)

Apr 8, 2014 | Code, Processing / Java, Workshops

New GitHub Gist: ULoremIpsum.java Simple Lorem Ipsum text replacer for Java/Processing. It is useful for anonymizing text content in data sets (email, SMS, direct messages etc.) Upper/lower case is preserved as best as Java String supports (Locale twiddling might be needed in some cases) and will leave all non-letters intact.

The class uses two built-in dictionaries: A list of replacement words and a “whitelist” of words that should be kept as is. For brevity, these are set as inline preset strings here. They can easily be changed in the code or changed to be customizable by adding a mechanism for setting the dictionaries.

Continued…

, , , , , , ,

ITP: Sound As Data workshop (code)

Nov 12, 2013 | Code, ITP-Parametric, Processing / Java, Workshops

20131111-ITP-Sound-As-Data

Nov 11, 2013 | Marius Watz: Sound as Data Workshop, ITP NYU
Download: See GitHub

As part of my on-going ITP residency I am doing a few workshops on specialized code topics. This weekend I revisited my previous work on using sound as an input for visuals or geometry, using Processing and Minim. It was only a 3 hour workshop, but we covered the basics:

  • Opening line in or sound file inputs
  • Accessing sound buffer
  • Normalizing volume
  • Using damping to control FFT behavior

All code has been posted on GitHub, original description below. Continued…

, , , , , ,

Workshop NYC, Sept 21: Intro to Generative Art with Processing

Sep 12, 2013 | Code, News, Processing / Java, Workshops

Marius Watz: KBG (sound viz)

Workshop: Intro to Generative Art with Processing
Sat Sept 21, Park Slope, NYC

Participants will be introduced to the principles of Generative Art using the Processing programming tool. A generative system can take many forms, but is essentially a set of rules that when translated to code executed is capable of producing an endless variety of forms or visuals. We will look at how a generative visual can be created, from sketching in code to creating professional quality output for print or video.

The examples we will go through include useful some essential building blocks and tools-of-trade, applied to real-world problems. Topics include how to do basic composition and color in code, to more complex issues like creating geometry and animation. By adding GUI controls and print / video output to our sketches we have the makings of a full-fledged generative system.

Continued…

, , , , , , ,