public static ArrayList<Note> createTabNumbers(ArrayList<Note> list, int min, int max) {

    // Min and max cannot be negative numbers
    if (min < 0 || max < 0) {
      return null;
    }

    // Create the temporary ArrayList that will be returned
    ArrayList<Note> notesList = new ArrayList<Note>(list.size());

    // Counters for the fret and strings
    int fret = 0;
    int stringNo = 0;

    /*
     * Loop through the list of notes
     */
    for (int j = 0; j < list.size(); j++) {
      // Relevant note for this iteration
      Note curr = list.get(j);
      int currPitch = curr.getPitch();

      /*
       * Iterate through from min to max
       */
      for (int i = min; i < max; i++) {

        // If we have reached the pitch of the current note
        if (i == currPitch) {

          // Confirm the current string and fret number
          curr.setString(stringNo);
          curr.setFret(fret);

          // Add the corrected note to the notesList
          notesList.add(curr);

          // Reset the counter and string number to 0 for the new note
          fret = 0;
          stringNo = 0;
          break;
        } else if (fret == 7 && stringNo != 5) {
          // Increase string number and reset the fret counter
          fret = 0;
          stringNo++;

          // Must account for the reset of fret number
          if (stringNo != 4) {
            // Every string other than the G string
            i -= 3;
          } else {
            // Accounts for the G String
            i -= 4;
          }
        } else {
          // Increment fret
          fret++;
        }

      }
    }
    return notesList;
  }