Korg DW-8000 + M-AUDIO oxygen 49

@Vladistone,

при рулёжки с морды видимо на автомате просчитывается формула osc2 = 100-osc1 , а при рулёжки через сисекс получается, что надо это учитывать, так как через сисекс рулятся громкостя осцилляторов напрямую , а не через кросфейд. Опять же... если этого не учитывать, вероятно просто будет перегруз. Скорее всего в теории можно задать osc2 и osc1 по 100% .. можно, но не нужно, если не хотите перегруза... Но я бы протестил на практике и так и сяк ))

Если суммирование происходит в цифровой области, то будет банальный неприятный перегруз. Если же суммирование происходит в аналоговой области, и дальше на аналоговый фильтр, то возможно это даст интересный резонансный перегруженный окрас.
 
Последнее редактирование:
разобрался я со своим "колхозом":
@TechnoIsBack, вы теоретически близки к истине... а практически выходит так:
  1. с морды рулится одним фейдером 2 параметера 1 и 2-й , что в итоге называется как MIX ratio - по сути - OSC MIx fading с мастер фейдером для 1-го OSC параметра, а второй на автоматичском перерасчете внутри процессора вероятно,.. так что бы соблюдалось наше злосчастное правило№2 (a+b=1) (сразу прошу прощения - что в предыдущих сообщениях я обозначил эти параметры как hex 0x01 и 0x02 - что неверно, исправить не удалось - limit по времени форума! д.б. 0x00 и 0x01 соотвественно в hex).
  2. а с внешнего контроллера эти два параметра спокойно рулятся в диапазоне 0~100 независимо друг от друга (и поэтому на сайте https://glenstegner.com/dss1/home.html автор логично обозначил эти параметры как два отдельных OSC Level (об MIX ratio речи не идет):
    Osc 1 Level (F14) : param.# 0 | param offset 0 | range 0~100
    Osc 2 Level (F14) : param.# 1 | param offset 1 | range 0~100
    что и ввело в заблуждение (но по факту так и есть)! При этом никакого "перегруза" на выходе тоже не возникает, что вероятно говорит о цифровом характере данных и их микшировании, а об аналоговом перегрузе речи не идет! (Но тут еще надо разбираться в теории плавающих запятых и насколько красиво это было реализовано в 1986)
  3. В итоге правы и те и другие (korg manual и SysEx таблица от Glen Stegner). Только одни для рулежки с морды, а другой источник правды - для внешней рулежки! НО ни кто не спешил уточнить ньюансы с момента опубликования мануалов...
    А в моей затеи MIDI СС#2SysEx translation для адаптации старого динозавра Korg DSS1 под новые модные, но ущербные контроллеры, без генерации SysEx, - я постараюсь реализовать конвертацию по аналоги классического Korg MIDI implementation (хотя... это м.б. и спорно? но это уже тема для обсуждения с ведущими собаководами, простите - DSS-овцами ))) не на этой ветке форума...
Так что,.. простите меня @TechnoIsBack, за эксплуатацию вашей темы :Dle63: Но я попал на нужных мне собеседников! интуиция меня не подвела... :Dle8:
осталось только сообразить как выровнять выходные данные Sysex с двумя переменными к условию (a+b)=1
так как сейчас в моем коде - из за коэффициента трансформации шкалы CC#value к ожидаемому диапазону OSC 1 Level / OSC mix ratio (range 0~100) у меня происходят пропуски по формуле в 28 строчке:
sysexData[8] = (0x64 - paramValueScaled) & 0x64; // slave value
и условие слетает периодически в диапазоне рулежки CC# 0-127
Код:
//for paramNumber == 0x00 & 0x01 using by one CC# source; NOTE: must be (master + slave) = 100%
void sendDSS1Param_10(byte channel, byte paramNumber, byte paramValue7Bit) {
  const int sysexLen = 10;
  static byte sysexData[sysexLen] = {
    0xf0, // 0 SOX
    0x42, // 1 Manufacturer ID: 42, Korg
    0x30, // 2 Channel 1
    0x0b, // 3 Device ID: 0b, DSS-1
    0x41, // 4 Message: 41, Parameter change mode
    0x00, // 5 Parameter number (first parameter witch we going to change, must be 0x00 as a master, 0x01 - as slave)
    0x00, // 6 Parameter value - master
    0x01, // 7 Parameter number fixed 0x01 slave
    0x00, // 8 Parameter value - slave
    0xf7  // 9 EOX
    };

    paramValue7Bit &= 0x7f; // paramValue7Bit is assumed to run from 0 to 127 in all cases
    int paramValueScaled;
    switch (paramNumber) { // so here we rescale to fit to range 0...100
    case 0x00: // param 01 OSC-1 Mix ratio (F14) master
    //case 0x01: // param 02 OSC-2 Mix ratio (F14) slave
    paramValueScaled = paramValue7Bit*203/256;    //break;
   }
    sysexData[2] = 0x30 | ((channel - 1) & 0x0f);        // Set channel number DDS = 0
    sysexData[5] = paramNumber;                    // master
    sysexData[6] = paramValueScaled & 0x64;            // master value
    sysexData[7] = 0x01; //| paramNumber; // slave
    sysexData[8] = (0x64 - paramValueScaled) & 0x64;  // slave value

    MIDI.sendSysEx(sysexLen, sysexData, true);
}
 
Последнее редактирование:
  • Like
Реакции: Trasher и TechnoIsBack
При этом никакого "перегруза" на выходе тоже не возникает, что вероятно говорит о цифровом характере данных и их микшировании, а не о аналоговом перегрузе речи не идет!

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

Хотел взять себе DSS послушать звук в целом. Но он такой здоровый.. не синт, а целый шкаф ) А рэковый, зараза, без резо фильтров... в них весь кайф
 
