コード例 #1
0
ファイル: audio_file.py プロジェクト: mmmewk/chord-vis
    def best_accuracy_for(self, note):
        note = Note(note).clean_note()
        if not str(note) in self.best_accuracies:
            note_range = self.get_range_for(note)
            peaks_to_check = [
                index for index in self.peaks if index in note_range
            ]
            if len(peaks_to_check) == 0:
                self.best_accuracies[str(note)] = 50
            else:
                self.best_accuracies[str(note)] = np.min([
                    np.abs(Note(self.xf[i]).accuracy) for i in peaks_to_check
                ])

        return self.best_accuracies[str(note)]
コード例 #2
0
ファイル: audio_file.py プロジェクト: mmmewk/chord-vis
    def select_note(self, min_increase=0.2, n=4, accuracy=30):
        if not hasattr(self, 'notes'):
            self.notes = []
        if not hasattr(self, 'explained_percent'):
            self.explained_percent = 0
        if not hasattr(self, 'frequency_ranges'):
            self.frequency_ranges = []

        best_value = 0
        best_note = 'E2'
        for key in self.note_integrals:
            if self.note_integrals[key] > best_value:
                best_value = self.note_integrals[key]
                best_note = key

        value_increase = best_value - self.explained_percent
        if value_increase > min_increase:
            print(best_note)
            print(best_value)
            best_note = Note(best_note)
            self.notes.append(best_note)
            self.explained_percent = best_value
            return value_increase
        else:
            return 0
コード例 #3
0
ファイル: audio_file.py プロジェクト: mmmewk/chord-vis
    def average_intensity_for(self, note):
        note = Note(note).clean_note()
        if not str(note) in self.average_intensities:
            self.average_intensities[str(note)] = np.mean(
                [self.fft_out[i] for i in self.get_range_for(note)])

        return self.average_intensities[str(note)]
コード例 #4
0
ファイル: db.py プロジェクト: Silentsoul04/ctfs
def get_member_notes(member: discord.Member,
                     guild: discord.Guild) -> [Note] or None:
    """ Get a guild members notes. Usually called after !notes is invoked in a guild

    Args:
        member (discord.Member): The member retrieving their notes
        guild (discord.Guild): The guild that the notes are attached to

    Returns:
        [Note or None]: The Notes that the user has saved, loaded into Note's
    """
    try:
        db_coll = db.get_collection(str(guild.id))
    except Exception:
        logger.exception("No guild ID given")
        return

    res = db_coll.find_one({"user_id": member.id})

    if not res:
        return None
    else:
        notes = [Note(details) for details in res["notes"]]

    return notes
コード例 #5
0
ファイル: main_window.py プロジェクト: bartl3by/OXNote
    def on_action_new_note_triggered(self):
        '''
        ..todo: Add multi account support - Select target account for new notes
        '''
        if self.list_widget_notelist.currentRow() >= 0 and\
                (self.line_edit_subject.isModified() or self.text_edit_editor.document().isModified()):
            self.on_action_save_note_triggered()

        note = Note(account_id=self._account_manager.get_account(
            self._account_manager.list_accounts()[0]).id,
                    title='New Note')

        if not self.list_widget_notelist.currentItem(
        ) and self.list_widget_notelist.count() <= 0:
            if self.line_edit_subject.isModified() and len(
                    self.line_edit_subject.text().strip()) > 0:
                note.title = self.line_edit_subject.text()
            if self.text_edit_editor.document().isModified() and len(
                    self.text_edit_editor.document().toPlainText().strip(
                    )) > 0:
                note.html_content = self.text_edit_editor.document().toHtml()

        note.create()

        self.__load_note_to_list(note.account_id, note.file)

        self.list_widget_notelist.setCurrentRow(0)
