Closed AAllport closed 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.
Appropriate values?
Sure, take a look at the comment above the array.
With the new commit for note limiting does this mean we still half to edit microperiods[] or can we just ignore this
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.
So its like auto transpose
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.
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.
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.
If you want to extend the range, you'll need to edit both.
Where are you currently saving the users last configuration as I am thinking of making setting controls
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.
Is there an easy way to disable the highest and lowest not range?