小型JS铃声生成器-工作原理

我们正在谈论ZzFXM工具,该工具对于独立游戏或Web应用程序的开发人员非常有用,这些开发人员必须使用非常有限的内存进行操作。



我们还讨论类似物-rFXGen,wafxr。





照片颤抖/不飞溅



有关项目的更多信息



ZzFXM由程序员和游戏开发博客Killed By a Pixel的作者Frank Force提出。在他的资料中,他特别注意保存内存的问题。他曾经写过一个大小只有1 KBJavaScript钢琴模拟器



旋律发生器(Melody Generator)延续了这一想法-弗兰克(Frank)专门设计了它,可为超小型程序产生音乐。此类项目是作为js13k游戏公开竞赛的一部分实施的,该竞赛的参与者使用数十KB的内存以HTML5和JavaScript编写游戏。



ZzFXM可用于开发成熟的独立游戏。它是根据MIT许可获得许可的,因此适用于商业项目。


设置的来源和说明位于GitHub上的存储库中



什么是“引擎盖”



该实用程序使用ZzFX引擎来编写类似于八位的声音效果。它使您可以控制19种声音参数​​,从音量到频率和波形。ZzFX可以生成的声音示例可以在Frank Force的网站上找到ZzFXM使用其中一些作为样本。



最终文件的格式类似于用于在Amiga个人计算机上存储和播放音乐作品MOD,因此,所有带有乐器声音的样本都存储在不同的文件中(模块化原理)。



怎么运行的



作曲家会编写一系列音符,以指示应该演奏哪种乐器以及何时演奏。此序列称为轨道。多个并行听起来的音轨形成具有自己编号的块(样式)。此外,作曲家在程序代码中指定应发出哪种音色以及何时发出声音。



这种方法使您可以快速形成所需的构图,但是如果没有注释,则很难阅读生成的代码。在GitHub上的存储库中,生成器的作者给出了以下示例:



[                                     // Song
  [                                     // Instruments
    [.9, 0, 143, , , .35, 3],             // Instrument 0
    [1, 0, 216, , , .45, 1, 4, , ,50],    // Instrument 1
    [.75, 0, 196, , .08, .18, 3]          // Instrument 2
  ],
  [                                     // Patterns
    [                                     // Pattern 0
      [                                     // Channel 0
        0,                                    // Using instrument 0
        -1,                                   // From the left speaker
        1,                                    // play C-1
        0, 0, 0,                              // rest (x3)
        3.5,                                  // play E-1 with 50% attenuation
        0, 0, 0                               // rest (x3)
      ],
      [                                     // Channel 1
        1,                                    // Using instrument 1
        1,                                    // From the right speaker
        2,                                    // play D-1
        2.25,                                 // play D-1 with 25% attenuation
        3.5,                                  // Play E-1 with 50% attenuation
        4.75,                                 // Play F-1 with 75% attenuation
        -1,                                   // Release the note
        0, 0, 0                               // rest (x3)
      ]
    ]
  ],
  [                                     // Sequence
    0,                                    // Play pattern 0
    0,                                    // ...and again
  ],
  120,                                  // 120 BPM
  {                                     // Metadata
    title: "My Song",                      // Name of the song
    author: "Keith Clark"                  // Name of the author/composer
  }
]


您可以聆听该实用程序生成的音轨在GitHub上的声音歌曲大小不超过550个字节。



什么是类似物



ZzFXM的类似物之一是rFXGen它是用C语言编写的,基于sfxr项目-由LD48竞赛的一名参与者于2007年推出在其框架内,每个开发人员都必须在48小时内提交一个小型游戏。RFXGen实用程序支持振荡器,颤音以及低通和高通滤波器。





通过照片Ohmydearlife / Pixabay



-另一种紧凑的声音发生器wafxr它使用WebAudio API和wasgen库呈现实时音频Wafxr还支持振荡器,颤音/颤音和各种滤波器。GitHub上有一个工作演示-您可以自己评估该工具。






我们在哈布雷拥有的产品:








« Hi-Fi»:





— ,

VR

Sporth — live-

: 5 , «»







All Articles