コード例 #6
0
ファイル: note.py プロジェクト: eliyaaah/note-dat-dev
    def post(self):
        #geting data from fron-end
        json_data = request.get_json(force=True)
        if not json_data:
            return {'message': 'No input data provided'}, 400

        # Validate and deserialize input
        data, errors = note_schema.load(json_data)
        if errors:
            return errors, 422

        user_id = get_jwt_identity()

        notebook = Notebook.query.filter_by(id=data['notebook_id']).first()
        if not notebook:
            return {'message': 'Category does not exist'}, 400

        notebook.modified_date = datetime.now(pytz.utc)

        #matching new note data by fields
        new_note = Note(title=data['title'],
                        body=data['body'],
                        creation_date=datetime.now(pytz.utc),
                        modified_date=datetime.now(pytz.utc),
                        notebook_id=data['notebook_id'],
                        user_id=user_id)

        #submitting note to database
        db.session.add(new_note)
        db.session.commit()

        #get json from pyton object
        result = note_schema.dump(new_note).data

        return {"status": 'success', 'data': result}, 201
コード例 #7
0
class Notes:
    __note = Note()
    __today = datetime.date(datetime.now())

    def getAll(self, order_by='id', order_method='DESC'):
        notes_data = self.__note.find('id', '>', '0', order_by, order_method)
        notes = []

        for note in notes_data:
            if parse(note['time']).date() == self.__today:
                note['time'] = datetime.strptime(
                    note['time'], "%Y-%j-%d %H:%M:%S").strftime('%I:%M %p')
                notes.append(note)

        return notes

    def create(self, title, time):
        time = parse(time)
        note = {
            'title': title,
            'time': time,
        }
        id = self.__note.create(note)
        note['id'] = id
        from libs.alarm import notes
        notes.append(note)

    def delete(self, id):
        self.__note.delete({'key': 'id', 'value': id})
        from libs.alarm import notes
        for i in range(len(notes)):
            if notes[i]['id'] == int(id):
                del notes[i]
                break
コード例 #8
0
ファイル: instrument.py プロジェクト: mmmewk/chord-vis
    def draw_note(self, note, labelfunc=str, octaves=True, color='k'):
        note = Note(note)
        frets = self.find_note(note, octaves=octaves)
        if octaves:
            accuracy = int(np.round(note.accuracy))
            if accuracy > 0:
                label = "%s + %.0f" % (note.note, accuracy)
            elif accuracy < 0:
                label = "%s %.0f" % (note.note, accuracy)
            else:
                label = note.note

        else:
            label = str(note)

        X = []
        Y = []
        for fret in frets:
            plt.text(fret.xpos,
                     fret.ypos,
                     labelfunc(fret),
                     horizontalalignment='center',
                     verticalalignment='center',
                     fontsize=12)
            X.append(fret.xpos)
            Y.append(fret.ypos)

        plt.scatter(X,
                    Y,
                    s=300,
                    linewidth=2,
                    label=label,
                    facecolors='white',
                    edgecolors=color)
コード例 #9
0
    async def add(self, message: discord.Message, params: list):
        """
        Adds a note to the database using the provided parameters.

        :param message: Instance of the discord message that triggered the error. (discord.Message)
        :param params: Message parameters/note attributes. (List[String])
        """

        if len(params) != 5:
            await self.error(message, 'Add command takes exactly 3 parameters!')
            return

        title = params[2]
        body = params[3]
        tags = params[4].split(',')
        note = Note(
            title=title,
            body=body,
            tags=tags,
            author=message.author.name
        )

        try:
            note = self.note_repository.create(note)
        except Exception as e:
            await self.error(message, str(e))
            return

        response = note.to_json()

        await message.author.send(response)
コード例 #10
0
ファイル: string.py プロジェクト: mmmewk/chord-vis
    def __init__(self, data, max_fret=18, index=0):
        if isinstance(data, String):
            self.root = data.root
        else:
            self.root = Note(data)

        self.max_fret = max_fret
        self.index = index
コード例 #11
0
ファイル: overtone_set.py プロジェクト: mmmewk/chord-vis
    def get_accuracy(self, note):
        if not hasattr(self, 'root'):
            return 0

        note = Note(note)
        accuracy = (note / self.root) % 1

        return np.min([accuracy, 1 - accuracy])
