User:Mitsa/Final presentation: Difference between revisions
Line 180: | Line 180: | ||
[[File:348892059 762039705608890 2674713938661389281 n.jpg|thumb]] | [[File:348892059 762039705608890 2674713938661389281 n.jpg|thumb]] | ||
==== prototypes with sonic pi ==== | ==== first prototypes with sonic pi that influenced the last==== | ||
Here are tryouts with small vocal excerpts I recorded. I tried to loop steadily and not, to pitch, to stretch. The excerpts were part of the thesis | Here are tryouts with small vocal excerpts I recorded. I tried to loop steadily and not, to pitch, to stretch. The excerpts were part of the thesis | ||
#first time that i enter my own breath on the code | #first time that i enter my own breath on the code |
Revision as of 15:08, 12 June 2023
First Year
Si16
Personal reflection
In the SI16 I co-produced the project "...And I wish that your question has been answered". I also participated in the writing of the Manifesto of and the Terms of service of the publication. In the project I worked on the functions Respell, Stitch and Reveal, which are based on the Replace Python function. I was occupied by the urge to understand how the choice of specific words inside a text can shape our ideologies. In that sense I proposed to use the three functions on the political speeches of Mark Rutte and Kiriakos Mitsotakis, prime ministers of Netherlands and Greece, about the pushbacks on the EU borders. As a result, we came out with an interface where a user can interchange specific words of these 2 speeches with others words, characters or blankets in order to disrupt and question the meaning of the original texts.
...and I wish that your question has been answered
About
This text is a transcribed excerpt from the Press Conference that followed the meeting between the Greek Prime Minister Kyriakos Mitsotakis and the Dutch Prime Minister Mark Rutte on November the 9th, 2021 in Athens. During the Q&A, the Dutch reporter Ingeborg Beugel asked Mitsotakis for clarity and honesty referring to pushbacks which Greek border guards keep committing towards refugees, while the Greek Government systematically conceals such violence. She continued by asking Mark Rutte what the political stance of the Netherlands towards refugees' relocation and Mitsotakis's policy would be.
The choice of this text as our source material has different reasons. First of all, we were interested in how language can produce categories and shape identities: how does wording create precise borders between the "us" and the "them"? Our second step would be reflecting on text processing strategies through which a speech or a narration can be recontextualised and reclaimed. By replacing or taking out words of a discourse, and thus making some parts of it interchangeable, we tried to highlight how its phrasing is never neutral, but always a choice led by a particular purpose.
We decided to work on this text as the Press Conference took place at the moment we were developing our research, and as we were really interested on the distinctive rhetoric strategies that Beugel, Mitsotakis and Rutte choose for voicing their goals. It is clear that the reporter uses an emotional and provocative tone to address Mitsotakis' politics, which challenges his composure to a point where he can not keep it anymore, while when talking to Rutte, her speech is more calm and detached. In response to her question, both Prime Ministers refuse responsibility of their actions: they use a rather managerial and pre-designed language to neutralize the reporter's provocation while at the same time praising the generosity and the efforts of their countries. In particular, Mitsotakis denies any of Beugel's accusations and declares them as unsupported assumptions which is a mere demonstration of power. Alongside, Rutte uses a colder and more restrained language to rationalize the EU and the Greek Government's choices: While shifting the responsibilities for refugee protection, he actually justifies the crimes that are committed within the EU borders as an inevitable "tough, but fair, policy".
Concerning our project, it is an act of persistent resistance. We created three functions to facilitate an iterative process of refusal towards the two Prime Ministers' answers and any of their possible versions. We invite you to play as much as you want with these functions and create your own answers as counter-reaction to Mark Rutte's final sentence: "So this is my answer and I wish that your question has been answered". Every new answer, every new iteration, can be submitted to our Archive of Repetitive Answers. Although they will never be good enough, nor shall they be accepted as exhaustive, we consider the modified answers as a trigger for a never-ending dialogue.
Research
Articles about pushbacks in the EU borders, that influenced the editing of the functions.
- https://www.lighthousereports.nl/investigation/frontex-chapter-ii-complicit-in-pushbacks/
- https://www.spiegel.de/international/europe/eu-border-agency-frontex-complicit-in-greek-refugee-pushback-campaign-a-4b6cba29-35a3-4d8c-a49f-a12daad450d7
- https://www.bellingcat.com/news/2020/10/23/frontex-at-fault-european-border-force-complicit-in-illegal-pushbacks
- https://www.lighthousereports.nl/investigation/torment-in-turkey/
- https://www.lighthousereports.nl/investigation/unmasking-europes-shadow-armies/
- https://www.lighthousereports.nl/investigation/frontex-in-the-central-mediterranean/
- https://www.keeptalkinggreece.com/2021/11/17/beugel-greece-safety-leave-dutch-journalist/
The pad that we analysed the corpora, and therefore formed our strategies
Functions
Respell
Respell receives as input a text as a string type, and substitute all the occurrences of a targeted word with a replacement as a string type chosen by the user.
from nltk.tokenize import word_tokenize # text, target, and replacement are string types def respell(text, target, replacement): target = target.lower() txt = word_tokenize(text) new = [] for w in txt: if w == target: w = replacement new = new + [w] elif w == target[0:1].upper() + target[1:]: w = replacement[0:1].upper() + replacement[1:] new = new + [w] elif w == target.upper(): w = replacement.upper() new = new + [w] else: new = new + [w] text = ' '.join(new) final= text.replace(' .','.').replace(' ,',',').replace(' :',':').replace(' ;',';').replace('< ','<').replace(' >','>').replace(' / ','/').replace('& ','&') return final
This function in itself could be understood as a filter to process and alter texts. By targeting specific words and replacing them, either for another word, for specific characters or for blank spaces, the user of the tool can intervene inside a text. One could break down the meaning of a text or create new narrative meanings by exposing its structure, taking out or highlighting specific and meaningful words and detaching such text from its original context. This tool offers a broad spectrum of possibilities in which it can be used, from a very political and subversive use, to a more playful and poetic one.
Stitch
Stitch receives as input a text as a string type, and replaces all the occurrences of a target word, with a character or a word that is repeated as many times as the length of the target.
from nltk.tokenize import word_tokenize # text, target, and replacement are string types def stich(text, target, replacement): target = target.lower() txt = word_tokenize(text) new = [] for w in txt: if w == target: w = len(w)*replacement new = new + [w] elif w == target[0].upper() + target[1:]: w = len(w)*replacement new = new + [w] elif w== target.upper(): w = len(w)*replacement new = new + [w] else: new = new + [w] text = ' '.join(new) final= text.replace(' .','.').replace(' ,',',').replace(' :',':').replace(' ;',';').replace('< ','<').replace(' >','>').replace(' / ','/').replace('& ','&') return final
This function in itself could be understood as a filter to process and alter texts. By targeting specific words and stitching them, with a character or a word that is repeated as many times as the length of the target , the user of the tool can intervene inside a text. One could break down the meaning of a text or create new narrative meanings by exposing its structure, taking out or highlighting specific and meaningful words and detaching such text from its original context. This tool offers a broad spectrum of possibilities in which it can be used, from a very political and subversive use, to a more playful and poetic one.
Reveal
Reveal takes a text as string input and deletes all its characters except the input list of words.
def reveal(text,group): txt = word_tokenize(text) txt_linebr = [] for token in txt: if token == '<': continue elif token == 'br/': token= txt_linebr.append(token) elif token == '>': continue else: txt_linebr.append(token) new = [] for w in txt_linebr: if w==: new = new + [w] elif w not in group: w = len(w) * ' ' new = new + [w] elif w in group : new = new + [w] text = ' '.join(new) final= text.replace(' .','.').replace(' ,',',').replace(' :',':').replace(' ;',';').replace('< ','<').replace(' >','>').replace(' / ','/').replace('& ','&') return final
This function in itself could be understood as a filter to process and alter texts. By chosing to keeping specific words of a text and deleting all the others, the user of the tool can intervene inside a text. One could break down the meaning of a text or create new narrative meanings by exposing its structure, taking out or highlighting specific and meaningful words and detaching such text from its original context. This tool offers a broad spectrum of possibilities in which it can be used, from a very political and subversive use, to a more playful and poetic one.
Online publication of the interface
...And I wish that your question has been answered interface
Zines for the launch event with an answer made by us
We created several zines for the launch event. Each zine had consisted of the original question and the original answer + an answer that we each one of us created through our functions
Si17
Personal reflection
On the Special 17 I put my attention on how can we work as group with more care. How can we have our individual needs met, while still we meet the production deadlines. I have a lot to learn on how to express my needs and how I can contribute in a non-violent group communication. In terms of the publication, I co-developed and co-created the production of the contents. Mostly, I edited the collective inputs, while I participated in the overall process of designing and outsourcing our material.
Si18
Personal Reflection
In this Special Issue I participated as a listener, a contributor and a caretaker. It was a rich experience to unplug from the screen and listen every week to each new release. The discussion after each launch was rich. We tryed to unpack what we collectively listened to and raise questions. As a contributor I tried to discuss about the dynamics of a public space, while being on a public space, to jam outside with bottles, to create pop national anthems, to experiment with spoken word and the detuning of my voice and my guitar, to field record and edit, to try a diffractive reading of a text and a video, to jam at Paris, to reflect on the releases. I did all these alone or by being part of a duo or a trio. As a caretaker, I put together the first release with Chae and curated the 4th release with Miriam and Erica. Finally I curated and performed the diffractive dj set with Alex and Supi.
Second Year
Thesis
talking about gender through my story as a guitarist: guitar as prosthetic, guitar as regulatory device
-guitar as regulation through cis heteronomrative spaces
-the fretless as prosthesis
voice coming from the inside voice negotiating with the outside
-timbre as a genuine, personal intimate sound quality
-to voice as fingerprints that urge tor reach
-what about those voices that have learnt to be out of reach?
trying to create our own rules that could possibly fit us
-process than outcome
Project
jams as safer space on action
playing at re#sister
preparation: I refer analytical to that in the thesis
playing at VARIA
3 parts,
impro.
finding the anchor point
Research Log
https://pzwiki.wdka.nl/mediadesign/Research_Log
voice feminisation and timbre
Process for making a live coding process around vocal timbre, embodiment, gender inscriptions
first prototypes with sonic pi that influenced the last
Here are tryouts with small vocal excerpts I recorded. I tried to loop steadily and not, to pitch, to stretch. The excerpts were part of the thesis
#first time that i enter my own breath on the code #it is moving, deep, is like listening to my old self, or to the air, there is a level of intimacy #that i cannot put into words define :mybreath do with_fx :reverb do use_bpm rrand(5,100) live_loop :breath do sample "C:/Users/luzza/Desktop/samples/my breath2.wav", amp: rrand(1,3), rate: rrand(0, 2), pan: rrand(-0.8,0.8) sleep 1 end end end
define :myshortbreath do use_bpm rrand(100,1000) with_fx :gverb do live_loop :breath do sample "C:/Users/luzza/Desktop/samples/my breath.wav", amp: rrand(0.5,1), rate: rrand(-2, 2), krush: rrand(10,40) sleep 1 end end end
#layering and repeating the voice changing the point of repetion in time define :staticloop do #with_fx :reverb do live_loop :sentence do use_bpm 350 sample "C:/Users/luzza/Desktop/samples/sentence.wav" sleep 5 end #end end #a mechanic, static repetition that interfers with the clarity of the message #it's interesting how agressive it becomes quickly #but then it is static, like a machine that is working
define :fluctuatingloop do #with_fx :reverb do live_loop :sentence do use_bpm rrand(5,1000) sample "C:/Users/luzza/Desktop/samples/sentence.wav", amp: 2 sleep 5 end #end end #a fluctuating, repetition #it opens up interpretation, the changing rythme says something about a structure? #i hear how it is to be like a wall, when the one voice bumps into each other #and i feel the gap when there is a big stop between the one voice to the other #not really agressive
#stretching my vocal excerpt taking about a moment of misgendering define :exposure do #with_fx :reverb do live_loop :sentence do #use_bpm rrand(10,1000) with_fx :pitch_shift, pitch_dis: 0.001, pitch: 2 do sample "C:/Users/luzza/Desktop/samples/misgender.wav", amp: 2 sleep 10 end end end #i feel exposed. #i am not sure how it works. #like if it works with the stretching or if it is like too obvious #it feels better that the voices don't overlap with each other because then it becomes too dramatic #the weird element of fast and super slow. can feel sometime really econographic with a speach #because this has been probably overused in satire, it creates an akward childish result #when my real voice appears, it's like i am exposed... like we understand for whom we talk about #like the masks are falling
define :masc do #with_fx :reverb do live_loop :sentence do #use_bpm rrand(10,1000) with_fx :pitch_shift, pitch_dis: 0.001, pitch: rrand(-15,5) do sample "C:/Users/luzza/Desktop/samples/misgender.wav", amp: 2, krush: 10 sleep 10 end end end
messy pad with notes from where I chose the text for the performance
This pad got created through a series of improvisation I had with the instrument.
I would listen to the soundscape created by the my voice and the different types of stretches and pitching and respond.
I tried also to implement thoughts that evolved throughout my thesis, but in a more oral, here and now way.
https://pad.xpub.nl/p/processing_the_perfomance_i_am_a_hipster
representative recording
This recording is one of the many impros I had during the process of creating the performance.
The "final" thing will probably sound like that.
I have some anchor points as a score that I try to reach throughout the playing.
Other sound parts come up during my interaction with the instrument.
https://hub.xpub.nl/soupboat/~mitsa/__lab__/files/public_html/XPUB2/final%20assesment/modulated%20by_mp3.mp3?_xsrf=2%7C117d8e9e%7Cefa1df2683fb5fc6126ca14a741ff2c2%7C1686241370
Script for the live coding performance in sonic pi
#heyy can you hear me? #do I reach you? #do I wanna reach you? #do you want to be reached by me? #I am so happy that you are here tonight #I am so happy that you came here to listen to me #Thank you, thank you so much #I would like to be bigger #i don't know what to do with all this energy #i was taught to be scared of it #I am a small creature #Trapped inside a eh eh ehe eh eh eh... body #What do you think? #What do you think of me? #They wanted to put my head into the ground #They didn't want us! They don't want us! #I can stay in the corner and observe #I can stay I can open my ears and listen #We have learnt to hide #It's hard not to be recognised #It's like you don't exist, but you exist hahaha #You have a body #I like to adapt A LOT that's what i do in life #I just adapt my voice #What ? What ? Whaat? What the fuck is this? #STOP STOP STOOOOP #What do you do usually? Do you adapt? Do you resist? Do you fight? #DO you fly? Do you stay?? #i want to be regulated #I want to be filtered #How do you filter what you hear? #FILTER MEEEEE #but did this even happen this way? #Did she say this did she love me or i don't know #I wanna go in the corner and suck my thumb #do i need to be stronger? #do i need to be oversized? #do i need to shrink? #do i need to be something more? #do i need to be something less? #do i need to stand out? maybe #is that ok? #i am sorry, don't leave me #thank you i love you #thank you that you came here to listen to me
#adding amplitude level with_fx :level do |le| #adding low pass filter with_fx :lpf, mix: 0 do |l| #adding pitch shifter with_fx :pitch_shift, pitch_dis: 0.001 do |p| #adding echo with_fx :echo, pre_mix: 0, decay: 2 do |e| #adding reverb with_fx :reverb, pre_mix: 1, room: 1 do |r| #for latency prevention use_real_time #inserting the microphone to the system live_audio :mic #a live_loop for mapping the midi faders, buttons and knobs with the above effects live_loop :process do #for latency prevention use_real_time #the variables cc and val are syncronised with the midi machine i use cc, val = sync "/midi:5-_zero_mkii_0:1/control_change" # the numbers that cc corresponds with are the different faders, knobs buttons if cc == 23 control le, amp: val / 127.0 end if cc == 24 if cc > 63.5 control p, pitch: (val - 63.5) / 1.7 else control p, pitch: (-val + 63.5) / 6 end end if cc == 25 control e, pre_mix: val / 127 end if cc == 26 control e, phase: val * 0.1 + 0.000001 end if cc == 73 control e, decay: val / 5 + 0.000001 end if cc == 75 control r, pre_mix: val / 127 end if cc == 70 control r, room: val / 127 end if cc == 20 control l, cutoff: val end if cc == 14 control l, mix: val /127.0 end #create a buffer of 10 seconds if cc == 77 with_fx :record, buffer: [:voice,10] do print "record recording" use_real_time live_audio :mic1 end end #play the buffer if cc == 95 print "play recording" sample buffer[:voice,10] end #small stretch of the buffer if cc == 7 control sample buffer[:voice,10], rate: val * 0.1 + 0.000001 end #bigger stretch of the buffer if cc == 10 control sample buffer[:voice,10], rate: val + 0.000001 end #reverse stretch of the buffer if cc == 22 control sample buffer[:voice,10], rate: -val * 0.1 + 0.000001 end #create a buffer of 100 seconds if cc == 82 with_fx :record, buffer: [:voice2,100] do print "record recording" use_real_time live_audio :mic1 end end #play the buffer if cc == 83 print "play recording" sample buffer[:voice2,100] end #small stretch of the buffer if cc == 74 control sample buffer[:voice2,100], rate: val * 0.1 + 0.000001 end #bigger stretch of the buffer if cc == 71 control sample buffer[:voice2,100], rate: val + 0.000001 end #reverse stretch of the buffer if cc == 85 control sample buffer[:voice2,100], rate: -val * 0.1 + 0.000001 end end end end end
end
end
#creating a second channel for my voice. this one is for the moments that i want the signal created by my vocal chords to be as not altered as possible with_fx :level do |le3| with_fx :pitch_shift, pitch_dis: 0.001 do |p1| live_loop :process2 do use_real_time cc, val = sync "/midi:5-_zero_mkii_0:1/control_change" if cc == 72 control le3, amp: val / 127.0 end if cc == 92 and val == 0 use_real_time live_audio :mic3 end if cc == 92 and val == 127 kill live_audio :mic3 end if cc == 19 if cc > 63.5 control p1, pitch: (val - 63.5) / 1.7 else control p1, pitch: (-val + 63.5) / 6 end end end end
end