• Как программно проигрывать ноты гитары?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Синтез гитары по сложности тянет на уровни от курсача до докторской диссертации и далее в R&D в какой-нибудь компании типа Roland или Yamaha.

    Если вам достаточно уровня курсача, вы можете открыть для себя математическую модель колебаний струны (в том же учебнике Тихонова энд Самарского).

    Но тут надо понимать, что это будет воспроизводить звучание Сковородки, а у реальной гитары, особенно акустической, в извлечении звука принимает участие корпус (а у электрической к корпусу добавится еще и усилитель (и педали-эффекты) и его колонка-кабинет).

    Например, если на гитаре основательно дернуть одну струну, она заведет корпус, а корпус заведет остальные струны. Иногда это полезно, иногда - нет, и музыкант глушит лишние струны различными приемами.

    Чем больше факторов вы учтете, тем дальше вы продвинитесь от лабораторки за второй курс физмата до R&D в Роланде.

    Другой подход состоит в применении генеративных нейросетей, но тут надо где-то взять профессионального гитариста, который будет всеми возможными способами извлекать вам звуки и их связки, чтобы построить датасет для обучения.

    И наконец, главное - данная задача в определенном смысле является неуловимым Джо. Вместо сидения перед компом и накручивания трех десятков параметров синтеза на каждую ноту, любой вменяемый музыкант просто позвонит своему дружбану с реальной гитарой (или надергает нужные ноты сам, пусть и в 20 дублей и 120 склеек).

    Еще один аргумент в пользу гипотезы неуловимого Джо - даже если гипотетически, вы создадите такой синтезатор, к нему будет необходим контроллер. И тут выясняется, что лучшим контроллером для синтезатора гитары является сама гитара - следовательно, синтезатор из этой схемы можно и выкинуть.
    Ответ написан
    1 комментарий
  • Как решить проблему Segmention Fault?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Segmentation fault - это ошибка работы с памятью. Или выход за границы массива, или что-то не так с указателями.

    Я подозреваю, что в файле у вас не 50 строк (мне лень считать). Вот вы и вылезаете за границу массива.

    Ну или там какие-то лишние переводы строк, пробелы имеются. поэтому fin.eof() не выполняется после считывания последней строки. Потом вы пытаетесь что-то еще прочитать, но получаете назад пустую строку. Это бы не было проблемой, но вы потом пытаетесь это все запихать в 51-ый элемент массива.

    Советую вместо define N и статического массива использовать std::vector. В цикле считывания файла делайте push_back нового объекта в вектор (а еще лучше, emplace_back для экономии лишнего копирования).

    При выводе берите size() у вашего вектора.

    Если вы в выводе заметите лишнюю книгу в конце с пустыми данными, то можно добавить проверку при вводе - если хоть одна из 5 строк пустая - то не надо создавать новую книгу.
    Ответ написан
    Комментировать
  • Что это значит в джаве?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Книгу по Java даже не открывал, да?
    Это ООП
    Ответ написан
    1 комментарий
  • Почему не отображаются метки гугл карты на внутряках?

    sharnirio
    @sharnirio
    Front-end developer
    У вас там эта иконка и не грузиться https://i.imgur.com/l55xp1q.jpg , а вот почему это уже другой вопрос. Плюс множество ошибок в консоли, возможно конфликт с другим скриптом.
    update: понял ) там походу в самом скрипте неправильно путь к этой иконки прописан по типу img/map-icon.svg , вставьте корневой путь /img/map-icon.svg
    Ответ написан
    Комментировать
  • Почему определение инкапсуляции дают неправильно?

    bingo347
    @bingo347
    Crazy on performance...
    Цель инкапсуляции это объединение объектов
    кто Вам такое сказал?
    Само слово инкапсуляция происходит от латинского "in capsula", что можно перевести как "закрытый в коробке".
    Цель инкапсуляции - это сокрытие сложности. Не информации, не данных, не кода, а именно сложности.

    Вот представьте, у Вас есть лампочка с выключателем. Вы можете просто нажать на выключатель чтобы включить или выключить ее. Вам не нужно понимать электрические схемы внутри этого устройства, чтобы у Вас был свет. Вам достаточно пользоваться простым интерфейсом - выключателем. Это и есть инкапсуляция. Внутреннее устройство лампочки с выключателем инкапсулировано от Вас.
    Ответ написан
  • Сайт с модами игр?

    Да, если вы будете скачивать моды с других сайтов, без согласия их авторов.
    Очень часто пользовательское соглашение и лицензия там запрещают редистрибуцию.
    Ответ написан
    Комментировать
  • Почему быстрая сортировка Хоара медленнее пузырьковой?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Во-первых, quicksort медленне всяких пузырьков на маленьких числах. Это нормально. У него ассимптотика лучше - он сильно быстрее на больших числах. Но константа из-за сложности алгоритма хуже - поэтому на маленьких числах он и проигрывает пузырьку. Во всех библиотечных реализациях квиксорта (да и любой другой логарифмической сортировки) там есть проверка, что если чисел мало, то запускать пузырек или сортировку вставками.

    Увеличте размер сортруемых массивов до 100 000 или до миллиона и квиксорт должен стать быстрее.

    Во-вторых, ваша быстрая сортировка написана весьма неоптимально. Пузырек у вас сортирует сам массив на месте, когда как квиксорт постоянно создает новые массивы через конкатенацию. Возьмите нормальную реализацию и на 1000 элементах квиксорт уже станет быстрее пузырька.
    Ответ написан
    Комментировать
  • Какой выбрать учебник по Java для новичка в программировании?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    книга вроде ориентированна на новичков но это не так, есть задание где ответ ты получишь только спустя 10 страниц

    Так сделано специально, чтобы новичок пытался думать, а не получал сразу готовые ответы, которые потом в голове не задержатся.

    так же 5 версия Java в 2022 году книга СТАРА как мир!

    У Java полная обратная совместимость, до сих пор актуальны знания по Java 2, а новичку как раз нужна база, а не самые современные технологии.

    Философия Java - несколько гуру на Habr Q&A советовали ее, но открыв сам автор пишет что рассчитывает на людей с опытом в CS + базовое знание С, так же используеться старая Java ну и книга то же древняя

    И тем не менее опыт показывает, что по ней можно выучиться, даже если компьютер видишь впервые в жизни.

    дочитал до this вообще не понятно ЧТО ЭТО И ЗАЧЕМ это, такое чувство что автор думает что у меня в школе была хорошая информатика что ли?

    Программирование - это сложно. Никакой учебник не зальёт вам знания в голову волшебным образом, всё не станет сразу же понятно после первого же прочтения. Вам придётся прикладывать усилия, вчитываться, перечитывать, экспериментировать.
    Ответ написан
  • Почему массивы в Си заполняются "М"?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Uninitialized variables are not set to zero; they are initialized to special fill patterns, 0xcc and 0xcd (depending on whether the memory was allocated on the stack or the debug heap). The debugger can also be configured to break when uninitialized memory is read (though there are probably some restrictions on when this feature can be used)

    В вашем случае 0xcc
    Компилятор заполняет неициализированные переменные именно этим значением, что бы отлавливать значения которые не были инициализированы. Поэтому бывает забавно. В дебаге работает, а в релизе нет.
    Ответ написан
    Комментировать
  • Почему массивы в Си заполняются "М"?

    @res2001
    Developer, ex-admin
    Не заполняются они М.
    Если объявляется массив автоматический на стеке без инициализатора, то просто отводится память на стеке (уменьшение/увеличение регистра счетчика стека), никаких "теневых" присваиваний элементам не происходит, элементы массива принимают те значения, которые были в этих ячейках памяти ранее.
    То же самое и с динамическим массивом, только механизам выделения памяти другой.
    По любому адресу в памяти всегда находится какое-то значение, даже если эта память еще не выделена, просто потому что плашка памяти уже вставлена в материнку и на нее подано питание.

    Возможно в вашем случае это и не случайность - вы же не приводите код, которым выделяете память.
    Ответ написан
    7 комментариев
  • Как полностью заблокировать возможность удаленно устанавливать следилки на Linux?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Переустановить ОС, зашифровать корневой раздел, рутовые права никому не давать. В домен не вводить.
    Ответ написан
    Комментировать
  • Поиск адреса памяти в игре?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Причем тут поиск адресов памяти?
    Если вы пользовались каким-нить cheatengine или Artmoney исключительно поиском по значению, и понятия не имеете как программы пишутся и что такое языки программирования, то да, дело именно в отладчиках.

    Берется отладчик, декомпилируется код, подменяется своей, когда станет понятно как ее подменить.
    Да, нужны навыки хорошего разработчика, с опытом реверс инженеринга, и не одного, такие вещи при отсутствии исходного кода это много человекочасов некоторой коммуны, редко одиночки.
    Ответ написан
    8 комментариев
  • Кто-нибудь знает хорошие онлайн-курсы по Питону с нуля?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Либо человек способен учиться по учебникам, либо не способен быть программистом.
    Ответ написан
    Комментировать
  • Как сгенерировать срез острова в 2d?

    Niptlox
    @Niptlox Автор вопроса
    Python; Unity
    В итоге решил использовать библиотеку Noise с шумом перлина по формуле

    from noise import snoise2
    octaves = 5
    freq = 20 * octaves
    v = snoise2(tile_x / freq, tile_y / freq, octaves)
    if v > 0.2:
        static_tiles[y_pos][x_pos] = 1

    6180ebbbc34e2153391892.jpeg
    Ответ написан
    Комментировать
  • Как получить уникальный идентификатор unix машины?

    saboteur_kiev
    @saboteur_kiev Куратор тега Ubuntu
    software engineer
    попробуй
    1. hostid
    2. cat /etc/machine-id
    3. md5sum /proc/cpuinfo
    4. blkid|grep UUID|md5sum
    5. dmidecode |grep -i uuid

    Не совсем понятно зачем привязываться именно к серийнику CPU, я не совсем уверен что линукс может его получить. А привязаться к списку процессоров + накопителей и других штук, которые при ребуте не меняются - можно просто сгенерировать текстовый отчет и прогнать через md5
    Ответ написан
    3 комментария
  • Как получить уникальный идентификатор unix машины?

    Adamos
    @Adamos
    У этого одноплатника стопудово встроенная сетевуха, а у нее - уникальный MAC, который легко получить одной командой без копания в выводе более сложных утилит.
    Ответ написан
    Комментировать
  • Какую программу родительского контроля выбрать?

    kotomyava
    @kotomyava
    Системный администратор
    Может правильный ответ никакую? И подумать о обучении нужным навыкам, вместо этого?
    Вот вы лично очень любите быть под колпаком постоянно? За вами в детстве постоянно следили и фиксировали все ваши действия?
    Ответ написан
    6 комментариев
  • Как решить задачу на c++?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ошибка 1. Использование переменной ROWS без инициализации.
    while (ROWS < 2) {

    Ошибка 2. Обращение к массиву с индексом -1 при j == 0.
    if ((arr [i][j - 1] < arr [i][j]) || (arr [i][j - 1] > arr [i][j])){

    Ошибка 3. Вместо накопления результата, вы на каждом цикле переписываете значение k. В результате получаете только результат сравнения из последней итерации цикла.

    Ошибка 4. Вы в цикле просто сравниваете между собой два соседних числа (ваше условие - просто проверка на неравенство), а вам надо определить, возрастает или убывает вся последовательность чисел.
    Ответ написан
    Комментировать