コード例 #12
0
 def add_notes(self, notes_dicts):
     for note_dict in notes_dicts:
         note = None
         if note_dict.has_key('id'):
             notes = filter(lambda x: x.id == note_dict['id'], self.notes)
             if len(notes) > 0:
                 note = notes[0]
             else:
                 note = Note(self, note_dict['text'])
                 self.notes.append(note)
                 db.session.add(note)
         else:
             note = Note(self, note_dict['text'])
             self.notes.append(note)
             db.session.add(note)
         note.text = note_dict['text']
         db.session.commit()
コード例 #13
0
ファイル: audio_file.py プロジェクト: mmmewk/chord-vis
    def get_range_for(self, note):
        note = Note(note).clean_note()
        if not str(note) in self.ranges:
            start = self.get_index_of_frequency((note - .5).frequency)
            end = self.get_index_of_frequency((note + .5).frequency)
            self.ranges[str(note)] = range(start, end)

        return self.ranges[str(note)]
コード例 #14
0
ファイル: filter.py プロジェクト: mmmewk/chord-vis
    def get_value(self, index):
        frequency = self.parent.xf[index]

        # below 10 hz we honestly don't care and the pitch of the note is hard to identify
        if frequency < 10:
            return 0

        return np.abs(Note(frequency).accuracy)
コード例 #15
0
    def create_note(self, data, **kwargs):

        data.update({
            'created_at': datetime.now().date(),
            'edited_at': datetime.now().date(),
            'created_by': "Cristhian"
        })

        return Note(**data)
コード例 #16
0
ファイル: audio_file.py プロジェクト: mmmewk/chord-vis
    def annotate_peaks(self):
        if not hasattr(self, 'peaks'):
            self.find_peaks()

        for index in self.peaks:
            intensity = self.fft_out[index]
            frequency = self.xf[index]
            note = Note(frequency)
            plt.text(frequency, intensity, str(note), fontsize=8, clip_on=True)
コード例 #17
0
ファイル: audio_file.py プロジェクト: mmmewk/chord-vis
    def find_notes(self):
        if not hasattr(self, 'peaks'):
            self.find_peaks()

        self.notes = []
        for index in self.peaks:
            if all(map(lambda f: f.is_valid(index), self.note_filters)):
                self.notes.append(Note(self.xf[index]))

        return self.notes
コード例 #18
0
def load(path):
    file = open(path, 'r')

    position_dict = '①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿口'
    arrow_dict = '∧V<>'
    time_dict = '|-'
    dicts = position_dict + arrow_dict + time_dict

    lines = [
        line for line in
        [re.sub('[^%s]' % dicts, '', line) for line in file.readlines()]
        if len(line) > 0
    ]
    coordinate_time_tuples = [
        CoordinateTimeTuple(line[:4], re.sub('[%s]' % '|', '', line[4:]))
        for line in lines
    ]

    times = []
    coordinates = []
    measures = []

    for coordinate_time_tuple in coordinate_time_tuples:
        coordinates.append(coordinate_time_tuple.coordinate)
        if len(coordinate_time_tuple.time) > 0:
            times.append(coordinate_time_tuple.time)
        if len(times) >= 4 and len(''.join(coordinates)) % 16 == 0:
            coordinate = ''.join(times).replace('-', '')
            time_dict = ''.join(coordinates).replace('口', '')
            diff = coordinate.translate(str.maketrans('', '', time_dict))
            if len(diff) <= 0:
                measures.append([''.join(list(coordinates)), list(times)])
                del times[:]
                del coordinates[:]

    offset = 80  # ms
    total_time = offset
    bpm = 200
    notes = []
    for i, measure in enumerate(measures):
        coordinates = measure[0]
        times = measure[1]
        for time in times:
            for c in time:
                split_size = len(time)
                total_time += 60000.0 / bpm / split_size  # TODO 口⑤口口 |④-| の表記の対処法
                if c == '-':
                    continue
                notes.append(
                    Note(c, total_time,
                         [(i % 16) + 1
                          for i, x in enumerate(coordinates) if x == c], bpm))

    return notes, offset
コード例 #19
0
ファイル: note.py プロジェクト: Nishanth-Moolam/nlp_project
def CreateNote(notes_filename, section_id):

    date_added = datetime.now()

    new_note = Note(notes_filename=notes_filename,
                    section_id=section_id,
                    date_added=date_added)
    db.session.add(new_note)
    db.session.commit()

    return new_note.id
