#include "mscHack.hpp" RACK_PLUGIN_MODEL_DECLARE(mscHack, Alienz); RACK_PLUGIN_MODEL_DECLARE(mscHack, ASAF8); RACK_PLUGIN_MODEL_DECLARE(mscHack, Dronez); RACK_PLUGIN_MODEL_DECLARE(mscHack, MasterClockx4); RACK_PLUGIN_MODEL_DECLARE(mscHack, Seq_3x16x16); RACK_PLUGIN_MODEL_DECLARE(mscHack, SEQ_6x32x16); RACK_PLUGIN_MODEL_DECLARE(mscHack, Seq_Triad2); RACK_PLUGIN_MODEL_DECLARE(mscHack, SEQ_Envelope_8); RACK_PLUGIN_MODEL_DECLARE(mscHack, Maude_221); RACK_PLUGIN_MODEL_DECLARE(mscHack, ARP700); RACK_PLUGIN_MODEL_DECLARE(mscHack, SynthDrums); RACK_PLUGIN_MODEL_DECLARE(mscHack, XFade); RACK_PLUGIN_MODEL_DECLARE(mscHack, Mix_1x4_Stereo); RACK_PLUGIN_MODEL_DECLARE(mscHack, Mix_2x4_Stereo); RACK_PLUGIN_MODEL_DECLARE(mscHack, Mix_4x4_Stereo); RACK_PLUGIN_MODEL_DECLARE(mscHack, Mix_9_3_4); RACK_PLUGIN_MODEL_DECLARE(mscHack, Mix_16_4_4); RACK_PLUGIN_MODEL_DECLARE(mscHack, Mix_24_4_4); RACK_PLUGIN_MODEL_DECLARE(mscHack, Morze); RACK_PLUGIN_MODEL_DECLARE(mscHack, StepDelay); RACK_PLUGIN_MODEL_DECLARE(mscHack, OSC_WaveMorph_3); RACK_PLUGIN_MODEL_DECLARE(mscHack, PingPong); RACK_PLUGIN_MODEL_DECLARE(mscHack, Osc_3Ch); RACK_PLUGIN_MODEL_DECLARE(mscHack, Compressor); RACK_PLUGIN_MODEL_DECLARE(mscHack, Windz); RACK_PLUGIN_INIT(mscHack) { RACK_PLUGIN_INIT_ID(); RACK_PLUGIN_INIT_WEBSITE("https://github.com/mschack/VCV-Rack-Plugins"); RACK_PLUGIN_MODEL_ADD(mscHack, Alienz); RACK_PLUGIN_MODEL_ADD(mscHack, ASAF8); RACK_PLUGIN_MODEL_ADD(mscHack, Dronez); RACK_PLUGIN_MODEL_ADD(mscHack, MasterClockx4); RACK_PLUGIN_MODEL_ADD(mscHack, Seq_3x16x16); RACK_PLUGIN_MODEL_ADD(mscHack, SEQ_6x32x16); RACK_PLUGIN_MODEL_ADD(mscHack, Seq_Triad2); RACK_PLUGIN_MODEL_ADD(mscHack, SEQ_Envelope_8); RACK_PLUGIN_MODEL_ADD(mscHack, Maude_221); RACK_PLUGIN_MODEL_ADD(mscHack, ARP700); RACK_PLUGIN_MODEL_ADD(mscHack, SynthDrums); RACK_PLUGIN_MODEL_ADD(mscHack, XFade); RACK_PLUGIN_MODEL_ADD(mscHack, Mix_1x4_Stereo); RACK_PLUGIN_MODEL_ADD(mscHack, Mix_2x4_Stereo); RACK_PLUGIN_MODEL_ADD(mscHack, Mix_4x4_Stereo); RACK_PLUGIN_MODEL_ADD(mscHack, Mix_9_3_4); RACK_PLUGIN_MODEL_ADD(mscHack, Mix_16_4_4); RACK_PLUGIN_MODEL_ADD(mscHack, Mix_24_4_4); RACK_PLUGIN_MODEL_ADD(mscHack, Morze); RACK_PLUGIN_MODEL_ADD(mscHack, StepDelay); RACK_PLUGIN_MODEL_ADD(mscHack, OSC_WaveMorph_3); RACK_PLUGIN_MODEL_ADD(mscHack, PingPong); RACK_PLUGIN_MODEL_ADD(mscHack, Osc_3Ch); RACK_PLUGIN_MODEL_ADD(mscHack, Compressor); RACK_PLUGIN_MODEL_ADD(mscHack, Windz); } namespace rack_plugin_mscHack { //----------------------------------------------------- // Procedure: random // //----------------------------------------------------- #define PHI 0x9e3779b9 unsigned int Q[4096], c = 362436; unsigned int g_myrindex = 4095; void init_rand( unsigned int seed ) { int i; Q[0] = seed; Q[1] = seed + PHI; Q[2] = seed + PHI + PHI; for (i = 3; i < 4096; i++) Q[i] = Q[i - 3] ^ Q[i - 2] ^ PHI ^ i; c = 362436; g_myrindex = 4095; } unsigned short srand(void) { long long t, a = 18782LL; unsigned int x, r = 0xfffffffe; g_myrindex = (g_myrindex + 1) & 4095; t = a * Q[g_myrindex] + c; c = (t >> 32); x = t + c; if (x < c) { x++; c++; } return (unsigned short)( ( Q[g_myrindex] = r - x ) & 0xFFFF ); } float frand(void) { return (float)srand() / (float)0xFFFF; } float frand_mm( float fmin, float fmax ) { float range = fmax - fmin; return fmin + ( frand() * range ); } bool brand( void ) { return ( srand() & 1 ); } bool frand_perc( float perc ) { return ( frand() <= (perc / 100.0f) ); } //----------------------------------------------------- // Procedure: JsonDataInt // //----------------------------------------------------- void JsonDataInt( bool bTo, std::string strName, json_t *root, int *pdata, int len ) { int i; json_t *jsarray, *js; if( !pdata || !root || len <= 0 ) return; if( bTo ) { jsarray = json_array(); for ( i = 0; i < len; i++ ) { js = json_integer( pdata[ i ] ); json_array_append_new( jsarray, js ); } json_object_set_new( root, strName.c_str(), jsarray ); } else { jsarray = json_object_get( root, strName.c_str() ); if( jsarray ) { for ( i = 0; i < len; i++) { js = json_array_get( jsarray, i ); if( js ) pdata[ i ] = json_integer_value( js ); } } } } //----------------------------------------------------- // Procedure: JsonDataBool // //----------------------------------------------------- void JsonDataBool( bool bTo, std::string strName, json_t *root, bool *pdata, int len ) { int i; json_t *jsarray, *js; if( !pdata || !root || len <= 0 ) return; if( bTo ) { jsarray = json_array(); for ( i = 0; i < len; i++ ) { js = json_boolean( pdata[ i ] ); json_array_append_new( jsarray, js ); } json_object_set_new( root, strName.c_str(), jsarray ); } else { jsarray = json_object_get( root, strName.c_str() ); if( jsarray ) { for ( i = 0; i < len; i++) { js = json_array_get( jsarray, i ); if( js ) pdata[ i ] = json_boolean_value( js ); } } } } //----------------------------------------------------- // Procedure: JsonDataString // //----------------------------------------------------- void JsonDataString( bool bTo, std::string strName, json_t *root, std::string *strText ) { json_t *textJ; if( !root ) return; if( bTo ) { json_object_set_new( root, strName.c_str(), json_string( strText->c_str() ) ); } else { textJ = json_object_get( root, strName.c_str() ); if( textJ ) *strText = json_string_value( textJ ); } } } // namespace rack_plugin_mscHack using namespace rack_plugin_mscHack;