Author |
Message |
Acoustic Interloper

Joined: Jul 07, 2007 Posts: 2073 Location: Berks County, PA
Audio files: 89
|
Posted: Wed Dec 17, 2014 11:49 am Post subject:
Subject description: HexAtom |
 |
|
Am about a third of the way through the recordings in this thread, and loving it so far. Thanks for posting.
My contribution is a MOV video over on FB that I posted this morning. I tried converting to MPEG2 using Adobe Premier Pro, but it drops the right audio channel no matter what I do, so I gave up. You may need Quicktime to view it.
This is the current version of this HexAtom software using built-in Java library soft synths that I started using with Scrabble-to-MIDI back in 2009. For NYE2014-15 I plan to use this approach with AAS physical modeling soft synths, haven't started working on the patches yet. The genesis of this approach goes back to the chess-to-just-intonation music that my son Jeremy & I performed in the NYE2007-08 webcast, which really took off after our discussion here of the Glass Bead Game.
The current state of HexAtom in the video is that the graphical atoms in the cellular automaton generate MIDI (the original mode of HexAtom), and also the generated MIDI notes generate and/or destroy graphical atoms. The latter part is new as of last summer. I used that at electro-music 2014, and am expanding it as I get time. Thus there is a feedback loop between graphical and MIDI audio domains.
Here is the jython patch used to automate this particular performance, which I wrote this morning
Code: |
# module nye201415 for New Year's Eve 2014-2015 practice and performance
# D. Parson, December 2014
from javax.swing import Timer
from java.awt.event import ActionListener
import types
class TimedNoodleStateMachine(ActionListener):
'''
This is a noodle driver that goes off every 30 seconds
and update the state of the HexAtom universe. We cannot put
a sleep in the main event loop -- it blocks the GUI event
thread -- so TimedNoodleStateMachine uses a javax Timer to time
the cmds passed to the constructor.
'''
def __init__(self, cmds, interp, ms, invokeFirst=True):
'''
Initialize the state of this ActionListener state machine.
Parameter *cmds* is a sequence (list or tuple) of commands,
OR a Python generator of commands. The sequence can contain,
or the generator can generate, eother individual commands as
strings, or can contain/generate sequences of commands in the
for of subsequences of string commands.
Parameter *interp* is the interpreter for the set of commands.
Parameter *ms* is the number of milliseconds between invocations.
Parameter *invokeFirst* if True (default) runs the first command
sequence immediately, before starting the timer.
'''
self.cmds = cmds
self.interp = interp
self.ms = ms
self.timer = Timer(ms, self)
if invokeFirst:
self.actionPerformed(None)
self.timer.start()
def actionPerformed(self, event):
'''
When the timer goes off, interpret the next sequence of commands.
'''
cmdseq = None
if isinstance(self.cmds, types.GeneratorType):
try:
cmdseq = self.cmds.next()
except StopIteration:
self.timer.stop()
return
elif len(self.cmds) > 0:
cmdseq = self.cmds[0]
self.cmds = self.cmds[1:]
else:
self.timer.stop()
return
if isinstance(cmdseq, str):
self.interp.interpret(cmdseq)
else:
for c in cmdseq:
self.interp.interpret(c)
def testnye1415(interp,ms):
'''
Test driver for practice run for NYE 2014-15. This is not based
on the patches I will be using. It is a simple noodle to test
the software out using synth patches provided by the Java library.
I will use AAS synths for the actual event. This just tests
the plumbing.
The *interp* parameter is the jython command interpreter object.
The *ms* parameter is number of milliseconds between advancing the
state machine.
This function returns the reference to the TimedNoodleStateMachine
object constructed, which is not needed for now.
'''
cmds = (
('pmt0=1', 'pmt1-11=1', 'pft12=1',
'A0-5', 'Q0-2', 'd3', 'pvf12=.077050', 't60', 'e255', 'a0ne0r17',
'shx.0', 'shy.0', 'trx.0', 'try.0'),
('A0-8', 'Q0-4', 'd7', 'e50', 'shx.5', 'shy.5', 'a0nw0r19'),
('A0-11', 'Q0-7', 'd13', 'e10', 'shx.75', 'shy.75', 'a0sw0r23'),
('d23', 'e1', 'shx.9', 'shy.9', 'trx.5', 'try.5', 'a0se0r29'),
('e5', 'shx.5', 'shy.5', 'trx.0', 'try.0', 'pvf12=.074070', 'a0n0r31'),
('e10', 'pvf12=.071090', 'd3', 'shx.0', 'shy.0', 'trx.0', 'try.0',
'a0x0')
)
noodle = TimedNoodleStateMachine(cmds, interp, ms)
return noodle
|
The pvf commands relate strongly to the feedback The probability of vacuum fluctuation value at the beginning of .077050 means that when a MIDI note feeds back into the cellular automaton (CA), there is a 70% probability (the third & fourth digits) that it will generate a new atom 7 semitones (the .07 -- affects color and MIDI pitch) above its original MIDI note, and a 50% probability that it will absorb the original atom. the 70-50 ratio is regenerative feedback. The later pvf12=.074070 (the 12 just means apply it to all 12 atomic numbers) makes this a degenerative 40%-70% ratio, and the final 10%-90% ratio kills the piece. Other transforms in the above rows change diameter of the space, skew and center of rotation of the atoms, and other properties of the CA.
I am posting an MP3 for completeness, although watching the video in HD is the thing to do. I have also posted a screenshot of the CA-to-MIDI mapping GUI, which I didn't touch at all after starting the noodle.
[/code]
Description: |
Screen shot of the atom-to-MIDI mapper. You can live code in Python. |
|
Filesize: |
187.02 KB |
Viewed: |
643 Time(s) |
This image has been reduced to fit the page. Click on it to enlarge. |