コード例 #20
0
def create_note_impl(args):
    try:
        validate(args)
        note = Note(
            user_book_from_book_id(args["book_id"],
                                   user_by_user_id(args['user_id']).id),
            args['text'])
        db.session.add(note)
        db.session.commit()
        return Response(True, "", NoteSchema().dumps(note).data).output()
    except Exception, e:
        return Response(False, str(e), None).output()
コード例 #21
0
 def __init__(self, key, progression_type='major'):
   self.key = key
   self.root = Note(key)
   self.note_order = self.blueprints[progression_type.lower()]
   self.title = progression_type.replace('-',' ').title()
   self.name = "%s %s" % (self.key, self.title)
   self.notes = []
   self.overtone_range_cache = {}
   for scale_number in self.note_order:
     halfsteps = ScaleNotes.index(scale_number)
     note = self.root + halfsteps
     self.notes.append(note)
コード例 #22
0
  def overtone_ranges(self, n, accuracy):
    key = "%d%f" % (n, accuracy)
    if not key in self.overtone_range_cache:
      ranges = []
      for note in self.notes:
        low_note = Note(note)
        low_note.set_octave(2)
        ranges += low_note.overtone_ranges(n, accuracy)
      
      self.overtone_range_cache[key] = FrequencyRange.simplify(ranges)

    return self.overtone_range_cache[key]
コード例 #23
0
def note_save():
    user_token = auth_verify(dict(request.headers))
    body = request.json
    body.update({"owner_id": user_token["id"]})
    validated = NoteSchema().load(body)

    if validated.errors:
        abort(400, validated.errors)

    noteData = Note(**validated.data)
    noteData.save()

    return parse_response(validated.data)
コード例 #24
0
def select(note_id):
    # Create the SQL query, pass in the data and run it
    sql = "SELECT * FROM note WHERE id = %s"
    values = [note_id]
    result = run_sql(sql, values)

    # Create object if data is found in the database
    if len(result) > 0:
        pet = PR.select(result[0]['pet_id'])
        vet = VR.select(result[0]['vet_id'])
        new_note = Note(result[0]['date'], result[0]['note_text'], pet, vet)
    
    return new_note
コード例 #25
0
ファイル: audio_file.py プロジェクト: mmmewk/chord-vis
    def set_note_axes(self):
        plt.grid(True, which='major', axis='x')
        plt.grid(True, linestyle='--', which='minor', axis='x')

        major_tick_notes = Note.range(Note('E2'), Note('E7'), step=12)
        minor_tick_notes = list(
            filter(lambda n: n.note != 'E',
                   Note.range(Note('E2'), Note('E7'), step=1)))
        ax = plt.gca()

        ax.set_xticks(list(map(lambda n: n.frequency, minor_tick_notes)),
                      minor=True)
        ax.set_xticklabels(list(map(str, minor_tick_notes)),
                           fontsize=5,
                           rotation=90,
                           minor=True)

        ax.set_xticks(list(map(lambda n: n.frequency, major_tick_notes)),
                      minor=False)
        ax.set_xticklabels(list(map(str, major_tick_notes)),
                           fontsize=10,
                           rotation=90,
                           minor=False)
コード例 #26
0
ファイル: main_window.py プロジェクト: bartl3by/OXNote
    def on_action_duplicate_note_triggered(self):
        if self.line_edit_subject.isModified(
        ) or self.text_edit_editor.document().isModified():
            self.on_action_save_note_triggered()

        note = Note(account_id=self._account_manager.get_account(
            self._account_manager.list_accounts()[0]).id,
                    title='{} (Copy)'.format(self.line_edit_subject.text()),
                    html_content=self.text_edit_editor.toHtml())

        note.create()

        self.__load_note_to_list(note.account_id, note.file)

        self.list_widget_notelist.setCurrentRow(0)
