void create_note(synth_note * sn, int note, int octave, float start_time, float len) { sn->note = note; sn->octave = octave; sn->start_time = start_time; sn->end_time = start_time + len; printf("Start Time: %f\n", sn->start_time); printf("End Time: %f\n", sn->end_time); //create sin waves sin_wave base; init(&base, 0.15, 0.0, get_frequency(note, octave)); create_envelope(&(sn->env), 0.1, len); sn->num_waves = 8; sn->waves = (sin_wave *) malloc(sizeof(sin_wave) * sn->num_waves); sn->waves[0] = base; harmonic(&(sn->waves[1]), &(sn->waves[0]), 2); harmonic(&(sn->waves[2]), &(sn->waves[0]), 3); harmonic(&(sn->waves[3]), &(sn->waves[0]), 4); harmonic(&(sn->waves[4]), &(sn->waves[0]), 5); harmonic(&(sn->waves[5]), &(sn->waves[0]), 6); harmonic(&(sn->waves[6]), &(sn->waves[0]), 7); harmonic(&(sn->waves[7]), &(sn->waves[0]), 8); }
NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved) { PluginInstance* This = NULL; NPError rv; int r, i, datalen, b64datalen; u8 *data = NULL, *b64data = NULL; char *postUrl = NULL, *dataToSign = NULL, *fieldName = NULL; printf("NPP_New()\n"); if (instance == NULL) return NPERR_INVALID_INSTANCE_ERROR; instance->pdata = NPN_MemAlloc(sizeof(PluginInstance)); This = (PluginInstance*) instance->pdata; if (This == NULL) return NPERR_OUT_OF_MEMORY_ERROR; This->ctx = NULL; This->card = NULL; This->p15card = NULL; for (i = 0; i < argc; i++) { if (strcmp(argn[i], "wsxaction") == 0) { postUrl = strdup(argv[i]); } else if (strcmp(argn[i], "wsxdatatosign") == 0) { dataToSign = strdup(argv[i]); } else if (strcmp(argn[i], "wsxname") == 0) { fieldName = strdup(argv[i]); } else printf("'%s' = '%s'\n", argn[i], argv[i]); } if (postUrl == NULL || dataToSign == NULL) { r = NPERR_GENERIC_ERROR; goto err; } if (fieldName == NULL) fieldName = strdup("SignedData"); This->signdata = dataToSign; This->signdata_len = strlen(dataToSign); r = create_envelope(This, &data, &datalen); if (r) { r = NPERR_GENERIC_ERROR; goto err; } b64datalen = datalen * 4 / 3 + 4; b64data = (u8 *) malloc(b64datalen); r = sc_base64_encode(data, datalen, b64data, b64datalen, 0); if (r) { r = NPERR_GENERIC_ERROR; goto err; } printf("Posting to '%s'\n", postUrl); printf("Data to sign: %s\n", dataToSign); printf("Signed: %s\n", b64data); rv = post_data(instance, postUrl, "_self", strlen((char *) b64data), (char *) b64data, fieldName); printf("post_data returned %d\n", rv); r = NPERR_NO_ERROR; err: if (fieldName) free(fieldName); if (dataToSign) free(dataToSign); if (postUrl) free(postUrl); if (data) free(data); if (b64data) free(b64data); return r; }