[Date Index]
[Thread Index]
[Author Index]
Re: Programming Fail
*To*: mathgroup at smc.vnet.net
*Subject*: [mg132032] Re: Programming Fail
*From*: Alex Krasnov <akrasnov at cory.eecs.berkeley.edu>
*Date*: Tue, 19 Nov 2013 02:58:56 -0500 (EST)
*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com
*Delivered-to*: l-mathgroup@wolfram.com
*Delivered-to*: mathgroup-outx@smc.vnet.net
*Delivered-to*: mathgroup-newsendx@smc.vnet.net
*References*: <20131117232215.A9F846A15@smc.vnet.net> <Pine.GSO.4.64.1311171800480.21281@cory>
Your solution is similar to my second one but fails given leading zeros:
In: ToExpression[Characters["0123"]]
Out: {0, 1, 2, 3}
In: IntegerDigits[ToExpression["0123"]]
Out: {1, 2, 3}
You can provide a length argument if known:
In: IntegerDigits[ToExpression["0123"], 10, 4]
Out: {0, 1, 2, 3}
Alex
On Sun, 17 Nov 2013, Dean Rosenthal wrote:
> Looks like inserting ToExpression does the work:
>
> Sound[Thread[SoundNote[IntegerDigits[ToExpression[a]]]]]
>
>
> Where "a" is the output of the first routine. Thanks for your input, Alex,
> I wouldn't have used ToExpression without your suggestion.
>
>
> Thanks,
>
> Dean
>
>
> On Sun, Nov 17, 2013 at 10:05 PM, Dean Rosenthal <deanrosenthal at gmail.com>wrote:
>
>> Thanks. Yes, that is correct, pitchMap uses integers. Here is where I am,
>> I am invoking "IntegerDigits" to create the sound object:
>>
>> Sound[Thread[SoundNote[IntegerDigits[13235]]]]
>>
>>
>> Where the values are, those need to come from this:
>>
>>
>> StringJoin[
>>
>> NestList[
>> StringReplace[#, {"0" -> "2", "2" -> "12", "1" -> "23", "3" -> "45",
>> "4" -> "56"}] &, "0", 4]];
>>
>>
>> I can add the pitch mapping, they instrument, length of time later. But
>> I'm not sure how to make the output from:
>>
>>
>> StringJoin[
>>
>> NestList[
>> StringReplace[#, {"0" -> "2", "2" -> "12", "1" -> "23", "3" -> "45",
>> "4" -> "56"}] &, "0", 4]];
>>
>>
>> land HERE:
>>
>>
>> Sound[Thread[SoundNote[IntegerDigits[HERE]]]]
>>
>>
>> Thanks,
>>
>> Dean
>>
>>
>> PS. Also, if I use these particular values 0->2, etc. - note that the
>> sound object won't respond to "0", i.e. won't map correctly (I've bumped
>> each value up by one, so the starting point is "1" in my .nb)
>>
>>
>> On Sun, Nov 17, 2013 at 9:36 PM, Alex Krasnov <
>> akrasnov at cory.eecs.berkeley.edu> wrote:
>>
>>> The main issue is that A uses strings but pitchMap uses integers. Here
>>> are three possible solutions:
>>>
>>> In: A = NestList[StringReplace[#, {"0" -> "2", "2" -> "12", "1" ->
>>> "23", "3" -> "45", "4" -> "56"}] &, "0", 7];
>>> In: pitchMap = {"0" -> "B4", "1" -> "C4", "2" -> "D4", "3" -> "E4",
>>> "4" -> "F4", "5" -> "G4", "6" -> "A4"};
>>> In: Sound[Thread[SoundNote[Flatten[Characters[A]] /. pitchMap]]]
>>>
>>> In: A = NestList[StringReplace[#, {"0" -> "2", "2" -> "12", "1" ->
>>> "23", "3" -> "45", "4" -> "56"}] &, "0", 7];
>>> In: pitchMap = {0 -> "B4", 1 -> "C4", 2 -> "D4", 3 -> "E4", 4 ->
>>> "F4", 5 -> "G4", 6 -> "A4"};
>>> In: Sound[Thread[SoundNote[ToExpression[Flatten[Characters[A]]] /.
>>> pitchMap]]]
>>>
>>> In: A = NestList[Flatten[Replace[#, {0 -> 2, 2 -> {1, 2}, 1 -> {2,
>>> 3}, 3 -> {4, 5}, 4 -> {5, 6}}, 1]] &, {0}, 7];
>>> In: pitchMap = {0 -> "B4", 1 -> "C4", 2 -> "D4", 3 -> "E4", 4 ->
>>> "F4", 5 -> "G4", 6 -> "A4"};
>>> In: Sound[Thread[SoundNote[Flatten[A] /. pitchMap]]]
>>>
>>> Unfortunately, Mathematica displays 0 and "0" in the same way. You can
>>> use FullForm in order to avoid confusion.
>>>
>>> Alex
>>>
>>>
>>>
>>> On Sun, 17 Nov 2013, Dean Rosenthal wrote:
>>>
>>> Hi:
>>>>
>>>> My question is going to take all of you about a split second to answer.
>>>> Sadly, programming is something I seem to be congenitally incapable of
>>>> teaching myself and doing well. I usually just cut and paste specifics
>>>> into prewritten algorithms.
>>>>
>>>> If you do this
>>>>
>>>> pitchMap = {1 -> {"C4", "D4"}, 2 -> "D4", 3 -> "E4", 4 -> "F4", 5 ->
>>>> "G4"};
>>>>
>>>> Sound[Thread[SoundNote[Flatten[IntegerPartitions[5]] /. pitchMap]]]
>>>>
>>>>
>>>> You get a music player and can play the result.
>>>>
>>>>
>>>> If you do this:
>>>>
>>>>
>>>> A = NestList[
>>>> StringReplace[#, {"0" -> "2", "2" -> "12", "1" -> "23", "3" -> "45",
>>>> "4" -> "56"}] &, "0", 7]
>>>>
>>>> pitchMap = {0 -> "B4", 1 -> "C4", 2 -> "D4", 3 -> "E4", 4 -> "F4", 5 ->
>>>> "G4",
>>>> 6 -> "A4"};
>>>>
>>>> Sound[Thread[SoundNote[Flatten[A]] /. pitchMap]]]
>>>>
>>>>
>>>> You get nothing, just output. See what I did there? I substituted,
>>>> because that's what you do if you don't know how to program! On the face
>>>> of things, I can't see why it wouldn't work, but I've wasted at least an
>>>> hour going through documentation and Googling and trying different
>>>> approaches. I'm not a programmer and I can't seem to teach myself how to
>>>> do this, ideas?
>>>>
>>>>
>>>> Thanks,
>>>>
>>>>
>>>> Dean
>>>>
>>>>
>>>>
>>
>>
>> --
>> Dean Rosenthal
>> www.deanrosenthal.org
>>
>>
>>
>>
>
>
> --
> Dean Rosenthal
> www.deanrosenthal.org
>
Prev by Date:
**Re: Programming Fail**
Next by Date:
**Re: Programming Fail**
Previous by thread:
**Re: Programming Fail**
Next by thread:
**Re: Programming Fail**
| |