「音楽をつくる」というととても幅広いので、ここでは手法を絞って、なおかつ、アレンジできる要素がたくさんあるものを考えました。プログラミングが初めての人を対象にしたワークショップのためのアイデアです。
人間が最初に楽器として鳴らした音は、おそらく石や木をたたく音でしょう。その短い音を繰り返して鳴らしたり、合いの手を入れるように違う音を鳴らすと、リズムをつくることができます。たとえば「トン・タ・トン・タ」「トン・タタ・トン・タ」と、音を鳴らす順番を変えたり、たまに「トンタ!」と同時に鳴らしたりしながら繰り返し演奏すれば、2つの音だけでも無数の組み合わせで、リズムをつくることができます。
下のエリアをクリックすると音が鳴りはじめます。もう一度クリックでストップします。
「トン・タ・トン・タ」と「トン・タタ・トン・タ」の2つのリズムが聞こえると思います。
https://editor.p5js.org/ShozoKUZE/sketches/SMWjbE3qB
//一定時間おきに、 //四角と円を交互にランダムに図形を描く //音を鳴らす //変数 let timestamp = 0; let count = 0; let toggleStart = 0; let mySound = []; function preload(){ //音のファイルはSonicPiの音源をWAV変換し使っています //https://sonic-pi.net/ mySound[0] = loadSound("sound/elec_ping.wav"); mySound[1] = loadSound("sound/elec_flip.wav"); } //セットアップ function setup() { //画面サイズ createCanvas(windowWidth, windowHeight); } //ループ function draw() { //クリックしてないとき if(toggleStart==0){ textAlign(CENTER,CENTER); fill(255,255,255); text("C L I C K",width/2,height/2); background(100, 120, 120, 10); count=0; return; } //250ミリ秒おきに if (millis() - timestamp > 250) { timestamp = millis(); //countを8で割ったあまりが0のとき if(count % 8 == 0){ drawRect(); //四角 mySound[1].play(); } //countを16で割ったあまりが1のとき if(count % 16 == 1){ drawRect(); //四角 mySound[0].play(); } //countを8で割ったあまりが2のとき if(count % 8 == 2){ drawEllipse(); //円 mySound[0].play(); } //countを8で割ったあまりが3のとき if(count % 8 == 4){ drawRect(); //四角 mySound[1].play(); } //countを8で割ったあまりが6のとき if(count % 8 == 6){ drawEllipse(); //円 mySound[0].play(); } //countを1ずつ増加 count ++; } } //クリックでスタート・ストップ function mousePressed(){ if(toggleStart==0){ toggleStart = 1; }else{ toggleStart = 0; } } //四角を描く function drawRect(){ //線をナシ noStroke(); //塗り色 fill(100, 50, random(100, 255), 50); //四角の基準点を中心に rectMode(CENTER); //四角を描く rect(random(0, width), random(0, height), random(0, 500), random(0, 500)); } //円を描く function drawEllipse(){ //線をナシ noStroke(); //塗り色 fill(200, random(200, 250), random(200, 250), 50); //円を描く ellipse(random(0, width), random(0, height), random(0, 500)); }