كيف يتيح لك تعلُم الآلة إنشاء موسيقى



سنتحدث اليوم عن دراسة تبحث في الصوت والموسيقى من حيث الرياضيات والبرمجة. يسمح لنا هذا النهج بتقدير الطبيعة المتعددة الأوجه لكل شيء اعتدنا على الاستماع إليه في طريق العمل أو في المنزل. سنحاول ذكر النقاط الرئيسية بكلمات بسيطة.

, , , - , . .

, . , .


( «»). , – , . .

(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