コード例 #27
0
def save_note(id):
    note_date = request.form['note_date']
    note_text = request.form['note_text']
    vet_id = request.form['note_vet']

    # Grab the data for the object
    pet = PR.select(id)
    vet = VR.select(vet_id)

    # Create the note object for saving
    note = Note(note_date, note_text, pet, vet)
    NR.save(note)

    # Redirect
    return redirect('/pets/' + id)
コード例 #28
0
ファイル: note_api.py プロジェクト: kakiecake/lyceum-web-app
def create_note():
    if not request.json:
        return jsonify({'error': 'Empty request'})
    elif not all(key in request.json
                 for key in ['name', 'text', 'author_id', 'is_private']):
        return jsonify({'error': 'Bad request'})
    db_sess = db_session.create_session()
    note = Note(
        name=request.json['name'],
        text=request.json['text'],
        author_id=request.json['author_id'],
        is_private=request.json['is_private'],
    )
    db_sess.add(note)
    db_sess.commit()
    return jsonify({'success': 'OK'})
コード例 #29
0
class TestNote(TestCase):
    _item = Item()
    _note = Note()
    _db = SqlitePersistence(":memory:")

    def setUp(self):
        self._item.rig = "X01"
        self._item.description = "Something to handover"
        self._item.case = "CAS-12345"
        self._db.save(self._item)

        self._note.description = "Some update"
        self._note.item_id = 1
        self._db.save(self._note)

    def test_a_note_has_a_description(self):
        note = self._db.find(Note, 1)
        self.assertEqual(note.description, "Some update")

    def test_a_note_has_an_item(self):
        note = self._db.find(Note, 1)
        self.assertEqual(note.item.description, self._item.description)

    def test_a_saved_note_has_a_created_by_timestamp(self):
        note = self._db.find(Note, 1)
        self.assertIsNotNone(note.created_by)

    def test_a_saved_note_has_an_updated_by_timestamp(self):
        note = self._db.find(Note, 1)
        self.assertIsNotNone(note.updated_by)

    def test_a_saved_note_has_a_created_by(self):
        note = self._db.find(Note, 1)
        self.assertEqual(note.created_by, os.getlogin())

    def test_a_saved_note_has_an_updated_by(self):
        note = self._db.find(Note, 1)
        self.assertEqual(note.updated_by, os.getlogin())

    def test_a_note_can_be_edited(self):
        note = self._db.find(Note, 1)

        data = {"description": "a note"}
        self._db.edit(Note, note.id, data)
        edited = self._db.find(Note, note.id)

        self.assertEqual(data["description"], edited.description)
コード例 #30
0
ファイル: main_window.py プロジェクト: bartl3by/OXNote
    def __load_note_to_list(self,
                            account_id: str,
                            file: str,
                            refresh_list: bool = True):
        logger.debug(
            '(Re)loading note from account {} to the note list: {}'.format(
                account_id, file))

        list_item = None
        list_item_widget = None

        list = self.list_widget_notelist.findItems(file, Qt.MatchExactly)
        if len(list) == 1:
            list_item = list[0]
            list_item_widget = self.list_widget_notelist.itemWidget(list_item)
        elif len(list) > 1:
            logger.warning(
                'Found multiple widgets for filename \'{}\''.format(file))
            return

        if not list_item or not list_item.text() or len(list_item.text()) <= 0:
            list_item_widget = NotesListWidgetItemWidget(
                filename=file, checksum=Util.calculate_file_checksum(file))

            list_item = SortableListWidgetItem(
                Note(account_id=account_id, file=file))
            list_item.setSizeHint(
                QSize(self.list_widget_notelist.width(),
                      list_item_widget.height()))
            list_item.setFont(QFont())

            self.list_widget_notelist.addItem(list_item)
            self.list_widget_notelist.setItemWidget(list_item,
                                                    list_item_widget)

        list_item_widget.set_title(list_item.note.title)
        list_item_widget.set_preview_text(
            list_item.note.document.toPlainText()[:Configuration().get_setting(
                'oxnote',
                'application.settings.preview_content_length_maximum',
                default=200)])
        list_item_widget.set_icon(list_item.note.note_list_preview_image)

        list_item.setText(file)

        if refresh_list:
            self.__refresh_notes_list()