public void DownloadMidi(MidiDirectScrollItemController item, Storage.Protos.Api.MidiProto midiProto)
        {
            string hash = midiProto.hash;

            if (web.CheckUrlFileExists(hash))
            {
                return;
            }

            item.iconText.text = FontAwesome.Solid.Spinner;
            anim.New(item)
            .RotateTo(item.iconText.transform, 360, 1, EsType.BackOut).Then()
            .RotateTo(item.iconText.transform, 0, 1, EsType.BackOut).Then().Repeat();

            net.ClAppMidiDownload(hash, (error, data) => {
                var loadJob = web.LoadNull(hash, (string)data, job => {
                    db.WriteDoc(LocalDb.COLLECTION_MIDIS, midiProto._id, midiProto);
                    if (midiProto.song != null)
                    {
                        db.WriteDoc(LocalDb.COLLECTION_SONGS, midiProto.song._id, midiProto.song);
                    }
                    if (midiProto.album != null)
                    {
                        db.WriteDoc(LocalDb.COLLECTION_ALBUMS, midiProto.album._id, midiProto.album);
                    }
                    if (midiProto.author != null)
                    {
                        db.WriteDoc(LocalDb.COLLECTION_PERSONS, midiProto.author._id, midiProto.author);
                    }
                    if (midiProto.composer != null)
                    {
                        db.WriteDoc(LocalDb.COLLECTION_PERSONS, midiProto.composer._id, midiProto.composer);
                    }
                    job.GetData();
                    anim.Clear(item);
                    item.coverImageCutter.image.color     = new Color(1, 1, 1, .5f);
                    item.iconText.transform.localRotation = Quaternion.identity;
                    item.iconText.text = FontAwesome.Solid.CheckCircle;
                });

                anim.Clear(item);
                game.ExecuteOnMain(() => item.iconText.transform.localRotation = Quaternion.identity);
                anim.New(item).Wait(.001f).Then().Call(() => {
                    item.iconText.text = string.Format("<size=16>{0:P0}</size>", loadJob.GetProgress());
                }).Repeat();
            });
        }