def mode(mode):
    # train 1 file
    window_size = 20
    if mode == "1":
        # file = './transposeDataSet/bach/C_bach_850_format0.mid'
        file = './transposeDataSet/bach/C_bach_847_format0.mid'
        # file = './transposeDataSet/chopin/C_chpn_op10_e12_format0.mid'
        # file = './transposeDataSet/chopin/C_chpn-p10_format0.mid'
        # file = './new_song.mid'
        print("Preparing Data.....")
        prepare = PrepareData()
        prepare.buildCorpus(file)
        trainX, trainY = prepare.buildXY(window_size)
        # print(trainX)
        prepare.save_data()

        m = Model()
        m.createModel(trainX, trainY)
        m.compileModel()
        m.trainModel(trainX, trainY)
        m.save_model()
        m.testModel(trainX, trainY)

        # model = "./model/model.json"
        # weights = "./model/model.h5"
        # m.load_model(model, weights)

    # train all files
    elif mode == "2":
        print("Preparing Data.....")
        prepare = PrepareData()
        for file in glob.iglob('./transposeDataSet/bach/*.mid'):
            prepare.buildCorpus(file)
        trainX, trainY = prepare.buildXY(window_size)
        prepare.save_data()

        m = Model()
        m.createModel(trainX, trainY)
        m.compileModel()
        m.trainModel(trainX, trainY)
        m.save_model()
        m.testModel(trainX, trainY)
        # model = "./model/model.json"
        # weights = "./model/model.h5"
        # m.load_model(model, weights)

    # test model
    elif mode == "3":
        # file = './transposeDataSet/bach/C_bach_850_format0.mid'
        # file = './transposeDataSet/bach/C_bach_847_format0.mid'
        # file = './transposeDataSet/chopin/C_chpn_op10_e12_format0.mid'
        # file = './transposeDataSet/chopin/C_chpn-p10_format0.mid'
        # file = "./SONG.mid"
        for file in glob.iglob('./transposeDataSet/bach/*.mid'):
            prepare = PrepareData()
            prepare.buildCorpus(file)
            testX, testY = prepare.buildXY(window_size)
            m = Model()
            model = "./model/model.json"
            weights = "./model/model.h5"
            m.load_model(model, weights)
            m.compileModel()
            m.testModel(testX, testY)

    # transpose midi
    elif mode == "4":
        for file in glob.iglob('./DataSet/*/*.mid'):
            t = Transpose(file)
            t.transpose()

    # predict
    elif mode == "5":
        prepare = PrepareData()

        dataX = prepare.load_dataX()
        # print(len(dataX))
        dist_time1, dist_time2 = prepare.load_dist_time()
        # print(dist_time)

        m = Model()
        model = "./model/model.json"
        weights = "./model/model.h5"
        m.load_model(model, weights)

        p = Predictor(m.get_model())
        p.predict_on_corpus(dataX, window_size)
        type_and_note = p.buildNotetype()
        song = p.buildSong(type_and_note, dist_time1, dist_time2)

        midi = MidiMananger()
        midi.creatMidiSong(song)
        print("Created Song!! name: Song.midi")

    else:
        print("your selecting mode is not found!!!")