Pular para conteúdo

Roadmap

Estado atual do projeto e visao de futuro.


v1.0.0 — Fundamentos

Core (C++17)

  • [x] Note, Interval, Chord (42 formulas), Scale (10 familias, 36 modos)
  • [x] Field: triades, setimas, funcoes T/S/D, acordes aplicados
  • [x] Field.identify() e Field.deduce() — inferencia de tonalidade
  • [x] Comparacao neo-Riemannian (P/L/R, 2-step, voice leading, 18 dimensoes)
  • [x] Comparacao contextual (21 dimensoes: borrowing, pivot, tritone sub, etc.)
  • [x] Tree: arvore harmonica, caminhos, validacao de progressoes, DOT/Mermaid

Ritmo (C++17)

  • [x] Duration (fracao racional exata, nomes, pontuacao, tercinas)
  • [x] Tempo (BPM, marcacoes italianas, conversao para segundos)
  • [x] TimeSignature (formula de compasso)
  • [x] NoteEvent, ChordEvent, Rest
  • [x] Sequence (composicao com tempo, getitem, transpose)

Audio (Python)

  • [x] Sintese: sine, square, sawtooth, triangle
  • [x] Envelope ADSR (attack, decay, sustain, release)
  • [x] Strum e gap
  • [x] .play() e .to_wav() em todas as classes
  • [x] CLI: --play, --wav, --waveform, --strum, --gap

Infra

  • [x] Zero dependencias runtime (simpleaudio opcional para playback)
  • [x] Core C++17 com pybind11
  • [x] CLI completa (note, interval, chord, scale, field, compare)
  • [x] Type stubs (PEP 561)
  • [x] Documentacao MkDocs

v1.0.1 — Ritmo CLI

  • [x] CLI de ritmo: duration, tempo, timesig

v1.0.2 — Progressoes, Piano, MusicXML

Progressoes e Tradicoes

  • [x] Progression: coordenador cross-tradition (identify, deduce, predict)
  • [x] Tree: construtor 3 argumentos, tradition(), schemas(), is_valid()
  • [x] Tradicao Jazz: branches e schemas classicos (ii-V-I, turnaround, backdoor, etc.)
  • [x] CLI: tree, progression com identify/deduce/predict

Piano

  • [x] Piano: mapeamento teoria <-> teclas fisicas (MIDI, voicings, reverse identification)
  • [x] VoicingStyle: Close, Open, Shell
  • [x] PianoSVG: visualizacao interativa do teclado em SVG
  • note, chord, scale, voicing, keys, midi, field, progression
  • HTML5 data attributes (data-midi, data-note, data-octave, data-color)
  • CSS classes para integracao com JS/D3/React

Notacao

  • [x] MusicXML: serializacao para MusicXML 4.0 partwise
  • Note, Chord, Scale, Field, Sequence -> MuseScore/Finale/Sibelius

v1.1.0 — Fretboard (versao atual)

Fretboard (instrumentos de cordas)

  • [x] Fretboard: motor de digitacao para violao, cavaquinho, bandolim
  • Factory methods: Fretboard.violao(), .cavaquinho(), .bandolim()
  • Instrumentos customizados: Fretboard(tuning, num_frets)
  • fingering(chord) — digitacao otima baseada no sistema CAGED
  • scale_positions(scale, fret_lo, fret_hi) — posicoes da escala no braco
  • positions(note) — todas as ocorrencias de uma nota
  • Algoritmo multi-criterio: span, posicao, dedos, cordas, barre, conforto
  • 22/24 formas CAGED padrao identicas a jguitar.com

  • [x] FretboardSVG: renderizador SVG para diagramas de fretboard

  • chord, fingering, scale, note, positions, field, progression, full
  • Orientacao: Horizontal (braco) / Vertical (chord box)
  • Lateralidade: RightHanded / LeftHanded
  • Layouts compostos: Grid, Horizontal, Vertical para campos e progressoes
  • write() para salvar SVG em arquivo

  • [x] Structs: Tuning, FretPosition, Fingering, StringState

  • [x] Enums: Orientation, Handedness, StringAction
  • [x] CLI: gingo fretboard chord/scale/field com --svg, --left, --horizontal

Planejado

MIDI import/export

  • [ ] Sequence.to_midi() / Sequence.from_midi(path) — import/export .mid
  • [ ] Duration.midi_ticks(ppqn=480) / Duration.from_ticks(ticks, ppqn)
  • [ ] Tempo.microseconds_per_beat() / Tempo.from_microseconds(usec)

Escalas Bebop

  • [ ] 6 tipos de escalas bebop (8 notas com passing tone cromatico)
  • [ ] Aliases de modos simetricos existentes

Diferenciais do Gingo

  • Teoria completa em camadas: Note -> Interval -> Chord -> Scale -> Field -> Progression
  • Campo harmonico com funcoes T/S/D e acordes aplicados
  • Comparacao contextual com 21 dimensoes (neo-Riemannian, voice leading, borrowing, pivot)
  • Arvore harmonica com caminhos, validacao e cross-tradition (classico + jazz)
  • Field.deduce() — inferencia de tonalidade a partir de dados parciais
  • Fretboard com algoritmo CAGED para digitacoes realisticas de violao/cavaquinho/bandolim
  • FretboardSVG com orientacao (horizontal/vertical) e lateralidade (destro/canhoto)
  • Piano com voicings (close, open, shell) e PianoSVG interativo
  • MusicXML 4.0 para exportacao de partitura
  • Sintese de audio integrada com .play() e .to_wav() em todas as classes
  • Duration racional exata (fracao, nao float)
  • Zero dependencias runtime + backend C++17