Sammy1Am / MoppyClassic

Moppy has been replaced with Moppy 2.0!
569 stars 190 forks source link

Drive ranges #91

Closed AAllport closed 9 years ago

AAllport commented 9 years ago

Is there an easy way to disable the highest and lowest not range?

Sammy1Am commented 9 years ago

Are you looking to make the available range smaller, or remove the limits that are currently in place?

Either way, you'll find the relevant code in MoppyPlayerOutput.java . The microPeriods array only contain data for some MIDI notes, and that will determine which notes play and which do not. If you want to disable certain notes, you can just set those values to 0. If you want to attempt to add more notes, just put the appropriate values into the array where the 0s are.

If you're attempting the latter, you should know that different floppy drives have different serviceable ranges, but that notes above and below the current defined range didn't work very well for me in my testing. You may have better luck, but it's possible that your drives will just be unhappy.

AAllport commented 9 years ago

Appropriate values?

Sammy1Am commented 9 years ago

Sure, take a look at the comment above the array.

AAllport commented 9 years ago

With the new commit for note limiting does this mean we still half to edit microperiods[] or can we just ignore this

Sammy1Am commented 9 years ago

It depends on what your goal is I suppose; using the note limiting feature will make sure any notes in the MIDI file get moved into the C1-B4 range so that they will be played.

If you want to try expanding the range of notes that the drives will attempt to play, you'll still need to edit the microPeriods[] to include the additional notes that you want them to attempt. Likewise, the Constrain Notes feature is currently hard-coded to match the default microPeriods[] array, so if you wanted to constrain notes to a different range, you'd need to edit NoteFilter.java to change the highest and lowest allowed notes.

AAllport commented 9 years ago

So its like auto transpose

Sammy1Am commented 9 years ago

Sort of, yes. It will only transpose notes that are outside of the range though, which is not always ideal, but I think offers the more generic solution. For example if you had a run of ascending notes (G4,A4,B4,C4), with the constraint option, the C4 would be transposed down to a C3. All the notes would be played, but it would not longer be all ascending.

Ideally in this situation you would want to lower the whole run (or possibly that whole track) down an octave. I considered making a transpose option for the whole MIDI file, but then any tracks that were in range might be lowered out of range.

From a technical standpoint, I'm sure there's some sort of algorithm that could be written to pre-process MIDI files, but that's a little out of scope for now.

AAllport commented 9 years ago

What is Moppy sim On 20 Feb 2015 18:28, "SammyIAm" notifications@github.com wrote:

Sort of, yes. It will only transpose notes that are outside of the range though, which is not always ideal, but I think offers the more generic solution. For example if you had a run of ascending notes (G4,A4,B4,C4), with the constraint option, the C4 would be transposed down to a C3. All the notes would be played, but it would not longer be all ascending.

Ideally in this situation you would want to lower the whole run (or possibly that whole track) down an octave. I considered making a transpose option for the whole MIDI file, but then any tracks that were in range might be lowered out of range.

From a technical standpoint, I'm sure there's some sort of algorithm that could be written to pre-process MIDI files, but that's a little out of scope for now.

Reply to this email directly or view it on GitHub https://github.com/SammyIAm/Moppy/issues/91#issuecomment-75292959.

Sammy1Am commented 9 years ago

That is an excellent question, so I've added it to the FAQ.

AAllport commented 9 years ago

Regarding note filtering if you want to extend / moving do you halve to edit micro periods and note filter.java or is it just one On 20 Feb 2015 20:06, "SammyIAm" notifications@github.com wrote:

That is an excellent question, so I've added it to the FAQ https://github.com/SammyIAm/Moppy/wiki/FAQ#what-is-moppysim.

Reply to this email directly or view it on GitHub https://github.com/SammyIAm/Moppy/issues/91#issuecomment-75309696.

Sammy1Am commented 9 years ago

If you want to extend the range, you'll need to edit both.

AAllport commented 9 years ago

Where are you currently saving the users last configuration as I am thinking of making setting controls

Sammy1Am commented 9 years ago

This line in MoppyUI:

public Preferences prefs = Preferences.userNodeForPackage(MoppyUI.class);

Creates the prefs object, and I'm using the various strings in the Constants class to store values in there.