Returned after unsuccessful experimentation with client side routing.

This commit is contained in:
suroh 2019-03-18 23:18:52 +01:00
parent 16899b823a
commit 8755851d7a
4 changed files with 339 additions and 57 deletions

View File

@ -1,3 +1,3 @@
# work.suroh.tk
This is the repo for my homepage.
This is the repo for my homepage.

View File

@ -4,7 +4,8 @@
/* --> BASE STYLES <-- */
body {
font-family: 'fira code', monospace;
font-size: 1.2em;
font-size: 19px;
line-height: 24px;
color: #1e1e3cff;
margin: 0;
padding: 0;
@ -12,12 +13,37 @@ body {
a, a:visited {
color: #1e1e3cff;
padding-bottom: 2px;
text-decoration: none;
border-bottom: 1px #1e1e3c50 dashed;
transition: color ease 0.5s, border ease 0.2s;
}
a:hover {
border-bottom: 1px #1e1e3cff solid;
transition: color ease 0.5s, border ease 0.2s;
}
/* --> LISTS <-- */
ul {
list-style: none;
margin-left: 16px;
padding-left: 0;
}
li {
padding: 0.2em 0 0.2em 1em;
text-indent: -0.5em;
}
li:before {
content: "▸";
padding-right: 16px;
}
/* --> NAVIGATION <-- */
nav {
margin: 20px;
margin: 23px 23px 8px;
}
nav>span {
@ -45,25 +71,24 @@ nav>span.active::after {
h1#menuItem {
position: absolute;
left: 20px;
bottom: 20px;
line-height: inherit;
bottom: 0;
margin: 0;
padding: 0;
font-size: 32vw;
font-size: 33vw;
opacity: 0;
transform: translateY(300px);
transform: translateY(100px);
transform-origin: bottom left;
transition: opacity ease-in-out 0.1s, transform ease-in-out 0.1s;
}
h1#menuItem.active {
opacity: 1 !important;
transform: translateY(0px) !important;
transform: translateY(-100px) !important;
}
/* --> MAINPAGE CONSTRUCTION <-- */
section.content {
display: grid;
margin: 0;
padding: 0;
opacity: 0;
@ -79,19 +104,60 @@ section.content.visible {
overflow: inherit;
}
section.content ul.subMenu {
section.content ul.subMenu {
margin: 0;
padding: 0;
list-style: none;
list-style: none !important;
font-size: 1.5em;
}
section.content ul.subMenu li {
section.content ul.subMenu li {
border-left: thin solid #d2d2d8;
padding: 5px 10px;
}
section.content ul.subMenu li:hover {
section.content ul.subMenu li:before {
content: "";
padding-right: 16px;
}
section.content ul.subMenu li:hover {
background: #d2d2d8;
cursor: pointer;
}
/* --> SUBCONTENT CONSTRUCTION <-- */
section.content.page {
max-width: 1960px;
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(16, 1fr);
grid-gap: 24px;
}
section.page h1 {
font-size: 8em;
margin: 0px;
padding: 0px;
line-height: 0.95em;
}
section.content.page div.imgFeat {
grid-column: span 5;
grid-row: 1 / 4:
}
section.content.page section.imgs {
grid-column: 4 / span 2;
grid-row: 2:
}
section.content.page section.imgs>img {
max-width: 100%;
height: auto;
}
section.content.page section.text {
grid-column: 1 / span 3;
grid-row: 2;
}

View File

@ -24,7 +24,7 @@
<span data-link="teach" class=""></span>
</nav>
<section style="position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: -100;">
<section style="position: fixed; top: 0; left: 0; margin: 0; padding: 0; width: 100vw; height: 100vh; z-index: -100;">
<div style="position: relative; width: 100%; height: 100%;">
<h1 id="menuItem" class=""></h1>
</div>
@ -34,12 +34,155 @@
<section id="works" class="content">
<ul class="subMenu">
<li data-link="fragile">Fragile Mastery</li>
<li data-link="euclid">EUCLID</li>
<li data-link="autoArchive">Autonomous Archive</li>
<li data-link="adelaide">Adelaïde</li>
<li data-link="fragile">Fragile Mastery</li>
<li data-link="euclid">EUCLID</li>
<li data-link="autoArchive">Autonomous Archive</li>
<li data-link="adelaide">Adelaïde</li>
</ul>
<!-- FRAGILE PROJECT CONTENT -->
<section id="fragile" class="content page">
<div class="imgFeat" style="background:url('../assets/other/fragileMastery/POD_Cover.sm.png'); background-repeat: none; background-size: cover; height: 500px;"></div>
<section class="work text">
<h1>fragile mastery</h1>
<p>Fragile Mastery is structured around conversations I had with my peers who are improvising musicians, supported by research on software, improvisation, and collective practices. These bodies of research are applied to my own works and my improvisational practice involving software and music. My interest in software and improvisation has lead me to ask, how can improvisation augment my practice involving music and software?</p>
<p>Fragile Mastery is the title of my master's thesis which now forms the basis of my work outside of a performance practice. Manifestations of this research have taken the form of printed material, digital intrusions into music performance tools and spaces, installations, and sound recordings. It also heavily influences my pedagogical pursuits where I try and re-consider implications of mastery and value within the insitutions of a university, classroom, workshop or residency.</p>
<p>My thesis is freely available ony my <a href="https://git.suroh.tk/" target="_blank">git repository</a>. It was designed for print using all open source tools, and generated using custom scripts which can also be found on my git.</p>
<img src="../assets/other/fragileMastery/thumb-gradInstallation.jpg">
</section>
<section class="work imgs">
<object data="https://git.suroh.tk/suroh/mastersThesis/src/branch/master/assets/illustrations/headhunter.svg" type="image/svg+xml"></object>
</section>
</section>
<!-- EUCLID PROJECT CONTENT -->
<section id="euclid" class="content page">
<div class="imgFeat">
<div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/213907704?color=ffffff&byline=0&portrait=0" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
</div>
<section class="work text">
<h1>Euclid</h1>
<p>Tetra Gamma Circulaire 3 was a collaborative work between De Player and the Experimental Publishing Master's path at the Piet Zwart Institute.</p>
<p>The core theme of the publication was the investigation on <em>score</em>. What is a score's function, historically, and how it can be interpreted today.</p>
<p>I drew on previous experience with music performance, theory and composition, and decided to continue to explore themes that I had previously been investigating - primarily improvisation.</p>
<object data="../assets/other/tetra/euclid.svg" type="image/svg+xml"></object>
<p>My piece, Euclid, is an improvisational instrument that aims to explore musical improvisational exploration. It is designed to allow the player to explore its musical possibilities, while requiring active experimentation to master its interface. The music produced by Euclid are based upon Euclidian rhythms, a mathematical system that generates traditional rhythmic patterns. Rather than a noise instrument, the musicality encourages continuous compositional exploration and creates a dialogue between performer and instrument.</p>
<p>The instrument is controlled via a series of touch conductive points. These points work very differently depending on the environmental, and individual conductivity of the player. The instrument therefore has been designed to adjust and learn from the player as the performance progresses. In turn the performer must learn the unique situationally affected intricacies of the instrument, as well as their own affects, allowing for very different performances of the instrument each time.</p>
<p>The end result was an interactive, improvisational, chaotic music machine. Its score, a mash of software and numbers, humanly unintelligible, and musically irreproducible.</p>
<p>This project was the catalyst for my Master's thesis, final project and now forms the base of my current practice and research.</p>
</section>
<section class="work imgs">
<img src="../assets/other/tetra/tetra.jpg">
<img src="../assets/other/tetra/playingTetra.jpg">
<img src="../assets/other/tetra/euclidianGenerator_mk2.png">
</section>
</section>
<section id="autoArchive" class="content page">
<div class="imgFeat">
<img src="../assets/other/autonomousArchive/pgbwstreet.jpg">
</div>
<!-- AUTOARCHIVE PROJECT CONTENT -->
<section class="text">
<h1>Autonomous Archive</h1>
<p>The Autonomous Archive was a collaborative project with Giulia de Giovanelli and Franc Gonzalez. Its goal was to build a local “archival-machine” for the historical living-community Vereniging Poortgebouw, based in Rotterdam. By converting the already extensive paper archive onto a digital system, we aimed to encourage further collaborative collection of materials to maps the legality of the Poortgebouw past, present and future.</p>
<p>The Autonomous Archive is built upon open source software and designed in a way to allow people to interact with the archive and re-activate the documents held within it. It is designed to allow for new interactions and understandings of the archival material, and to develop further outputs.</p>
<p>The final form of this project manifested in a custom built server using parts sourced from within the community, custom build software to add to the archive, as well as a possible example of the how to re-activate its contents. The server is a Linux system running Debian which hosts a Mediawiki which serves as an interface to the documents in the archive only accessible within the Poortgebouw. Documents are entered into the archive through a command line interface on the server itself, which asks the archivist questions about the document being added, such as categoies, themes, players involved, and the date. The Autonomous Archive then scans the document, and through Optical Character Recognition (OCR) translates the grpahic into editable text, translates it from dutch to english and uploads it onto the wiki in its various new formats.</p>
<p>As an example of a possible re-activation of the archive, we also developed a way to print a booklet which includes all the content of the wiki. As the Autonomous Archive is only accessible from within the living community, this generated document acted as a way we were able to distribute our ideologies and methodologies employed within the creation and application of the Autonomous Archive.</p>
<p>This project is still alive today, and has since manifested in a Master's project within the Experimental Publishing pathway at the Piet Zwart institute in their 4th Special Issue, and presented again within the Temporary Autonomous Bureau in 2018 at TENT gallery in Rotterdam.</p>
<img src="../assets/other/autonomousArchive/aa1-web.jpg" style="float: right; width: 50%; height: auto;">
<img src="../assets/other/autonomousArchive/aa7-web.jpg" style="margin-top: 10px;">
<img src="../assets/other/autonomousArchive/aa8-web.jpg" style="margin-top: 10px;">
<img src="../assets/other/autonomousArchive/aa12-web.jpg" style="margin-top: 10px;">
<img src="../assets/other/autonomousArchive/aa13-web.jpg" style="margin-top: 10px;">
<img src="../assets/other/autonomousArchive/aa14-web.jpg" style="margin-top: 10px;">
<img src="../assets/other/autonomousArchive/aa17-web.jpg" style="margin-top: 10px;">
<img src="../assets/other/autonomousArchive/aa19-web.jpg" style="margin-top: 10px;">
<img src="../assets/other/autonomousArchive/aa20-web.jpg" style="margin-top: 10px;">
<img src="../assets/other/autonomousArchive/aa4-web.jpg" style="margin-top: 10px; width: 50%; height: auto;">
</section>
<section class="imgs">
<img src="../assets/other/autonomousArchive/20171110_0061.jpg">
<img src="../assets/other/autonomousArchive/Print1.jpg">
<img src="../assets/other/autonomousArchive/Files-terminal.png">
<img src="../assets/other/autonomousArchive/web-2.jpg">
<img src="../assets/other/autonomousArchive/web-4.jpg">
<img src="../assets/other/autonomousArchive/web-15.jpg">
<img src="../assets/other/autonomousArchive/20171110_0057.jpg">
</section>
</section>
<!-- ADELAIDE PROJECT CONTENT -->
<section id="adelaide" class="content page">
<div class="imgFeat">
<div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/154641685?color=ffffff&byline=0&portrait=0" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
</div>
<section class="work text">
<h1>Adelaïde</h1>
<p>Adelaïde is a reactive music video developed in Processing in 24hrs. It was part of a 24 hour music video challenge in collaboration with Le Gaité Lyrique, and french band Requin Chagrin.</p>
<p>The work was done in collaboration with Sanet Stegmann. The visual style was inspired by the Memphis group of artists and designers from the 1960s. All the forms and patterns were generated in processing and were designed to be animated for the video as well as printed.</p>
<img src="../assets/other/memphis/memphis1.png" style="width: 30%; height: auto; display: inline;">
<img src="../assets/other/memphis/memphis2.png" style="width: 30%; height: auto; display: inline;">
<img src="../assets/other/memphis/memphis3.png" style="width: 30%; height: auto; display: inline;">
</section>
<section class="work imgs">
<img src="../assets/other/chagrin/chagrin1.png">
<img src="../assets/other/chagrin/chagrin2.png">
<img src="../assets/other/chagrin/chagrin3.png">
</section>
</section>
</section>
<section id="audio" class="content">
@ -49,14 +192,12 @@
<li data-link="postoast">postoast</li>
</ul>
<section class="content">
<section id="solo" class="content page">
<div class="imgFeat">
<img src="../assets/audio/solo/thumb-_DSC5695.png">
</div>
<a href="https://work.suroh.tk/" id="home"><< home</a>
<section class="work text">
<section class="text">
<h1>Solo</h1>
<p>My solo practice embraces the unstable nature of improvisation in software and in music. I aim to examine the agency that improvisation can provide in the context of creative software and performance. I build custom software that acts both as an instrument and collaborator which I perform alongside with a combination of digital hardware and traditional musical instruments. Through the employment of these tools I challenge my ingrained jazz improvisational training, and examine creative relationships we can have with machines.</p>
@ -73,20 +214,53 @@
</section>
<section class="work imgs">
<section class="imgs">
<img src="../assets/audio/solo/patch.png">
<img src="../assets/audio/solo/thumb-_DSC5654.png">
</section>
</section>
<section id="postoast" class="content page">
<div class="imgFeat">
<img src="../assets/audio/postoast/thumb-FOMORADIO_PostToast.png">
</div>
<section class="text">
<h1>POST TOAST</h1>
<iframe width="100%" height="120" src="https://www.mixcloud.com/widget/iframe/?hide_cover=1&light=1&feed=%2FRedLightRadio%2Fpost-toast-red-light-radio-04-30-2018%2F" frameborder="0" ></iframe>
<p>Post Toast is an electronic duo currently playing a live meld of hypnotic improvised electronica, techno, hip-hop neo-classical music and down-tempo dystopian futurism. Meeting during our Master's studies Ryan Cherewaty and I found intersecting interests in musical tastes and instrumentation and decided to join forces in our living room.</p>
<p>This side project extends my methodology of improvisation in and with software, forcing me further to break from my musical academic training and aesthetics. Post Toast is a moment where I experiment with my ideologies outside of an art music/performance realm. It has since developed from a casual hobby to a formative part of my improvised, software performance practice.</p>
<iframe style="border: 0; width: 100%; height: 621px;" src="https://bandcamp.com/EmbeddedPlayer/album=2317484970/size=large/bgcol=ffffff/linkcol=333333/transparent=true/" seamless><a href="http://posttoast.bandcamp.com/album/fomo-radio-live-set-021318">fomo radio live set 02.13.18 by PostToast</a></iframe>
</section>
<section class="imgs">
<img src="../assets/audio/postoast/thumb-redlightradio.png">
</section>
</section>
</section>
<section id="teach" class="content">
<section id="teach" class="content page">
<p>teach content</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<h1 style="font-size: 8em;">teaching</h1>
<p>I'm currently engaged in teaching at <a href="https://paris.edu/" target="_blank">Paris College of Art</a> & <a href="https://www.eemi.com/" target="_blank">EEMI (l'école éuropéene des métiers de l'internet)</a> in Paris, FR.</p>
<p>Experimenting in the realms of design, art, the web, interfaces, music and sound, with undergraduate and master's level students. Some links of our research and work can be found below.</p>
<ul>
<li><a href="https://www.are.na/max-franklin/generative-________" target="_blank">are.a : PCA Generative ________ (2019)</a></li>
<li><a href="https://www.are.na/max-franklin/ux-design-lrvclxzbiu" target="_blank">are.na : PCA UX Design (2019)</a></li>
<li><a href="https://glitch.com/@generative.blah" target="_blank">glitch : PCA Generative _____ (2019)</a></li>
<li><a href="https://glitch.com/@ux.2019.pca" target="_blank">glitch : PCA UX Class (2019)</a></li>
<li><a href="https://git.suroh.tk/" target="_blank">git.suroh.tk</a></li>
</ul>
</section>

View File

@ -1,33 +1,75 @@
// interaction
const primaryNav = document.querySelector('nav')
const menuItem = document.querySelector('#menuItem')
const content = document.querySelectorAll('.content')
// TODO: (create voice class per button)
let menuVoices = []
const subMenu = (activePage) => {
let menu = document.querySelector(`\#${activePage} \.subMenu`)
const subContent = (active) => {
let parent = document.querySelector(`\#${active}`)
let menu = parent.querySelector(`\.subMenu`)
if (menu) {
return menu
return { menu: menu, parent: parent }
} else {
return null
}
}
const showContent = (section) => {
for (let sect of content) {
if (c.dataset.link == sect.id) {
sect.className = 'content visible'
} else if (!c.dataset.link) {
sect.className = 'content'
const subMenuListeners = (active) => {
let sc = subContent(active)
if (sc.menu) {
console.log(`You are on ${active} w\/ a menu`)
for (let s of sc.menu.children) {
console.log(s)
s.addEventListener('click', () => {
showContent(s.dataset.link, sc.parent)
})
}
} else {
console.log(`${active} has no menu`)
}
}
const showContent = (section, parent = false) => {
console.log(`section: ${section}\nparent: ${parent ? true : false}`)
let query
if (parent) {
console.log(parent)
query = parent.querySelectorAll('.content')
className = `content page`
} else {
query = document.querySelectorAll(`.content`)
className = `content`
}
console.log(query)
for (let q of query) {
if (q.id == section) {
console.log(`active id : ${section}`)
subQ = q
q.className = `${className} visible`
} else {
sect.className = 'content'
console.log('hiding divs')
q.className = `${className}`
}
}
console.log(content)
}
const findContent = (domElement, id) => {
for (let sect of domElement) {
if (id == sect.id) {
return sect
} else {
return null
}
}
}
// --> PRIMARY NAVIGATION
//
for (let c of primaryNav.children) {
// TODO: (create voice class per button)
menuVoices[c.dataset.link] = new Synth(audioEngine)
@ -39,28 +81,17 @@ for (let c of primaryNav.children) {
for (let _c of primaryNav.children) {
if (c === _c && c.dataset.link != '~') {
c.className = 'active'
if (subMenu(c.dataset.link)) {
for (let s of subMenu(c.dataset.link).children) {
s.addEventListener('click', () => {
console.log(`clicked : ${s.dataset.link}`)
})
}
}
activePage = c.dataset.link
} else {
_c.className = ''
}
}
for (let sect of content) {
if (c.dataset.link == sect.id) {
sect.className = 'content visible'
} else if (!c.dataset.link) {
sect.className = 'content'
} else {
sect.className = 'content'
}
}
// SHOW CONTENT FUNCTION
showContent(c.dataset.link)
// subPage Render
subMenuListeners(c.dataset.link)
})
c.addEventListener('mouseenter', () => {
@ -80,3 +111,14 @@ for (let c of primaryNav.children) {
}
})
}
// --> SECONDARY NAVIGATION
//
if (activePage) {
console.log(activePage)
for (let s of subContent(activePage).menu.children) {
s.addEventListener('click', () => {
console.log(`sub menu click \: ${s.dataset.link}`)
})
}
}