← Tutte le idee Giochi e hobby

Guitoro

Una chitarra virtuale che suoni con la tastiera del computer

Cosa fa

Uno strumento nel browser per suonare la chitarra con la tastiera: si scelgono gli accordi e si "strimpella" premendo i tasti. Ha avuto oltre 500 voti su Hacker News.

Come guadagna

Presentato su Hacker News dal suo creatore, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: canzoni con gli accordi a pagamento, versione per le scuole.

Rendilo tuo

  • Con le canzoni italiane più famose da suonare: falò in spiaggia, matrimoni.
  • Lo stesso per altri strumenti: ukulele, mandolino, fisarmonica.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Chitarra da Tastiera": uno strumento nel browser per suonare la chitarra con la tastiera del computer o toccando lo schermo: si scelgono gli accordi e si strimpella, con un suono realistico generato dal codice. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina principale con la chitarra pronta da suonare
2. Scelta degli accordi assegnati ai tasti (1–9) e del ritmo
3. Canzoni facili con gli accordi che scorrono
4. Registrazione e download di ciò che si è suonato
5. Pagina Pro

Stile: musicale e caldo: sfondo legno scuro #3B2416, corde dorate #E5C07B, tasti degli accordi come pulsanti grandi color crema #FDF6E3, carattere "Inter", animazione delle corde che vibrano. Nessuna immagine generica di stock.

Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.

2. Database, account e sicurezza

Collega il progetto a Supabase e attiva la registrazione con email e password.

Crea queste tabelle:
- "canzoni": titolo, accordi in sequenza, ritmo (canzoni di pubblico dominio o scritte apposta)
- "preferenze": accordi assegnati ai tasti e suono scelto, collegate all'utente
- "profili": piano

Regole di sicurezza obbligatorie:
- le canzoni sono pubbliche, le aggiungono solo gli amministratori
- ogni utente vede solo le sue preferenze
- il piano non si modifica dal browser

Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.

3. Il suono della corda generato dal codice

Il suono non usa registrazioni: ogni corda è generata con l'algoritmo Karplus-Strong nel Web Audio API (codice nei Dettagli tecnici), che imita una corda pizzicata con un rumore breve che si ripete e si smorza.

I tasti 1–9 scelgono l'accordo (Do, Re, Mi minore...), la barra spaziatrice o lo scorrimento del dito strimpella dall'alto in basso, Maiusc dal basso in alto. Su telefono si toccano gli accordi e si fa scorrere il dito sulle corde.

Le canzoni facili mostrano gli accordi che scorrono a tempo, come un karaoke degli accordi. Usa solo canzoni di pubblico dominio o melodie originali.

4. Registrare e Pro

Pulsante "Registra": cattura l'audio suonato (MediaRecorder sull'uscita del Web Audio) e lo fa scaricare.

Pro: tutti gli accordi (settime, barrè, sospesi), suoni diversi (acustica, classica, elettrica pulita), metronomo, ed esportazione in WAV.

5. Pagamenti con Stripe

Aggiungi un pagamento singolo di 3,99 € una volta sola. Il pagamento sblocca tutti gli accordi, i suoni, il metronomo e l'esportazione.

A pagamento riuscito il webhook imposta "piano" a "pro" nella tabella "profili", sulla riga dell'utente indicata in client_reference_id.

Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.

6. Controlli specifici di questo progetto

Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Ritardo: suona su un telefono Android economico: il suono deve partire subito al tocco, senza ritardi fastidiosi.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Una corda pizzicata con Karplus-Strong

Un breve rumore casuale passa in un anello che lo ripete e lo smorza: il risultato suona come una corda pizzicata. Un accordo è sei corde suonate una dopo l'altra.

export function corda(audio: AudioContext, frequenza: number, quando = audio.currentTime, durata = 2.5) {
  const campioni = Math.floor(audio.sampleRate * durata);
  const buffer = audio.createBuffer(1, campioni, audio.sampleRate);
  const dati = buffer.getChannelData(0);
  const periodo = Math.round(audio.sampleRate / frequenza);

  // 1. Rumore iniziale lungo un periodo (il "pizzico")
  for (let i = 0; i < periodo; i++) dati[i] = Math.random() * 2 - 1;
  // 2. Ogni campione è la media dei due di un periodo prima, un po' smorzata
  for (let i = periodo; i < campioni; i++) {
    dati[i] = 0.996 * 0.5 * (dati[i - periodo] + dati[i - periodo + 1]);
  }

  const sorgente = audio.createBufferSource();
  sorgente.buffer = buffer;
  sorgente.connect(audio.destination);
  sorgente.start(quando);
}

// Frequenze delle corde per alcuni accordi (dal Mi basso al Mi cantino; 0 = corda non suonata)
const ACCORDI: Record<string, number[]> = {
  Do:  [0, 130.81, 164.81, 196.0, 261.63, 329.63],
  Sol: [98.0, 123.47, 146.83, 196.0, 246.94, 392.0],
  Re:  [0, 0, 146.83, 220.0, 293.66, 369.99],
  Mim: [82.41, 123.47, 164.81, 196.0, 246.94, 329.63],
};

export function strimpella(audio: AudioContext, accordo: string, versoIlBasso = true) {
  const corde = ACCORDI[accordo].filter((f) => f > 0);
  const ordine = versoIlBasso ? corde : [...corde].reverse();
  ordine.forEach((f, i) => corda(audio, f, audio.currentTime + i * 0.018));   // 18 ms tra una corda e l'altra
}

Pezzi comuni a tutti i progetti

Glossario

Karplus-Strong
Un algoritmo famoso che crea il suono di una corda pizzicata partendo da un rumore.
Web Audio API
La funzione del browser che crea e mescola suoni direttamente dal codice.