Como o aprendizado de máquina permite criar música



Hoje falaremos sobre um estudo que analisa som e música em termos de matemática e programação. Essa abordagem nos permite apreciar a natureza multifacetada de tudo o que estamos acostumados a ouvir no caminho para o trabalho ou em casa. Vamos tentar declarar os pontos principais em palavras simples.

, , , - , . .

, . , .


( «»). , – , . .

(128 ) – . , , (). 2^14x2^7. (0 <= n, m <= 127), .

/ ( , ). , (127), (300 ).

, . «» , «»; [ *127+ ][ ].

«» ( ) .


, , MIDI- ( .mid), , Java Sequencer. :

public Learn(String midiName) {
    try {
        Sequence sequence = MidiSystem.getSequence(new File(midiName));
 
        int id[] = {0, 0, 0};
        int nArr[][] = new int[2][2];
 
        for(Track track : sequence.getTracks()) {
            for(int i = 0; i < track.size(); i++) {              
                MidiEvent event = track.get(i);
                MidiMessage message = event.getMessage();
                if(message instanceof ShortMessage) {
                    ShortMessage sm = (ShortMessage) message;
 
                    if(sm.getCommand() == NOTE_ON) {
                        int key = sm.getData1();
 
                        for(int j = 0; j < 2; j++) {
                            if(id[j] == 2) {
                                id[j] = 0;
                                Score.updateWeight(nArr[j][0], nArr[j][1], key);
                            } else {
                                nArr[j][id[j]++] = key;
                            }
                        }
                    }
                }
            }
        }
 
        cnt++;
    } catch(InvalidMidiDataException|IOException e) {
        e.printStackTrace();
    }
}


: ( ) , . , Java Math.random(). , ( ) , Math.random().

Synthesizer –  , .



, Markov composer, .

All Articles