|
Description: |
MP3 recording, Dale E. Parson, copyright Creative Commons 3.0, December 2014 |
|
 Download (listen) |
Filename: |
hexdec172014C.mp3 |
Filesize: |
2.84 MB |
Downloaded: |
2182 Time(s) |
_________________ When the stream is deep
my wild little dog frolics,
when shallow, she drinks. |
|
Back to top
|
|
 |
blue hell
Site Admin

Joined: Apr 03, 2004 Posts: 24415 Location: The Netherlands, Enschede
Audio files: 297
G2 patch files: 320
|
Posted: Sun Dec 21, 2014 10:50 am Post subject:
|
 |
|
Nice one Dale :-) _________________ Jan
also .. could someone please turn down the thermostat a bit.
 |
|
Back to top
|
|
 |
Acoustic Interloper

Joined: Jul 07, 2007 Posts: 2073 Location: Berks County, PA
Audio files: 89
|
Posted: Mon Dec 22, 2014 6:57 am Post subject:
|
 |
|
Thanks, Jan  _________________ When the stream is deep
my wild little dog frolics,
when shallow, she drinks. |
|
Back to top
|
|
 |
mtvic

Joined: Feb 03, 2003 Posts: 526 Location: Townbank Cape May NJ
Audio files: 4
|
Posted: Mon Dec 22, 2014 5:47 pm Post subject:
|
 |
|
WTF _________________ "I'm the transmitter' I give information."
"You're the antenna,catch the vibration."
>>> Kraftwerk Radioactivity<<< |
|
Back to top
|
|
 |
Jack_Hertz

Joined: May 14, 2010 Posts: 458 Location: West Coast
Audio files: 101
G2 patch files: 7
|
|
Back to top
|
|
 |
Acoustic Interloper

Joined: Jul 07, 2007 Posts: 2073 Location: Berks County, PA
Audio files: 89
|
Posted: Tue Dec 23, 2014 8:45 pm Post subject:
|
 |
|
Thanks, Jack!
Michael, I'll give you a demo next June in the planetarium.  _________________ When the stream is deep
my wild little dog frolics,
when shallow, she drinks. |
|
Back to top
|
|
 |
blairr
Joined: May 29, 2011 Posts: 2 Location: Hobart, Tasmania, Australia
Audio files: 1
|
|
Back to top
|
|
 |
Jack_Hertz

Joined: May 14, 2010 Posts: 458 Location: West Coast
Audio files: 101
G2 patch files: 7
|
Posted: Mon Jan 05, 2015 12:16 pm Post subject:
|
 |
|
Loving this! Nice job, blairr.
FWIW. Anyone who wants their track included on the Noodles Comp Album (see here: https://auralfilms.bandcamp.com/album/noodles) should include a FLAC file with their post. Optionally, I can convert your MP3 file if you prefer. Just let me know. _________________ Jack Hertz.com | Aural Films |
|
Back to top
|
|
 |
blue hell
Site Admin

Joined: Apr 03, 2004 Posts: 24415 Location: The Netherlands, Enschede
Audio files: 297
G2 patch files: 320
|
Posted: Mon Jan 05, 2015 12:29 pm Post subject:
|
 |
|
blairr wrote: | This is a contribution I've put together using some of my modular synth setup, the modules used are all DIY ones. |
Listened to this at work today, and then had no time to type here ... I loved it! _________________ Jan
also .. could someone please turn down the thermostat a bit.
 |
|
Back to top
|
|
 |
blairr
Joined: May 29, 2011 Posts: 2 Location: Hobart, Tasmania, Australia
Audio files: 1
|
Posted: Mon Jan 05, 2015 5:51 pm Post subject:
|
 |
|
Thanks! I enjoyed putting this together, after a while it started to evolve in ways I hadn't anticipated, which is always a nice surprise.
Jack; I will PM you a link to the .FLAC file for the comp.
Cheers
Blair |
|
Back to top
|
|
 |
Jack_Hertz

Joined: May 14, 2010 Posts: 458 Location: West Coast
Audio files: 101
G2 patch files: 7
|
Posted: Thu Jan 08, 2015 9:29 am Post subject:
|
 |
|
FYI - Doug Lynner posted this video that I thought you guys would enjoy:
_________________ Jack Hertz.com | Aural Films |
|
Back to top
|
|
 |
|