Не зря они указали, что баланс должен соблюдаться в рамках сотни для суммы. На негромких звуках может искажений и не будет, но на волноформах, которые занимают весь динамический диапазон на двух осцилляторах возможно вылезут искажения....
К сотне у parameter range -трудно найти причинно-следственные связи для "сослаться" на то, что должно быть еще что-то в запасе... (я так понимаю вы ожидаете до 127?). Так как это лишь коэффициенты маштабирования диапазона рулежки (от нуля до max) Korg даже %% сюда подрисовал на экране DSS1 (но в имплементации об этом молчат, дескать - достаточно одного user manual на 300 страниц с картинками).
И к общепонятийному нашему headroom - это, возможно не имет отношения...
0D7FC335-4DFD-4799-9C5E-ADE2A795062C.jpeg
 
Последнее редактирование:
  • Like
Реакции: Trasher и TechnoIsBack
одно значение тоже имеет место быть(cc=0=>[osc1mix100%osc2mix0%];cc=63,64=>[osc1mix50%osc2mix50%];cc=127=>[osc1mix0%osc2mix100%]но это не точно...
изменение одного лишь параметра OSC (F14), воздействует именно на этот параметер, прописанный в SysEx, и не воспринимается синтом как команда к иному действию ( например к редуцированию/подгонке второго OSC value - это мы уже выяснили).
То есть кое где korg DSS-1 "выглядит умным", а если со стороны на него посмотреть и воздействать Sysex-ом - он тупой-тупой,... и исполняет лишь то, что ему указали (самодеятельности не проявляет),
как в армии:
- команды думать не было! ))) :Dle90:

и еще выяснили, что примечание №2
Must be set for both oscilator so that OSC1 + OSC2 = 100

является рекомендательно-информационным, а не строгим условием к исполнению... его легко можно обойти внешним SysEx
 
Последнее редактирование:
  • Like
Реакции: Trasher
является рекомендательно-информационным, а не строгим условием к исполнению... его легко можно обойти внешним SysEx

раздетюньте два синуса на максимальной громкости двух осцилляторов... если искажений не будет, то не страшно
 
  • Like
Реакции: Vladistone
когда DETUNE на макс - тут любые уши не выдержат такого "пресинга"
А если еще два OSC1&2 level задрать до 127% (и это тоже возможно с помощью внешних Sysex-ов если совсем не обращать внимания на мануал) - то какая разницв уже,.. есть ли жизнь на марсе? 3 звезды...или 5?:eek:
Но при первом попавшемся пресете - искажения небольшие есть еще до предела насыщения 100% и 100% и они не зависят потом от OSC level
 

Вложения

  • CF07C257-5347-4E7A-9877-5F98343E06E1.jpeg
    CF07C257-5347-4E7A-9877-5F98343E06E1.jpeg
    2,7 MB · Просмотры: 28
когда DETUNE на макс - тут любые уши не выдержат такого "пресинга"
А если еще два OSC1&2 level задрать до 127% (и это тоже возможно с помощью внешних Sysex-ов если совсем не обращать внимания на мануал) - то какая разницв уже,.. есть ли жизнь на марсе? 3 звезды...или 5?:eek:
Но при первом попавшемся пресете - искажения небольшие есть еще до предела насыщения 100% и 100% и они не зависят потом от OSC level

Детюн не надо на макс... просто лёгкий детюн двух синусов, чтоб волны медленно то вычитались, то находили друг на друга создавая пики максимума в 100+100=200% . Это совершенно чётко даст представление о том, будут ли при 200% громкости двух осцилляторов искажения, и является ли рекомендация из мануала такой важной. Синусы - это тот сигнал, который имеет одну "гармонику" ... поэтому если даже будут лёгкие искажения, их сразу будет слышно на фоне одной гармоники. Потому что на богатом спектральном сигнале искажения труднее задетектить, они будут смешиваться с другими гармониками. Если Вы уж действительно намереваетесь докопаться до истины, является ли та рекомендация важной и обязательной, этот тест даст ответ на Ваш вопрос. При этом резонанс фильтра понятно, что должен быть отключен, а катофф на максимуме.
 

Сейчас просматривают