|
Do not wait for the scan to finish all the files. When one scanned add it to the list and to the screen (scroll in the new ones)
It probably will take more time to finish the scan but the end user will not wait on empty screen
As for the knob - IMHO it is much better than push buttons...
“Real stupidity beats artificial intelligence every time.”
― Terry Pratchett, Hogfather
|
|
|
|
|
That's an interesting idea. I'll consider it. My main concern with it is if the list isn't done loading it will be hard to tell when it's done and you've reached the end or if there's more to go. I guess I can squeeze an indicator on there but the screen is very small.
Also it displays only one file at a time due to the size of the screen, and displaying information about each file, so there's no "list" to scroll. Plus scrolling is out of the question for performance reasons the way these little gadgets work.
To err is human. Fortune favors the monsters.
|
|
|
|
|
The indicator is very important for perceived performance - if you can quickly count the files, I assume you can even show a percentage or similar?
Maybe if you detect more than a reasonable amount of files, you can start by displaying a text saying "This will take a long time, do you want to continue" (well, something shorter probably). If you are really fancy, you can start the loading in the background while displaying the message so the time until they react (if they react) is not wasted. If they just insert the SD card and throw it on the table without paying attention - at least it will then have finished loading when they come back from lunch instead of just sitting waiting for them to press the button.
|
|
|
|
|
Yeah I probably could put an indicator. Do you want to continue is a little tricky, as taking input is always a bit involved when you're dealing with limited user input devices.
To err is human. Fortune favors the monsters.
|
|
|
|
|
"Click to continue". It's not like saying "no" really means anything they can't express by taking out the SD card. The important thing is that they are told what they can do to avoid it being so slow. Do not expect users to think twice about filling an SD card with old data if you do not tell them the problems it will give.
|
|
|
|
|
lmoelleb wrote: The indicator is very important for perceived performance - if you can quickly count the files, I assume you can even show a percentage or similar? This is roughly my thought -- when loading will take a long perceived time, I count files, records, or whatever, and post a message that says "loading file xx of yy", and force the screen to update periodically. If there's a thousand files, I won't update display for every file (that will slow down the process), but every 10 to 20 files. If you're expecting a max of 100 files, updating the display every 10 should give the user good feedback while not bogging down the process.
|
|
|
|
|
I am thinking of: [x] fileName
where [x] is really an movement indicator.
Either a number (n), that you fill in as you process each file.
Or a Linux style set of ".-/-*^v" that you MOD your way across, to give the appears of progress per file.
the upside to this is that a long file doesn't make the user think it is done at file [13] xyz
and they can start spinning the nob to select another...
Also, I am a FAN of red LED for busy, and GREEN LED for available. So if you have a power LED, red during boot up.
GREEN when good. YELLOW when you have an issue (Either a specific corrupted MIDI file, or something).
But here I go adding hardware...
And not sure if Nob only rotates, or if it contains a "switch" (pressing) as well. (Turn to select, Press to play type thing).
But your project sounds like FUN!
And you do a GREAT job on asking questions... I can REALLY tell you care about how it turns out!
|
|
|
|
|
Maybe add a button and use a tree structure for the files, where you can drill down into; (and I don't know a damn thing about it...but)
drum beats
chill
jazzy
moody
etc.
The most expensive tool is a cheap tool. Gareth Branwyn
JaxCoder.com
|
|
|
|
|
That's not possible. MIDI files aren't classified that way, and to impose such a structure would require the user to do so in some way, such as using folders. I'm not scanning subfolders due to the complexity, primarily of navigating folders using nothing but a button and rotary encoder. This isn't for tech savvy folks.
To err is human. Fortune favors the monsters.
|
|
|
|
|
Gotcha, only other way would be paging.
The most expensive tool is a cheap tool. Gareth Branwyn
JaxCoder.com
|
|
|
|
|
My current solution is to simply make the user wait to load it all. It doesn't handle a lot of files really well anyway because it has to load them all into memory first. The reason is the rotary encoder can be turned much faster than the SD card reader can read file info. So I have to prefetch everything. I have about 320kB free at that point, so it's not terrible, but it can't be excessive.
So my current idea is - MIDI files in the root directory only, and then just don't put a ton of them there.
It's actually better to use multiple SD cards. If you only have one file on it it will load it automatically so you can punch sets in an out.
To err is human. Fortune favors the monsters.
|
|
|
|
|
The most expensive tool is a cheap tool. Gareth Branwyn
JaxCoder.com
|
|
|
|
|
For your intended users, is it a reasonable expectation that they can't put 100+ files on the SD card?
|
|
|
|
|
I think so. In practice, this is a little performance box, and scrolling through that many files is not really reasonable. Anything after a dozen and they'll get annoyed just because all you have to work with is a knob and a button.
It's not like PC dev, unfortunately. The UI is severely limited by a very limited input interface - tiny screen, no keyboard or mouse. no scrolling because it's too slow.
Because of that, I think a user at least once they are familiar with using the thing, isn't going to be put out by not carrying their entire catalog of MIDI sets on a single SD card.
In fact, it's kind of optimized for one per SD-Card, such that when it finds just one file it will open that one and start up without prompting. That's because eventually I'll probably make it so you can punch in and punch out SD cards on the fly, but for now i don't have the right hardware for that. It's not hard to get it though, i just haven't yet.
To err is human. Fortune favors the monsters.
|
|
|
|
|
If I were to use this in a live performance (unlikely; I'm an acoustic guy ) I think I would be VERY unlikely to have more than a few songs on the card. There's no time to scroll through even "just" 100 files when you're on stage. 10 is more likely to be manageable. Though maybe if "you can play file #1, stop, scroll to next, then go to file #2,stop, scroll to next..." you could plan your list of songs to always be in that sequence. But the reality of live performance has a way of interfering with planned set lists.
If the gadget is cheap enough, people might buy more than one. Like having a spare guitar in a different key. Booting a 2nd device has to be faster than swapping SD cards, doesn't it?
|
|
|
|
|
Oh I hear you. In fact, my device will automatically load a MIDI file in the case where it's the only one on a card. The idea being for live sets you can punch whole cards in and out.
Only issue is my current device takes microSD and I think standard SD would be better just for quickness of handling.
The end device will support punch out in that manner, but i don't have the hardware necessary yet to detect the line change when the card is pulled and i don't have the resources to poll it.
The end device will also allow you to loop your own sets in midi (since it will take a MIDI in) and punch those in and out, which doesn't use the SD card at all.
I think I can get the gadget fabbed and built for about $100, giving me a few bucks for the PITA factor, but not much. A happy meal.
What's funny is I'm doing all of this in about the 365kB I get on boot.
To err is human. Fortune favors the monsters.
|
|
|
|
|
I think you're right about SD vs uSD -- the uSD would be very easy to lose on stage. Neither card is going to be easy to see on stage, though; you're usually either nearly blinded by spotlights or in the dark. And most of your cables and equipment cases are black.
365Kb used to seem like a lot. I remember doing an 8051-based system which managed 5 RS232 ports (two customer inputs, two devices to control, one debug port) with 64K EEPROM, 32K RAM. Unless it was 32K EEPROM, 8K RAM... it's only been about 30 years, so those particulars are fuzzy.
|
|
|
|
|
It is a lot. I'm currently running with about 320kb+ of it free with my demo track.
as far as stage lighting, you make a point, but i can't very well go back to floppies. Only other option is wifi or bluetooth. That is an option with this chip, which will do both.
The 320kB varies though. I also have a 90kB TTF font I load and unload periodically as the system starts up.
While it runs, it runs super lean though. I think I'll probably wind up using a bunch of that to hold loops you can record and playback while you perform. But even Bohemian Rhapsody by Queen runs less than 60kB, Sabotage by Beastie Boys runs 80kB for the whole track, just as a perspective thing.
I can't really get a custom ESP32 with less SRAM. Where I really use this thing is the 2 cores. I use the 2nd core for rendering high quality visual feedback - something lesser chips couldn't really support a screen for anyway.
I could probably run this on an Atmel SAMD with 192kB of SRAM pretty comfortably but they run at a lower clock speed - i forget what - still probably fast enough without the graphics.
Still, these chips are less than $2 a piece at digi-key and less if you get runs of them.
To err is human. Fortune favors the monsters.
|
|
|
|
|
Don't allow "scrolling" while files are being imported. Just show the progress of the import and maybe allow cancelation.
|
|
|
|
|
find a musician like and ask this question, you will have first hand feedback...
diligent hands rule....
|
|
|
|
|
I have some pretty tiny mp3 players (the size of a thumb drive); with 100's of songs. I'd review how they did it. Mostly single thumb actions.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
It might cache. I could theoretically do that.
To err is human. Fortune favors the monsters.
|
|
|
|
|
I have no solution, just a little story: Some years ago, I bought myself a handheld digital recorder (for those who care: a Zoom H4n), and equipped it with a 32 GByte card so I didn't have to shuffle lots of cards around. It is a nice little device, can record plain PCM and MP3 in high quality, even 4 channels. The only thing that frustrated me was the extremely long boot up time - more than a minute and a half before any control could be operated. Either, the recording had to be well planned in advance, or the recorder had to kept 'on' continuously, draining the batteries.
A couple of years ago, I made some recordings to an SD card of a friend of mine - a 2 GB card. To my surprise, the recorder booted up a lot faster. At the bottom of a box of old stuff, I found the very first SD card I ever bought, a 256 MB one, and now the recorder boots up in 12 seconds, rather than 95 seconds!
It makes noticeable difference if there are lots of data on the card (the Zoom pre-initializes a directory structure with approx. 40 directories when it formats the card; it is unconditionally there). If I replace the 256 MB card with the 32 GB one, it goes back to eight times as slow boot up - the recorder hasn't been 'cured', the boot time is tied to the card size. Putting a hundred recordings on a card does not slow it down further.
I have no idea what the Zoom is doing to the card; even though flash cards are fast, it can't possibly do any testing of a full 32 GB in 95 seconds. The size of the directory structure is exactly the same on a small and a large card. So what is it doing with the 32 GB at boot up?
I was lucky to find a small pile of 256 MB cards on a web shop trading used electronics - my local computer shop couldn't help me. So now I have cured the major problem with my recorder, at the price of having to shuffle cards.
|
|
|
|
|
Well at least you know my pain. I've since added a progress tracker "loading 1 of 13" for example. It helps.
To err is human. Fortune favors the monsters.
|
|
|
|
|
I was thinking, and I bet I know why your 32GB card took so long.
It uses a different filesystem (exFAT i think?) for cards >=32GB? if i remember correctly - might be > 32GB and I'm wrong about this.
That may explain the discrepancy, not that exFAT is especially slow, but it could be that the implementation was poor and nobody cared because at the time nobody used exFAT. frankly, it's kind of a wonder it reads it at all.
To err is human. Fortune favors the monsters.
|
|
|
|